Schedule Post

Schedule a post for future publishing with intelligent staggered delivery.


Request

Schedule a post for future publishing. This endpoint is optimized for scheduled delivery — it validates the scheduled time, applies intelligent staggering to avoid platform rate limits, and enqueues the post for reliable delivery.

Permission required: posts:create

Body Parameters

contentstringRequired

The text content of the post. Maximum 63,206 characters.

accountIdsstring[]Required

Array of social account UUIDs to publish to.

scheduledAtstringRequired

ISO 8601 datetime for when the post should be published. Must be at least 1 minute in the future.

mediaUrlsstring[]Required

Array of public media URLs (max 10).

platformCaptionsobjectRequired

Per-platform content overrides. Keys are lowercase platform names.

tiktokSettingsobjectRequired

TikTok-specific publishing settings (privacyLevel, disableDuet, etc.).

youtubeTitlestringRequired

Separate title for YouTube posts (max 100 characters).

How Scheduling Works

  1. Validation — The scheduled time is verified to be at least 1 minute in the future.
  2. Staggering — eWasl applies intelligent time staggering to avoid platform-level rate limits when many posts are scheduled near the same time.
  3. Queueing — The post is enqueued for delivery at the calculated time. A cron job backup ensures delivery even if the queue is temporarily unavailable.
  4. Publishing — At the scheduled time, the post is published to all target platforms.

Response

Returns the scheduled post object. HTTP status 201 Created.

idstring

Unique UUID of the created post.

contentstring

The sanitized content.

statusstring

Always SCHEDULED for this endpoint.

platformsstring[]

Target platforms (lowercase).

scheduledAtstring

The final scheduled time (may differ slightly from your input due to staggering).

createdAtstring

Creation timestamp.

Example Request

curl -X POST https://app.ewasl.com/api/v1/posts/schedule \
  -H "Authorization: Bearer ewasl_YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "content": "Happy Monday! Start your week strong.",
    "accountIds": [
      "550e8400-e29b-41d4-a716-446655440000",
      "6ba7b810-9dad-11d1-80b4-00c04fd430c8"
    ],
    "scheduledAt": "2026-12-31T09:00:00Z",
    "platformCaptions": {
      "twitter": "Monday motivation! #MondayVibes",
      "linkedin": "Wishing everyone a productive start to the week. What are you working on today?"
    }
  }'

Response Example

{
  "data": {
    "id": "c3d4e5f6-a7b8-9012-cdef-123456789012",
    "content": "Happy Monday! Start your week strong.",
    "status": "SCHEDULED",
    "platforms": ["twitter", "linkedin"],
    "mediaUrls": [],
    "scheduledAt": "2026-12-31T09:00:00.000Z",
    "createdAt": "2026-03-01T12:00:00Z"
  }
}