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

# Get a check and its result

> One check. A completed AML check adds `screening`, a document check
`document`, and a KYB check `kyb`. Scope `results:read`.




## OpenAPI

````yaml /sentinel/openapi.yaml get /v1/verify/{id}
openapi: 3.1.0
info:
  title: Sentinel API
  version: 1.0.0
  summary: >-
    KYC, KYB, AML screening, document (IDP) checks and transaction monitoring
    for Kenya and East Africa.
  description: |
    The Sentinel API by Deeptrack lets your systems run identity, business and
    AML checks without opening the dashboard.

    **Authentication.** Send your API key as a bearer token:
    `Authorization: Bearer gt_live_…` (or `gt_test_…`). Create keys in
    Sentinel under **Developer → API Keys**. Each key has scopes; a key
    without the scope a route needs gets `403`.

    **Test mode.** Test keys (`gt_test_`) return a sandbox result at once
    (`status: completed`, `verdict: pass`, `sandbox: true`), are never
    charged, and store none of the names, numbers or images you send.

    **Asynchronous checks.** `POST /v1/verify/*` answers `202` with an `id`.
    The result arrives by webhook (`sentinel.scan.complete`) or with
    `GET /v1/verify/{id}`.

    **Errors.** Every error is JSON with an `error` message; validation
    errors add `details`, describing what each field takes.

    **Rate limits.** Per key, by plan (Trial 10/min, Starter 60, Growth 200,
    Business 500, Enterprise 1,000), plus an organization-wide cap. A limited
    request gets `429` with `Retry-After` in seconds.

    **Pagination.** List endpoints take `limit` (1–100) and `before`; pass
    the previous answer's `nextCursor` as `before` to get the next page.
    `nextCursor` is `null` on the last page.

    Guides with curl, Node and Python examples are in the Sentinel manual,
    chapters C1 to C9.
  contact:
    name: Deeptrack
    email: tech@deeptrack.io
    url: https://deeptrack.io
  x-changelog: See the manual, chapter C9 (API reference, OpenAPI and Postman).
servers:
  - url: https://robust-parakeet-542.convex.site
    description: >-
      Sentinel production API. Shown on the API Keys page; it may move to an
      api.* address, which will be announced in C9.
security:
  - bearerAuth: []
tags:
  - name: KYC
    description: Identity checks (document, liveness, face match, IPRS and AML).
  - name: KYB
    description: Business checks (registration, address, directors and owners).
  - name: Documents
    description: >-
      IDP document checks (identity documents, proof of address, KRA PIN
      certificates).
  - name: AML
    description: Sanctions, PEP and watch-list screening, and ongoing monitoring.
  - name: Transactions
    description: Transaction monitoring (Business and Enterprise plans, and the trial).
  - name: Capture links
    description: Links a customer opens on their phone to capture their ID and a selfie.
  - name: Results
    description: Read checks and their results.
  - name: Credits
    description: Credit balance, prices and usage.
paths:
  /v1/verify/{id}:
    get:
      tags:
        - Results
      summary: Get a check and its result
      description: |
        One check. A completed AML check adds `screening`, a document check
        `document`, and a KYB check `kyb`. Scope `results:read`.
      operationId: getCheck
      parameters:
        - name: id
          in: path
          required: true
          description: The check's id, for example `ver_3f9a1c0b7d2e4a51…`.
          schema:
            type: string
            pattern: ^[A-Za-z0-9_-]{1,128}$
      responses:
        '200':
          description: The check.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Check'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '429':
          $ref: '#/components/responses/RateLimited'
