A runtime budget is part of the workflow, not a billing surprise to inspect after the agent disconnects. Mobilebox bills running phone time at $0.01 per phone-minute, with a 60-second minimum. Parked phones are free.

These are the current implementation defaults, not a promised future price. The authenticated account endpoint returns the configured rate and balance; use it as the runtime source of truth.

Bound the session at creation

json
{
  "name": "checkout-smoke-test",
  "idle_timeout": 300,
  "max_duration": 900
}

idle_timeout stops an inactive phone; max_duration bounds the overall session. Both use seconds. The defaults are five idle minutes and fifteen running minutes. The allowed session cap reaches three hours. Choose a shorter cap for a small test rather than relying on an agent to remember cleanup.

A duration cap also determines the session reservation. The default fifteen-minute session reserves $0.15 at the default rate. Check available balance before starting a large set of phones.

Count time, then verify the record

At the default rate, one phone running fifteen minutes costs $0.15. Three phones running fifteen minutes cost $0.45. Those examples exclude any separate model, app, proxy, or external service costs; Mobilebox’s phone bill does not describe your entire agent stack.

Use GET /v1/account to inspect balance and price. Use GET /v1/phones/{id}/sessions to inspect session start, readiness, end reason, billed seconds, and cost. Session records are better evidence than a stopwatch around one request.

Cleanup still matters

Park in a finally block when retaining state. Delete when the phone is disposable. A client crash or a network failure may prevent cleanup, which is why server-enforced timeouts matter.

Do not retry create blindly after an ambiguous connection failure. List the project’s phones first and look for the intended sandbox. A duplicated create can start a second billable session.

Capacity is another budget

The default project limit is three running and ten total phones. A 429 phone_limit response means your project needs to park or delete something. A 503 box_full response means the shared host is full; respect retry_after and Retry-After. Those are different constraints with different fixes. See errors and recovery.

Put it to work.

Open the quickstartRead the API reference