Skip to content

DICT API Reference

The DICT API endpoints are served by the Settlement Service gateway on port 4003, which proxies requests to the DICT Service on port 4001. All endpoints require JWT authentication.

Base URL: http://localhost:4003/api/v1

Key Management

Create Key

Register a new PIX key for an account.

POST /keys

Request Body:

json
{
  "key_type": "cpf",
  "key_value": "12345678901",
  "account": {
    "participant_ispb": "12345678",
    "branch": "0001",
    "account_number": "123456",
    "account_type": "CACC"
  },
  "owner": {
    "type": "NATURAL_PERSON",
    "tax_id": "12345678901",
    "name": "Maria Silva"
  }
}

Key Type Values:

TypeFormatExample
cpf11 digits12345678901
cnpj14 digits11222333000181
phoneE.164+5511999887766
emailEmail addressuser@example.com
evp(auto-generated)Leave key_value empty

Response: 201 Created

json
{
  "key_type": "cpf",
  "key_value": "12345678901",
  "account": {
    "participant_ispb": "12345678",
    "branch": "0001",
    "account_number": "123456",
    "account_type": "CACC"
  },
  "owner": {
    "type": "NATURAL_PERSON",
    "tax_id": "12345678901",
    "name": "Maria Silva"
  },
  "cid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
  "status": "active",
  "created_at": "2024-01-15T10:30:00Z"
}

Error Responses:

StatusCodeDescription
400INVALID_KEY_FORMATKey value doesn't match the expected format
400KEY_LIMIT_EXCEEDEDOwner has reached the maximum number of keys
409KEY_ALREADY_EXISTSKey is already registered by another participant
409KEY_OWNED_BY_ANOTHERKey belongs to a different owner (use claim)
422INVALID_ACCOUNTAccount information is invalid

Lookup Key

Retrieve account information associated with a PIX key.

POST /keys/lookup

Request Body:

json
{
  "key": "+5511999887766"
}

Response: 200 OK

json
{
  "key_type": "phone",
  "key_value": "+5511999887766",
  "account": {
    "participant_ispb": "87654321",
    "branch": "0002",
    "account_number": "654321",
    "account_type": "CACC"
  },
  "owner": {
    "type": "NATURAL_PERSON",
    "tax_id": "***456***01",
    "name": "Jo** Si***"
  },
  "cid": "f1e2d3c4-b5a6-7890-dcba-fe0987654321",
  "status": "active",
  "created_at": "2024-01-10T08:00:00Z"
}

INFO

Owner information is partially masked in lookup responses as required by BACEN privacy regulations. Full details are only available for keys owned by your institution.


List Keys

List PIX keys registered by your institution.

GET /keys

Query Parameters:

ParameterTypeDescription
key_typestringFilter by key type
statusstringFilter by status (active, pending, removed)
owner_tax_idstringFilter by owner CPF/CNPJ
account_numberstringFilter by account number
pageintegerPage number (default: 1)
per_pageintegerItems per page (default: 20, max: 100)
sortstringSort field (default: created_at)
orderstringSort direction: asc or desc

Response: 200 OK

json
{
  "data": [
    {
      "key_type": "cpf",
      "key_value": "12345678901",
      "status": "active",
      "owner": { "name": "Maria Silva" },
      "created_at": "2024-01-15T10:30:00Z"
    }
  ],
  "meta": {
    "page": 1,
    "per_page": 20,
    "total": 1542,
    "total_pages": 78
  }
}

Get Key Details

Retrieve full details for a specific key.

GET /keys/:key_value

Response: 200 OK

Returns the same structure as the Create Key response.


Delete Key

Remove a registered PIX key.

DELETE /keys/:key_value

Response: 204 No Content

Error Responses:

StatusCodeDescription
404KEY_NOT_FOUNDKey does not exist or is not owned by your institution
409KEY_HAS_ACTIVE_CLAIMKey has a pending claim and cannot be removed
423KEY_LOCKEDKey is temporarily locked (retry later)

Claims

Create Claim

Initiate a portability or ownership claim for a PIX key.

POST /claims

Request Body:

json
{
  "claim_type": "PORTABILITY",
  "key_type": "phone",
  "key_value": "+5511999887766",
  "claimer_account": {
    "participant_ispb": "12345678",
    "branch": "0001",
    "account_number": "123456",
    "account_type": "CACC"
  }
}

Claim Types:

TypeDescriptionResolution Period
PORTABILITYTransfer key to your institution7 calendar days
OWNERSHIPTransfer key to different owner14 calendar days

Response: 201 Created

json
{
  "claim_id": "c1d2e3f4-a5b6-7890-cdef-123456789012",
  "claim_type": "PORTABILITY",
  "key_value": "+5511999887766",
  "status": "OPEN",
  "donor_ispb": "87654321",
  "claimer_ispb": "12345678",
  "created_at": "2024-01-15T10:30:00Z",
  "expires_at": "2024-01-22T10:30:00Z"
}

Update Claim

Confirm, deny, or cancel a claim. Used by the donor institution to respond.

PUT /claims/:claim_id

Request Body:

json
{
  "action": "CONFIRM"
}

Actions:

ActionActorDescription
CONFIRMDonorAccept the claim, transfer the key
DENYDonorReject the claim (must provide reason)
CANCELClaimerWithdraw the claim

Response: 200 OK

json
{
  "claim_id": "c1d2e3f4-a5b6-7890-cdef-123456789012",
  "status": "CONFIRMED",
  "resolved_at": "2024-01-16T14:00:00Z"
}

List Claims

GET /claims

Query Parameters:

ParameterTypeDescription
statusstringOPEN, CONFIRMED, DENIED, CANCELLED
claim_typestringPORTABILITY or OWNERSHIP
rolestringdonor or claimer
pageintegerPage number
per_pageintegerItems per page

Infractions

Create Infraction Report

POST /infractions

Request Body:

json
{
  "end_to_end_id": "E1234567820240115120012345678901",
  "infraction_type": "FRAUD",
  "report_details": "Unauthorized transaction reported by account holder"
}

Infraction Types:

TypeDescription
FRAUDConfirmed or suspected fraud
REQUEST_REFUNDAccount holder requests refund
ACCOUNT_CLOSUREAccount closed, funds need return

Response: 201 Created

json
{
  "infraction_id": "inf-123456",
  "end_to_end_id": "E1234567820240115120012345678901",
  "infraction_type": "FRAUD",
  "status": "OPEN",
  "created_at": "2024-01-15T10:30:00Z"
}

Common Response Codes

StatusDescription
200Success
201Resource created
204Deleted successfully (no body)
400Validation error
401Invalid or missing authentication
403Insufficient permissions
404Resource not found
409Conflict (duplicate, active claim, etc.)
422Unprocessable entity
423Resource locked
429Rate limited
500Internal server error
503Service unavailable (BACEN connectivity)

Pagination

All list endpoints support pagination:

json
{
  "data": [...],
  "meta": {
    "page": 1,
    "per_page": 20,
    "total": 1542,
    "total_pages": 78
  }
}

Use page and per_page query parameters. Maximum per_page is 100.

FluxiQ PIX - Plataforma Brasileira de Pagamento Instantaneo