Publish to Twitter/X through one simple API for apps, automations, and AI workflows. Post tweets, thread replies, and media with reply audience and cross-account repost settings.
Connect your own social accounts in OpenQuok Cloud. Complete OAuth for each channel yourself. Then publish with curl, the Node SDK, MCP, or CLI. Draft JSON in the payload validator. Publish to X through the same request shape.
CLI and SDK users
Call POST /public/posts from a script or CI job. One opo_ token covers every channel you connected. Your plan still caps channels and posts per month. Publish to X through the same request shape.
Agent operators
Point Cursor, Claude Code, or another MCP host at your workspace. The agent posts only to accounts you already authorized. Publish to X through the same request shape.
Three steps
Add X posting,to your product in three steps
Connect X once, then publish and track delivery through the same API.
Test your social media posting API payload before you ship code
Compose a post with sample channels in your browser. Copy the JSON body and paste it into curl, your SDK, or an agent workflow. Copy JSON is free — no account required. Scheduling and file uploads need a workspace.
Payload preview
Sample channels
Sample channels
Endpoint
POST /api/v1/public/posts
JSON payload
{"scheduledAt": "2026-05-14T10:00:00.000Z","status": "scheduled","body": "Launch tweet from the public API.","integrationIds": [
"<integration-id>"]}
Explore request and response examples by format
Static examples mirror shipped OpenQuok public API payloads and success responses.
Publish a tweet to X with POST /public/posts.
Request
JSON body
{"scheduledAt": "2026-05-14T10:00:00.000Z","status": "scheduled","body": "Launch tweet from the public API.","integrationIds": [
"<integration-id>"]}
Install @openquok/node-sdk in your Next.js or TypeScript backend. Call post() to publish to X with the same JSON you send to POST /public/posts. Media, integrations, and provider settings stay typed.
npm install @openquok/node-sdk
import Openquok from '@openquok/node-sdk';
const openquok = new Openquok('opo_your_programmatic_token');
await openquok.post({
{
"scheduledAt": "2026-05-14T10:00:00.000Z",
"status": "scheduled",
"body": "Launch tweet from the public API.",
"integrationIds": [
"<integration-id>"
]
}
});
# After you add OpenQuok in your MCP client config:
# Ask your agent to publish to X.
> Publish to X now:
> Product launch recap with a link to our pricing page.
MCP server
MCP toolsfor Cursor and Claude Codesame public API
Connect your MCP client with an opo_ token. Publish X posts from chat with schedulePostTool and integrationList. Agents use the same REST API as curl and the SDK.
Register your app under Developers → Apps. Users approve access to their workspace, then your app calls the public API for X publishing without pasted 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/integrations
# Match identifier: x — copy id into integrationIds
Pricing
Transparent pricingfor Xposting API
Every paid plan includes Public API access, the Node SDK, MCP tools, and OAuth apps per workspace. Publish to X from REST, SDK, or MCP — start with a 7-day free trial, no credit card required.
Solo
$29/ mo
Prototype X posting from curl, SDK, or MCP before you ship to customers.
Connect X, build a valid POST /public/posts payload, and publish from your app or agent.
Sign up for free, open a workspace, and choose Connect channel → X. Complete OAuth in the dashboard. OpenQuok Cloud registers the developer app for you. For self-hosted deployments, see the self-host X setup guide.
Call GET /public/integrations with your workspace programmatic token. Match the `identifier` field to `x` and copy the channel UUID into `integrationIds`. Field tables for X live on X provider settings.
Yes. Send one POST /public/posts payload with the channel UUID in `integrationIds`. Set `status` to `scheduled` and `scheduledAt` to publish immediately or at a future time. Use `draft` when you want to persist without enqueuing. See X CLI examples for copy-paste recipes.
No. OpenQuok bills workspaces on paid plans, not per-post credits. Public API access requires a paid tier. Each opo_ token gets 30 requests per hour on OpenQuok Cloud. Scheduled posts still count toward your monthly post quota. See cloud limits.
Use the interactive Payload Wizard on this page with sample channels, or open the full wizard in your workspace after you sign in. Copy JSON stays free on public pages. Provider field reference: X settings. Channel landing: X.