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

# Search the participant's fraud markers at BACEN

> Reads BACEN's listFraudMarkers for one document and answers the page verbatim: the fraud markers the participant itself made, narrowed by the optional key, status and modification window. A read sent as POST so the CPF/CNPJ travels in the JSON body, never in a URL; it stores nothing locally (GET /api/v1/dict/fraud-markers stays the local registry). An empty list when BACEN holds none. 403 for a participant outside the caller's scope; 422 for an invalid body or when BACEN rejects the query; 429 with Retry-After when throttled; 503 when BACEN cannot be reached.



## OpenAPI

````yaml /es/openapi/v3-current/spi-dict.yaml post /api/v1/dict/fraud-markers/search
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: 'Internal DICT operations: claim deadline processing.'
    name: Internal
  - 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/fraud-markers/search:
    post:
      tags:
        - Fraud Markers
      summary: Search the participant's fraud markers at BACEN
      description: >-
        Reads BACEN's listFraudMarkers for one document and answers the page
        verbatim: the fraud markers the participant itself made, narrowed by the
        optional key, status and modification window. A read sent as POST so the
        CPF/CNPJ travels in the JSON body, never in a URL; it stores nothing
        locally (GET /api/v1/dict/fraud-markers stays the local registry). An
        empty list when BACEN holds none. 403 for a participant outside the
        caller's scope; 422 for an invalid body or when BACEN rejects the query;
        429 with Retry-After when throttled; 503 when BACEN cannot be reached.
      operationId: searchFraudMarkers
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SearchFraudMarkersRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FraudMarkerSearchResponse'
          description: OK
        '403':
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/Detail'
          description: Forbidden
        '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
        '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:
    SearchFraudMarkersRequest:
      additionalProperties: false
      properties:
        key:
          description: >-
            Optional Pix key the markers are associated with; BACEN requires it
            to belong to taxIdNumber's owner. A blank value is treated as
            absent.
          examples:
            - usuario@example.com
          maxLength: 77
          type: string
        limit:
          description: >-
            Optional maximum number of markers BACEN returns (1 to 200). Omitted
            leaves BACEN's default of 20.
          examples:
            - 20
          format: int64
          maximum: 200
          minimum: 1
          type: integer
        modifiedAfter:
          description: >-
            Optional lower bound (RFC 3339): markers modified at or after this
            instant.
          examples:
            - '2026-09-01T00:00:00Z'
          format: date-time
          type: string
        modifiedBefore:
          description: >-
            Optional upper bound (RFC 3339): markers modified at or before this
            instant. Must not be earlier than modifiedAfter.
          examples:
            - '2026-09-30T23:59:59Z'
          format: date-time
          type: string
        participantISPB:
          description: >-
            ISPB (8 digits or uppercase letters) of the participant whose own
            fraud markers are searched; gated to the calling direct's scope (the
            direct itself or an indirect it sponsors) and sent to BACEN as
            Participant.
          examples:
            - '12345678'
          pattern: ^[0-9A-Z]{8}$
          type: string
        status:
          description: >-
            Optional BACEN FraudMarkerStatus filter: REGISTERED (active) or
            CANCELLED. Omitted returns both.
          enum:
            - REGISTERED
            - CANCELLED
          examples:
            - REGISTERED
          type: string
        taxIdNumber:
          description: >-
            CPF (11 digits) or CNPJ (14 digits) the markers are associated with.
            Required by BACEN's listFraudMarkers, whose TaxIdNumber pattern is
            numeric.
          examples:
            - '52998224725'
          pattern: ^(?:[0-9]{11}|[0-9]{14})$
          type: string
      required:
        - participantISPB
        - taxIdNumber
      type: object
    FraudMarkerSearchResponse:
      additionalProperties: false
      properties:
        hasMore:
          description: 'BACEN''s HasMoreElements: more markers match than this page carries.'
          type: boolean
        items:
          description: >-
            The participant's own fraud markers BACEN answered for the filters,
            as BACEN projects them. Nothing is stored locally. participantISPB
            is the searched participant (listFraudMarkers answers only that
            participant's markers); status uses the local vocabulary (REGISTERED
            -> ACTIVE, CANCELLED -> INACTIVE); keyValueHash, ownerTaxIdHash and
            reportStatus are empty because the markers are not local records;
            createdAt and updatedAt are BACEN's CreationTime and LastModified.
          items:
            $ref: '#/components/schemas/FraudMarkerResponse'
          type: array
        requestId:
          description: >-
            Request-scoped identifier echoing X-Request-ID, for pivoting from
            response to trace. This is OUR OWN echo, distinct from any item's
            bacen.correlationId, which is BACEN's own value.
          type: string
      required:
        - items
        - hasMore
      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
    FraudMarkerResponse:
      additionalProperties: false
      properties:
        bacen:
          $ref: '#/components/schemas/BACENEnvelopeResponse'
          description: >-
            BACEN's own operational envelope for its most recent interaction on
            this fraud marker, including its LastModified version; omitted when
            no BACEN interaction has ever landed on it.
        bacenCreationTime:
          description: >-
            When BACEN created this fraud marker (RFC 3339, UTC); distinct from
            createdAt
          examples:
            - '2026-06-14T12:00:00Z'
          type: string
        createdAt:
          description: Record creation timestamp (RFC 3339, UTC)
          examples:
            - '2026-06-14T12:00:00Z'
          type: string
        fraudType:
          description: >-
            BACEN fraud classification: APPLICATION_FRAUD, MULE_ACCOUNT,
            SCAMMER_ACCOUNT, OTHER, or UNKNOWN
          examples:
            - MULE_ACCOUNT
          type: string
        id:
          description: >-
            BACEN-assigned fraud-marker resource UUID — the public, canonical
            identity of this record
          examples:
            - 550e8400-e29b-41d4-a716-446655440002
          type: string
        keyValue:
          description: >-
            Clear Pix key value the caller informed or BACEN echoed
            (ExtendedFraudMarker.Key); omitted when no key is known
          examples:
            - usuario@example.com
          type: string
        keyValueHash:
          description: >-
            HMAC hash of the marked Pix key value (hex); empty when no key was
            given
          examples:
            - e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
          type: string
        originInfractionReportId:
          description: >-
            BACEN-assigned infraction that originated this marker
            (ExtendedFraudMarker.InfractionReport.Id); omitted when there is
            none
          examples:
            - 550e8400-e29b-41d4-a716-446655440005
          type: string
        originInfractionReporterISPB:
          description: >-
            Reporter ISPB of the originating infraction
            (ExtendedFraudMarker.InfractionReport.ReporterParticipant); omitted
            when there is none
          examples:
            - '12345678'
          type: string
        originOperationId:
          description: >-
            Durable operation-intent id that produced this snapshot's current
            state, when known
          examples:
            - 01930000-0000-7000-8000-000000000000
          type: string
        ownerTaxId:
          description: >-
            BACEN-observed clear owner tax ID (CPF/CNPJ) —
            ExtendedFraudMarker.TaxIdNumber; omitted when BACEN has never echoed
            one back
          examples:
            - '52998224725'
          type: string
        ownerTaxIdHash:
          description: >-
            HMAC hash of the owner tax ID (hex); kept for consumers that
            index/audit on the minimized projection
          examples:
            - e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
          type: string
        participantISPB:
          description: >-
            ISPB (8 digits or uppercase letters) of the participant that raised
            the fraud marker
          examples:
            - '12345678'
          type: string
        reportStatus:
          description: >-
            BACEN report delivery state. Always SENT at rest (a resource row is
            persisted only once BACEN has confirmed it; a rejected or ambiguous
            attempt creates no row).
          examples:
            - SENT
          type: string
        status:
          description: >-
            Local fraud-marker state: ACTIVE (counts toward fraud stats) or
            INACTIVE (retained for audit only)
          examples:
            - ACTIVE
          type: string
        updatedAt:
          description: Last update timestamp (RFC 3339, UTC)
          examples:
            - '2026-06-14T12:00:00Z'
          type: string
      required:
        - id
        - keyValueHash
        - ownerTaxIdHash
        - participantISPB
        - fraudType
        - status
        - reportStatus
        - createdAt
        - updatedAt
      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
    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
  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.