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

# Recover a create request

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



## OpenAPI

````yaml /openapi.json get /sessions/requests/{request_key}
openapi: 3.1.0
info:
  title: Phone Harness API
  version: '2026-09-14'
  description: >-
    Public account and disposable Android session API. Open beta. Create
    responses are asynchronous; session duration includes provisioning, while
    billing begins at readiness. This specification documents the current
    supported client contract, not internal management interfaces. All example
    IDs, links, timestamps, limits, prices and digests are illustrative, not
    live credentials, measurements, or account entitlements.
  contact:
    name: Phone Harness support
    email: support@phone-harness.com
servers:
  - url: https://api.phone-harness.com
    description: Production beta
security:
  - ApiKey: []
tags:
  - name: Sessions
  - name: Phone
  - name: ADB
  - name: Account
  - name: History
  - name: Service
paths:
  /sessions/requests/{request_key}:
    get:
      tags:
        - Sessions
      summary: Recover a create request
      description: >-
        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.
      operationId: recover-create-request
      parameters:
        - name: request_key
          in: path
          required: true
          schema:
            type: string
            pattern: ^[A-Za-z0-9_-]{16,128}$
          description: The original create idempotency key.
      responses:
        '200':
          description: Durable receipt.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateReceipt'
              example:
                id: abc123def456
                request_key: example-request-key-0001
                provider: shlut
                state: provisioning
                cleanup_complete: false
                cleanup_pending: false
        '401':
          description: Bad or missing bearer credential.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Account access denied or rental access unavailable.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: No receipt exists for this account and key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Unexpected service error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    CreateReceipt:
      type: object
      properties:
        id:
          type: string
        request_key:
          type: string
        provider:
          type: string
        state:
          type: string
          enum:
            - provisioning
            - ready
            - error
            - closing
            - recorded
            - released
        cleanup_complete:
          type: boolean
        cleanup_pending:
          type: boolean
      required:
        - id
        - request_key
        - provider
        - state
        - cleanup_complete
        - cleanup_pending
    Error:
      type: object
      properties:
        error:
          type: string
          description: Human-readable public error.
        code:
          type: string
          description: Present only for errors with a stable code.
        state:
          type: string
        unsupported:
          type: boolean
        outcome:
          type: string
          enum:
            - unknown
            - installed
        id:
          type: string
          description: Session ID if a create receipt exists.
        request_key:
          type: string
        cleanup_complete:
          type: boolean
        balance_cents:
          type: integer
        session:
          type: string
        session_limit:
          type: integer
        active_session_count:
          type: integer
        available_session_slots:
          type: integer
      required:
        - error
  securitySchemes:
    ApiKey:
      type: http
      scheme: bearer
      description: >-
        Phone Harness account API key (pck_…). The dashboard may use a Clerk
        session JWT with the same header. Never put an account key in a URL.

````