Post actions
All return {"post": {…}} (shape).
| Action | Body | Who |
|---|---|---|
POST /posts/{id}/approve |
{"publishNow"?: true, "scheduledFor"?: "…"} |
Signed-in person only |
POST /posts/{id}/reject |
{"reason"?: "…"} |
Key or person (a key may reject its own post) |
POST /posts/{id}/cancel |
none | Key or person |
POST /posts/{id}/reschedule |
{"scheduledFor": "…"} |
Key or person |
POST /posts/{id}/first-comment/retry |
none | Key or person |
Approve
Section titled “Approve”Approves a needs_approval post. If it has a future scheduledFor it is scheduled for then; otherwise it publishes now. If the time has passed you get 409 schedule_passed with details.choices: send publishNow: true or a new scheduledFor. Keys get 403 approval_requires_human, and a key can never approve its own post (self_approval_forbidden).
Reject
Section titled “Reject”Stops a waiting post for good. reason is shown to the author. Keys may reject, including their own posts.
Cancel
Section titled “Cancel”Works while needs_approval or scheduled. Cancelling twice is fine. Otherwise 409 not_cancellable.
Reschedule
Section titled “Reschedule”New ISO 8601 time with offset. Waiting posts change locally; scheduled ones are moved at the provider. Otherwise 409 not_reschedulable.
Retry first comment
Section titled “Retry first comment”Only when firstComment.status is failed; it can’t post twice. Otherwise 409 first_comment_not_failed.
Errors
Section titled “Errors”| Status | Code |
|---|---|
| 403 | approval_requires_human, self_approval_forbidden, session_required, cross_site_request |
| 404 | post_not_found |
| 409 | not_awaiting_approval, schedule_passed, not_cancellable, not_reschedulable, first_comment_not_failed, not_retryable |