syndication
POST /v1/syndication/posts/{postId}/{action}
Approve, reject or retry one channel's post.
Authentication
Send an API key as a bearer token. This endpoint does not state a specific permission in the specification, so give your key the least it needs and check the response rather than assuming.
This endpoint takes no organisation id. Your key already identifies the organisation it belongs to, and the response is scoped to it.
Try it
Replace anything in angle brackets with your own values, and the key placeholder with a key from your dashboard.
curl -X POST https://api.zinndigital.com/v1/syndication/posts/{postId}/{action} \
-H "Authorization: Bearer zdk_live_…"Signed in? The API console in your dashboard fills in your real organisation id and your own key, and runs the request against the live API so you can see the actual response. Open this endpoint in the API console
Details
Approving queues the post for the next sweep; rejecting settles it `skipped` because nothing went wrong; retrying re-queues a `failed` or `needs_reconnect` post — reconnect the account first, or it will settle the same way again. Gated on `syndication.manage`.
Parameters
| Name | Type | Required | What it is |
|---|---|---|---|
postId (path) | string | Yes | — |
action (path) | string<approve, reject, retry> | Yes | `approve` clears a held post for sending, `reject` marks it `skipped` (nothing went wrong — the customer said no), `retry` re-queues a failed one. |
Response
| Name | Type | Required | What it is |
|---|---|---|---|
id | string | Yes | — |
channel | string | Yes | — |
connection_id | string | Yes | — |
connection_label | string | Yes | — |
status | string<drafting, awaiting_approval, queued, posted, failed, needs_reconnect, skipped> | Yes | ⛔⛔ `needs_reconnect` is NOT `failed`. `skipped` means the customer said no or the connection was removed — nothing went wrong. |
text | string | Yes | — |
remote_url | string | Yes | The live post, read back from the channel where it returns one. ⛔ Empty where the vendor gives us nothing to build a URL from (a Slack incoming webhook answers the literal strin… |
dropped | string[][] | Yes | `[[field, reason], …]` — what this channel could not carry, and WHY. The reason travels: "no image endpoint" and "the upload was refused" are different problems with different n… |
error | string | Yes | A machine code, never a sentence. |
cost_micros | integer | Yes | What this post cost us, in USD micros. One line per channel per post. |
character_limit | integer | Yes | — |
posted_at | string | Yes | — |
Errors this endpoint can return
401 · 403 · 404