Posting API
One request. Structured response. Post to every connected channel.
Ship social posts with a single POST /api/v1/public/posts call. OpenQuok returns a post group id and per-channel rows you can track with the public API, SDK, CLI, or MCP.
Payload validator
Preview JSON for POST /public/posts before you write integration code
Compose with sample channels, copy a validated JSON body, and paste it into curl or your SDK. Scheduling and uploads need a workspace — copy JSON stays free.
Sample channels
Sample channels
Endpoint
POST /api/v1/public/posts
{
"scheduledAt": "2026-05-14T10:00:00.000Z",
"status": "scheduled",
"body": "Hello from the public API!",
"integrationIds": [
"1f9a4f3a-3b2c-4f4a-9d8e-7a3f6b1c8e22",
"2a8b5e4c-1d3f-4a5b-9c0d-8e7f6a5b4c3d"
],
"media": [
{
"id": "img-global",
"path": "uploads/2026/05/hero.png",
"alt": "Product launch hero"
}
],
"tagNames": [
"launch-week"
]
}
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-05-14T10:00:00.000Z",
"status": "scheduled",
"body": "Hello from the public API!",
"integrationIds": [
"1f9a4f3a-3b2c-4f4a-9d8e-7a3f6b1c8e22",
"2a8b5e4c-1d3f-4a5b-9c0d-8e7f6a5b4c3d"
],
"media": [
{
"id": "img-global",
"path": "uploads/2026/05/hero.png",
"alt": "Product launch hero"
}
],
"tagNames": [
"launch-week"
]
}
Response
{
"success": true,
"data": {
"postGroup": "9a0a1b2c-3d4e-4f5a-9b8c-aa11bb22cc33",
"posts": [
{
"id": "5b3c1d2e-9a3f-4e6b-bb12-2c0a5f1a90a1",
"state": "QUEUE",
"publishDate": "2026-05-14T10:00:00.000Z",
"organizationId": "c1d8a3f4-1234-4abc-bf12-1234567890ab",
"integrationId": "1f9a4f3a-3b2c-4f4a-9d8e-7a3f6b1c8e22",
"content": "Hello from the public API!",
"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/integrationsPosting API FAQ
Social media posting API,answered
How OpenQuok public API posting works, what you need before your first request, and how workspace billing differs from credit-based APIs.