CPF dossier
POST/v1/dossie/cpf
Creates a compliance dossier for an individual: PEP, sanctions (CEIS and CNEP), federal administration expulsions (CEAF), TCU lists, slave labor, federal active debt (PGFN) and international sanctions. Processing is asynchronous: the API replies 202 with a dossie_id, and you read the result with GET /v1/dossie/cpf/{id} or get a notice at your callback_url.
Request body
- cpfstringrequired
- CPF with or without punctuation.
- descriptionstringrequired
- Purpose of the lookup, 1 to 200 characters. Example: "Anti-money laundering".
- birthdatestringrequired
- Birth date of the individual,
YYYY-MM-DD. The cadastral lookup is the same asPOST /v1/cpfand checks CPF and birth date together; on a mismatch the dossier ends asfailed(CPF_NOT_FOUND). It is neither returned nor stored. - callback_urlstring
- Public HTTPS URL that receives a notice when the dossier finishes. No IP address, localhost or port other than 443.
100 credits per completed dossier. Failed dossiers are not charged.
- The birth date is required, as in
POST /v1/cpf; missing or invalid returns 400.basic_info(name, cadastral status and birth date) comes from the BrazID base and, if the CPF is not in it yet, is fetched with the standard cadastral lookup at no extra cost. If the CPF does not exist or the birth date does not match, the dossier ends asfailedwith the codeCPF_NOT_FOUNDand nothing is charged. - Privacy (LGPD): the full CPF, name and birth date are kept for 30 days. After that they are erased and the history keeps the masked CPF, the purpose, the risk and the findings. At the data subject's request the erasure is immediate.
- Without a balance for 100 credits (and no overage), the response is 402 and the dossier does not start. A malformed CPF returns 400 and an invalid check digit returns 422.
- If a source is unavailable, the dossier ends with status
failedand nothing is charged. Just submit it again. - Available in the sandbox. In production the endpoint is not released yet and returns 503 with the code
DOSSIER_UNAVAILABLE.
How a dossier is processed
You send the CPF, the birth date and the purpose
The API validates the input, checks the balance and replies 202 with the
dossie_idand the statuspending. Nothing is charged at this step.Sources are queried in parallel
CGU (PEP, CEIS, CNEP and CEAF), TCU (unfit bidders, disqualified, irregular accounts and electoral), the slave labor registry, active debt (PGFN) and international sanctions are queried at the same time, in the background. Checks that only need the CPF start together with the registry lookup.
You follow along
Call
GET /v1/dossie/cpf/{id}until the status iscompletedorfailed, or wait for the notice at yourcallback_url.Charged once
The 100 credits are debited only when every source answers. The history is kept in your account and can be read at any time, at no extra cost; personal data is erased after 30 days.
202 response fields
- successboolean
- Always
truewhen the dossier was accepted. - data.dossie_idstring
- Dossier identifier. Use it to follow progress.
- data.statusstring
pendingon creation. Thencompletedorfailed.- data.created_atstring
- Creation date and time, ISO 8601 (UTC).
- data.queryobject
- What was queried:
cpf(digits only) anddescription. - data.status_urlstring
- Path to follow the dossier. Also sent in the
Locationheader. - credits_remainingnumber
- Current balance. It does not include the 100 credits of this dossier yet. Can be hidden in the dashboard.
Test CPFs in the sandbox
In the sandbox (api-sandbox.brazid.com) the dossier uses these CPFs, with no credits charged. Any other CPF ends as failed with CPF_NOT_FOUND.
| CPF | Birth date | Result |
|---|---|---|
| 529.982.247-25 | 1982-11-26 | No findings in any source (LOW). |
| 111.444.777-35 | 1985-05-12 | Active debt of R$ 12,500.50 with PGFN (LOW). |
| 168.995.350-09 | 1974-02-03 | Active debt of R$ 250,000.00 with PGFN (MEDIUM). |
| 390.533.447-05 | 1969-09-30 | Politically exposed person (MEDIUM). |
| 248.438.034-80 | 1978-12-01 | Listed in CEIS (HIGH). |
| 935.411.347-80 | 1963-07-21 | Listed in the slave labor registry (HIGH). |
| 453.178.287-91 | 1971-04-17 | Every source at once, with a slow 3 s response (HIGH). |
| 862.883.667-57 | 1990-08-25 | One source is down: the dossier ends as failed, with no charge. |
| 417.258.136-61 | 1966-03-09 | Barred from public office and with irregular accounts at the TCU, including electoral implication (MEDIUM). |
| 603.192.847-78 | 1980-10-14 | Listed in CNEP, expelled from the federal administration (CEAF) and a TCU unfit bidder (HIGH). |
Notice at callback_url
- When the dossier finishes, we send a POST with the event
dossie.completedordossie.failed, thedossie_id, the status and, if completed, therisk_level. - The notice carries no personal data. To read the result, call
GET /v1/dossie/cpf/{id}. - If you have a webhook set up in the dashboard, the body is signed in the
x-brazid-signatureheader, like the other webhooks. Without a webhook, the notice is sent unsigned. - Up to 3 attempts in a row if your server fails (5xx, 408, 429 or no response). Do not rely on the notice alone: the GET stays available.
cURL
202 Accepted
callback_url · dossie.completed