Posts

Creating, scheduling, and managing social media posts

Posts are the core resource in the EziBreezy API. A post represents a piece of content published (or to be published) to a connected social account.

Post lifecycle

Create → Scheduled → Sent
                  ↘ Failed

Posts can also be created as drafts and published later via the publish endpoint.

Creating a post

curl -X POST https://api.ezibreezy.com/v1/posts \
  -H "Authorization: Bearer ezb_live_..." \
  -H "x-workspace-id: ws-uuid" \
  -H "Content-Type: application/json" \
  -d '{
    "integrationId": "integration-uuid",
    "content": "Hello world!",
    "scheduledAt": "2027-01-01T12:00:00Z"
  }'
FieldRequiredDescription
integrationIdYesThe connected account to post to
contentYesPost body text (max 25,000 characters)
titleNoTitle for platforms that support it (max 500 chars)
mediaIdsNoArray of media IDs to attach (max 10)
scheduledAtNoISO 8601 datetime with timezone. Omit for immediate publish
settingsNoPlatform-specific settings object
threadMessagesNoArray of thread/reply messages (max 20)

Response:

{
  "data": {
    "id": "post-uuid",
    "status": "scheduled"
  },
  "meta": null
}

Immediate vs scheduled

  • Omit scheduledAt: Post publishes immediately (near-zero delay via job queue)
  • Include scheduledAt: Post is scheduled for the specified time

Both return status: "scheduled" — the difference is when the job fires.

Thread posts

For platforms like X/Twitter that support threads:

{
  "integrationId": "...",
  "content": "Thread opener",
  "scheduledAt": "2027-01-01T12:00:00Z",
  "threadMessages": [
    { "content": "Second tweet" },
    { "content": "Third tweet", "mediaIds": ["media-uuid"] }
  ]
}

Each thread message accepts content (max 25,000 chars) and an optional mediaIds array (max 10).

Listing posts

curl "https://api.ezibreezy.com/v1/posts?status=scheduled&limit=10" \
  -H "Authorization: Bearer ezb_live_..." \
  -H "x-workspace-id: ws-uuid"

Query parameters

ParameterDefaultDescription
statusall publicFilter by draft, scheduled, sent, or failed
limit20Results per page (1-100)
offset0Pagination offset

When no status filter is set, only public statuses are returned — internal statuses like pending_approval are excluded.

Response:

{
  "data": [
    {
      "id": "post-uuid",
      "title": null,
      "content": "Hello world!",
      "status": "scheduled",
      "scheduledAt": "2027-01-01T12:00:00.000Z",
      "error": null,
      "integrationId": "integration-uuid",
      "platform": "x",
      "platformUsername": "your_handle",
      "media": [
        { "id": "media-uuid", "url": "https://media.ezibreezy.com/...", "type": "image/png" }
      ],
      "threadSize": 2
    }
  ],
  "meta": {
    "limit": 10,
    "offset": 0,
    "total": 42,
    "hasMore": true
  }
}

Getting a single post

curl https://api.ezibreezy.com/v1/posts/POST_UUID \
  -H "Authorization: Bearer ezb_live_..." \
  -H "x-workspace-id: ws-uuid"

Returns the full post detail including integration info, thread messages, and settings:

{
  "data": {
    "id": "post-uuid",
    "title": null,
    "content": "Hello world!",
    "status": "scheduled",
    "scheduledAt": "2027-01-01T12:00:00.000Z",
    "error": null,
    "integrationId": "integration-uuid",
    "integration": {
      "platform": "x",
      "username": "your_handle",
      "name": "Your Account Name"
    },
    "mediaIds": ["media-uuid"],
    "allMedia": [],
    "threadMessages": [
      { "id": "thread-uuid", "content": "Second tweet", "mediaIds": [] }
    ],
    "settings": { "postType": "post" }
  },
  "meta": null
}

Updating a post

Only draft and scheduled posts can be updated. All fields are optional — only provided fields are changed.

curl -X PATCH https://api.ezibreezy.com/v1/posts/POST_UUID \
  -H "Authorization: Bearer ezb_live_..." \
  -H "x-workspace-id: ws-uuid" \
  -H "Content-Type: application/json" \
  -d '{
    "content": "Updated content",
    "scheduledAt": "2027-06-01T12:00:00Z"
  }'

Response:

{
  "data": {
    "id": "post-uuid",
    "status": "scheduled"
  },
  "meta": null
}

Publishing now

Force-publish a draft or scheduled post immediately:

curl -X POST https://api.ezibreezy.com/v1/posts/POST_UUID/publish \
  -H "Authorization: Bearer ezb_live_..." \
  -H "x-workspace-id: ws-uuid"

Response:

{
  "data": {
    "id": "post-uuid",
    "status": "scheduled"
  },
  "meta": null
}

The post is queued for immediate publish — the status shows scheduled until the job completes.

Deleting a post

curl -X DELETE https://api.ezibreezy.com/v1/posts/POST_UUID \
  -H "Authorization: Bearer ezb_live_..." \
  -H "x-workspace-id: ws-uuid"

Returns 204 No Content on success.