# phone-harness > Start a temporary Android phone, install your app, and automate it through the Phone Harness API. - [Overview](https://phone-harness.com/docs/introduction.md): Create a temporary Android phone, use it, and end the session. - [Limits and credits](https://phone-harness.com/docs/guides/limits-and-credits.md): What a phone costs, how credits work, and the limits that apply to every account. - [Your phone](https://phone-harness.com/docs/guides/your-phone.md): Every account has one phone that is kept between sessions. Start it to pick up where you left off. - [Session lifecycle](https://phone-harness.com/docs/guides/session-lifecycle.md): Understand readiness, deadlines, billing time, and cleanup. - [Connect with ADB](https://phone-harness.com/docs/guides/connect-adb.md): Provision a phone, connect in two lines, drive it with phone-harness or any ADB tool. - [Viewer and screenshots](https://phone-harness.com/docs/guides/viewer-and-screenshots.md): Choose interactive video or a still image for your workflow. - [Errors](https://phone-harness.com/docs/guides/errors.md): Handle authentication, startup, capacity, and operation errors separately. - [Retries and idempotency](https://phone-harness.com/docs/guides/retries.md): Recover a lost creation response without allocating another phone. - [Python example](https://phone-harness.com/docs/guides/python-example.md): Create a phone, wait for readiness, capture a screenshot, and request cleanup. - [Create a session](https://phone-harness.com/docs/api-reference/sessions/create-session.md): Allocate an Android phone asynchronously. HTTP 202 means admitted, not ready. Poll the returned id. The deadline includes provisioning. Use one stable Idempotency-Key per logical Start. Pass your account's profile_id (from GET /me) to use your own phone, which is saved when the session ends and come… - [List active sessions](https://phone-harness.com/docs/api-reference/sessions/list-sessions.md): Return this account's sessions known to the live runtime, including provisioning, error, or closing entries. Completed sessions belong in history. - [Get a session](https://phone-harness.com/docs/api-reference/sessions/get-session.md): Inspect state, deadline, geometry and advertised operations. A valid read-only watch grant may read only its own session. Ready does not mean a browser frame has been displayed. - [Recover a create request](https://phone-harness.com/docs/api-reference/sessions/recover-create-request.md): Look up a durable, account-scoped create receipt, including after cleanup. A missing receipt does not justify retrying with a new key; reuse the same key and body for the same logical Start. - [End a session](https://phone-harness.com/docs/api-reference/sessions/end-session.md): Request closure of an owned session. New API operations stop and billable use ends at recorded closure. Capacity stays occupied until cleanup is confirmed. Repeating after the session is removed may return 404; use the create receipt to confirm cleanup. - [Enable ADB](https://phone-harness.com/docs/api-reference/adb/enable-adb.md): Return the ADB endpoint and unlock code for one ready session owned by your account. Ready phones already have ADB enabled and carry the same values in the session's adb block, so this is only needed to re-enable after DELETE; it is idempotent. Takes no body. Watch tokens cannot enable access. See t… - [Get ADB access](https://phone-harness.com/docs/api-reference/adb/get-adb.md): Return the ADB endpoint and unlock code for enabled ADB access, or enabled: false. Requires a ready, unexpired session owned by your account. Watch tokens cannot read this endpoint. - [Reset the unlock code](https://phone-harness.com/docs/api-reference/adb/reset-adb.md): Mint a new unlock code for this session and close every existing ADB connection. Use it when the code has been shared too widely. The endpoint's host and port stay the same. Takes no body. Watch tokens cannot reset. - [Revoke ADB access](https://phone-harness.com/docs/api-reference/adb/revoke-adb.md): Revoke ADB access for your session. This does not end the phone or stop its billing; use DELETE /sessions/{sid} to end the session. Revocation can be requested while a live session is closing or its deadline has passed, provided its allocation is still available. An already-removed session returns 4… - [Get a snapshot](https://phone-harness.com/docs/api-reference/phone/get-snapshot.md): Read a coalesced still image from a ready session. Captures are attempted at most once every two seconds; a cached image may be returned while an operation runs. This is not a live video endpoint and does not extend the session. Inspect Content-Type. - [Get the owner viewer](https://phone-harness.com/docs/api-reference/phone/get-owner-viewer.md): Mint an opaque, expiring interactive viewer URL for a ready, owned session. Treat it as a secret and never log it. Current embedding is restricted to the configured Phone Harness dashboard origin; arbitrary third-party embedding is not a supported integration. Reconnection does not extend the phone… - [Get the live view](https://phone-harness.com/docs/api-reference/phone/get-viewer.md): Mint an opaque, expiring view-only viewer URL for a ready session: the same live video as the owner viewer, without input. This is what a watch link opens. The session owner may call it with a bearer credential; a watch link's holder passes its view grant as the token query parameter. Treat the URL… - [Get your account](https://phone-harness.com/docs/api-reference/account/get-account.md): Read account identity, credits and account capacity. can_rent describes the rental-access gate only; balance and shared capacity are checked separately when creating a session. - [Reset your phone](https://phone-harness.com/docs/api-reference/account/reset-profile.md): Forget the saved profile phone: its apps, logins and data. The next session started with your profile_id begins with a fresh phone. Refused while a session holds the phone. - [List API keys](https://phone-harness.com/docs/api-reference/account/list-api-keys.md): List active keys for your account. Full bearer keys are never returned here. - [Create an API key](https://phone-harness.com/docs/api-reference/account/create-api-key.md): Create another account-wide key. The raw secret is shown only once. For your first key, use the authenticated dashboard. A key can manage other keys on the same account. - [Revoke an API key](https://phone-harness.com/docs/api-reference/account/revoke-api-key.md): Revoke a key belonging to this account using its key_hash from the key list, not the raw key. Revoking a key does not end sessions. The response is idempotent and does not prove the identifier existed. - [List session history](https://phone-harness.com/docs/api-reference/history/list-history-page.md): Paginated finished-session records ordered by ended time, then session ID, descending. Cursors are opaque and account-bound. History end time is not cleanup confirmation; use the create receipt for that. - [Get recent history](https://phone-harness.com/docs/api-reference/history/get-recent-history.md): Return up to 100 finished sessions, ordered by creation time descending. This endpoint has no pagination parameters. Prefer GET /history/page for a complete history. - [Check API liveness](https://phone-harness.com/docs/api-reference/service/get-health.md): Public API-process liveness only. Does not certify phone availability, credits, capacity, video, or successful provisioning. - [Connect a coding agent](https://phone-harness.com/docs/use-cases/connect-coding-agent.md): Give Claude Code, Codex, OpenClaw, OpenCode — or a fleet of your own agents — a cloud phone each. - [Connect with ADB](https://phone-harness.com/docs/guides/connect-adb.md): Provision a phone, connect in two lines, drive it with phone-harness or any ADB tool. ## OpenAPI Specs - [openapi](/docs/openapi.json)