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

# Inspect a Sandbox run

> Inspect a Sandbox run.

Sandbox only. Uses the same records and API contracts as the normal product endpoints. Live requests are rejected. See [Sandbox scenarios](https://docs.amlok.io/api-reference/sandbox-journeys.md) for permissions, fixture coverage, expected results, delivery controls and limitations. Traces require all product read scopes (borrowers, connections, configuration, data, evidence, insights, results, signal, exports and events) and enabled Insights and Signal. Billing-only traces require Owner billing:read. When a source is no longer authorized, saved request/response payloads and assertions are redacted.

Examples use synthetic IDs. Replace them with values returned by your environment.


## OpenAPI

````yaml openapi/amlok.json GET /v1/sandbox/runs/{id}
openapi: 3.1.0
info:
  title: AMLOK API
  version: 1.0.0
  description: >-
    AMLOK API: borrower connections, Insights origination, immutable risk
    packages and Signal monitoring. Use your institution-issued API origin.
servers: []
security:
  - BearerAuth: []
tags:
  - name: Sandbox
    description: Reproducible developer scenarios with synthetic data and money.
paths:
  /v1/sandbox/runs/{id}:
    get:
      tags:
        - Sandbox
      summary: Inspect a Sandbox run
      description: >-
        Sandbox only. Uses the same records and API contracts as the normal
        product endpoints. Live requests are rejected. See [Sandbox
        scenarios](/api-reference/sandbox-journeys) for permissions, fixture
        coverage, expected results, delivery controls and limitations. Traces
        require all product read scopes (borrowers, connections, configuration,
        data, evidence, insights, results, signal, exports and events) and
        enabled Insights and Signal. Billing-only traces require Owner
        billing:read. When a source is no longer authorized, saved
        request/response payloads and assertions are redacted.
      operationId: getSandboxRun
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
            minLength: 1
      responses:
        '200':
          description: Successful request
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/SandboxRun'
                  meta:
                    $ref: '#/components/schemas/Meta'
                required:
                  - data
                  - meta
                additionalProperties: false
              example:
                data:
                  id: srun_example
                  scenario_id: healthy
                  fixture_id: maple-retail
                  catalog_version: 2026-11-07.1
                  status: queued
                  created_at: '2026-11-07T12:00:00Z'
                  updated_at: '2026-11-07T12:00:00Z'
                  completed_at: null
                  error: null
                  assertions: []
                  resources: []
                  steps: []
                meta:
                  request_id: req_example
                  schema_version: 1.0.0
                  environment: sandbox
        '400':
          description: >-
            Inspect structured error; retry only when retryable. 429 and 503 can
            include Retry-After.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    $ref: '#/components/schemas/Error'
                required:
                  - error
                additionalProperties: false
              example:
                error:
                  code: validation_error
                  message: Validation error.
                  retryable: false
                  request_id: req_synthetic
                  field: null
          headers:
            X-Request-ID:
              schema:
                type: string
                minLength: 1
              description: Same request ID as meta.request_id or error.request_id.
        '401':
          description: >-
            Inspect structured error; retry only when retryable. 429 and 503 can
            include Retry-After.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    $ref: '#/components/schemas/Error'
                required:
                  - error
                additionalProperties: false
              example:
                error:
                  code: unauthenticated
                  message: Unauthenticated.
                  retryable: false
                  request_id: req_synthetic
                  field: null
          headers:
            X-Request-ID:
              schema:
                type: string
                minLength: 1
              description: Same request ID as meta.request_id or error.request_id.
        '402':
          description: >-
            Inspect structured error; retry only when retryable. 429 and 503 can
            include Retry-After.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    $ref: '#/components/schemas/Error'
                required:
                  - error
                additionalProperties: false
              example:
                error:
                  code: insufficient_credits
                  message: Insufficient credits.
                  retryable: false
                  request_id: req_synthetic
                  field: null
          headers:
            X-Request-ID:
              schema:
                type: string
                minLength: 1
              description: Same request ID as meta.request_id or error.request_id.
        '403':
          description: >-
            Inspect structured error; retry only when retryable. 429 and 503 can
            include Retry-After.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    $ref: '#/components/schemas/Error'
                required:
                  - error
                additionalProperties: false
              example:
                error:
                  code: forbidden
                  message: Forbidden.
                  retryable: false
                  request_id: req_synthetic
                  field: null
          headers:
            X-Request-ID:
              schema:
                type: string
                minLength: 1
              description: Same request ID as meta.request_id or error.request_id.
        '404':
          description: >-
            Inspect structured error; retry only when retryable. 429 and 503 can
            include Retry-After.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    $ref: '#/components/schemas/Error'
                required:
                  - error
                additionalProperties: false
              example:
                error:
                  code: not_found
                  message: Not found.
                  retryable: false
                  request_id: req_synthetic
                  field: null
          headers:
            X-Request-ID:
              schema:
                type: string
                minLength: 1
              description: Same request ID as meta.request_id or error.request_id.
        '409':
          description: >-
            Inspect structured error; retry only when retryable. 429 and 503 can
            include Retry-After.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    $ref: '#/components/schemas/Error'
                required:
                  - error
                additionalProperties: false
              example:
                error:
                  code: idempotency_conflict
                  message: Idempotency conflict.
                  retryable: false
                  request_id: req_synthetic
                  field: null
          headers:
            X-Request-ID:
              schema:
                type: string
                minLength: 1
              description: Same request ID as meta.request_id or error.request_id.
        '410':
          description: >-
            Inspect structured error; retry only when retryable. 429 and 503 can
            include Retry-After.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    $ref: '#/components/schemas/Error'
                required:
                  - error
                additionalProperties: false
              example:
                error:
                  code: cursor_expired
                  message: Cursor expired.
                  retryable: false
                  request_id: req_synthetic
                  field: null
          headers:
            X-Request-ID:
              schema:
                type: string
                minLength: 1
              description: Same request ID as meta.request_id or error.request_id.
        '413':
          description: >-
            Request exceeds the effective profile size limit or media type is
            unsupported. No command is accepted.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    $ref: '#/components/schemas/Error'
                required:
                  - error
                additionalProperties: false
              example:
                error:
                  code: payload_too_large
                  message: payload too large
                  retryable: false
                  request_id: req_synthetic
                  field: null
        '415':
          description: >-
            Request exceeds the effective profile size limit or media type is
            unsupported. No command is accepted.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    $ref: '#/components/schemas/Error'
                required:
                  - error
                additionalProperties: false
              example:
                error:
                  code: unsupported_media_type
                  message: unsupported media type
                  retryable: false
                  request_id: req_synthetic
                  field: null
        '422':
          description: >-
            Inspect structured error; retry only when retryable. 429 and 503 can
            include Retry-After.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    $ref: '#/components/schemas/Error'
                required:
                  - error
                additionalProperties: false
              example:
                error:
                  code: validation_error
                  message: Validation error.
                  retryable: false
                  request_id: req_synthetic
                  field: null
          headers:
            X-Request-ID:
              schema:
                type: string
                minLength: 1
              description: Same request ID as meta.request_id or error.request_id.
        '429':
          description: >-
            Rate budget, shared in-flight limit or ready-queue limit exceeded
            before admission. Retry-After is mandatory in whole seconds.
            Preserve command identity. No accepted receipt or charge is created.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    $ref: '#/components/schemas/Error'
                required:
                  - error
                additionalProperties: false
              example:
                error:
                  code: rate_limited
                  message: Rate limited.
                  retryable: true
                  request_id: req_synthetic
                  field: null
          headers:
            Retry-After:
              description: Minimum delay in seconds before retry.
              schema:
                type: integer
                minimum: 0
            X-Request-ID:
              schema:
                type: string
                minLength: 1
              description: Same request ID as meta.request_id or error.request_id.
        '503':
          description: >-
            Inspect structured error; retry only when retryable. 429 and 503 can
            include Retry-After.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    $ref: '#/components/schemas/Error'
                required:
                  - error
                additionalProperties: false
              example:
                error:
                  code: temporarily_unavailable
                  message: Temporarily unavailable.
                  retryable: true
                  request_id: req_synthetic
                  field: null
          headers:
            Retry-After:
              description: Minimum delay in seconds before retry.
              schema:
                type: integer
                minimum: 0
            X-Request-ID:
              schema:
                type: string
                minLength: 1
              description: Same request ID as meta.request_id or error.request_id.
      security:
        - BearerAuth: []
      x-codeSamples:
        - lang: Shell
          label: cURL
          source: |-
            curl --request GET --fail-with-body --max-time 30 \
              "${AMLOK_API_BASE_URL}/v1/sandbox/runs/record_synthetic" \
              --header "Authorization: Bearer ${AMLOK_API_KEY}" \
              --header 'Accept: application/json'
        - lang: Python
          source: >
            import os

            import requests


            headers = {'Accept': 'application/json'}

            headers["Authorization"] = "Bearer " + os.environ["AMLOK_API_KEY"]

            response = requests.request('GET', os.environ["AMLOK_API_BASE_URL"]
            + '/v1/sandbox/runs/record_synthetic', headers=headers, timeout=30,
            allow_redirects=False)

            response.raise_for_status()

            print(response.json())
        - lang: JavaScript
          source: >
            const headers = {"Accept": "application/json"};

            headers.Authorization = `Bearer ${process.env.AMLOK_API_KEY}`;

            const response = await fetch(process.env.AMLOK_API_BASE_URL +
            "/v1/sandbox/runs/record_synthetic", {
              method: "GET", headers, redirect: "error", signal: AbortSignal.timeout(30000)
            });

            if (!response.ok) throw new Error(`HTTP ${response.status}: ${await
            response.text()}`);

            console.log(await response.json());
components:
  schemas:
    SandboxRun:
      type: object
      properties:
        id:
          type: string
          description: Id for this Sandbox fixture.
        scenario_id:
          type: string
          description: Stable scenario identifier from the versioned catalog.
        fixture_id:
          type: string
          description: Fictional business definition used to create this run.
        catalog_version:
          type: string
          description: >-
            Exact catalog version; reject mismatches rather than silently
            changing test behavior.
        status:
          enum:
            - queued
            - running
            - completed
            - failed
          description: Current lifecycle state of this run or action.
        created_at:
          type: string
          format: date-time
          description: Creation timestamp in UTC.
        updated_at:
          type: string
          format: date-time
          description: Last update timestamp in UTC.
        completed_at:
          type:
            - string
            - 'null'
          format: date-time
          description: Terminal timestamp, or null while queued or running.
        error:
          type:
            - string
            - 'null'
          description: >-
            Failure explanation, or null. Failed runs retain their completed
            steps and records.
        assertions:
          type: array
          items:
            $ref: '#/components/schemas/SandboxAssertion'
          description: >-
            Expected and observed outcomes. Passed checks validate the scenario,
            not production capacity.
        resources:
          type: array
          items:
            $ref: '#/components/schemas/SandboxResource'
          description: >-
            IDs created by this run; retrieve them using the ordinary product
            endpoints.
        steps:
          type: array
          items:
            $ref: '#/components/schemas/SandboxStep'
          description: >-
            Persisted request/response checkpoints. Transferable tokens and
            signed URLs are omitted.
      required:
        - id
        - scenario_id
        - fixture_id
        - catalog_version
        - status
        - created_at
        - updated_at
        - completed_at
        - error
        - assertions
        - resources
        - steps
      additionalProperties: false
    Meta:
      type: object
      properties:
        request_id:
          type: string
          minLength: 1
          description: >-
            Opaque identifier, authorized within the API key workspace and
            environment.
        schema_version:
          type: string
          minLength: 1
          description: >-
            Schema version for Meta. Constraints, requiredness and allowed
            values are defined by this schema.
        environment:
          type: string
          enum:
            - sandbox
            - live
          description: >-
            Environment for Meta. Constraints, requiredness and allowed values
            are defined by this schema.
      required:
        - request_id
        - schema_version
        - environment
      additionalProperties: false
    Error:
      type: object
      properties:
        code:
          type: string
          enum:
            - validation_error
            - unauthenticated
            - forbidden
            - not_found
            - invalid_state
            - idempotency_conflict
            - insufficient_credits
            - precondition_failed
            - cursor_expired
            - rate_limited
            - temporarily_unavailable
            - deal_snapshot_conflict
            - payload_too_large
            - unsupported_media_type
            - document_rejected
            - processing_failed
            - session_expired
            - consent_purpose_missing
            - sandbox_only
            - scenario_not_available
            - idempotency_result_expired
            - capacity_exceeded
            - queue_full
            - queue_wait_exceeded
            - processing_deadline_exceeded
            - response_too_large
            - export_too_large
            - export_expired
            - invalid_export_part
          description: >-
            Code for Error. Constraints, requiredness and allowed values are
            defined by this schema.
        message:
          type: string
          minLength: 1
          description: >-
            Message for Error. Constraints, requiredness and allowed values are
            defined by this schema.
        retryable:
          type: boolean
          description: >-
            Retryable for Error. Constraints, requiredness and allowed values
            are defined by this schema.
        request_id:
          type: string
          minLength: 1
          description: >-
            Opaque identifier, authorized within the API key workspace and
            environment.
        field:
          anyOf:
            - type: string
              minLength: 1
            - type: 'null'
          description: >-
            Field for Error. Constraints, requiredness and allowed values are
            defined by this schema.
        capacity:
          $ref: '#/components/schemas/CapacityErrorDetail'
        recovery:
          $ref: '#/components/schemas/LargeResponseRecovery'
      required:
        - code
        - message
        - retryable
        - request_id
        - field
      additionalProperties: false
      allOf:
        - if:
            properties:
              code:
                const: response_too_large
          then:
            required:
              - recovery
            properties:
              retryable:
                const: false
        - if:
            properties:
              code:
                enum:
                  - capacity_exceeded
                  - queue_full
          then:
            required:
              - capacity
            properties:
              retryable:
                const: true
    SandboxAssertion:
      type: object
      properties:
        name:
          type: string
          description: Name for this Sandbox fixture.
        passed:
          type: boolean
          description: Passed for this Sandbox fixture.
        expected:
          type: string
          description: Expected for this Sandbox fixture.
        actual:
          type: string
          description: Actual for this Sandbox fixture.
      required:
        - name
        - passed
        - expected
        - actual
      additionalProperties: false
    SandboxResource:
      type: object
      properties:
        id:
          type: string
          description: Id for this Sandbox fixture.
        kind:
          type: string
          description: Kind for this Sandbox fixture.
        fixture_id:
          type: string
          description: Fictional business definition used to create this run.
      required:
        - id
        - kind
        - fixture_id
      additionalProperties: false
    SandboxStep:
      type: object
      properties:
        name:
          type: string
          description: Name for this Sandbox fixture.
        sequence:
          type: integer
          description: Execution order of the persisted checkpoint.
        request_id:
          type: string
          description: Request ID for correlation with console logs.
        status:
          type: integer
          description: Current lifecycle state of this run or action.
        request:
          type: object
          additionalProperties: true
          description: Actual request metadata and payload, with capabilities redacted.
        response:
          description: >-
            Actual response payload, with capabilities redacted. A revoked
            source redacts the saved trace.
        created_at:
          type: string
          format: date-time
          description: Creation timestamp in UTC.
      required:
        - name
        - sequence
        - request_id
        - status
        - request
        - response
        - created_at
      additionalProperties: false
    CapacityErrorDetail:
      type: object
      properties:
        group:
          type: string
          enum:
            - http
            - origination
            - monitoring
            - export
        reason:
          type: string
          enum:
            - in_flight_limit
            - queue_full
        limit:
          type: integer
          minimum: 0
          maximum: 9007199254740991
          description: Effective admission limit.
        profile_id:
          type: string
          minLength: 1
        profile_version:
          type: string
          minLength: 1
      required:
        - group
        - reason
        - limit
        - profile_id
        - profile_version
      additionalProperties: false
    LargeResponseRecovery:
      type: object
      properties:
        export_request:
          $ref: '#/components/schemas/CreateExport'
        summary_available:
          type: boolean
        snapshot_expires_at:
          anyOf:
            - type: string
              minLength: 1
              format: date-time
            - type: 'null'
        data_checkpoint:
          anyOf:
            - $ref: '#/components/schemas/DataCheckpoint'
            - type: 'null'
      required:
        - export_request
        - summary_available
        - snapshot_expires_at
        - data_checkpoint
      additionalProperties: false
      description: >-
        Complete authorized export source captured before the failed response.
        Existing export scopes and source permissions still apply. Snapshot
        expiry is null for immutable package/record sources; create snapshot
        exports before expiry.
    CreateExport:
      type: object
      properties:
        kind:
          type: string
          enum:
            - risk_package
            - evidence
            - billing
            - data
          description: >-
            Kind for CreateExport. Constraints, requiredness and allowed values
            are defined by this schema.
        risk_package_id:
          type: string
          minLength: 1
          description: >-
            Opaque identifier, authorized within the API key workspace and
            environment.
        evidence_set_id:
          type: string
          minLength: 1
          description: >-
            Opaque identifier, authorized within the API key workspace and
            environment.
        billing_report_type:
          type: string
          enum:
            - usage
            - credits
            - statements
            - funding
            - rates
            - workload
          description: >-
            Billing report type for CreateExport. Constraints, requiredness and
            allowed values are defined by this schema.
        window:
          $ref: '#/components/schemas/Window'
          description: >-
            Window for CreateExport. Constraints, requiredness and allowed
            values are defined by this schema.
        format:
          type: string
          enum:
            - json
            - csv
            - pdf
          description: >-
            Format for CreateExport. Constraints, requiredness and allowed
            values are defined by this schema.
        data_snapshot_id:
          type: string
          minLength: 1
          description: Opaque ID within the authorized workspace and environment.
        data_record_id:
          type: string
          minLength: 1
          description: >-
            Exact immutable DataRecord version, alternative to data_snapshot_id
            for kind=data.
      required:
        - kind
        - format
      additionalProperties: false
      oneOf:
        - properties:
            kind:
              const: risk_package
            format:
              type: string
              enum:
                - json
                - pdf
          required:
            - risk_package_id
          not:
            anyOf:
              - required:
                  - evidence_set_id
              - required:
                  - billing_report_type
              - required:
                  - window
              - required:
                  - data_snapshot_id
              - required:
                  - data_record_id
          title: Risk-package export
        - properties:
            kind:
              const: evidence
            format:
              type: string
              enum:
                - json
                - csv
          required:
            - evidence_set_id
          not:
            anyOf:
              - required:
                  - risk_package_id
              - required:
                  - billing_report_type
              - required:
                  - window
              - required:
                  - data_snapshot_id
              - required:
                  - data_record_id
          title: Evidence export
        - properties:
            kind:
              const: billing
            format:
              type: string
              enum:
                - json
                - csv
          required:
            - billing_report_type
            - window
          not:
            anyOf:
              - required:
                  - risk_package_id
              - required:
                  - evidence_set_id
              - required:
                  - data_snapshot_id
              - required:
                  - data_record_id
          title: Billing export
        - title: Collected data export
          properties:
            kind:
              const: data
            format:
              type: string
              enum:
                - json
                - csv
          required: []
          not:
            anyOf:
              - required:
                  - risk_package_id
              - required:
                  - evidence_set_id
              - required:
                  - billing_report_type
              - required:
                  - window
          oneOf:
            - required:
                - data_snapshot_id
              not:
                required:
                  - data_record_id
            - required:
                - data_record_id
              not:
                required:
                  - data_snapshot_id
    DataCheckpoint:
      type: object
      properties:
        snapshot_id:
          type: string
          minLength: 1
        as_of:
          type: string
          minLength: 1
          format: date-time
        changes_cursor:
          type: string
          minLength: 1
        expires_at:
          type: string
          minLength: 1
          format: date-time
      required:
        - snapshot_id
        - as_of
        - changes_cursor
        - expires_at
      additionalProperties: false
      description: >-
        Atomic data snapshot and feed boundary retained even when the first
        record exceeds the response limit.
    Window:
      type: object
      properties:
        start:
          type: string
          minLength: 1
          format: date-time
          description: >-
            Start for Window. Constraints, requiredness and allowed values are
            defined by this schema.
        end:
          type: string
          minLength: 1
          format: date-time
          description: >-
            End for Window. Constraints, requiredness and allowed values are
            defined by this schema.
      required:
        - start
        - end
      additionalProperties: false
      description: UTC interval [start, end). The server rejects end <= start.
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: API key
      description: >-
        Server-to-server API key bound to exactly one workspace, institution
        tenant and environment. No caller-supplied workspace override is
        accepted. Do not use in public browser code.

````

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