Truora Digital Identity API

Retrieves the state and consolidated results of Digital Identity verification processes launched through hosted web flows or WhatsApp conversational onboarding, combining document, face, and liveness checks into a single scored decision.

OpenAPI Specification

truora-openapi.yml Raw ↑
# Provenance: modeled-from-docs (2026-07-17). Truora publishes no downloadable
# first-party OpenAPI/Swagger document. This specification was MODELED from the
# public Truora developer documentation at https://dev.truora.com/docs/ and the
# per-product guides (Checks, Validators, Digital Identity, Account/API keys).
# Truora spans four documented production hosts, each modeled below via a
# per-path `servers` override:
#   - https://api.checks.truora.com      (Checks / background checks)
#   - https://api.validations.truora.com (Validators / KYC validations)
#   - https://api.identity.truora.com    (Digital Identity web + WhatsApp processes)
#   - https://api.account.truora.com     (Account / API-key + web integration tokens)
# Authentication is a Truora-API-Key request header (a JWT issued from the account
# dashboard or the /v1/api-keys endpoint). Region focus: LatAm (CO, CL, MX, PE, BR, SV, CR).
openapi: 3.0.3
info:
  title: Truora API
  description: >-
    Truora is a Latin American identity verification, background-check, and
    conversational-onboarding platform. This modeled specification documents the
    public REST surface across four production hosts: the Checks API (background
    checks on people, vehicles, and companies), the Validators API (document,
    facial, email, and phone validation), the Digital Identity API (web and
    WhatsApp verification processes), and the Account API (API-key and web
    integration token management). All requests authenticate with a
    `Truora-API-Key` header.
  termsOfService: https://www.truora.com/en/terms-and-conditions
  contact:
    name: Truora Developers
    url: https://dev.truora.com/
  version: '1.0'
servers:
  - url: https://api.checks.truora.com
    description: Checks API (background checks) - default host
  - url: https://api.validations.truora.com
    description: Validators API (KYC validations)
  - url: https://api.identity.truora.com
    description: Digital Identity API (web + WhatsApp processes)
  - url: https://api.account.truora.com
    description: Account API (API keys and web integration tokens)
security:
  - TruoraApiKey: []
tags:
  - name: Checks
    description: Background checks on persons, vehicles, and companies across LatAm.
  - name: Continuous Monitoring
    description: Recurring re-checks of previously verified subjects.
  - name: Validators
    description: Document, facial, email, and phone validation (KYC).
  - name: Digital Identity
    description: Web and WhatsApp identity verification processes.
  - name: Account
    description: API-key and web integration token management.
