> ## Documentation Index
> Fetch the complete documentation index at: https://phone-harness.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Limits and credits

> What a phone costs, how credits work, and the limits that apply to every account.

## Pricing

| | |
| - | - |
| Price | 5¢ per phone-minute (`price_cents_per_minute: 5`) |
| Billed | From the moment a session is `ready` until it ends; boot time is free; partial final minutes round up |
| Trial | New accounts start with \$5 of credit (100 minutes) |
| Top-ups | $5 to $200 per checkout, paid by card in the dashboard; credit never expires |
| Phones per account | 8 at once |
| Boot time | About 80 seconds from `POST /sessions` to `ready` |
| Session length | You choose `timeout_seconds` at creation (default 5 minutes); there is no unlimited mode |

Sign-up is open: anyone can create an account at [phone-harness.com/cloud](https://phone-harness.com/cloud), and every new account starts with the trial credit above. Capacity is limited during the beta, so a start may answer `503 phones_busy` with a retry hint when every phone is in use. Write to [support@phone-harness.com](mailto:support@phone-harness.com) with questions.

## Inspect your account

`GET /me` includes:

| Field | Meaning |
| - | - |
| `balance_cents` | Your available account credit, in US cents |
| `price_cents_per_minute` | The current per-minute credit rate |
| `session_limit` | Your account's maximum simultaneous session count |
| `active_session_count` | Sessions currently occupying account capacity, including pending cleanup |
| `available_session_slots` | Remaining account slots; not a reservation of service-wide capacity |
| `can_rent` | Whether the account passes the current rental-access gate |
| `rent_blocked_reason` | Present when that rental-access gate denies access |
| `default` | What starts when a creation names neither `platform` nor `kind`: `{platform, kind}` |
| `available` | Everything your account may start: the default, plus your own devices once we have set them up (each with `platform`, `kind`, `label`) |

`can_rent: true` does not guarantee successful creation. Balance, account capacity, and service capacity are checked separately during admission.

## Multiple sessions

An account can create more than one phone when its configured limit and service capacity allow it. Each accepted session has its own ID and temporary data. Use a different idempotency key for each intended phone.

The service may refuse a creation request with `409` when the account or the shared phone pool is full. Queued and closing allocations can occupy capacity. A positive `available_session_slots` value only describes your account's limit.

The service answers `503` with `code: phones_busy` and a `Retry-After` header when every phone is in use. Read limits from the API rather than hardcoding a phone count.

## Credits

Provisioning is not billable. Metered use starts at readiness and ends when closure is recorded; final partial minutes are rounded up. Failed startups that never become ready have zero billable minutes.

Starting a metered phone requires enough balance for at least two minutes at the current rate. A running phone can be closed when credits are exhausted. Use `GET /history/page` for recorded `cost_cents`, `usage_minutes`, and `billable_minutes`.

Add credit from the dashboard (account menu → Add credits). `POST /me/topup` returns a Stripe Checkout URL for the same flow; the balance updates within seconds of payment.

## Request limits

* JSON request bodies are limited to 1 MiB.
* Operations on one phone are serialized. Sending many concurrent operations to the same session does not make its Android workflow parallel.
* History pages accept `limit` from 1 to 100; the default is 40.
* Session durations are positive, finite integers in seconds. Polling and input do not extend the deadline.

The current API does not publish general rate-limit headers or a fixed requests-per-second entitlement. Use bounded concurrency and handle capacity and network errors.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.