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

# Start verification

> Start a KYC or KYB session.

Required scope: `identity:verify`. Return hosted_url when applicable; poll verification ID for result. Once account cancellation is submitted, processing and usage deductions stop immediately. Reject new operational commands with 409 invalid_state; pending work is cancelled without another debit. Read-only reporting remains available until workspace deletion. This is a stage of an authorized Insights or Signal workflow. processing_context is required; unrelated, completed, unpaid, cancelled or unentitled contexts return 409 invalid_state. It creates no separate AMLOK charge. The orchestrator deduplicates equivalent stage work within the parent. Person KYC within a business assessment requires processing_context.subject_association_id. Its person_id must match the verification subject; its business_id must match the parent subject. Store the association ID and validated record version on the verification for audit. Pending, rejected, revoked, mismatched or cross-workspace associations cannot authorize a stage. Revocation stops unfinished related-person work. Do not create a second product merely to verify its owner. Accepted commands have a durable request receipt. Full response replay lasts 24 hours; afterward the same key and target return 409 idempotency_result_expired without re-execution. Different payloads return 409 idempotency_conflict. Use GET /v1/request-receipts/lookup to find the original resource. The fingerprint includes the resolved target path and intended payload; a key used on another target is rejected rather than replayed onto it. Pre-execution validation or insufficient-credit rejection creates no accepted receipt.

**Required scope:** `identity:verify`

Start a KYC or KYB session.

Required scope: `identity:verify`. Return hosted\_url when applicable; poll verification ID for result. Once account cancellation is submitted, processing and usage deductions stop immediately. Reject new operational commands with 409 invalid\_state; pending work is cancelled without another debit. Read-only reporting remains available until workspace deletion. This is a stage of an authorized Insights or Signal workflow. processing\_context is required; unrelated, completed, unpaid, cancelled or unentitled contexts return 409 invalid\_state. It creates no separate AMLOK charge. The orchestrator deduplicates equivalent stage work within the parent. Person KYC within a business assessment requires processing\_context.subject\_association\_id. Its person\_id must match the verification subject; its business\_id must match the parent subject. Store the association ID and validated record version on the verification for audit. Pending, rejected, revoked, mismatched or cross-workspace associations cannot authorize a stage. Revocation stops unfinished related-person work. Do not create a second product merely to verify its owner. Accepted commands have a durable request receipt. Full response replay lasts 24 hours; afterward the same key and target return 409 idempotency\_result\_expired without re-execution. Different payloads return 409 idempotency\_conflict. Use GET /v1/request-receipts/lookup to find the original resource. The fingerprint includes the resolved target path and intended payload; a key used on another target is rejected rather than replayed onto it. Pre-execution validation or insufficient-credit rejection creates no accepted receipt.

