Scheduling API

Schedule once. Publish on time. Every channel.

Queue posts for a future instant with scheduledAt, optional repeatInterval, and per-channel provider settings. OpenQuok stores UTC timestamps and publishes through the same POST /api/v1/public/posts endpoint.

Payload preview

Sample channels

Sample channels

Endpoint

POST /api/v1/public/posts

{ "scheduledAt": "2026-06-18T14:30:00.000Z", "status": "scheduled", "body": "Queue this post for next Tuesday at 2:30 PM UTC.", "integrationIds": [ "1f9a4f3a-3b2c-4f4a-9d8e-7a3f6b1c8e22" ], "repeatInterval": "week", "tagNames": [ "campaign" ] }

Payload validator

Preview JSON for POST /public/posts before you write integration code

Compose with sample channels, set repeatInterval for recurring schedules, copy a validated JSON body, and paste it into curl or your SDK. Scheduling and uploads need a workspace — copy JSON stays free.

One request. Structured response.

POST /api/v1/public/posts accepts one JSON payload and returns post group rows you can track with the public API.

Request

curl -X POST 'https://api.openquok.com/api/v1/public/posts' \ -H 'Authorization: opo_your_workspace_token' \ -H 'Content-Type: application/json' \ -d @payload.json
{ "scheduledAt": "2026-06-18T14:30:00.000Z", "status": "scheduled", "body": "Queue this post for next Tuesday at 2:30 PM UTC.", "integrationIds": [ "1f9a4f3a-3b2c-4f4a-9d8e-7a3f6b1c8e22" ], "repeatInterval": "week", "tagNames": [ "campaign" ] }

Response

{ "success": true, "data": { "postGroup": "9a0a1b2c-3d4e-4f5a-9b8c-aa11bb22cc33", "posts": [ { "id": "5b3c1d2e-9a3f-4e6b-bb12-2c0a5f1a90a1", "state": "QUEUE", "publishDate": "2026-06-18T14:30:00.000Z", "organizationId": "c1d8a3f4-1234-4abc-bf12-1234567890ab", "integrationId": "1f9a4f3a-3b2c-4f4a-9d8e-7a3f6b1c8e22", "content": "Queue this post for next Tuesday at 2:30 PM UTC.", "delay": 0, "postGroup": "9a0a1b2c-3d4e-4f5a-9b8c-aa11bb22cc33", "title": null, "description": null, "parentPostId": null, "releaseId": null, "releaseUrl": null, "settings": null, "image": null, "intervalInDays": null, "error": null, "deletedAt": null, "createdByUserId": null, "createdAt": "2026-05-10T09:00:00.000Z", "updatedAt": "2026-05-10T09:00:00.000Z" } ] } }

Explore by platform

Open platform pages for request and response examples, provider settings, and Payload Wizard samples.

Node SDK

TypeScript clienttyped payloadssame REST surface

Install @openquok/node-sdk in your backend or automation repo. Call post() with the same JSON you would send to POST /public/posts — integrations, media, provider settings, and scheduling fields included.

MCP server

Agents schedule postslist channelsread analytics

Connect Cursor, Claude Code, Codex, or any MCP client with your opo_ token. Tools such as schedulePostTool and integrationList mirror the public API so agents can draft and queue posts in chat.

OAuth2 for apps

Third-party appsuser consent workspace-scoped tokens

Register an app under Developers → Apps, run the Authorization Code flow, and receive an opo_ access token for the organization the user approves. Ship embedded schedulers without asking users to paste workspace keys.

Scheduling API FAQ

Social media scheduling API,answered

How scheduledAt, time zones, repeat intervals, and workspace quotas work when you schedule posts through the public API.

Discord Support