components:
  schemas:
    Check:
      allOf:
        - $ref: '#/components/schemas/CheckSummary'
        - type: object
          required:
            - failureReason
            - sandbox
          properties:
            failureReason:
              type:
                - string
                - 'null'
            sandbox:
              type: boolean
            screening:
              $ref: '#/components/schemas/AmlScreening'
            document:
              $ref: '#/components/schemas/DocumentResult'
            kyb:
              $ref: '#/components/schemas/KybResult'
    CheckSummary:
      type: object
      required:
        - id
        - type
        - status
        - verdict
        - confidence
        - createdAt
        - completedAt
      properties:
        id:
          type: string
        type:
          type: string
          enum:
            - idp
            - kyb
            - aml
            - liveness
            - kyi
            - document
        status:
          type: string
          enum:
            - queued
            - processing
            - completed
            - failed
        verdict:
          $ref: '#/components/schemas/Verdict'
        confidence:
          type:
            - number
            - 'null'
          description: 1 for pass, 0 for reject, null for review.
        createdAt:
          $ref: '#/components/schemas/Millis'
        completedAt:
          type:
            - number
            - 'null'
    AmlScreening:
      type: object
      description: Completed AML checks only.
      properties:
        reason:
          type:
            - string
            - 'null'
        categories:
          type:
            - object
            - 'null'
          description: >-
            Hits per category (sanctions, pep, special_interest,
            fitness_probity, adverse_media, insolvency) and the most severe PEP
            class.
        sources:
          type: object
          properties:
            watchlists:
              type: array
              items:
                type: object
                properties:
                  source:
                    type:
                      - string
                      - 'null'
                  stale:
                    type: boolean
                    description: True when the list is older than its refresh window.
            openSanctions:
              type:
                - string
                - 'null'
        matches:
          type: array
          items:
            type: object
            properties:
              source:
                type:
                  - string
                  - 'null'
              sourceRecordId:
                type:
                  - string
                  - 'null'
              entityName:
                type:
                  - string
                  - 'null'
              program:
                type:
                  - string
                  - 'null'
              matchScore:
                type:
                  - number
                  - 'null'
                description: 0 to 100.
              riskLevel:
                type:
                  - string
                  - 'null'
              matchedCountry:
                type:
                  - string
                  - 'null'
              topics:
                type: array
                items:
                  type: string
              categories:
                type: array
                items:
                  type: string
              pepClass:
                type:
                  - integer
                  - 'null'
                description: 1 (most senior) to 4.
              birthDateMatch:
                type:
                  - string
                  - 'null'
    DocumentResult:
      type: object
      description: Completed document checks only.
      properties:
        reason:
          type:
            - string
            - 'null'
        riskScore:
          type:
            - number
            - 'null'
        documentKind:
          type:
            - string
            - 'null'
          enum:
            - identity
            - proof_of_address
            - kra_pin
            - null
        identity:
          type:
            - object
            - 'null'
          description: Fields read from an identity document.
        proofOfAddress:
          type:
            - object
            - 'null'
          description: Name, address and issue date read from a proof of address.
        kraPin:
          type:
            - object
            - 'null'
          description: PIN and taxpayer read from a KRA PIN certificate.
        checks:
          type: array
          items:
            type: object
        flags:
          type: array
          items:
            type: string
        ocr:
          type:
            - object
            - 'null'
        forensics:
          type:
            - object
            - 'null'
    KybResult:
      type: object
      description: Completed KYB checks only.
      properties:
        reason:
          type:
            - string
            - 'null'
        certificate:
          $ref: '#/components/schemas/KybPart'
        proofOfAddress:
          $ref: '#/components/schemas/KybPart'
        registry:
          type:
            - object
            - 'null'
          properties:
            status:
              type:
                - string
                - 'null'
        parties:
          type: array
          items:
            type: object
            properties:
              name:
                type:
                  - string
                  - 'null'
              role:
                type:
                  - string
                  - 'null'
              verdict:
                $ref: '#/components/schemas/Verdict'
              reason:
                type:
                  - string
                  - 'null'
              hits:
                type: integer
    Error:
      type: object
      required:
        - error
      properties:
        error:
          type: string
        details:
          type: object
          additionalProperties: true
    Verdict:
      type:
        - string
        - 'null'
      enum:
        - pass
        - review
        - reject
        - null
      description: >-
        `pass`, `review` (a person needs to look) or `reject`; null until the
        check completes.
    Millis:
      type: number
      description: Unix time in milliseconds.
    KybPart:
      type:
        - object
        - 'null'
      properties:
        verdict:
          $ref: '#/components/schemas/Verdict'
        reason:
          type:
            - string
            - 'null'
  responses:
    BadRequest:
      description: Missing or invalid fields. `details` describes what each field takes.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: 'Missing required fields: subjectName'
            details:
              subjectName: string of at most 200 characters
    Unauthorized:
      description: Missing, malformed, unknown or revoked API key.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: Invalid API key
    Forbidden:
      description: >-
        The key lacks the scope, the IP address isn't allowed, the plan doesn't
        include the feature, or the account isn't active.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: >-
              This API key can't call POST /v1/verify/aml. Give it the
              "verify:aml" scope or use another key.
    NotFound:
      description: Nothing with that id in your organization.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: Verification not found
    RateLimited:
      description: Too many requests. Wait `Retry-After` seconds.
      headers:
        Retry-After:
          schema:
            type: integer
          description: Seconds to wait.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: Rate limit exceeded
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: 'Your API key: gt_live_… or gt_test_…'

````

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