[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 POST /v1/verifications
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/verifications:
    post:
      tags:
        - Identity
      summary: Start verification
      description: >-
        Start a KYC or KYB session.


        Required scope: `identity:verify`. Return hosted_url when applicable;
        poll verification ID for result. Once account cancellation is submitted,
        processing and usage deductions stop immediately. Reject new operational
        commands with 409 invalid_state; pending work is cancelled without
        another debit. Read-only reporting remains available until workspace
        deletion. This is a stage of an authorized Insights or Signal workflow.
        processing_context is required; unrelated, completed, unpaid, cancelled
        or unentitled contexts return 409 invalid_state. It creates no separate
        AMLOK charge. The orchestrator deduplicates equivalent stage work within
        the parent. Person KYC within a business assessment requires
        processing_context.subject_association_id. Its person_id must match the
        verification subject; its business_id must match the parent subject.
        Store the association ID and validated record version on the
        verification for audit. Pending, rejected, revoked, mismatched or
        cross-workspace associations cannot authorize a stage. Revocation stops
        unfinished related-person work. Do not create a second product merely to
        verify its owner. Accepted commands have a durable request receipt. Full
        response replay lasts 24 hours; afterward the same key and target return
        409 idempotency_result_expired without re-execution. Different payloads
        return 409 idempotency_conflict. Use GET /v1/request-receipts/lookup to
        find the original resource. The fingerprint includes the resolved target
        path and intended payload; a key used on another target is rejected
        rather than replayed onto it. Pre-execution validation or
        insufficient-credit rejection creates no accepted receipt.
      operationId: EP142
      parameters:
        - name: X-Request-ID
          in: header
          required: false
          description: >-
            Optional caller correlation ID; the response includes AMLOK
            request_id.
          schema:
            type: string
          example: client-request-example
        - name: Idempotency-Key
          in: header
          required: true
          description: >-
            Reuse for retries of the same intended command and identical
            payload. Retention: 24 hours.
          schema:
            type: string
          example: idem_example_1001
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EP142Request'
            example:
              subject_id: biz_example
              verification_type: kyb
              workflow_version: kyb-ca-v1
              return_url: https://client.example.com/verified
              processing_context:
                product: insights
                workflow_run_id: wfr_example
      responses:
        '201':
          description: Start a KYC or KYB session. Accepted work is not yet complete.
          headers:
            X-Request-ID:
              description: AMLOK response correlation identifier.
              schema:
                type: string
              example: req_example
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    $ref: '#/components/schemas/Verification'
                  meta:
                    $ref: '#/components/schemas/ResponseMeta'
                required:
                  - data
                  - meta
              examples:
                synthetic:
                  summary: Synthetic start verification
                  value:
                    data:
                      id: ver_example
                      object: verification
                      subject_id: biz_example
                      created_at: '2026-10-22T13:00:00Z'
                      updated_at: '2026-10-22T14:00:00Z'
                      record_version: 1
                      source_refs: []
                      data_status: pending
                      missing_fields: []
                      schema_version: 1.4.2
                      verification_type: kyb
                      status: not_started
                      hosted_url: https://verify.example.com/session
                      workflow_version: kyb-ca-v1
                      stop_reason: null
                      processing_context:
                        product: insights
                        workflow_run_id: wfr_example
                      subject_association_version: null
                    meta:
                      request_id: req_example
                      schema_version: 1.4.2
                      generated_at: '2026-10-23T14:00:00Z'
                      data_status: pending
        '400':
          $ref: '#/components/responses/Error400'
        '401':
          $ref: '#/components/responses/Error401'
        '402':
          $ref: '#/components/responses/Error402'
        '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'
        '502':
          $ref: '#/components/responses/Error502'
        '503':
          $ref: '#/components/responses/Error503'
      security:
        - BearerAuth: []
      x-codeSamples:
        - lang: Shell
          label: cURL
          source: |-
            curl --request POST --fail-with-body --max-time 30 \
              "${AMLOK_API_BASE_URL}/v1/verifications" \
              --header "Authorization: Bearer ${AMLOK_API_KEY}" \
              --header "Accept: application/json" \
              --header 'Idempotency-Key: idem_example_1001' \
              --header 'Content-Type: application/json' \
              --data '{
              "subject_id": "biz_example",
              "verification_type": "kyb",
              "workflow_version": "kyb-ca-v1",
              "return_url": "https://client.example.com/verified",
              "processing_context": {
                "product": "insights",
                "workflow_run_id": "wfr_example"
              }
            }'
        - lang: Python
          source: |-
            import os
            import requests

            base_url = os.environ["AMLOK_API_BASE_URL"].rstrip("/")
            headers = {'Accept': 'application/json',
             'Idempotency-Key': 'idem_example_1001',
             'Content-Type': 'application/json'}
            headers["Authorization"] = "Bearer " + os.environ["AMLOK_API_KEY"]

            response = requests.request(
                "POST", base_url + "/v1/verifications",
                headers=headers, timeout=30, allow_redirects=False,
                json={'subject_id': 'biz_example',
             'verification_type': 'kyb',
             'workflow_version': 'kyb-ca-v1',
             'return_url': 'https://client.example.com/verified',
             'processing_context': {'product': 'insights',
                                    'workflow_run_id': 'wfr_example'}},
            )
            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",
              "Idempotency-Key": "idem_example_1001",
              "Content-Type": "application/json"
            };

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

            const response = await fetch(baseUrl.replace(/\/$/, "") +
            "/v1/verifications", {
              method: "POST", headers,
              redirect: "error", signal: AbortSignal.timeout(30000),
              body: JSON.stringify({
              "subject_id": "biz_example",
              "verification_type": "kyb",
              "workflow_version": "kyb-ca-v1",
              "return_url": "https://client.example.com/verified",
              "processing_context": {
                "product": "insights",
                "workflow_run_id": "wfr_example"
              }
            }),

            });

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

            console.log(await response.json());
