Create posts
Creates a post for one or more connected accounts.
Creates a post for one or more connected accounts.
Authorization
ApiKeyAuth PublishQ API key sent as Authorization: Bearer pq_live_....
In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://publishq.com/api/v1/posts" \ -H "Content-Type: application/json" \ -d '{ "content": "Just shipped our new API — schedule posts to 8 platforms with one call 🚀", "scheduledAt": "2026-04-01T12:00:00Z", "mediaIds": [ "d4c3b2a1-0987-6543-21fe-dcba09876543" ], "accounts": [ { "accountId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890" }, { "accountId": "b2c3d4e5-f6a7-8901-bcde-f12345678901" } ] }'{
"id": "9f8e7d6c-5b4a-3210-fedc-ba0987654321",
"content": "Just shipped our new API — schedule posts to 8 platforms with one call 🚀",
"status": "DRAFT",
"errorMessage": "string",
"mediaIds": [
"497f6eca-6276-4993-bfeb-53cbbbba6f08"
],
"scheduledAt": "2026-04-01T12:00:00Z",
"publishedAt": "2019-08-24T14:15:22Z",
"createdAt": "2026-03-30T10:00:00Z",
"accounts": [
{
"accountId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"platform": "TWITTER",
"accountName": "@publishq",
"status": "DRAFT",
"externalUrl": "https://x.com/publishq/status/1234567890",
"publishedAt": "2026-04-01T12:01:23Z",
"errorMessage": "Token expired. Please reconnect your Twitter account.",
"postOverrides": {
"content": "Short version for Twitter — check the link in bio!",
"thumbnailTimestamp": 5000,
"mediaIds": [
"497f6eca-6276-4993-bfeb-53cbbbba6f08"
]
},
"platformSpecificSettings": {
"property1": null,
"property2": null
}
}
]
}{
"error": {
"title": "Bad Request",
"status": 400,
"code": "validation_failed",
"message": "Request validation failed",
"instance": "/api/v1/posts",
"details": {
"errors": [
{
"path": "text",
"message": "Invalid input: expected string, received undefined",
"code": "invalid_type"
}
]
}
}
}{
"error": {
"title": "Unauthorized",
"status": 401,
"code": "missing_auth",
"message": "Missing Authorization header",
"instance": "/api/v1/posts"
}
}{
"error": {
"title": "Payment Required",
"status": 402,
"code": "posting_limits_exceeded",
"message": "Posting limits exceeded",
"instance": "/api/v1/posts",
"details": {
"limitErrors": [
"Monthly scheduled post limit reached"
],
"upgradeRequired": true
}
}
}{
"error": {
"title": "Forbidden",
"status": 403,
"code": "insufficient_scope",
"message": "Missing required scope: posts:write",
"instance": "/api/v1/posts"
}
}{
"error": {
"title": "Too Many Requests",
"status": 429,
"code": "rate_limit_exceeded",
"message": "Too Many Requests",
"instance": "/api/v1/posts",
"details": {
"retryAfter": 60
}
}
}