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

# Get session recording

> Returns a fresh, time-limited video recording URL for a browser session that ended in an error state. Recordings are only exposed for sessions whose status is `ERROR` — use this to review what the applicant saw when a verification failed. The URL is a presigned link generated on demand and expires roughly 7 days after it is issued, so fetch it when you need it rather than storing it. If the recording is still being processed, `status` is `pending` or `in_progress`; poll again shortly, and once `status` is `completed`, `recordingUrl` contains the MP4 download link. Returns 404 if the session does not exist, is not owned by your API key, is not in the `ERROR` state, or never started a browser session.



## OpenAPI

````yaml /api-reference/openapi.json get /partner/browser-session/{id}/recording
openapi: 3.1.0
info:
  title: Cr3dentials Partner API
  description: >-
    Integrate account verification into your application. Users verify their
    accounts through an iframe-based browser session, and you receive
    cryptographically attested proof of data authenticity.
  version: 1.0.0
  contact:
    name: Cr3dentials Support
    url: https://cr3dentials.xyz
servers:
  - url: https://app.cr3dentials.xyz/v1
    description: Production
  - url: https://staging.cr3dentials.xyz/v1
    description: Staging
security:
  - apiKey: []
paths:
  /partner/browser-session/{id}/recording:
    get:
      tags:
        - Sessions
      summary: Get session recording
      description: >-
        Returns a fresh, time-limited video recording URL for a browser session
        that ended in an error state. Recordings are only exposed for sessions
        whose status is `ERROR` — use this to review what the applicant saw when
        a verification failed. The URL is a presigned link generated on demand
        and expires roughly 7 days after it is issued, so fetch it when you need
        it rather than storing it. If the recording is still being processed,
        `status` is `pending` or `in_progress`; poll again shortly, and once
        `status` is `completed`, `recordingUrl` contains the MP4 download link.
        Returns 404 if the session does not exist, is not owned by your API key,
        is not in the `ERROR` state, or never started a browser session.
      operationId: getBrowserSessionRecording
      parameters:
        - name: id
          in: path
          required: true
          description: >-
            The `sessionId` returned from session creation. Must belong to your
            API key and be in the `ERROR` state.
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Recording status, plus the download URL when processing is complete.
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    example: success
                  data:
                    $ref: '#/components/schemas/SessionRecording'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
components:
  schemas:
    SessionRecording:
      type: object
      description: >-
        Video recording of a browser session. `recordingUrl` is a presigned URL
        that expires roughly 7 days after issue and should be fetched on demand,
        not stored.
      properties:
        status:
          type: string
          description: >-
            Processing state of the recording. Poll while `pending` or
            `in_progress`.
          enum:
            - not_enabled
            - pending
            - in_progress
            - completed
            - failed
          example: completed
        recordingUrl:
          type:
            - string
            - 'null'
          description: >-
            Presigned MP4 download URL. Present only when `status` is
            `completed`.
          example: >-
            https://hyperbrowser-data-private.t3.tigrisfiles.io/recordings/<id>/recording.mp4?X-Amz-Signature=...
        error:
          type:
            - string
            - 'null'
          description: Failure detail, populated only when `status` is `failed`.
          example: null
  responses:
    Unauthorized:
      description: Missing or invalid API key
      content:
        application/json:
          example:
            statusCode: 401
            message: Unauthorized
    NotFound:
      description: Session not found
      content:
        application/json:
          example:
            statusCode: 404
            message: Session not found
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: x-api-key
      description: 'Your partner API key. Alternatively, pass `Authorization: Bearer <key>`.'

````