List Social Posts

List the social posts in your workspace, newest first

Published ·Updated

GET
/v1/social/posts
curl -X GET "https://api.orshot.com/v1/social/posts?status=<STATUS>&platform=<PLATFORM>&account_id=10" \
  -H "Authorization: Bearer <ORSHOT_API_KEY>"

Overview#

Returns the social posts in your workspace — drafts waiting for review, scheduled posts, and everything already published or failed. This is the same history the Posts Log shows in your dashboard.

Use it to find a post's id before reading, editing, publishing or discarding it.

Endpoint
https://api.orshot.com/v1/social/posts

Request#

JavaScript
await fetch("https://api.orshot.com/v1/social/posts?status=draft&limit=10", {
  method: "GET",
  headers: {
    Authorization: "Bearer <ORSHOT_API_KEY>",
  },
});
JSON
{
  "data": [
    {
      "id": 512,
      "status": "draft",
      "content": "Our new pricing is live.",
      "media_urls": ["https://storage.orshot.com/.../launch.png"],
      "platforms": ["linkedin", "twitter"],
      "accounts": [
        {
          "account_id": 15,
          "platform": "linkedin",
          "username": "acme-inc",
          "name": "Acme Inc",
          "status": "draft"
        },
        {
          "account_id": 22,
          "platform": "twitter",
          "username": "acmehq",
          "name": "Acme",
          "status": "draft"
        }
      ],
      "is_editable": true,
      "scheduled_for": null,
      "published_at": null,
      "created_at": "2026-08-11T17:24:09.752914+00:00",
      "render_id": 889021
    }
  ],
  "pagination": {
    "limit": 10,
    "has_more": false,
    "next_cursor": null
  }
}

Query Parameters#

ParameterTypeRequiredDescription
statusStringNoOnly posts in this state: draft, scheduled, published, processing, partial, failed
platformStringNoOnly posts targeting this platform, e.g. linkedin
account_idIntegerNoOnly posts targeting this connected account
limitIntegerNoPosts per page, 1–50 (default 25)
cursorIntegerNonext_cursor from a previous response, to fetch the next older page

Pass status=draft to list exactly the posts that are being held and have not reached any platform.

Post Object#

Every endpoint that returns a post returns this shape.

FieldTypeDescription
idIntegerPost ID. Use it with the other post endpoints
statusStringdraft, scheduled, published, processing, partial or failed
contentStringThe caption
media_urlsArrayMedia attached to the post
tagsArrayLabels you set when publishing
platformsArrayPlatform names this post targets
accountsArrayPer-account results — the detailed view of platforms
accounts[].account_idIntegerThe exact connected account. null on posts created before per-account results existed
accounts[].platformStringPlatform of this account
accounts[].usernameStringAccount handle
accounts[].nameStringAccount display name
accounts[].statusStringThis account's own outcome
accounts[].urlStringLink to the live post, once published
accounts[].errorStringWhy this account failed, when it did
accounts[].actionStringSuggested fix when this account failed, e.g. reconnect
is_editableBooleanWhether Orshot is still holding this post, i.e. whether it can be edited or published
is_discardableBooleanWhether it can be deleted — true unless at least one account already went live
scheduled_forStringWhen it will publish, if scheduled
published_atStringWhen it published
created_atStringWhen it was created
render_idIntegerThe render this post came from, when it was created by rendering a template
error_messageStringOnly present when something failed after the request returned, e.g. a discard the platform did not confirm

Branch on the two capability flags rather than on status — they are not the same test:

  • is_editable is true only while the post is held (draft or scheduled). Editing and publishing require it.
  • is_discardable is true unless at least one account already published. A failed post is discardable but not editable; a partial post is neither.

Error Responses#

Invalid cursor (400)#

JSON
{
  "error": "Invalid cursor",
  "message": "cursor must be a post id"
}

Unauthorized (403)#

JSON
{
  "error": "Access Forbidden"
}

Rate Limits#

  • 20 requests per minute per workspace, shared by the publishing and post endpoints. Analytics has its own limit
Was this page helpful?

Ready to automate?

Start rendering images, PDFs and videos from your templates in under 2 minutes. Free plan, no credit card.

Get your API key
  • Image, PDF and video generation via API
  • Visual editor with AI and smart layouts
  • Zapier, Make, MCP and 40+ integrations
  • White-label embed for your own app
  • 100 free credits a month, no credit card required