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

# CGU Sanctions

> Brazil's federal integrity registers: search every sanctioned company and person on CEIS, CNEP, CEAF, CEPIM and the leniency agreements by name, CNPJ or CPF, and read one sanction's full record.

The Controladoria-Geral da União keeps Brazil's federal integrity registers,
which every public buyer and most compliance teams check before dealing with
a company: CEIS, the companies and people barred from public contracting by
any federal, state or municipal body; CNEP, the companies punished under the
Anti-Corruption Law (12.846/2013); CEAF, the federal civil servants expelled;
CEPIM, the non-profits barred from federal transfers; and the leniency
agreements companies signed with CGU. About 33,000 sanctions in all.

One search across the five registers, by name, CNPJ or CPF, register, party
type and the sanctioning body's state, brought up to date every day. A
sanction CGU removes stops matching the same day.

<Note>
  The whole source, organized and ready to query: every endpoint on this page answers in milliseconds. Every response carries `as_of`: how current the data is. [How datasets work](/datasets).
</Note>

## Search sanctions

`POST /br/cgu/sanctions-search/v1` <a className="dataset-pill" href="/datasets">Dataset</a>

Searches the five registers by any combination of name, CNPJ or CPF, register,
party type and the sanctioning body's state.

| Field                    | Type    | Notes                                                                                                                                                                       |
| ------------------------ | ------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `query`                  | string  | Optional. Words in any of the party's names. Every word must match; no stemming.                                                                                            |
| `document_number`        | string  | Optional. A CNPJ or CPF, with or without punctuation, e.g. `12.345.678/0001-90`. Exact match. Expelled servants' CPFs are published masked and cannot be searched this way. |
| `list`                   | enum    | Optional. `ceis`, `cnep`, `ceaf`, `cepim` or `leniency`.                                                                                                                    |
| `party_type`             | enum    | Optional. `individual` or `company`.                                                                                                                                        |
| `sanctioning_body_state` | string  | Optional. Two-letter state of the body that imposed the sanction, e.g. `SP`. Not the party's state.                                                                         |
| `page`                   | integer | Optional. 1-based page. Default `1`.                                                                                                                                        |
| `per_page`               | integer | Optional. Results per page, 1-50. Default `20`.                                                                                                                             |

```bash theme={"dark"}
curl https://api.croma.run/br/cgu/sanctions-search/v1 \
  -H "Authorization: Bearer $CROMA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "query": "construtora", "list": "ceis", "per_page": 10 }'
```

Returns `as_of` (how current the data is), the applied filters, `total` (matches across every page), `page`, `per_page`, `total_pages`, `count` and `sanctions[]`, by name. A party with several sanctions has several.

Every sanction carries `id` (the key, e.g. `ceis-72529`), `list` (`ceis`, `cnep`, `ceaf`, `cepim` or `leniency`), `sanction_code` (CGU's own code), `party_type` (`individual` or `company`), `document_type` (`cpf`, `cnpj` or `foreign`), `document` (a CNPJ in full, a CPF masked the way CGU masks it, `***.456.789-**`), `name`, `names[]` (every name the register gives the party), `sanction_type`, `start_date`, `end_date`, `publication_date`, `final_judgment_date`, `information_date` (all `yyyy-mm-dd`), `publication`, `publication_detail`, `scope`, `sanctioning_body`, `sanctioning_body_state` (the body's state, not the party's), `sanctioning_body_sphere` (`federal`, `state` or `municipal`), `legal_basis`, `process_number`, `information_source`, `notes`, `fine_amount` (reais, CNEP fines), `reason` (why a non-profit is barred), `public_servant` (`{ position, role, unit, act_number }`, CEAF only) and `agreement` (`{ status, terms, effects[] }`, leniency agreements only).

Empty fields are `null`. Values stay in Portuguese, as CGU writes them.

<Note>
  `query` matches every name the register gives the party (as sanctioned, as
  the sanctioning body reported it, and the company's registered and trade
  names), word by word and without stemming. `document_number` is an exact
  match on a CNPJ or a CPF; CPFs come back masked. Brought up to date daily.
</Note>

<Note>
  A sanction on the register is in force: CGU removes one when it ends, and it
  stops matching here the same day. A past `end_date` does not mean it has
  ended; a declaration of unfitness, for one, lasts until the company is
  rehabilitated.
</Note>

## One sanction

`POST /br/cgu/sanction/v1` <a className="dataset-pill" href="/datasets">Dataset</a>

Resolves one sanction by its id and returns the full record.

| Field | Type   | Notes                                                                                                                          |
| ----- | ------ | ------------------------------------------------------------------------------------------------------------------------------ |
| `id`  | string | **Required.** The sanction's id, the register and CGU's code joined by a hyphen, e.g. `ceis-72529`, as returned by the search. |

```bash theme={"dark"}
curl https://api.croma.run/br/cgu/sanction/v1 \
  -H "Authorization: Bearer $CROMA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "id": "ceis-72529" }'
```

Returns `found`, `id`, `as_of` and `sanction` (null when not found).

Every sanction carries `id` (the key, e.g. `ceis-72529`), `list` (`ceis`, `cnep`, `ceaf`, `cepim` or `leniency`), `sanction_code` (CGU's own code), `party_type` (`individual` or `company`), `document_type` (`cpf`, `cnpj` or `foreign`), `document` (a CNPJ in full, a CPF masked the way CGU masks it, `***.456.789-**`), `name`, `names[]` (every name the register gives the party), `sanction_type`, `start_date`, `end_date`, `publication_date`, `final_judgment_date`, `information_date` (all `yyyy-mm-dd`), `publication`, `publication_detail`, `scope`, `sanctioning_body`, `sanctioning_body_state` (the body's state, not the party's), `sanctioning_body_sphere` (`federal`, `state` or `municipal`), `legal_basis`, `process_number`, `information_source`, `notes`, `fine_amount` (reais, CNEP fines), `reason` (why a non-profit is barred), `public_servant` (`{ position, role, unit, act_number }`, CEAF only) and `agreement` (`{ status, terms, effects[] }`, leniency agreements only).

Empty fields are `null`. Values stay in Portuguese, as CGU writes them.

<Note>
  An id no register carries returns `found: false` with HTTP 200, not an
  error. That is also the answer for a sanction CGU has removed.
</Note>

<Card title="Full reference" icon="code" href="/api-reference/overview">
  Schemas, all response fields, and an interactive playground.
</Card>
