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

# Batch check PIX key existence

> Probes up to 200 PIX key values for existence in one call, backed by the BACEN DICT keys/check (dict-np host). Returns one existence-only result per submitted key, in submission order, plus BACEN's own operational envelope (bacen.correlationId / bacen.responseTime) for the probe this call made — one envelope per call, omitted when every verdict was already retained locally and no probe reached BACEN. This capability requires the dict-np seam: a deployment that does not carry it answers 501 with code SPI-1012 — a PERMANENT refusal, not a retryable one, so a client must stop rather than retry. 503 (SPI-1010) keeps its usual meaning here and only that one: BACEN DICT is reachable in principle but down or failing right now, and the call may be retried.



## OpenAPI

````yaml /pt/openapi/v3-current/spi-dict.yaml post /api/v1/dict/keys/check
openapi: 3.1.0
info:
  contact:
    email: contact@lerian.studio
    name: Lerian Studio
    url: https://lerian.studio
  description: >-
    OpenAPI 3.1 surface for the DICT (Diretório de Identificadores de Contas
    Transacionais) capability of Lerian SPI, the direct integration between the
    institution and the Brazilian Instant Payment System (SPI/Pix). It covers
    the PIX key lifecycle, portability and ownership claims, the MED 2.0 dispute
    surface (infraction reports, refunds, fraud markers, and funds recoveries),
    antifraud statistics, synchronous DICT reports, and the internal operations
    that keep the key directory consistent.
  license:
    name: Lerian Studio General License
  title: Lerian SPI — DICT API
  version: 1.0.0
servers:
  - url: https://api.example.com
    description: >-
      Replace the example host with the URL provided during environment
      onboarding.
security: []
tags:
  - description: 'PIX key lifecycle: register, list, search, lookup, delete, and statistics.'
    name: Keys
  - description: >-
      PIX key portability and ownership claims through their full lifecycle
      (initiate, confirm, reject, cancel, acknowledge, complete).
    name: Claims
  - description: 'DICT infraction reports: list and retrieve.'
    name: Infractions
  - description: 'DICT refund requests: create, list, and retrieve.'
    name: Refunds
  - description: 'PIX fraud markers: create, list, and statistics.'
    name: Fraud Markers
  - description: >-
      Durable MED operation-intent status: the operationId every
      create/lifecycle-transition backlog route returns or references on every
      outcome, queryable independently of the business resource.
    name: Operations
  - description: >-
      Synchronous reports over Lerian SPI's own DICT record: COUNT(*) summaries
      of keys (by type/status) and claims (by type/status + open-past-deadline).
      COUNT-only — DICT holds no money.
    name: Reports
  - description: >-
      DICT 8.4 section 13.2.3 query monitoring: read the query indicators, block
      or release an end user after a founded suspicion, and read the DICT
      request-limiting token buckets.
    name: Query Monitoring
  - description: >-
      DICT synchronism checks transported to BACEN for the participant named in
      X-ISPB: sync verification, CID resolution and CID set events, projected
      verbatim.
    name: VSync
paths:
  /api/v1/dict/keys/check:
    post:
      tags:
        - Keys
      summary: Batch check PIX key existence
      description: >-
        Probes up to 200 PIX key values for existence in one call, backed by the
        BACEN DICT keys/check (dict-np host). Returns one existence-only result
        per submitted key, in submission order, plus BACEN's own operational
        envelope (bacen.correlationId / bacen.responseTime) for the probe this
        call made — one envelope per call, omitted when every verdict was
        already retained locally and no probe reached BACEN. This capability
        requires the dict-np seam: a deployment that does not carry it answers
        501 with code SPI-1012 — a PERMANENT refusal, not a retryable one, so a
        client must stop rather than retry. 503 (SPI-1010) keeps its usual
        meaning here and only that one: BACEN DICT is reachable in principle but
        down or failing right now, and the call may be retried.
      operationId: checkKeys
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CheckKeysRequest'
              description: >-
                Up to 200 PIX key values to probe for existence in one batch
                (backed by BACEN dict-np keys/check); response is existence-only
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CheckKeysResponse'
                description: One existence result per submitted key, in submission order
          description: OK
        '422':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: Unprocessable Entity
        '429':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: Too Many Requests
        '500':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: Internal Server Error
        '501':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: Not Implemented
        '503':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: Service Unavailable
        default:
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: Error
      security:
        - BearerAuth: []
