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

# List sandbox scenarios

> Return only synthetic fixtures provisioned in this sandbox workspace. Production returns 404; there are no production fault-injection or time-control commands. The account manager provides sandbox access and the fixture pack through the client portal. A portal administrator selects/reset scenarios before a test run; resetting discards only sandbox fixtures and test credits. GET never resets or mutates a scenario. Returned IDs and approved configuration are authoritative; do not use saved example IDs. Sandbox funding and simulated time controls stay in the portal, cannot move money, and cannot change production. Billing assertions use the real product rules with test credits.

**Required scope:** `platform:read`

Return only synthetic fixtures provisioned in this sandbox workspace. Production returns 404; there are no production fault-injection or time-control commands. The account manager provides sandbox access and the fixture pack through the client portal. A portal administrator selects/reset scenarios before a test run; resetting discards only sandbox fixtures and test credits. GET never resets or mutates a scenario. Returned IDs and approved configuration are authoritative; do not use saved example IDs. Sandbox funding and simulated time controls stay in the portal, cannot move money, and cannot change production. Billing assertions use the real product rules with test credits.

[Product scope](https://docs.amlok.io/api-reference/products-and-endpoints.md) · [Processing lifecycle](https://docs.amlok.io/api-reference/processing-lifecycle.md) · [Errors](https://docs.amlok.io/api-reference/errors.md)


## OpenAPI

````yaml openapi/amlok-v1.json GET /v1/sandbox/scenarios
openapi: 3.1.0
info:
  title: AMLOK API
  version: 1.4.2
  description: >-
    API reference for AMLOK 1.4.2, with example requests and responses.
    Configure your institution-issued environment URL before making requests.
  x-source-workbook: >-
    https://docs.google.com/spreadsheets/d/14pU2PLv9JDda8gAa1367hipa2oJQB260fIJthevrp10/edit
servers:
  - url: https://api.example.com
    description: Set the server URL to your institution-issued AMLOK environment URL.
security:
  - BearerAuth: []
tags:
  - name: Platform
    description: Platform operations.
  - name: Identity
    description: Identity operations.
  - name: Banking
    description: Banking operations.
  - name: Payments
    description: Payments operations.
  - name: Commerce
    description: Commerce operations.
  - name: Accounting
    description: Accounting operations.
  - name: Inventory
    description: Inventory operations.
  - name: Lending
    description: Lending operations.
  - name: Liens
    description: Liens operations.
  - name: Risk
    description: Risk operations.
  - name: Operations
    description: Operations operations.
  - name: Webhooks
    description: Webhooks operations.
  - name: Reporting
    description: Reporting operations.
paths:
  /v1/sandbox/scenarios:
    get:
      tags:
        - Platform
      summary: List sandbox scenarios
      description: >-
        Return only synthetic fixtures provisioned in this sandbox workspace.
        Production returns 404; there are no production fault-injection or
        time-control commands. The account manager provides sandbox access and
        the fixture pack through the client portal. A portal administrator
        selects/reset scenarios before a test run; resetting discards only
        sandbox fixtures and test credits. GET never resets or mutates a
        scenario. Returned IDs and approved configuration are authoritative; do
        not use saved example IDs. Sandbox funding and simulated time controls
        stay in the portal, cannot move money, and cannot change production.
        Billing assertions use the real product rules with test credits.
      operationId: IR012
      parameters:
        - name: limit
          in: query
          required: false
          description: Default 100; maximum 200.
          schema:
            type: integer
            minimum: 1
            maximum: 200
            default: 100
        - name: cursor
          in: query
          required: false
          description: >-
            Opaque cursor bound to filters and the first page snapshot. Do not
            change filters during pagination.
          schema:
            type: string
            minLength: 1
      responses:
        '200':
          description: Authorized response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      $ref: '#/components/schemas/SandboxScenario'
                  page:
                    $ref: '#/components/schemas/Page'
                  meta:
                    $ref: '#/components/schemas/ResponseMeta'
                required:
                  - data
                  - page
                  - meta
              examples:
                synthetic:
                  value:
                    data:
                      - id: insights_success
                        object: sandbox_scenario
                        name: Completed full underwriting
                        subject_id: biz_sandbox_insights_success
                        application_id: app_sandbox_insights_success
                        input_manifest_id: manifest_sandbox_insights_success
                        baseline_snapshot_id: null
                        connection_id: cnn_sandbox_insights_success
                        person_id: per_sandbox_insights_success
                        association_id: assoc_sandbox_insights_success
                        document_id: doc_sandbox_insights_success
                        workflow_version: underwrite-v1
                        ruleset_version: monitoring-v1
                        cadence: daily
                        expected_http_status: 202
                        expected_state: completed
                        instructions: >-
                          Run the Insights journey. Includes two bank accounts,
                          five business systems and at least twelve months of
                          synthetic banking history. Expect one Standard
                          Insights charge.
                      - id: signal_success
                        object: sandbox_scenario
                        name: Monitoring and reassessment
                        subject_id: biz_sandbox_signal_success
                        application_id: app_sandbox_signal_success
                        input_manifest_id: manifest_sandbox_signal_success
                        baseline_snapshot_id: rsk_sandbox_signal_success
                        connection_id: cnn_sandbox_signal_success
                        person_id: per_sandbox_signal_success
                        association_id: assoc_sandbox_signal_success
                        document_id: doc_sandbox_signal_success
                        workflow_version: underwrite-v1
                        ruleset_version: monitoring-v1
                        cadence: daily
                        expected_http_status: 201
                        expected_state: active
                        instructions: >-
                          Run the Signal journey. A pre-approved
                          existing-portfolio baseline and scheduled synthetic
                          source update produce reassessment and an alert.
                          Expect one Standard Signal charge and no Insights
                          charge.
                      - id: insufficient_credits
                        object: sandbox_scenario
                        name: Insufficient available credits
                        subject_id: biz_sandbox_insufficient_credits
                        application_id: app_sandbox_insufficient_credits
                        input_manifest_id: manifest_sandbox_insufficient_credits
                        baseline_snapshot_id: null
                        connection_id: cnn_sandbox_insufficient_credits
                        person_id: per_sandbox_insufficient_credits
                        association_id: assoc_sandbox_insufficient_credits
                        document_id: doc_sandbox_insufficient_credits
                        workflow_version: underwrite-v1
                        ruleset_version: monitoring-v1
                        cadence: daily
                        expected_http_status: 402
                        expected_state: insufficient_credits
                        instructions: >-
                          Submit the Insights request; expect no accepted run or
                          debit. Use portal sandbox funding to restore test
                          credits, then retry the identical key.
                      - id: authorization_expired
                        object: sandbox_scenario
                        name: Expired connection authorization
                        subject_id: biz_sandbox_authorization_expired
                        application_id: app_sandbox_authorization_expired
                        input_manifest_id: manifest_sandbox_authorization_expired
                        baseline_snapshot_id: null
                        connection_id: cnn_sandbox_authorization_expired
                        person_id: per_sandbox_authorization_expired
                        association_id: assoc_sandbox_authorization_expired
                        document_id: doc_sandbox_authorization_expired
                        workflow_version: underwrite-v1
                        ruleset_version: monitoring-v1
                        cadence: daily
                        expected_http_status: 201
                        expected_state: reauth_required
                        instructions: >-
                          Renew the supplied connection authorization; complete
                          the sandbox hosted flow. Retrieve the same connection
                          ID as active and then sync.
                      - id: rejected_evidence
                        object: sandbox_scenario
                        name: Rejected evidence
                        subject_id: biz_sandbox_rejected_evidence
                        application_id: app_sandbox_rejected_evidence
                        input_manifest_id: manifest_sandbox_rejected_evidence
                        baseline_snapshot_id: null
                        connection_id: cnn_sandbox_rejected_evidence
                        person_id: per_sandbox_rejected_evidence
                        association_id: assoc_sandbox_rejected_evidence
                        document_id: doc_sandbox_rejected_evidence
                        workflow_version: underwrite-v1
                        ruleset_version: monitoring-v1
                        cadence: daily
                        expected_http_status: 202
                        expected_state: waiting_for_data
                        instructions: >-
                          Start underwriting; the sandbox evidence validator
                          rejects the seeded document and returns a rejected
                          requirement with a reason. Upload its replacement from
                          the portal-provided fixture pack using requirement_id;
                          the same run resumes.
                      - id: workload_limit
                        object: sandbox_scenario
                        name: Known workload limit exceeded
                        subject_id: biz_sandbox_workload_limit
                        application_id: app_sandbox_workload_limit
                        input_manifest_id: manifest_sandbox_workload_limit
                        baseline_snapshot_id: null
                        connection_id: cnn_sandbox_workload_limit
                        person_id: per_sandbox_workload_limit
                        association_id: assoc_sandbox_workload_limit
                        document_id: doc_sandbox_workload_limit
                        workflow_version: underwrite-v1
                        ruleset_version: monitoring-v1
                        cadence: daily
                        expected_http_status: 422
                        expected_state: workload_limit_exceeded
                        instructions: >-
                          Submit the Insights request with over-limit evidence;
                          expect no debit and no automatic tier change.
                      - id: retryable_failure
                        object: sandbox_scenario
                        name: Retryable processing failure
                        subject_id: biz_sandbox_retryable_failure
                        application_id: app_sandbox_retryable_failure
                        input_manifest_id: manifest_sandbox_retryable_failure
                        baseline_snapshot_id: null
                        connection_id: cnn_sandbox_retryable_failure
                        person_id: per_sandbox_retryable_failure
                        association_id: assoc_sandbox_retryable_failure
                        document_id: doc_sandbox_retryable_failure
                        workflow_version: underwrite-v1
                        ruleset_version: monitoring-v1
                        cadence: daily
                        expected_http_status: 202
                        expected_state: failed
                        instructions: >-
                          Start the run and poll until failure.retryable is
                          true. Retry that same run; its second attempt
                          completes with one total Insights charge.
                      - id: owner_kyc
                        object: sandbox_scenario
                        name: Related owner verification
                        subject_id: biz_sandbox_owner_kyc
                        application_id: app_sandbox_owner_kyc
                        input_manifest_id: manifest_sandbox_owner_kyc
                        baseline_snapshot_id: null
                        connection_id: cnn_sandbox_owner_kyc
                        person_id: per_sandbox_owner_kyc
                        association_id: assoc_sandbox_owner_kyc
                        document_id: doc_sandbox_owner_kyc
                        workflow_version: underwrite-v1
                        ruleset_version: monitoring-v1
                        cadence: daily
                        expected_http_status: 201
                        expected_state: approved
                        instructions: >-
                          Use an unfinished waiting-for-data business run from
                          the fixture pack and its active association to request
                          person KYC. The included check has no separate charge.
                      - id: duplicate_delivery
                        object: sandbox_scenario
                        name: Duplicate webhook delivery
                        subject_id: biz_sandbox_duplicate_delivery
                        application_id: app_sandbox_duplicate_delivery
                        input_manifest_id: manifest_sandbox_duplicate_delivery
                        baseline_snapshot_id: null
                        connection_id: cnn_sandbox_duplicate_delivery
                        person_id: per_sandbox_duplicate_delivery
                        association_id: assoc_sandbox_duplicate_delivery
                        document_id: doc_sandbox_duplicate_delivery
                        workflow_version: underwrite-v1
                        ruleset_version: monitoring-v1
                        cadence: daily
                        expected_http_status: 201
                        expected_state: delivered
                        instructions: >-
                          Register a sandbox receiver; its seeded event is
                          delivered twice with one event ID and fresh
                          signatures. Reconcile attempts and replay using that
                          ID; your consumer must apply the event once.
                    page:
                      has_more: false
                      next_cursor: null
                      limit: 100
                    meta:
                      request_id: req_example
                      schema_version: 1.4.2
                      generated_at: '2026-10-23T14:00:00Z'
                      data_status: complete
        '400':
          $ref: '#/components/responses/Error400'
        '401':
          $ref: '#/components/responses/Error401'
        '403':
          $ref: '#/components/responses/Error403'
        '404':
          $ref: '#/components/responses/Error404'
        '409':
          $ref: '#/components/responses/Error409'
        '410':
          $ref: '#/components/responses/Error410'
        '422':
          $ref: '#/components/responses/Error422'
        '429':
          $ref: '#/components/responses/Error429'
        '500':
          $ref: '#/components/responses/Error500'
        '503':
          $ref: '#/components/responses/Error503'
      security:
        - BearerAuth: []
      x-codeSamples:
        - lang: Shell
          label: cURL
          source: |-
            curl --request GET --fail-with-body --max-time 30 \
              "${AMLOK_API_BASE_URL}/v1/sandbox/scenarios" \
              --header "Authorization: Bearer ${AMLOK_API_KEY}" \
              --header "Accept: application/json"
        - lang: Python
          source: |-
            import os
            import requests

            base_url = os.environ["AMLOK_API_BASE_URL"].rstrip("/")
            headers = {'Accept': 'application/json'}
            headers["Authorization"] = "Bearer " + os.environ["AMLOK_API_KEY"]

            response = requests.request(
                "GET", base_url + "/v1/sandbox/scenarios",
                headers=headers, timeout=30, allow_redirects=False,
            )
            response.raise_for_status()
            print(response.json())
        - lang: JavaScript
          label: Node.js
          source: >-

            const baseUrl = process.env.AMLOK_API_BASE_URL;

            const apiKey = process.env.AMLOK_API_KEY;

            if (!baseUrl || !apiKey) throw new Error("Configure
            AMLOK_API_BASE_URL and AMLOK_API_KEY");

            const headers = {
              "Accept": "application/json"
            };

            headers.Authorization = `Bearer ${apiKey}`;

            const response = await fetch(baseUrl.replace(/\/$/, "") +
            "/v1/sandbox/scenarios", {
              method: "GET", headers,
              redirect: "error", signal: AbortSignal.timeout(30000),
            });

            if (!response.ok) throw new Error(`AMLOK returned HTTP
            ${response.status}`);

            console.log(await response.json());
components:
  schemas:
    SandboxScenario:
      type: object
      properties:
        id:
          type: string
          minLength: 1
        object:
          const: sandbox_scenario
          type: string
        name:
          type: string
          minLength: 1
        subject_id:
          type: string
          minLength: 1
        application_id:
          anyOf:
            - type: string
              minLength: 1
            - type: 'null'
        input_manifest_id:
          anyOf:
            - type: string
              minLength: 1
            - type: 'null'
        baseline_snapshot_id:
          anyOf:
            - type: string
              minLength: 1
            - type: 'null'
        connection_id:
          anyOf:
            - type: string
              minLength: 1
            - type: 'null'
        person_id:
          anyOf:
            - type: string
              minLength: 1
            - type: 'null'
        association_id:
          anyOf:
            - type: string
              minLength: 1
            - type: 'null'
        document_id:
          anyOf:
            - type: string
              minLength: 1
            - type: 'null'
        workflow_version:
          type: string
          minLength: 1
        ruleset_version:
          type: string
          minLength: 1
        cadence:
          type: string
          minLength: 1
        expected_http_status:
          type: integer
          minimum: 200
          maximum: 599
        expected_state:
          type: string
          minLength: 1
        instructions:
          type: string
          minLength: 1
      required:
        - id
        - object
        - name
        - subject_id
        - application_id
        - input_manifest_id
        - baseline_snapshot_id
        - connection_id
        - person_id
        - association_id
        - document_id
        - workflow_version
        - ruleset_version
        - cadence
        - expected_http_status
        - expected_state
        - instructions
      additionalProperties: false
    Page:
      type: object
      properties:
        next_cursor:
          anyOf:
            - type: string
            - type: 'null'
          description: Opaque cursor for subsequent page; null after final page.
        has_more:
          type: boolean
          description: Whether more authorized records remain.
        limit:
          type: integer
          description: Applied result limit, from 1 to 200 in this contract.
          minimum: 1
          maximum: 200
      required:
        - has_more
        - limit
    ResponseMeta:
      type: object
      properties:
        request_id:
          type: string
          description: AMLOK request correlation ID.
        schema_version:
          type: string
          description: Serialization contract version.
        generated_at:
          type: string
          format: date-time
          description: Response generation time, not source data freshness.
        data_status:
          $ref: '#/components/schemas/Enum_data_status'
          description: Completeness of this response within its declared scope.
        coverage:
          anyOf:
            - $ref: '#/components/schemas/Coverage'
            - type: 'null'
          description: Requested and achieved source/time coverage.
      required:
        - request_id
        - schema_version
        - generated_at
        - data_status
    Enum_data_status:
      type: string
      enum:
        - complete
        - partial
        - unavailable
        - pending
    Coverage:
      type: object
      properties:
        requested_from:
          anyOf:
            - type: string
              format: date
            - type: 'null'
          description: Inclusive start requested.
        requested_to:
          anyOf:
            - type: string
              format: date
            - type: 'null'
          description: Exclusive end requested.
        available_from:
          anyOf:
            - type: string
              format: date
            - type: 'null'
          description: Earliest actual coverage.
        available_to:
          anyOf:
            - type: string
              format: date
            - type: 'null'
          description: Exclusive end of actual coverage.
        source_ids:
          type: array
          items:
            type: string
          description: Sources actually contributing.
        missing_intervals:
          type: array
          items:
            $ref: '#/components/schemas/Interval'
          description: Known gaps within requested scope.
        jurisdictions_completed:
          anyOf:
            - type: array
              items:
                type: string
            - type: 'null'
          description: Completed geographic search scope when applicable.
      required:
        - source_ids
        - missing_intervals
    ErrorEnvelope:
      type: object
      properties:
        error:
          $ref: '#/components/schemas/Error'
        meta:
          $ref: '#/components/schemas/ResponseMeta'
      required:
        - error
        - meta
    Interval:
      type: object
      properties:
        from:
          type: string
          format: date
          description: Inclusive interval start.
        to:
          type: string
          format: date
          description: Exclusive interval end.
      required:
        - from
        - to
    Error:
      type: object
      properties:
        code:
          type: string
          description: Stable machine-readable error code.
        message:
          type: string
          description: Safe caller-facing explanation.
        field:
          anyOf:
            - type: string
            - type: 'null'
          description: Invalid request field when relevant.
        retryable:
          type: boolean
          description: Whether retry may succeed without changing the request.
        request_id:
          type: string
          description: Correlation identifier for support.
      required:
        - code
        - message
        - retryable
        - request_id
  responses:
    Error400:
      description: Request failed. Inspect error.code and error.retryable.
      headers:
        X-Request-ID:
          description: AMLOK response correlation identifier.
          schema:
            type: string
          example: req_example
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorEnvelope'
          examples:
            invalid_request:
              summary: invalid_request
              value:
                error:
                  code: invalid_request
                  message: Malformed input, unknown parameter or incompatible filters.
                  retryable: false
                  request_id: req_example
                meta:
                  request_id: req_example
                  schema_version: 1.4.2
                  generated_at: '2026-10-23T14:00:00Z'
                  data_status: complete
            unsupported_parameter:
              summary: unsupported_parameter
              value:
                error:
                  code: unsupported_parameter
                  message: Historical query or filter not implemented on this resource.
                  retryable: false
                  request_id: req_example
                meta:
                  request_id: req_example
                  schema_version: 1.4.2
                  generated_at: '2026-10-23T14:00:00Z'
                  data_status: complete
            validation_error:
              summary: validation_error
              value:
                error:
                  code: validation_error
                  message: >-
                    A field, projection, or request value is invalid. Inspect
                    error.field.
                  retryable: false
                  request_id: req_example
                meta:
                  request_id: req_example
                  schema_version: 1.4.2
                  generated_at: '2026-10-23T14:00:00Z'
                  data_status: complete
    Error401:
      description: Request failed. Inspect error.code and error.retryable.
      headers:
        X-Request-ID:
          description: AMLOK response correlation identifier.
          schema:
            type: string
          example: req_example
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorEnvelope'
          examples:
            unauthenticated:
              summary: unauthenticated
              value:
                error:
                  code: unauthenticated
                  message: Missing, expired or invalid credential.
                  retryable: false
                  request_id: req_example
                meta:
                  request_id: req_example
                  schema_version: 1.4.2
                  generated_at: '2026-10-23T14:00:00Z'
                  data_status: complete
    Error403:
      description: Request failed. Inspect error.code and error.retryable.
      headers:
        X-Request-ID:
          description: AMLOK response correlation identifier.
          schema:
            type: string
          example: req_example
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorEnvelope'
          examples:
            forbidden:
              summary: forbidden
              value:
                error:
                  code: forbidden
                  message: Tenant scope or field/product entitlement missing.
                  retryable: false
                  request_id: req_example
                meta:
                  request_id: req_example
                  schema_version: 1.4.2
                  generated_at: '2026-10-23T14:00:00Z'
                  data_status: complete
    Error404:
      description: Request failed. Inspect error.code and error.retryable.
      headers:
        X-Request-ID:
          description: AMLOK response correlation identifier.
          schema:
            type: string
          example: req_example
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorEnvelope'
          examples:
            not_found:
              summary: not_found
              value:
                error:
                  code: not_found
                  message: Record does not exist or is not visible in this tenant.
                  retryable: false
                  request_id: req_example
                meta:
                  request_id: req_example
                  schema_version: 1.4.2
                  generated_at: '2026-10-23T14:00:00Z'
                  data_status: complete
    Error409:
      description: Request failed. Inspect error.code and error.retryable.
      headers:
        X-Request-ID:
          description: AMLOK response correlation identifier.
          schema:
            type: string
          example: req_example
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorEnvelope'
          examples:
            idempotency_conflict:
              summary: idempotency_conflict
              value:
                error:
                  code: idempotency_conflict
                  message: Same key was reused with different intended input.
                  retryable: false
                  request_id: req_example
                meta:
                  request_id: req_example
                  schema_version: 1.4.2
                  generated_at: '2026-10-23T14:00:00Z'
                  data_status: complete
            invalid_state:
              summary: invalid_state
              value:
                error:
                  code: invalid_state
                  message: >-
                    The operation is unavailable in the current resource or
                    account state. Operational commands are unavailable after
                    cancellation is submitted.
                  retryable: false
                  request_id: req_example
                meta:
                  request_id: req_example
                  schema_version: 1.4.2
                  generated_at: '2026-10-23T14:00:00Z'
                  data_status: complete
    Error410:
      description: Request failed. Inspect error.code and error.retryable.
      headers:
        X-Request-ID:
          description: AMLOK response correlation identifier.
          schema:
            type: string
          example: req_example
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorEnvelope'
          examples:
            cursor_expired:
              summary: cursor_expired
              value:
                error:
                  code: cursor_expired
                  message: >-
                    The synchronization cursor has expired. Begin a new
                    synchronization checkpoint and rebuild the collection
                    snapshot.
                  retryable: false
                  request_id: req_example
                meta:
                  request_id: req_example
                  schema_version: 1.4.2
                  generated_at: '2026-10-23T14:00:00Z'
                  data_status: complete
    Error422:
      description: Request failed. Inspect error.code and error.retryable.
      headers:
        X-Request-ID:
          description: AMLOK response correlation identifier.
          schema:
            type: string
          example: req_example
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorEnvelope'
          examples:
            invalid_search_scope:
              summary: invalid_search_scope
              value:
                error:
                  code: invalid_search_scope
                  message: Missing or unsupported jurisdiction/search mode.
                  retryable: false
                  request_id: req_example
                meta:
                  request_id: req_example
                  schema_version: 1.4.2
                  generated_at: '2026-10-23T14:00:00Z'
                  data_status: complete
            invalid_money:
              summary: invalid_money
              value:
                error:
                  code: invalid_money
                  message: >-
                    Invalid decimal, missing required currency or incompatible
                    currency pair.
                  retryable: false
                  request_id: req_example
                meta:
                  request_id: req_example
                  schema_version: 1.4.2
                  generated_at: '2026-10-23T14:00:00Z'
                  data_status: complete
            insufficient_evidence:
              summary: insufficient_evidence
              value:
                error:
                  code: insufficient_evidence
                  message: Required decision or metric prerequisites are missing.
                  retryable: false
                  request_id: req_example
                meta:
                  request_id: req_example
                  schema_version: 1.4.2
                  generated_at: '2026-10-23T14:00:00Z'
                  data_status: complete
            workload_limit_exceeded:
              summary: workload_limit_exceeded
              value:
                error:
                  code: workload_limit_exceeded
                  message: >-
                    The agreed workload limit cannot cover this work. No
                    automatic tier upgrade or surcharge occurs. Contact AMLOK to
                    agree expanded scope.
                  retryable: false
                  request_id: req_example
                meta:
                  request_id: req_example
                  schema_version: 1.4.2
                  generated_at: '2026-10-23T14:00:00Z'
                  data_status: complete
    Error429:
      description: Request failed. Inspect error.code and error.retryable.
      headers:
        X-Request-ID:
          description: AMLOK response correlation identifier.
          schema:
            type: string
          example: req_example
        Retry-After:
          description: >-
            Delay in seconds or an HTTP-date. The example is illustrative, not a
            contractual quota.
          schema:
            type: string
          example: '30'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorEnvelope'
          examples:
            rate_limited:
              summary: rate_limited
              value:
                error:
                  code: rate_limited
                  message: AMLOK tenant quota or upstream throttle.
                  retryable: true
                  request_id: req_example
                meta:
                  request_id: req_example
                  schema_version: 1.4.2
                  generated_at: '2026-10-23T14:00:00Z'
                  data_status: complete
    Error500:
      description: Request failed. Inspect error.code and error.retryable.
      headers:
        X-Request-ID:
          description: AMLOK response correlation identifier.
          schema:
            type: string
          example: req_example
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorEnvelope'
          examples:
            internal_error:
              summary: internal_error
              value:
                error:
                  code: internal_error
                  message: Unexpected AMLOK processing error.
                  retryable: false
                  request_id: req_example
                meta:
                  request_id: req_example
                  schema_version: 1.4.2
                  generated_at: '2026-10-23T14:00:00Z'
                  data_status: complete
    Error503:
      description: Request failed. Inspect error.code and error.retryable.
      headers:
        X-Request-ID:
          description: AMLOK response correlation identifier.
          schema:
            type: string
          example: req_example
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorEnvelope'
          examples:
            source_unavailable:
              summary: source_unavailable
              value:
                error:
                  code: source_unavailable
                  message: Required source temporarily unavailable.
                  retryable: true
                  request_id: req_example
                meta:
                  request_id: req_example
                  schema_version: 1.4.2
                  generated_at: '2026-10-23T14:00:00Z'
                  data_status: complete
  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.