Skip to main content
Every 4xx and 5xx response uses the same envelope:
code is machine-readable and stable. message is written for a human and may change. details carries extra context when there is any. For a VALIDATION_ERROR it holds issues, one { path, code, message } entry per field that failed.

Codes

Branch on code, not only on the HTTP status. A few codes, including PAYLOAD_TOO_LARGE, UNPROCESSABLE_CONTENT and TIMEOUT, currently arrive with HTTP 400.

Upstream platform failures

Publishing talks to Meta, TikTok, YouTube and Google. When one of those rejects a post, the failure surfaces two ways depending on when it happens:
  • Synchronously: the publish call returns an error with the platform’s reason in message, and the post moves to status: "failed".
  • Asynchronously: a scheduled post moves to status: "failed" with the reason in errorMessage. Poll Get post status, and retry by calling Publish post immediately.
Retrying a failed post re-runs delivery. Retrying a post that actually succeeded upstream but failed to record can double-post. Check permalink on the post before retrying.