paths:
  /v1/checks:
    servers:
      - url: https://api.checks.truora.com
    post:
      operationId: createCheck
      tags:
        - Checks
      summary: Create a background check
      description: >-
        Creates a background check for a person, vehicle, or company and queues
        it to begin collecting information from LatAm public and legal-entity
        databases. Poll the returned check_id with getCheck to retrieve results.
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/CreateCheckRequest'
      responses:
        '200':
          description: Check created and queued.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Check'
        '401':
          $ref: '#/components/responses/Unauthorized'
    get:
      operationId: listChecks
      tags:
        - Checks
      summary: List background checks
      description: Retrieves the background checks created under the account.
      parameters:
        - name: check_type
          in: query
          required: false
          schema:
            type: string
            enum: [person, vehicle, company]
        - name: page_size
          in: query
          required: false
          schema:
            type: integer
      responses:
        '200':
          description: A list of checks.
          content:
            application/json:
              schema:
                type: object
                properties:
                  checks:
                    type: array
                    items:
                      $ref: '#/components/schemas/Check'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /v1/checks/{check_id}:
    servers:
      - url: https://api.checks.truora.com
    parameters:
      - $ref: '#/components/parameters/CheckId'
    get:
      operationId: getCheck
      tags:
        - Checks
      summary: Get a background check
      description: Retrieves the current status and scored results for a check.
      responses:
        '200':
          description: The requested check.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Check'
        '404':
          $ref: '#/components/responses/NotFound'
    delete:
      operationId: deleteCheck
      tags:
        - Checks
      summary: Delete a background check
      description: Removes a background check record from the account.
      responses:
        '200':
          description: Check deleted.
        '404':
          $ref: '#/components/responses/NotFound'
  /v1/checks/{check_id}/pdf:
    servers:
      - url: https://api.checks.truora.com
    parameters:
      - $ref: '#/components/parameters/CheckId'
    get:
      operationId: getCheckPdf
      tags:
        - Checks
      summary: Get a check summary PDF
      description: Returns a PDF summarizing the background-check results.
      responses:
        '200':
          description: PDF document.
          content:
            application/pdf:
              schema:
                type: string
                format: binary
  /v1/checks/{check_id}/variables:
    servers:
      - url: https://api.checks.truora.com
    parameters:
      - $ref: '#/components/parameters/CheckId'
    get:
      operationId: getCheckVariables
      tags:
        - Checks
      summary: Get check variables
      description: Returns the variables (findings) discovered for a background check.
      responses:
        '200':
          description: Variables found for the check.
          content:
            application/json:
              schema:
                type: object
  /v1/checks/{check_id}/attachments:
    servers:
      - url: https://api.checks.truora.com
    parameters:
      - $ref: '#/components/parameters/CheckId'
    get:
      operationId: getCheckAttachments
      tags:
        - Checks
      summary: Get check attachments
      description: >-
        Returns links to the certificates and supporting documents found for a
        background check.
      responses:
        '200':
          description: Attachment links.
          content:
            application/json:
              schema:
                type: object
  /v1/continuous-check:
    servers:
      - url: https://api.checks.truora.com
    post:
      operationId: createContinuousCheck
      tags:
        - Continuous Monitoring
      summary: Create a continuous check
      description: Sets up recurring background monitoring for a subject.
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                national_id:
                  type: string
                country:
                  type: string
                type:
                  type: string
                  enum: [person, vehicle, company]
      responses:
        '200':
          description: Continuous check created.
          content:
            application/json:
              schema:
                type: object
    get:
      operationId: listContinuousChecks
      tags:
        - Continuous Monitoring
      summary: List continuous checks
      description: Retrieves the active continuous checks configured on the account.
      responses:
        '200':
          description: A list of continuous checks.
          content:
            application/json:
              schema:
                type: object
  /v1/validations:
    servers:
      - url: https://api.validations.truora.com
    post:
      operationId: createValidation
      tags:
        - Validators
      summary: Create a validation
      description: >-
        Creates a KYC validation (document, facial, email, or phone). For
        document and face validations the response includes signed upload URLs
        (front_url, reverse_url) for submitting the subject's media.
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/CreateValidationRequest'
      responses:
        '200':
          description: Validation created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Validation'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /v1/validations/{validation_id}:
    servers:
      - url: https://api.validations.truora.com
    parameters:
      - name: validation_id
        in: path
        required: true
        schema:
          type: string
    get:
      operationId: getValidation
      tags:
        - Validators
      summary: Get a validation
      description: >-
        Retrieves the status and extracted details (OCR data, match results,
        background info) for a validation.
      parameters:
        - name: show_details
          in: query
          required: false
          schema:
            type: boolean
          description: When true, includes extracted document data and image links.
      responses:
        '200':
          description: The requested validation.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Validation'
        '404':
          $ref: '#/components/responses/NotFound'
  /v1/processes/{process_id}:
    servers:
      - url: https://api.identity.truora.com
    parameters:
      - $ref: '#/components/parameters/ProcessId'
    get:
      operationId: getProcess
      tags:
        - Digital Identity
      summary: Get a digital identity process
      description: >-
        Retrieves the state of a Digital Identity verification process created
        via a web integration token or a WhatsApp conversational flow.
      responses:
        '200':
          description: The requested process.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Process'
        '404':
          $ref: '#/components/responses/NotFound'
  /v1/processes/{process_id}/result:
    servers:
      - url: https://api.identity.truora.com
    parameters:
      - $ref: '#/components/parameters/ProcessId'
    get:
      operationId: getProcessResult
      tags:
        - Digital Identity
      summary: Get digital identity process results
      description: >-
        Returns the consolidated verification result (scored decision plus the
        underlying document, face, and liveness validations) for a completed
        Digital Identity or WhatsApp verification process.
      responses:
        '200':
          description: The process result.
          content:
            application/json:
              schema:
                type: object
        '404':
          $ref: '#/components/responses/NotFound'
  /v1/api-keys:
    servers:
      - url: https://api.account.truora.com
    post:
      operationId: createApiKey
      tags:
        - Account
      summary: Create an API key or web integration token
      description: >-
        Issues a Truora API key. With key_type=backend the returned JWT
        authenticates server-to-server API calls; with key_type=web it issues a
        short-lived web integration token used to launch a Digital Identity
        process in the browser or WhatsApp flow.
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/CreateApiKeyRequest'
      responses:
        '200':
          description: API key created. The JWT is returned once.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiKey'
        '401':
          $ref: '#/components/responses/Unauthorized'
    get:
      operationId: listApiKeys
      tags:
        - Account
      summary: List API keys
      description: Retrieves the API keys registered on the account.
      responses:
        '200':
          description: A list of API keys.
          content:
            application/json:
              schema:
                type: object
                properties:
                  api_keys:
                    type: array
                    items:
                      $ref: '#/components/schemas/ApiKey'
  /v1/api-keys/{api_key_id}:
    servers:
      - url: https://api.account.truora.com
    parameters:
      - name: api_key_id
        in: path
        required: true
        schema:
          type: string
    delete:
      operationId: deleteApiKey
      tags:
        - Account
      summary: Delete (revoke) an API key
      description: Revokes an API key so it can no longer authenticate requests.
      responses:
        '200':
          description: API key revoked.
        '404':
          $ref: '#/components/responses/NotFound'
