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.
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.
-
TikTok
Vertical video and photo carousels — direct publish or queue to your TikTok inbox to add trending audio.
-
X
Weighted 280-character tweets (4000 for Verified), up to four images or one video, and scheduled thread replies.
-
Instagram
Feed posts, Reels, carousels, and Stories — with trial Reels, collaborator tags, and follow-up comments.
-
YouTube
Long-form MP4 uploads and vertical Shorts — title, privacy, tags, and custom thumbnail per video.
-
Facebook
Page feed posts, MP4 Reels, Stories, link-preview cards, and scheduled follow-up comments — built for Facebook Pages, not personal profiles.
-
Threads
500-character posts with media and scheduled follow-up reply chains — conversation-first text on Meta Threads.
-
LinkedIn
B2B thought leadership on profile and company Page — scheduled, reviewed, and ready when buyers research you.
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.
npm install @openquok/node-sdk
import Openquok from '@openquok/node-sdk';
const openquok = new Openquok('opo_your_programmatic_token');
await openquok.post({
scheduledAt: '2026-06-18T14:30:00.000Z',
status: 'scheduled',
body: 'Hello from the Node SDK',
integrationIds: ['<integration-id>']
});# After you add OpenQuok in your MCP client config:
# Ask your agent to schedule from connected channels.
> Schedule a post to Threads for tomorrow at 10am UTC:
> Launch day recap with a link to our pricing page.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.
# Redirect the user to approve your app
https://www.openquok.com/oauth/authorize?client_id=oqc_your_client_id&response_type=code&state=random123
# Exchange the code for an opo_ access token, then call:
curl -H "Authorization: Bearer opo_oauth_access_token" \
https://api.openquok.com/api/v1/public/integrationsScheduling 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.
OpenQuok expects UTC in API payloads. Convert your local publish time to UTC before you send the request. The dashboard calendar shows times in your browser locale, but the API always reads ISO-8601 with a Z suffix or an explicit offset.