Posting queues
Weekly posting times per profile, and posts that take the next free one.
The week
Each profile has its own posting times, such as Monday, Wednesday and Friday at 09:00, read in the profile's time zone. 09:00 stays 09:00 across summer time. Set the whole week in one call (set_queue in MCP, scope accounts:write):
curl -X PUT https://api.rizamo.com/v1/profiles/prof_.../queue \
-H "Authorization: Bearer $RIZAMO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"slots": [
{ "weekday": "mon", "time": "09:00" },
{ "weekday": "wed", "time": "09:00" },
{ "weekday": "fri", "time": "09:00" }
]
}'- Days are
montosun, timesHH:mm. At most 24 times a day, each once. An empty list empties the queue. - Changing the week, or the profile's time zone, moves no post already queued.
Queue a post
Create or update a post with "queue": true instead of a scheduledAt. It takes the soonest posting time when none of its accounts has a post at that minute, and none would go over its network's daily cap. The answer's scheduledAt is the time it took, and queued is true.
curl https://api.rizamo.com/v1/posts \
-H "Authorization: Bearer $RIZAMO_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"profileId": "prof_...",
"targets": [{ "accountId": "acc_..." }],
"text": "Fresh bread at 9.",
"mediaIds": ["med_..."],
"queue": true
}'The image is media you added first, as in the Quickstart: Instagram and TikTok take no post without an image or a video. A TikTok target also needs the person's own choices in its options.tiktok.
- Times are taken per account: an Instagram-only post and a TikTok-only post can share Monday 09:00, and a post to both takes it for both.
- Every scheduled post takes its accounts' minute, queued or not.
- Posts queued at once each take a different time.
- A deleted or rescheduled post frees its time for the next one. Nothing else moves.
- With no posting times the answer is
queue_empty; with none free in the next 90 days,queue_full. Both are 409. - A queued post goes out like any scheduled one, with a
post.scheduledevent and webhook that carryqueued: true. Queued again later, or given a time of its own, it writespost.updatedwith itsscheduledAtandqueued. POST /v1/posts/validatewith"queue": trueanswers thescheduledAtthe post would take now, without taking it.
Read the queue
GET /v1/profiles/{id}/queue?count=10 (get_queue, scope accounts:read) gives the time zone, the week, the next free times with the accounts free at each, and the next 100 queued posts still to go out. A key or agent sees those posts only with posts:read too. The free times are for showing: to take one, create the post with "queue": true, never by copying a time into scheduledAt.
With an agent
Agents use the queue unless you name a time. Ask Claude, ChatGPT or n8n's AI Agent:
Draft three posts from our latest blog article for Café Lisboa and add them to the queue.
It calls create_post with queue: true for each, and tells you when each one goes out.