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.

Payload preview

Sample channels

Sample channels

Media: hero.png

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.

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.

Posting 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.

Discord Support