Get post

Returns one social post with per-account results, diagnostics, and resolved destination metadata.
https://api.unipost.dev
GET/v1/posts/:post_id
Authorization
In header · Bearer <token>
Path
string

Authorization

AuthorizationBearer <token>In header
Workspace API key.

Path Params

post_idstring
UniPost post ID such as post_abc123.

Response Body

200
idstring
UniPost post ID.
captionstring | null
Top-level caption when one exists.
statusstring
Derived lifecycle status. For multi-platform posts, this is the aggregate parent status.
Valuesdraft | scheduled | publishing | published | partial | failed | cancelled
sourcestring
Origin of the post.
Valuesapi | ui
profile_idsstring[]
Distinct profile IDs targeted by the post.
resultsarray
Per-account publish results.
results[].idstring
Result row ID used for retries and diagnostics.
results[].social_account_idstring
Destination account ID.
results[].platformstring
Destination platform.
Valuestwitter | linkedin | instagram | facebook | threads | youtube | tiktok | bluesky | pinterest
results[].account_namestring
Resolved handle or account display name when available.
results[].statusstring
Per-account publish status.
Valuesqueued | publishing | processing | published | failed
results[].urlstring | null
Canonical public post URL when available.
results[].error_codestring | null
Normalized publish failure code for failed rows, such as platform_request_invalid, media_error, or account_reconnect_required.
results[].failure_stagestring | null
Stage where the failure occurred, such as validation, publish, status_check, or worker_status_check.
results[].platform_error_codestring | null
Provider-specific error code when UniPost can safely extract one, such as TikTok invalid_params.
results[].is_retriableboolean | null
Whether retrying this result is expected to help.
results[].next_actionstring | null
Stable action enum for UI and automation, such as review_platform_options, reconnect_account, or wait_and_retry.
results[].error_sourcestring | null
Where the failure originated.
Valuesunipost | platform | worker | unknown
results[].error_temporalitystring | null
Whether the condition is temporary, permanent, or unknown.
Valuestemporary | permanent | unknown
results[].provider_errorobject | null
Sanitized provider detail object. May include provider, http_status, code, subcode, type, reason, domain, quota_limit, quota_location, and is_transient.
results[].retry_policyobject | null
Best-effort queue snapshot with is_retriable, will_retry, retry_state, next_run_at, attempts_made, max_attempts, attempts_remaining, manual_retry_allowed, and reason.
results[].debug_curlstring | null
Redacted failing curl trace for debugging, only on failed results.
401
error.codestring
Usually "UNAUTHORIZED" or "NOT_FOUND".
error.normalized_codestring
Lowercase alias such as "unauthorized" or "not_found".
error.messagestring
Human-readable error message.
request_idstring
Request identifier for debugging and support.
404
error.codestring
Usually "UNAUTHORIZED" or "NOT_FOUND".
error.normalized_codestring
Lowercase alias such as "unauthorized" or "not_found".
error.messagestring
Human-readable error message.
request_idstring
Request identifier for debugging and support.
500
error.codestring
Usually "UNAUTHORIZED" or "NOT_FOUND".
error.normalized_codestring
Lowercase alias such as "unauthorized" or "not_found".
error.messagestring
Human-readable error message.
request_idstring
Request identifier for debugging and support.
How to use this endpoint from a client
Use the parent status for the big picture. This is the fastest way to know whether the post is done, partially successful, or fully failed.
Use results[] for the truth per destination. Each result row is independent and tells you which account published, which one failed, and which public URL or error belongs to that account.
Read retry state from retry_policy. is_retriable means a retry may help; will_retry means UniPost has an automatic attempt scheduled or running. Treat this object as a best-effort queue snapshot and poll again before showing destructive actions. If a pending job has a past next_run_at, it is due now rather than invalid.
Stop polling when the parent status is final. In most clients that means polling until the post becomes published, partial, or failed.
Polling examples users can compare against
Rule of thumb
Single-platform posts: the parent post status usually matches the only result row.
Multi-platform posts: read the parent post status as the aggregate outcome, then read results[] to know what happened on each destination account.