Skip to content

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.

For systems

REST API

Create accounts, list accounts, queue submissions, and poll status with bearer-token HTTP requests.

Open the API reference
For AI clients

MCP 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/mcp
See connection options
For operators

Browser 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 workflow

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

  1. Authenticate the client.
  2. Find an account or assigned phone.
  3. Queue a submission, upload media through the signed upload URL when needed, and use the appropriate phone tool; poll the submission for queued work.
  4. Poll status and bring in a person when the platform needs attention.
REST API: list accountscurl
curl https://0bull.net/api/v1/accounts \
  -H "Authorization: Bearer $OBULL_TOKEN" \
  -H "Accept: application/json"
MCP: add the HTTP serverjson
{
  "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-tool

    List accounts across TikTok, Instagram, and YouTube.

  • get-account-tool

    Fetch a single posting account on any platform.

  • create-account-tool

    Link a posting account that is already signed in on a phone.

  • delete-account-tool

    Remove 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-tool

    List recent submissions across the supported platforms.

  • get-submission-tool

    Fetch one submission and poll its status.

  • create-upload-url-tool

    Create a short-lived signed URL for a direct video upload.

  • create-submission-tool

    Queue a video from a public URL or uploaded media for an account.

  • cancel-submission-tool

    Cancel a queued or in-flight submission.

  • delete-submission-tool

    Delete a finished submission and its stored video.

Phones

Inspect and operate an assigned phone slot directly.

  • list-phones-tool

    List the phone slots you can view with their session state.

  • list-phone-runs-tool

    List the phone runs for one phone, newest first.

  • get-phone-run-tool

    Get one phone run by its run id.

  • phone-command-tool

    Run device commands such as clipboard, URL, power, and connectivity actions.

  • phone-control-tool

    Send direct tap, swipe, hotkey, and text input operations.

  • phone-snapshot-tool

    Capture a JPEG snapshot of the phone screen.

  • phone-ocr-tool

    Read text from a phone screen with OCR.

  • run-macro-tool

    Run a named workflow or a raw sequence of phone steps.

  • run-phone-agent-tool

    Give 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-tool

    Read phone rentals, renewal dates, and pending orders.

  • start-rental-tool

    Return a Stripe Checkout link for a first phone order.

  • request-phones-tool

    Request a change to the number of rented phones.

  • get-billing-request-tool

    Check 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