components:
  securitySchemes:
    TruoraApiKey:
      type: apiKey
      in: header
      name: Truora-API-Key
      description: >-
        A JWT issued from the Truora dashboard or the /v1/api-keys endpoint,
        sent in the Truora-API-Key request header on every call.
  parameters:
    CheckId:
      name: check_id
      in: path
      required: true
      schema:
        type: string
    ProcessId:
      name: process_id
      in: path
      required: true
      schema:
        type: string
  responses:
    Unauthorized:
      description: Missing or invalid Truora-API-Key.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    NotFound:
      description: Resource not found.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  schemas:
    CreateCheckRequest:
      type: object
      required:
        - national_id
        - country
        - type
      properties:
        national_id:
          type: string
          description: National identity number of the subject.
        country:
          type: string
          description: ISO country code (CO, CL, MX, PE, BR, SV, CR).
          enum: [CO, CL, MX, PE, BR, SV, CR, ALL]
        type:
          type: string
          enum: [person, vehicle, company]
        force_creation:
          type: boolean
        user_authorized:
          type: boolean
    Check:
      type: object
      properties:
        check_id:
          type: string
        account_id:
          type: string
        national_id:
          type: string
        check_type:
          type: string
        country:
          type: string
        creation_date:
          type: string
          format: date-time
        status:
          type: string
          description: e.g. not_started, in_progress, completed, error, delayed.
        score:
          type: number
          format: float
          description: Risk score between 0 and 1.
    CreateValidationRequest:
      type: object
      required:
        - type
        - country
        - user_authorized
      properties:
        type:
          type: string
          enum:
            - document-validation
            - face-recognition
            - face-revalidation
            - email
            - phone
            - electronic-signature
        country:
          type: string
          enum: [CO, CL, MX, PE, BR, SV, ALL]
        document_type:
          type: string
          description: e.g. national-id, passport, foreign-id, driver-license.
        user_authorized:
          type: boolean
        account_id:
          type: string
        timeout:
          type: integer
    Validation:
      type: object
      properties:
        validation_id:
          type: string
        account_id:
          type: string
        validation_status:
          type: string
          description: e.g. pending, success, failure.
        creation_date:
          type: string
          format: date-time
        front_url:
          type: string
          description: Signed URL for uploading the front of a document.
        reverse_url:
          type: string
          description: Signed URL for uploading the back of a document.
        details:
          type: object
          description: Extracted OCR data, match results, and background info.
    Process:
      type: object
      properties:
        process_id:
          type: string
        account_id:
          type: string
        status:
          type: string
        creation_date:
          type: string
          format: date-time
        flow_id:
          type: string
    CreateApiKeyRequest:
      type: object
      required:
        - key_type
      properties:
        key_type:
          type: string
          enum: [backend, web, sdk]
        grant:
          type: string
          description: Product grant, e.g. digital-identity, signals, all.
        api_key_version:
          type: string
          enum: ['1', '2']
        country:
          type: string
    ApiKey:
      type: object
      properties:
        api_key_id:
          type: string
        api_key:
          type: string
          description: The JWT credential. Returned once at creation time.
        key_type:
          type: string
        grant:
          type: string
        creation_date:
          type: string
          format: date-time
    Error:
      type: object
      properties:
        code:
          type: integer
        message:
          type: string