Last updated: August 2026
Can I post to multiple X accounts from one API key?
Yes. One ot_ key covers every X account on your OpenTweet workspace. Call GET /api/v1/accounts for the ids, then pass x_account_id in the body of POST /api/v1/posts. Pro allows one account, Advanced three, Agency ten. Omit the field and the post goes to your primary account.
The account limit is a plan property, not a key property. Minting more keys does not let you connect more accounts.
List the accounts once, then target by id
The accounts endpoint returns everything you need to build a handle to id map. Do this once at deploy time and keep it in config: handles get renamed, ids do not.
curl https://opentweet.io/api/v1/accounts \
-H "Authorization: Bearer ot_your_key"
# {
# "accounts": [
# { "id": "6512...a1", "x_handle": "acme", "is_primary": true },
# { "id": "6512...b7", "x_handle": "acme_devs", "is_primary": false },
# { "id": "6512...c3", "x_handle": "acme_status","is_primary": false }
# ]
# }Then every publish names its target. The field is optional in the API and should not be optional in your code.
curl -X POST https://opentweet.io/api/v1/posts \
-H "Authorization: Bearer ot_your_key" \
-H "Content-Type: application/json" \
-d '{
"text": "Status page is back to green.",
"x_account_id": "6512...c3",
"publish_now": true
}'The failure mode worth designing against
Leave x_account_id out and the post goes to your primary account. On a single account workspace that is a convenience. On an agency workspace it means a client post lands on the wrong brand and nothing errors. Wrap the endpoint in your own function that requires the account and refuses to send without it.How many accounts per plan
Full plan detail is on pricing, and the account switching behaviour in the app is described on multiple X accounts.
Queue a week across several accounts in one call
The posts endpoint takes a batch, and each entry carries its own target and its own time. Send an Idempotency-Key so a timeout followed by a retry does not queue the week twice.
curl -X POST https://opentweet.io/api/v1/posts \
-H "Authorization: Bearer ot_your_key" \
-H "Idempotency-Key: week-2026-09-01" \
-H "Content-Type: application/json" \
-d '{
"posts": [
{ "text": "Monday product note", "x_account_id": "6512...a1", "scheduled_date": "2026-09-01T09:00:00Z" },
{ "text": "Monday engineering note", "x_account_id": "6512...b7", "scheduled_date": "2026-09-01T14:00:00Z" },
{ "text": "Tuesday product note", "x_account_id": "6512...a1", "scheduled_date": "2026-09-02T09:00:00Z" }
]
}'Reads are scoped the same way: GET /api/v1/posts accepts an x_account_id query parameter, so a per-client dashboard is one request per account rather than a filter over everything. The endpoint reference is in the API docs.
What the same thing costs on the X API
People ask this question because the X API answer is unpleasant. One developer app can act on behalf of several users, but you carry a separate OAuth authorisation and a separate token pair per account, each with its own refresh cycle and its own way of quietly expiring. Ten accounts is ten token lifecycles, and a refresh failure looks like a posting outage for one client only.
The bill also stacks. Every write is metered to the app owner at about $0.015, or about $0.20 when the post contains a link. Ten accounts posting twice a day with links is roughly 600 link posts a month, which is around $120 in write fees before anything reads. The mechanics are in is the X API free in 2026, and the ceiling behaviour in does X API pay-per-use have a spend cap.
With one ot_ key, there is one credential, no token refresh, and no per-post fee. If you are running client accounts, the shape is described on OpenTweet for agencies.
7-day free trial. Cancel anytime.
Frequently asked questions
Can I post to multiple X accounts from one API key?
Yes with OpenTweet. One ot_ key covers every X account connected to your workspace. Call GET https://opentweet.io/api/v1/accounts to get the account ids, then pass x_account_id in the body of POST https://opentweet.io/api/v1/posts. Omit the field and the post goes to your primary account.
How many X accounts can one OpenTweet key reach?
It depends on the plan, not on the number of keys. Pro at $11.99 a month allows one connected X account, Advanced at $29 allows three, and Agency at $49 allows ten. Extra API keys do not raise the account limit, they only give you separate credentials to rotate or scope by environment.
How do I find the x_account_id for each account?
GET https://opentweet.io/api/v1/accounts returns every connected account with its id, x_handle, and an is_primary flag. Cache that mapping in your own config rather than looking it up on every post, since handles change and ids do not.
What happens if I leave x_account_id out?
The post goes to the primary account on your workspace. That is convenient for single account setups and a real hazard for multi account ones, because a missing field silently publishes to the wrong brand. Make the field required in your own wrapper so a mistake fails loudly instead of posting.
Can I schedule to different accounts in one request?
Yes. The posts endpoint accepts a batch, and each entry can carry its own x_account_id and its own scheduled_date, so one call can queue a week across several accounts. Use an Idempotency-Key so a retry after a timeout does not duplicate the batch.
How does this work with the X API directly?
Very differently. One X developer app can act for several users, but each account needs its own OAuth authorisation and its own token pair that you store and refresh, and every write bills to the app owner at about $0.015 a post or $0.20 with a link. Ten accounts means ten token lifecycles to maintain.
Keep exploring
One key, several accounts, no OAuth token lifecycle to maintain.
OpenTweet vs the X API
Post, schedule, and automate X without a developer account or the $200/mo minimum.
X DM outreach, human-approved
Find and qualify leads, AI-draft DMs, approve each one, and drip-send from your own account via API or MCP.
Post to X without an API
The clean, account-safe way to post to X from your code or an AI agent.
Twitter MCP Server
Give Claude, Cursor, and OpenClaw the ability to post to X. 36 tools included.
Developer docs
Quickstart, API keys, MCP setup, and the REST reference for posting to X from code or an agent.
XMCP vs OpenTweet
X's official MCP server bills per API call and cannot schedule. Compare it with the flat-fee hosted MCP.
MCP for AI agents
Connect your AI client to X in under two minutes, no X developer account.
Developer API and keys
REST endpoints, one bearer key, and usage tracking. Build on OpenTweet.
OpenTweet for AI agents
The posting layer for autonomous agents and automations that live on X.
Build an AI Twitter persona
Give your AI agent its own X account. Setup, cadence, and the rules that keep it safe.
Best MCP servers for social media
The 2026 ranked list. How the hosted OpenTweet MCP compares with the official X MCP and others.
Cheapest way to post to X via code
Flat fee vs pay-per-use. Why the $0.20 per-link fee flips the math past ~60 posts a month.
One key, every account you run
Up to ten connected X accounts on Agency, three on Advanced. No per-post fee and no token refresh code.
7-day free trial. Cancel anytime.