components:
  schemas:
    EP142Request:
      type: object
      properties:
        subject_id:
          type: string
          minLength: 1
          description: Authorized person or business.
        verification_type:
          type: string
          enum:
            - kyc
            - kyb
          description: kyc or kyb.
        workflow_version:
          type: string
          minLength: 1
          description: >-
            Approved ID from GET /v1/configuration workflow_versions, matching
            this workflow type and product.
        return_url:
          type: string
          minLength: 1
          format: uri
          pattern: ^https://
          description: Registered browser redirect after applicant flow; not a webhook URL.
        processing_context:
          $ref: '#/components/schemas/ProcessingContext'
      required:
        - subject_id
        - verification_type
        - workflow_version
        - processing_context
      additionalProperties: false
      allOf:
        - if:
            properties:
              verification_type:
                const: kyb
          then:
            properties:
              processing_context:
                not:
                  required:
                    - subject_association_id
    Verification:
      type: object
      properties:
        id:
          type: string
          description: >-
            Stable identifier scoped to the client tenant. Never use a provider
            ID as the public primary key.
          x-field-id: F0001
          x-classification: Confidential
          x-availability: Required when resource exists
        object:
          type: string
          const: verification
        subject_id:
          anyOf:
            - type: string
            - type: 'null'
          description: >-
            Business or person to which this record relates. Null for
            tenant-level configuration and unresolved subjects.
          x-field-id: F0003
          x-classification: Confidential
          x-availability: >-
            Source, module, country, consent and contracted permissions
            determine population.
        created_at:
          type: string
          format: date-time
          description: >-
            Time AMLOK first stored this resource. Preserve original evidence;
            do not invent missing values.
          x-field-id: F0004
          x-classification: Confidential
          x-availability: Required when resource exists
        updated_at:
          type: string
          format: date-time
          description: >-
            Time the normalized representation last changed. Preserve original
            evidence; do not invent missing values.
          x-field-id: F0005
          x-classification: Confidential
          x-availability: Required when resource exists
        observed_at:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          description: >-
            Time the source was observed by AMLOK. Do not imply this is the
            economic event time.
          x-field-id: F0006
          x-classification: Confidential
          x-availability: >-
            Source, module, country, consent and contracted permissions
            determine population.
        effective_at:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          description: >-
            Time the source states this version became valid. Preserve original
            evidence; do not invent missing values.
          x-field-id: F0007
          x-classification: Confidential
          x-availability: >-
            Source, module, country, consent and contracted permissions
            determine population.
        record_version:
          type: integer
          description: >-
            Monotonically increasing AMLOK version for this resource. Preserve
            original evidence; do not invent missing values.
          x-field-id: F0008
          x-classification: Confidential
          x-availability: Required when resource exists
        deleted_at:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          description: >-
            Tombstone timestamp for a source or AMLOK deletion. Null for records
            not deleted; retain only under the configured policy.
          x-field-id: F0009
          x-classification: Confidential
          x-availability: >-
            Source, module, country, consent and contracted permissions
            determine population.
        source_refs:
          type: array
          items:
            $ref: '#/components/schemas/SourceRef'
          description: >-
            Evidence references contributing to this record. A known empty array
            is valid for a newly client-created record.
          x-field-id: F0010
          x-classification: Confidential
          x-availability: Required when resource exists
        field_provenance:
          anyOf:
            - type: array
              items:
                $ref: '#/components/schemas/FieldProvenance'
            - type: 'null'
          description: >-
            Field-level source, extraction, transformation and quality details.
            Preserve original evidence; do not invent missing values.
          x-field-id: F0011
          x-classification: Confidential
          x-availability: >-
            Source, module, country, consent and contracted permissions
            determine population.
        data_status:
          $ref: '#/components/schemas/Enum_data_status'
          description: >-
            Whether the requested resource is complete for its stated scope.
            Completeness is relative to declared fields, sources and time
            interval.
          x-field-id: F0012
          x-classification: Confidential
          x-availability: Required when resource exists
        missing_fields:
          type: array
          items:
            $ref: '#/components/schemas/MissingField'
          description: >-
            Unavailable field paths and their explicit reasons. Preserve
            original evidence; do not invent missing values.
          x-field-id: F0013
          x-classification: Confidential
          x-availability: Required when resource exists
        schema_version:
          type: string
          description: >-
            Contract version used to serialize this record. Preserve original
            evidence; do not invent missing values.
          x-field-id: F0014
          x-classification: Confidential
          x-availability: Required when resource exists
        client_reference:
          anyOf:
            - type: string
            - type: 'null'
          description: >-
            Optional caller-owned correlation identifier. Scoped to tenant;
            uniqueness only when explicitly contracted.
          x-field-id: F0015
          x-classification: Confidential
          x-availability: >-
            Source, module, country, consent and contracted permissions
            determine population.
        extensions:
          anyOf:
            - type: object
              additionalProperties: true
            - type: 'null'
          description: >-
            Namespaced extra provider fields without changing the core schema.
            Access-controlled and documented per provider; no provider tokens.
          x-field-id: F0016
          x-classification: Restricted
          x-availability: >-
            Source, module, country, consent and contracted permissions
            determine population.
        verification_type:
          type: string
          description: >-
            Verification purpose, such as KYC or KYB. Preserve original
            evidence; do not invent missing values.
          x-field-id: F0108
          x-classification: Confidential
          x-availability: Required when resource exists
        provider_session_id:
          anyOf:
            - type: string
            - type: 'null'
          description: >-
            Upstream session identifier. Preserve original evidence; do not
            invent missing values.
          x-field-id: F0109
          x-classification: Restricted
          x-availability: >-
            Source, module, country, consent and contracted permissions
            determine population.
        status:
          $ref: '#/components/schemas/Enum_verification_status'
          description: >-
            Normalized verification state. Preserve the upstream status and
            individual check results.
          x-field-id: F0110
          x-classification: Confidential
          x-availability: Required when resource exists
        raw_status:
          anyOf:
            - type: string
            - type: 'null'
          description: >-
            Exact upstream verification status. Preserve original evidence; do
            not invent missing values.
          x-field-id: F0111
          x-classification: Confidential
          x-availability: >-
            Source, module, country, consent and contracted permissions
            determine population.
        workflow_version:
          anyOf:
            - type: string
            - type: 'null'
          description: >-
            Provider or AMLOK verification configuration version. Preserve
            original evidence; do not invent missing values.
          x-field-id: F0112
          x-classification: Confidential
          x-availability: >-
            Source, module, country, consent and contracted permissions
            determine population.
        hosted_url:
          anyOf:
            - type: string
            - type: 'null'
          description: >-
            Time-limited applicant verification link. Use only provider-approved
            domains; never persist public credentials.
          x-field-id: F0113
          x-classification: Restricted
          x-availability: >-
            Source, module, country, consent and contracted permissions
            determine population.
        expires_at:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          description: >-
            Session link or verification expiry, when explicitly defined.
            Preserve original evidence; do not invent missing values.
          x-field-id: F0114
          x-classification: Confidential
          x-availability: >-
            Source, module, country, consent and contracted permissions
            determine population.
        completed_at:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          description: >-
            Time the verification reached its current completed result. Preserve
            original evidence; do not invent missing values.
          x-field-id: F0115
          x-classification: Confidential
          x-availability: >-
            Source, module, country, consent and contracted permissions
            determine population.
        check_ids:
          anyOf:
            - type: array
              items:
                type: string
            - type: 'null'
          description: >-
            Individual checks comprising the result. Preserve original evidence;
            do not invent missing values.
          x-field-id: F0116
          x-classification: Confidential
          x-availability: >-
            Source, module, country, consent and contracted permissions
            determine population.
        warnings:
          anyOf:
            - type: array
              items:
                type: string
            - type: 'null'
          description: >-
            Provider warnings preserved with context. Preserve original
            evidence; do not invent missing values.
          x-field-id: F0117
          x-classification: Restricted
          x-availability: >-
            Source, module, country, consent and contracted permissions
            determine population.
        review_reason_codes:
          anyOf:
            - type: array
              items:
                type: string
            - type: 'null'
          description: >-
            Reasons for required review. Preserve original evidence; do not
            invent missing values.
          x-field-id: F0118
          x-classification: Restricted
          x-availability: >-
            Source, module, country, consent and contracted permissions
            determine population.
        decision_actor_type:
          anyOf:
            - type: string
            - type: 'null'
          description: >-
            Whether the result was automated or manually reviewed. Preserve
            original evidence; do not invent missing values.
          x-field-id: F0119
          x-classification: Confidential
          x-availability: >-
            Source, module, country, consent and contracted permissions
            determine population.
        report_document_id:
          anyOf:
            - type: string
            - type: 'null'
          description: >-
            Stored verification report. Preserve original evidence; do not
            invent missing values.
          x-field-id: F0120
          x-classification: Restricted
          x-availability: >-
            Source, module, country, consent and contracted permissions
            determine population.
        parent_verification_id:
          anyOf:
            - type: string
            - type: 'null'
          description: >-
            Parent KYB session for a related person's check. Preserve original
            evidence; do not invent missing values.
          x-field-id: F0121
          x-classification: Confidential
          x-availability: >-
            Source, module, country, consent and contracted permissions
            determine population.
        stop_reason:
          anyOf:
            - type: string
              enum:
                - account_cancellation
                - parent_cancelled
                - consent_revoked
            - type: 'null'
        processing_context:
          $ref: '#/components/schemas/ProcessingContext'
        subject_association_version:
          anyOf:
            - type: integer
              minimum: 1
            - type: 'null'
      required:
        - id
        - object
        - created_at
        - updated_at
        - record_version
        - source_refs
        - data_status
        - missing_fields
        - schema_version
        - verification_type
        - status
        - stop_reason
        - processing_context
        - subject_association_version
      title: verification
      description: >-
        KYC or KYB session and its aggregate result. Population depends on
        source and tenant entitlement.
    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
    ProcessingContext:
      oneOf:
        - type: object
          properties:
            product:
              const: insights
              type: string
            workflow_run_id:
              type: string
              minLength: 1
            subject_association_id:
              type: string
              minLength: 1
          required:
            - product
            - workflow_run_id
          additionalProperties: false
        - type: object
          properties:
            product:
              const: signal
              type: string
            monitoring_period_id:
              type: string
              minLength: 1
            subject_association_id:
              type: string
              minLength: 1
          required:
            - product
            - monitoring_period_id
          additionalProperties: false
      discriminator:
        propertyName: product
      description: >-
        Parent must belong to this workspace. Same-subject stages need no
        association. Only person KYC may target a different subject: supply an
        active subject_association_id linking that person to the parent
        business. Insights requires an unfinished authorized root run; Signal
        requires an active paid period. Stage scope, consent, association and
        workload are checked on every attempt. The parent business remains the
        billing and workload subject. No standalone service or extra charge.
    SourceRef:
      type: object
      properties:
        provider_id:
          type: string
          description: >-
            Inventory or supplemental provider identifier; AMLOK or CLIENT for
            internal evidence.
        connection_id:
          anyOf:
            - type: string
            - type: 'null'
          description: Authorized provider connection.
        source_record_id:
          anyOf:
            - type: string
            - type: 'null'
          description: >-
            Upstream record identifier scoped by provider, connection and record
            type.
        source_record_type:
          anyOf:
            - type: string
            - type: 'null'
          description: Provider object or report type.
        source_updated_at:
          anyOf:
            - type: string
              format: date-time
            - type: 'null'
          description: Source update time; do not replace with retrieval time.
        retrieved_at:
          type: string
          format: date-time
          description: Time AMLOK retrieved this evidence.
        document_id:
          anyOf:
            - type: string
            - type: 'null'
          description: Evidence document when applicable.
        source_api_version:
          anyOf:
            - type: string
            - type: 'null'
          description: Version of provider API/schema used.
      required:
        - provider_id
        - retrieved_at
    FieldProvenance:
      type: object
      properties:
        field_path:
          type: string
          description: Relative path in the normalized resource.
        source_ref_index:
          type: integer
          description: Zero-based index into source_refs.
        source_field_path:
          anyOf:
            - type: string
            - type: 'null'
          description: Actual field path or document locator.
        transformation_id:
          anyOf:
            - type: string
            - type: 'null'
          description: Versioned conversion/mapping rule.
        evidence_level:
          $ref: '#/components/schemas/Enum_evidence_level'
          description: Provenance class for the resulting value.
        confidence:
          anyOf:
            - type: string
              pattern: ^-?(?:0|[1-9][0-9]*)(?:\.[0-9]+)?$
              description: >-
                Exact decimal string in major units. Do not use binary
                floating-point arithmetic.
            - type: 'null'
          description: Calibrated extraction or matching confidence, if available.
        source_timezone:
          anyOf:
            - type: string
            - type: 'null'
          description: Original timezone where needed to interpret local time.
      required:
        - field_path
        - source_ref_index
        - evidence_level
    Enum_data_status:
      type: string
      enum:
        - complete
        - partial
        - unavailable
        - pending
    MissingField:
      type: object
      properties:
        field_path:
          type: string
          description: Unavailable relative field path.
        reason:
          $ref: '#/components/schemas/Enum_null_reason'
          description: Specific reason the field has no value.
        detail:
          anyOf:
            - type: string
            - type: 'null'
          description: Sanitized explanation useful to the caller.
      required:
        - field_path
        - reason
    Enum_verification_status:
      type: string
      enum:
        - not_started
        - in_progress
        - awaiting_user
        - in_review
        - approved
        - declined
        - resubmission_requested
        - expired
        - abandoned
        - verification_expired
        - unknown
        - cancelled
    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
    Enum_evidence_level:
      type: string
      enum:
        - source_record
        - document_extracted
        - client_asserted
        - derived
        - model_inferred
    Enum_null_reason:
      type: string
      enum:
        - not_provided
        - not_supported
        - not_authorized
        - not_applicable
        - pending
        - redacted
        - source_error
        - invalid
        - insufficient_history
    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
    Error402:
      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:
            insufficient_credits:
              summary: insufficient_credits
              value:
                error:
                  code: insufficient_credits
                  message: >-
                    Available credits cannot cover this operation. A rejected
                    request creates no charge. Fund the workspace through the
                    portal before retrying.
                  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
    Error502:
      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_error:
              summary: source_error
              value:
                error:
                  code: source_error
                  message: Upstream returned invalid or failed data.
                  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.