Destinations
CallGET /public/v1/workspaces/{workspaceId}/integrations first and use the returned id as posts[].integration.id. Do not use the provider name or profile URL as an identifier.
Publishing modes
Thetype field controls how PostlyBee handles the request:
Set
autoSchedule to true to select the next available time from each account’s posting schedule. When auto-scheduling, date is not required. Optional autoScheduleOptions can constrain the search window.
With "type": "draft", auto-scheduling only sets the draft’s date and does not queue it for publishing. autoScheduleOptions.topOfQueue reorders scheduled posts, so it cannot be used with drafts.
Threads
Each item inposts[].value represents one content segment. For thread-based platforms such as X, Threads, and Bluesky, multiple items form a thread. On platforms without native threads, provider behavior may differ.
Media
Upload media before creating the post. Use the returnedid and path in the content segment:
Provider settings
posts[].settings contains destination-specific options. PostlyBee automatically adds the provider discriminator after resolving the connected account. Only include settings supported by that provider.
Repeating and recycling
Userepeat to create a fixed number of future copies. Use recycle to republish on an interval until an optional maximum cycle count is reached. Intervals support DAY, WEEK, and MONTH.
External IDs and safe retries
Setposts[].externalId to your own reference for a destination (up to 128 characters: letters, digits, _ . : -). It is stored on that destination’s root post, must be unique among the workspace’s live posts, and is returned in post lookups and webhook events. Reusing an external ID that belongs to another live post returns 409 external_id_conflict with the existing postId.
Send an Idempotency-Key header to make POST /posts safe to retry. For 24 hours, a repeat with the same key and body returns the original response without creating posts again; a repeat with a different body returns 409 idempotency_key_reused.
GET /posts/lookup?externalIds=order-123 (up to 100 IDs) to read status, releaseURL, and errors without listing a date range.