components:
  schemas:
    CheckKeysRequest:
      additionalProperties: false
      properties:
        keys:
          description: >-
            PIX key values to probe for existence (1..200 per batch). Each entry
            must be a non-blank key of at most 77 characters; a blank entry is
            refused rather than silently probed.
          items:
            maxLength: 77
            minLength: 1
            type: string
          maxItems: 200
          minItems: 1
          type:
            - array
            - 'null'
      required:
        - keys
      type: object
    CheckKeysResponse:
      additionalProperties: false
      properties:
        bacen:
          $ref: '#/components/schemas/BACENEnvelopeResponse'
          description: >-
            BACEN's own operational envelope for the probe this call made — one
            per call, not per key. Omitted when the call reached no probe, or
            when BACEN's answer carried no correlation id.
        results:
          description: One existence result per submitted key, in submission order.
          items:
            $ref: '#/components/schemas/CheckKeyResult'
          type: array
      required:
        - results
      type: object
    Detail:
      additionalProperties: false
      properties:
        code:
          description: >-
            Stable, machine-readable domain error code scoped to the emitting
            service (format: <SERVICE>-NNNN).
          type: string
        correlationId:
          description: Request-scoped correlation identifier echoing X-Request-ID.
          examples:
            - req-7a3f9c2e
          type: string
        detail:
          description: >-
            A human-readable explanation specific to this occurrence of the
            problem.
          examples:
            - Property foo is required but is missing.
          type: string
        errors:
          description: Optional list of individual error details
          items:
            $ref: '#/components/schemas/ErrorDetail'
          type:
            - array
            - 'null'
        instance:
          description: >-
            A URI reference that identifies the specific occurrence of the
            problem.
          examples:
            - https://example.com/error-log/abc123
          format: uri
          type: string
        status:
          description: HTTP status code
          examples:
            - 400
          format: int64
          type: integer
        title:
          description: >-
            A short, human-readable summary of the problem type. This value
            should not change between occurrences of the error.
          examples:
            - Bad Request
          type: string
        type:
          default: about:blank
          description: A URI reference to human-readable documentation for the error.
          examples:
            - https://example.com/errors/example
          format: uri
          type: string
        upstream:
          $ref: '#/components/schemas/Upstream'
          description: >-
            RFC 9457 extension member: the error a proxied third-party provider
            reported. Absent unless the emitting service explicitly surfaced
            one.
      required:
        - correlationId
      type: object
    BACENEnvelopeResponse:
      additionalProperties: false
      properties:
        correlationId:
          description: >-
            BACEN's own correlation identifier for its most recent interaction
            on this record — the wire value, distinct from any request-scoped
            echo.
          examples:
            - a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4
          type: string
        lastModified:
          description: >-
            BACEN's own LastModified for this resource (RFC 3339, UTC) — the
            version this response reflects; present only on the MED resources
            (infraction, refund, fraud marker, funds recovery).
          examples:
            - '2026-06-14T12:00:00Z'
          type: string
        responseTime:
          description: >-
            Instant BACEN answered its most recent interaction on this record,
            RFC 3339 (UTC); omitted when BACEN's response carried no parseable
            instant.
          examples:
            - '2026-06-14T12:00:00Z'
          type: string
      required:
        - correlationId
      type: object
    CheckKeyResult:
      additionalProperties: false
      properties:
        hasEntry:
          description: Whether the key has a DICT entry.
          examples:
            - true
          type: boolean
        key:
          description: The submitted PIX key value.
          examples:
            - '12345678901'
          type: string
      required:
        - key
        - hasEntry
      type: object
    ErrorDetail:
      additionalProperties: false
      properties:
        location:
          description: >-
            Where the error occurred, e.g. 'body.items[3].tags' or
            'path.thing-id'
          type: string
        message:
          description: Error message text
          type: string
        value:
          description: The value at the given location
      type: object
    Upstream:
      additionalProperties: false
      properties:
        code:
          description: The upstream provider's own error code, verbatim.
          examples:
            - E4001
          type: string
        message:
          description: >-
            The upstream provider's own error message, verbatim (bounded, never
            its raw response body).
          examples:
            - account not found at provider
          type: string
      type: object
  securitySchemes:
    BearerAuth:
      bearerFormat: JWT
      description: JWT bearer token issued by the identity provider.
      scheme: bearer
      type: http

````

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