Developer platform
Social media posting API for developers on real iPhones
The social media posting API for developers that runs on real iPhones. Your code posts to TikTok, Instagram and YouTube through a REST API or an OAuth-authenticated MCP server, and a real phone does the work. Need a human? Take the screen in the browser.
Build on three objects. Slot, account, submission.
The REST API and MCP server share one simple model: a phone is a slot, a linked social account is an account, and a video job is a submission. Accounts and submissions work across TikTok, Instagram and YouTube.
Slot
A UUID for an assigned phone.
Account
A platform account, optionally bound to a phone; publishing requires an active account on its phone.
Submission
A video job with a status to poll.
Account IDs are UUIDs. Phone tools use the slot UUID returned by list-phones-tool, not the human-facing label. A submission must target an active account on its phone. Most platform actions and phone-touching workflow actions are queued and return immediately. phone-control-tool, phone-snapshot-tool, and phone-ocr-tool return synchronously. Poll account or submission resources for queued account and submission work.
Three interfaces. Pick your weapon.
Use REST when your application needs a stable HTTP contract. Use MCP when an AI client should discover tools and act with browser-based OAuth. Use the dashboard or browser control when a person needs to inspect the real screen.
REST API
Create accounts, list accounts, queue submissions, and poll status with bearer-token HTTP requests.
Open the API referenceMCP server
Hand Claude Code, Claude Desktop, Cursor, Codex or any MCP client the full toolkit: accounts, submissions, billing, uploads and direct phone control.
$ claude mcp add --transport http 0bull https://0bull.net/mcpBrowser control
Put a VA or operator on the live phone screen whenever a human needs to review a post or handle a prompt.
See the operator workflowAuthenticate and submit. Then observe and review.
Start by authenticating the surface your client uses. REST clients create an API token under Settings, copy it once, and send it as a bearer token. MCP clients add the HTTP server URL and authorize in a browser through OAuth. Neither identity model gives access to another user’s accounts or phone grants.
From there, list the accounts or phones you can reach. Pick an account by its UUID or a phone by its slot UUID, queue a submission for an active account, then poll the returned resource for its final status.
- Authenticate the client.
- Find an account or assigned phone.
- Queue a submission, upload media through the signed upload URL when needed, and use the appropriate phone tool; poll the submission for queued work.
- Poll status and bring in a person when the platform needs attention.
curl https://0bull.net/api/v1/accounts \
-H "Authorization: Bearer $OBULL_TOKEN" \
-H "Accept: application/json"{
"mcpServers": {
"0bull": {
"type": "http",
"url": "https://0bull.net/mcp"
}
}
}Scoped and secure. Easy to plan around.
- Scoped access
- Every API token and MCP authorization is scoped to the account that created it. MCP calls only see the caller’s accounts and reach phones for which that caller has a grant.
- Human handoff built in
- When a job needs a person at the handset, the submission status says so, and your workflow hands the phone to an operator.
- Clear rate limits
- REST and MCP allow 60 requests per minute. Polling is expected, so space out status calls while the phone does its work.
MCP tool reference
A real tool surface. Grouped by the work.
Every tool your agent gets, grouped by the job it does. Full parameters and response shapes live in the reference.
Accounts
Create and inspect the posting accounts your automations use.
list-accounts-toolList accounts across TikTok, Instagram, and YouTube.
get-account-toolFetch a single posting account on any platform.
create-account-toolLink a posting account that is already signed in on a phone.
delete-account-toolRemove an account from the farm without deleting it on its platform.
Submissions and uploads
Move media through the publishing workflow and observe its result.
list-submissions-toolList recent submissions across the supported platforms.
get-submission-toolFetch one submission and poll its status.
create-upload-url-toolCreate a short-lived signed URL for a direct video upload.
create-submission-toolQueue a video from a public URL or uploaded media for an account.
cancel-submission-toolCancel a queued or in-flight submission.
delete-submission-toolDelete a finished submission and its stored video.
Phones
Inspect and operate an assigned phone slot directly.
list-phones-toolList the phone slots you can view with their session state.
list-phone-runs-toolList the phone runs for one phone, newest first.
get-phone-run-toolGet one phone run by its run id.
phone-command-toolRun device commands such as clipboard, URL, power, and connectivity actions.
phone-control-toolSend direct tap, swipe, hotkey, and text input operations.
phone-snapshot-toolCapture a JPEG snapshot of the phone screen.
phone-ocr-toolRead text from a phone screen with OCR.
run-macro-toolRun a named workflow or a raw sequence of phone steps.
run-phone-agent-toolGive the on-phone AI agent a task in plain words and let it run.
Billing and rentals
Read rentals and request phone-count changes with human approval in the loop.
get-billing-toolRead phone rentals, renewal dates, and pending orders.
start-rental-toolReturn a Stripe Checkout link for a first phone order.
request-phones-toolRequest a change to the number of rented phones.
get-billing-request-toolCheck the status of a phone-count change request.
Developer questions. Answered plainly.
No. 0bull runs the native app on a physical iPhone and posts from the phone, the same way a person would in the app. The REST API and MCP server are how you drive those phones.
REST is a bearer-token HTTP API for accounts and submissions. MCP is an OAuth-authenticated server for an MCP client, with the broader tool surface that also covers uploads, billing, and direct phone operations.
Accounts use UUIDs and identify their own platform. Phone tools use the slot UUID returned by list-phones-tool. The human-facing slot label is not the identifier to pass to a phone tool.
It is queued for its phone. Poll the submission resource and read its status to see when the video is published.
Yes. Open the phone in the browser and take over: reviews, hands-on screen work, anything a VA or teammate needs to see.
The API reference covers bearer authentication, pagination, response codes, and validation errors. The MCP connection and overview pages cover OAuth, scoping, async work, and rate limits.
Your next move.
Already in your hands.
Pick a country. We assign the phone. You take it from there.
Start for free