Skip to content

Posts

A post is a single piece of content fanned out to one or more connected social accounts. Each target produces a social posting carrying its own publish status.

{
"id": "pst_2Xa9kQ1mB3cD4eF5gH6iJ7kL8m",
"status": "scheduled",
"content": "Big news today 🚀",
"strict": false,
"scheduled_at": "2026-06-26T15:00:00.000Z",
"published_at": null,
"error": null,
"created_at": "2026-06-25T08:00:00.000Z",
"updated_at": "2026-06-25T08:00:00.000Z"
}

status is one of draft, scheduled, publishing, published, or failed.

GET /v1/posts

Optional query filters: status, from (ISO), to (ISO), unscheduled (true/false).

Terminal window
curl "https://api.socialit.com/v1/posts?status=scheduled" \
-H "Authorization: Bearer sk_live_..."

Each post includes its targets (platform + per-target status) and attached media.

POST /v1/posts

FieldTypeNotes
contentstringRequired. 1–5000 chars.
target_account_idsstring[]Required. Social account IDs (sa_...).
media_idsstring[]Optional. Media IDs (med_...).
scheduled_atISO dateOptional. Schedule for later.
publishbooleanOptional. Publish immediately (if no scheduled_at).
strictbooleanOptional. Fail on media-constraint violations instead of clamping.
config_by_platformobjectOptional. Per-platform overrides.

Omit both scheduled_at and publish to save a draft. Scheduling or publishing checks your credit balance and returns 402 if insufficient.

Terminal window
curl -X POST https://api.socialit.com/v1/posts \
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-d '{
"content": "Big news today 🚀",
"target_account_ids": ["sa_2Xa...", "sa_3Yb..."],
"media_ids": ["med_2Xa..."],
"scheduled_at": "2026-06-26T15:00:00.000Z"
}'

Returns 201 with { "post": { ... } }.

GET /v1/posts/:id

Returns the post with its attached media, per-target targets (including external_url, status, and credits_charged), and credits_total.

Terminal window
curl https://api.socialit.com/v1/posts/pst_2Xa... \
-H "Authorization: Bearer sk_live_..."

PATCH /v1/posts/:id

Update content, media_ids, strict, or config_by_platform on a draft/scheduled post.

Terminal window
curl -X PATCH https://api.socialit.com/v1/posts/pst_2Xa... \
-H "Authorization: Bearer sk_live_..." \
-H "Content-Type: application/json" \
-d '{ "content": "Updated copy" }'

DELETE /v1/posts/:id

Terminal window
curl -X DELETE https://api.socialit.com/v1/posts/pst_2Xa... \
-H "Authorization: Bearer sk_live_..."
{ "ok": true }