POST/posts
Create post
Create a new post. Fields `id`, `createdAt`, `updatedAt` are auto-generated. Triggers `posts.created` webhook.
ReturnsPost
AcceptsPostInput
Bearer token required
Response examples
201Post created
{
"id": 1,
"userId": 1,
"title": "Performance Optimization Tips",
"slug": "web-security-fundamentals",
"body": "Fusce commodo aliquam arcu. Nam commodo suscipit quam. Quisque id odio.\n\nCurabitur pretium tincidunt lacus. Nulla gravida orci a odio. Nullam varius, turpis et commodo pharetra.",
"excerpt": "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Sed do eiusmod tempor incididunt ut labore et dolore magna aliq...",
"tags": [
"ux"
],
"status": "published",
"views": 16848,
"likes": 28,
"featured": false,
"coverImage": "https://picsum.photos/seed/1/800/400",
"readingTime": 7,
"createdAt": "2026-01-21T19:36:04.116Z",
"updatedAt": "2026-01-21T19:36:04.116Z"
}400400 — invalid input or malformed JSON
{
"error": {
"status": 400,
"message": "Request body required"
}
}413413 — body exceeds 64 KB
{
"error": {
"status": 413,
"message": "Request body too large",
"details": {
"maxSize": "64 KB"
}
}
}429429 — rate limit exceeded (120/60s)
{
"error": {
"status": 429,
"message": "Too many requests",
"details": {
"retryAfter": 45
}
}
}