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"
}'| Field | Required | Description |
|---|---|---|
integrationId | Yes | The connected account to post to |
content | Yes | Post body text (max 25,000 characters) |
title | No | Title for platforms that support it (max 500 chars) |
mediaIds | No | Array of media IDs to attach (max 10) |
scheduledAt | No | ISO 8601 datetime with timezone. Omit for immediate publish |
settings | No | Platform-specific settings object |
threadMessages | No | Array 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
| Parameter | Default | Description |
|---|---|---|
status | all public | Filter by draft, scheduled, sent, or failed |
limit | 20 | Results per page (1-100) |
offset | 0 | Pagination 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.