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

# Consulta de Execução Penal

> Acesse processos de execução penal (cumprimento de pena) por CPF ou CNPJ na Judit API. Inclui andamentos, last_step e papéis específicos como EXECUTADO/REEDUCANDO.

export const EndpointBadges = ({auth = true, billing = "billable", flow = "sync", attachments = false, requiresVault = false}) => <div style={{
  marginTop: "-8px",
  marginBottom: "16px"
}}>
    {auth && <Badge color="gray">🔒 Requer api-key</Badge>}
    {billing === "billable" && <Badge color="yellow">💰 Cobrança por requisição</Badge>}
    {billing === "free" && <Badge color="green">✅ Grátis</Badge>}
    {billing === "on-demand" && <Badge color="purple">⚡ On-demand (preço diferenciado)</Badge>}
    {flow === "async" && <Badge color="blue">⏳ Assíncrono · webhook ou polling</Badge>}
    {flow === "sync" && <Badge color="green">⚡ Síncrono</Badge>}
    {attachments && <Badge color="purple">📎 Suporta with_attachments</Badge>}
    {requiresVault && <Badge color="red">🔑 Cofre de Credenciais</Badge>}
  </div>;

export const ExecutionAnimation = () => <iframe sandbox="allow-scripts" scrolling="no" style={{
  width: '100%',
  height: '540px',
  border: 'none',
  borderRadius: '12px',
  display: 'block',
  margin: '20px 0'
}} srcDoc={`<!doctype html><html><head><meta charset="utf-8"><style>*{margin:0;padding:0;box-sizing:border-box}html,body{width:100%;height:100%;overflow:hidden;background:#090c0d}canvas{display:block;width:100%;height:100%}</style></head><body><canvas id="c"></canvas><script>(function(){
var A='#4FD1C5',J='#1FC16B',V='#6366F1',M='#7A8599';
var BG='#090c0d',TXT='#e5e7eb',NF='#111827',PT='#0a1020';
var TOTAL=12.0;
var XP={app:0.13,judit:0.50,vp:0.87};
var NW=88,NH=42;
var NODES=[{id:'app',label:'Sua App',col:A},{id:'judit',label:'Judit API',col:J},{id:'vp',label:'Varas Penais',col:V}];
var STEPS=[
  {fr:'app',to:'judit',label:'POST /requests',note:'{response_type:"execution"}',col:A,ts:1.0,te:1.8,yp:0.29},
  {fr:'judit',to:'app',label:'202 {request_id}',note:'status: pending',col:J,ts:2.3,te:3.1,yp:0.39},
  {sep:true,label:'↻  Judit busca execuções penais nos tribunais',yp:0.49},
  {fr:'judit',to:'vp',label:'busca execuções',note:'CPF · regime · progressão',col:V,ts:4.5,te:5.3,yp:0.58},
  {fr:'vp',to:'judit',label:'execução encontrada',note:'EXECUTADO / REEDUCANDO',col:J,ts:5.8,te:6.6,yp:0.68},
  {fr:'app',to:'judit',label:'GET /responses',note:'polling · request_id=...',col:A,ts:7.1,te:7.9,yp:0.78},
  {fr:'judit',to:'app',label:'200 {execution_data}',note:'',col:J,ts:8.4,te:9.2,yp:0.88}
];
var cv=document.getElementById('c');
function setup(){var dpr=Math.min(window.devicePixelRatio||1,2),r=cv.getBoundingClientRect(),W=r.width||window.innerWidth,H=r.height||window.innerHeight;cv.width=Math.max(1,W*dpr);cv.height=Math.max(1,H*dpr);var ctx=cv.getContext('2d');ctx.setTransform(dpr,0,0,dpr,0,0);return{ctx:ctx,w:W,h:H};}
function ease(t){return t<0.5?2*t*t:1-Math.pow(-2*t+2,2)/2;}
function rr(ctx,x,y,w,h,r){ctx.beginPath();ctx.moveTo(x+r,y);ctx.arcTo(x+w,y,x+w,y+h,r);ctx.arcTo(x+w,y+h,x,y+h,r);ctx.arcTo(x,y+h,x,y,r);ctx.arcTo(x,y,x+w,y,r);ctx.closePath();}
function gx(n,w){return n==='app'?w*XP.app:n==='judit'?w*XP.judit:w*XP.vp;}
function eg(fr,to,w){var fx=gx(fr,w),tx=gx(to,w),d=tx>fx?1:-1;return{x1:fx+d*NW/2,x2:tx-d*NW/2,d:d};}
function dPkt(ctx,x,y,lbl,col){var pw=Math.max(36,lbl.length*6+14),ph=20;ctx.save();ctx.shadowColor=col;ctx.shadowBlur=18;rr(ctx,x-pw/2,y-ph/2,pw,ph,5);ctx.fillStyle=col;ctx.fill();ctx.shadowBlur=0;ctx.fillStyle=PT;ctx.font='bold 9px monospace';ctx.textAlign='center';ctx.textBaseline='middle';ctx.fillText(lbl,x,y+0.5);ctx.restore();}
function draw(ctx,w,h,t){
  var ct=t%TOTAL,bx1=w*0.02,bx2=w*0.98;
  ctx.fillStyle=BG;ctx.fillRect(0,0,w,h);
  var nodeY=h*0.21;
  ctx.fillStyle=V;ctx.font='bold 12px Inter,system-ui,sans-serif';ctx.textAlign='center';ctx.textBaseline='middle';ctx.fillText('Consulta de Execução Penal',w/2,h*0.04);
  ctx.fillStyle=M;ctx.font='10px Inter,system-ui,sans-serif';ctx.fillText('Judit localiza processos de cumprimento de pena por CPF, nome ou CNJ',w/2,h*0.09);
  for(var i=0;i<NODES.length;i++){var n=NODES[i],lx=gx(n.id,w);ctx.save();ctx.strokeStyle=n.col;ctx.globalAlpha=0.35;ctx.lineWidth=1;ctx.setLineDash([4,7]);ctx.beginPath();ctx.moveTo(lx,nodeY+NH/2);ctx.lineTo(lx,h*0.94);ctx.stroke();ctx.restore();}
  for(var si=0;si<STEPS.length;si++){var s=STEPS[si],sy=h*s.yp;if(s.sep){ctx.save();ctx.strokeStyle='rgba(255,255,255,0.28)';ctx.lineWidth=1;ctx.setLineDash([3,5]);ctx.beginPath();ctx.moveTo(bx1,sy);ctx.lineTo(bx2,sy);ctx.stroke();ctx.fillStyle='rgba(255,255,255,0.05)';rr(ctx,bx1,sy-8,s.label.length*6.2+14,16,3);ctx.fill();ctx.fillStyle=M;ctx.font='10px monospace';ctx.textAlign='left';ctx.textBaseline='middle';ctx.fillText(s.label,bx1+5,sy);ctx.restore();continue;}var e=eg(s.fr,s.to,w),x1=e.x1,x2=e.x2,d=e.d,clx=(x1+x2)/2;var state=ct<s.ts?'pre':ct>s.te?'done':'live',alpha=state==='pre'?0.10:state==='done'?0.55:1.0;ctx.save();ctx.globalAlpha=alpha;ctx.strokeStyle=s.col;ctx.lineWidth=1.5;ctx.setLineDash([]);ctx.beginPath();ctx.moveTo(x1,sy);ctx.lineTo(x2,sy);ctx.stroke();ctx.fillStyle=s.col;ctx.beginPath();ctx.moveTo(x2,sy);ctx.lineTo(x2-d*7,sy-4);ctx.lineTo(x2-d*7,sy+4);ctx.closePath();ctx.fill();ctx.fillStyle=TXT;ctx.font='bold 10px monospace';ctx.textAlign='center';ctx.textBaseline='bottom';ctx.fillText(s.label,clx,sy-4);if(s.note){ctx.fillStyle=M;ctx.font='9px monospace';ctx.fillText(s.note,clx,sy-16);}ctx.restore();if(state==='live'){var p=ease((ct-s.ts)/(s.te-s.ts));dPkt(ctx,x1+(x2-x1)*p,sy+14,s.label,s.col);}}
  for(var i=0;i<NODES.length;i++){var nd=NODES[i],px=gx(nd.id,w);ctx.save();ctx.shadowColor=nd.col;ctx.shadowBlur=14;rr(ctx,px-NW/2,nodeY-NH/2,NW,NH,8);ctx.fillStyle=NF;ctx.fill();ctx.shadowBlur=0;ctx.strokeStyle=nd.col;ctx.lineWidth=1.8;ctx.stroke();ctx.fillStyle=nd.col;ctx.font='bold 11px Inter,system-ui,sans-serif';ctx.textAlign='center';ctx.textBaseline='middle';ctx.fillText(nd.label,px,nodeY);ctx.restore();}
}
var dim,t0;
function loop(){var t=(performance.now()-t0)/1000;draw(dim.ctx,dim.w,dim.h,t);requestAnimationFrame(loop);}
window.addEventListener('load',function(){dim=setup();t0=performance.now();loop();});
window.addEventListener('resize',function(){dim=setup();});
})()\x3c/script></body></html>`} />;

A **Consulta de Execução Penal** identifica processos de cumprimento de pena (regime, progressão, livramento condicional, indulto) vinculados a um CPF, Nome ou número CNJ. Você recebe a estrutura de Penal Execution, com os papéis específicos (EXECUTADO/REEDUCANDO), o `last_step` (última movimentação) e detalhamento da pena.

> 🤖 Mesma rota da consulta processual: `POST /requests` com `response_type: "execution"`. Para receber a estrutura completa, veja o [Schema Penal Execution](/schemas/penal-execution).

<ExecutionAnimation />

<EndpointBadges auth billing="billable" flow="async" attachments />

## Quando usar

<CardGroup cols={2}>
  <Card title="KYC reforçado / antecedentes" icon="shield-halved">
    Verifique se a contraparte possui processo de execução penal em andamento ou histórico recente.
  </Card>

  <Card title="Defensoria e advocacia criminal" icon="scale-balanced">
    Acompanhe a fase do cumprimento (regime atual, datas-base) para planejar pedidos de progressão.
  </Card>

  <Card title="Ressocialização" icon="people-roof">
    Para programas sociais e de empregabilidade, identifique processos ativos com base em consentimento prévio.
  </Card>

  <Card title="Compliance público" icon="building-columns">
    Verificações exigidas em concursos, contratos públicos ou cargos de confiança.
  </Card>
</CardGroup>

Esta API permite que partes interessadas verifiquem se existe ordem de execução penal utilizando CPF, nome ou número CNJ, assegurando a precisão e relevância das informações obtidas.

## Passo 1: Criar a Requisição (POST)

`POST https://requests.production.judit.io/requests`

### Exemplos por tipo de busca

<CodeGroup>
  ```json Por CPF theme={null}
  {
      "search": {
          "search_type": "cpf",
          "search_key": "999.999.999-99",
          "response_type": "execution"
      }
  }
  ```

  ```json Por Nome theme={null}
  {
      "search": {
          "search_type": "name",
          "search_key": "João Silva",
          "response_type": "execution"
      }
  }
  ```

  ```json Por CNJ theme={null}
  {
      "search": {
          "search_type": "lawsuit_cnj",
          "search_key": "99999999-99.9999.9.99.9999",
          "response_type": "execution"
      }
  }
  ```

  ```json Por CNJ + anexos theme={null}
  {
      "search": {
          "search_type": "lawsuit_cnj",
          "search_key": "99999999-99.9999.9.99.9999",
          "response_type": "execution"
      },
      "with_attachments": true
  }
  ```
</CodeGroup>

<Warning>
  `response_type` deve ser sempre **`"execution"`**. `search_type` aceita `"cpf"`, `"cnpj"`, `"name"` ou `"lawsuit_cnj"`. O `with_attachments: true` só vale quando a busca é por CNJ.
</Warning>

### Parâmetros do Payload

| Parâmetro              | Tipo    | Obrigatório | Descrição                                                            |
| :--------------------- | :------ | :---------- | :------------------------------------------------------------------- |
| `search.search_type`   | string  | **Sim**     | `"cpf"`, `"cnpj"`, `"name"` ou `"lawsuit_cnj"`.                      |
| `search.search_key`    | string  | **Sim**     | CPF, CNPJ, nome ou número CNJ.                                       |
| `search.response_type` | string  | **Sim**     | Sempre `"execution"`.                                                |
| `with_attachments`     | boolean | Não         | Apenas para `lawsuit_cnj`. Se `true`, baixa os anexos.               |
| `callback_url`         | string  | Não         | URL HTTPS para receber a resposta via [Webhook](/webhook/callbacks). |

### Exemplo de Requisição (POST)

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST 'https://requests.production.judit.io/requests' \
    --header 'api-key: '"$JUDIT_API_KEY" \
    --header 'Content-Type: application/json' \
    --data '{
      "search": {
        "search_type": "cpf",
        "search_key": "999.999.999-99",
        "response_type": "execution"
      }
    }'
  ```

  ```javascript Node.js theme={null}
  const res = await fetch("https://requests.production.judit.io/requests", {
    method: "POST",
    headers: {
      "api-key": process.env.JUDIT_API_KEY,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      search: {
        search_type: "cpf",
        search_key: "999.999.999-99",
        response_type: "execution",
      },
    }),
  });
  console.log(await res.json());
  ```

  ```php PHP theme={null}
  <?php
  $ch = curl_init('https://requests.production.judit.io/requests');
  curl_setopt_array($ch, [
      CURLOPT_RETURNTRANSFER => true,
      CURLOPT_POST => true,
      CURLOPT_HTTPHEADER => [
          'api-key: ' . getenv('JUDIT_API_KEY'),
          'Content-Type: application/json',
      ],
      CURLOPT_POSTFIELDS => json_encode([
          'search' => [
              'search_type'   => 'cpf',
              'search_key'    => '999.999.999-99',
              'response_type' => 'execution',
          ],
      ]),
  ]);
  echo curl_exec($ch);
  ```

  ```python Python theme={null}
  import os, requests

  resp = requests.post(
      "https://requests.production.judit.io/requests",
      headers={
          "api-key": os.environ["JUDIT_API_KEY"],
          "Content-Type": "application/json",
      },
      json={
          "search": {
              "search_type": "cpf",
              "search_key": "999.999.999-99",
              "response_type": "execution",
          }
      },
      timeout=15,
  )
  resp.raise_for_status()
  print(resp.json())
  ```
</CodeGroup>

### Resposta da criação

```json theme={null}
{
    "request_id": "87d9f7bf-0071-41ee-a721-e6e1b4082bc9",
    "search": {
        "search_type": "cpf",
        "search_key": "999.999.999-99",
        "response_type": "execution"
    },
    "status": "pending",
    "created_at": "2024-03-14T07:35:14.272Z",
    "tags": { "potential_homonym": false }
}
```

> O campo `tags.potential_homonym` é `true` quando há indícios de que o resultado possa pertencer a um homônimo — útil para validar antes de aplicar consequências jurídicas.

## Passo 2: Buscar a resposta

A consulta é assíncrona — você pode aguardar pelo [Webhook](/webhook/callbacks) ou consultar via `GET /responses?request_id={request_id}`.

<CodeGroup>
  ```bash cURL theme={null}
  curl --location 'https://requests.production.judit.io/responses?request_id=<REQUEST_ID>' \
    --header 'api-key: '"$JUDIT_API_KEY"
  ```

  ```python Python theme={null}
  resp = requests.get(
      f"https://requests.production.judit.io/responses?request_id={request_id}",
      headers={"api-key": os.environ["JUDIT_API_KEY"]},
  )
  print(resp.json())
  ```
</CodeGroup>

### Estrutura da resposta

| Campo             | Descrição                                                               |
| :---------------- | :---------------------------------------------------------------------- |
| `code`            | Número CNJ do processo de execução.                                     |
| `classifications` | Classes (ex.: `EXECUÇÃO DA PENA`, `INDULTO`, `LIVRAMENTO CONDICIONAL`). |
| `subjects`        | Assuntos (ex.: `PENA PRIVATIVA DE LIBERDADE`).                          |
| `phase`           | Fase atual da execução — ver tabela abaixo.                             |
| `status`          | Status (`Ativo` / `Finalizado`).                                        |
| `parties`         | Polo ativo (`AUTORIDADE`) e passivo (`EXECUTADO` / `REEDUCANDO`).       |
| `last_step`       | Última movimentação (data + conteúdo).                                  |
| `steps`           | Histórico completo de movimentações.                                    |
| `tags.criminal`   | `true` confirma que é um processo criminal.                             |

### Valores possíveis para `phase`

| Phase                         | Comportamento                                      |
| :---------------------------- | :------------------------------------------------- |
| Inicial                       | A execução foi iniciada, ainda sem progressões.    |
| Em Cumprimento                | Pena em cumprimento ativo.                         |
| Suspenso                      | Cumprimento suspenso por decisão do juízo.         |
| Recurso                       | Há recurso pendente que afeta a execução.          |
| Trânsito em julgado ou acordo | Decisão definitiva ou acordo (ex.: indulto).       |
| Arquivado                     | Processo arquivado após cumprimento ou prescrição. |

### Exemplo de resposta (consulta por CPF)

<Accordion title="Ver exemplo de resposta">
  ```json theme={null}
  Exemplo de retorno da resposta:
  {
      "page": 1,
      "page_data": [
          {
              "request_id": "1d3d84d9-2edb-4952-83dc-70a7d81487hj",
              "response_id": "9a4c8dee-e0d1-4cc5-8abb-bd5616265yu6",
              "origin": "api",
              "origin_id": "1d3d84d9-2edb-4952-83dc-70a7d81485ol",
              "response_type": "lawsuit",
              "response_data": {
                  "amount": 0,
                  "attachments": [],
                  "classifications": [
                      {
                          "code": "386",
                          "name": "EXECUÇÃO DA PENA"
                      }
                  ],
                  "code": "99999999-99.9999.9.99.9999",
                  "county": "MARINGÁ - 2ª VARA DA FAZENDA PÚBLICA",
                  "courts": [
                      {
                          "name": "TJPR - Vara de Execução em Meio Aberto de Curitiba"
                      }
                  ],
                  "crawler": {
                      "source_name": "JSeeu - BR - Lawsuit - Auth - 1 instance",
                      "crawl_id": "a7fe1da7-6d2e-452f-9d36-115d80e9601a",
                      "weight": 10,
                      "updated_at": "2024-11-13T12:55:43.488Z"
                  },
                  "distribution_date": "2020-07-09T04:00:48.207Z",
                  "free_justice": true,
                  "instance": 1,
                  "judge": "Usuário teste",
                  "justice": "8",
                  "last_step": {
                      "lawsuit_cnj": "99999999-99.9999.8.16.9999",
                      "lawsuit_instance": 1,
                      "content": "EXPEDIÇÃO DE CERTIDÃO GERAL Referente ao evento (seq. 417) RECEBIDOS OS AUTOS(13/08/2024 16:02:19). Identificador do Cumprimento: 9999.",
                      "tags": {
                          "crawl_id": "a7fe1da7-6d2e-452f-9d36-115d80e9601a"
                      },
                      "private": false,
                      "step_date": "2024-08-15T00:00:00.000Z",
                      "step_id": "2b837df6",
                      "steps_count": 418
                  },
                  "name": "ESTADO DO PARANÁ X USUÁRIO TESTE",
                  "parties": [
                      {
                          "side": "Active",
                          "person_type": "AUTORIDADE",
                          "name": "ESTADO DO PARANÁ",
                          "main_document": "99999999999",
                          "tags": {
                              "crawl_id": "a7fe1da7-6d2e-452f-9d36-115d80e9601a"
                          },
                          "entity_type": "company",
                          "documents": [],
                          "lawyers": []
                      },
                      {
                          "side": "Passive",
                          "person_type": "EXECUTADO",
                          "name": "USUÁRIO TESTE",
                          "main_document": "99999999999",
                          "tags": {
                              "crawl_id": "a7fe1da7-6d2e-452f-9d36-115d80e9601a"
                          },
                          "entity_type": "person",
                          "documents": [],
                          "lawyers": []
                      }
                  ],
                  "related_lawsuits": [],
                  "secrecy_level": 0,
                  "steps": [],
                  "subjects": [
                      {
                          "code": "7791",
                          "name": "PENA PRIVATIVA DE LIBERDADE"
                      }
                  ],
                  "tags": {
                      "datalake_id": "99999999999999999999",
                      "datalake_segment": "JUSTICA_ESTADUAL",
                      "crawl_id": "a7fe1da7-6d2e-452f-9d36-115d80e9601a",
                      "criminal": true,
                      "dictionary_updated_at": "2024-11-13T12:55:47.284Z"
                  },
                  "tribunal": "16",
                  "tribunal_acronym": "TJPR"
              },
              "user_id": "7f8065a3-4891-428d-9456-dedfc12ff850",
              "created_at": "2024-11-13T12:55:47.885Z",
              "tags": {
                  "dashboard_id": null
              }
          }
      ],
      "page_count": 1,
      "all_count": 1,
      "all_pages_count": 1
  }
  ```
</Accordion>

Segue abaixo um exemplo de resposta da consulta por CNJ:

<Accordion title="Ver exemplo de resposta">
  ```json theme={null}
  Exemplo de retorno da resposta:
  {
      "page": 1,
      "page_data": [
          {
              "request_id": "a0c975a5-71ad-4013-9cdb-eefc670c9b8a",
              "response_id": "5d08159c-28e8-4c77-a20a-1a643a2eba87",
              "origin": "api",
              "origin_id": "a0c975a5-71ad-4013-9cdb-eefc670c9b8a",
              "response_type": "lawsuit",
              "response_data": {
                  "amount": 0,
                  "attachments": [],
                  "classifications": [
                      {
                          "code": "386",
                          "name": "EXECUÇÃO DA PENA"
                      }
                  ],
                  "code": "99999999-99.9999.9.99.9999",
                  "county": "MARINGÁ - 2ª VARA DA FAZENDA PÚBLICA",
                  "courts": [
                      {
                          "name": "TJPR - Vara de Execução em Meio Aberto de Curitiba"
                      }
                  ],
                  "crawler": {
                      "source_name": "JSeeu - BR - Lawsuit - Auth - 1 instance",
                      "crawl_id": "730acd6f-a490-4153-a5e0-585e1c851eae",
                      "weight": 10,
                      "updated_at": "2024-11-13T13:33:16.264Z"
                  },
                  "distribution_date": "2020-07-09T04:00:48.207Z",
                  "free_justice": true,
                  "instance": 1,
                  "judge": "USUÁRIO TESTE",
                  "justice": "8",
                  "last_step": {
                      "lawsuit_cnj": "99999999-99.9999.9.99.9999",
                      "lawsuit_instance": 1,
                      "content": "EXPEDIÇÃO DE CERTIDÃO GERAL Referente ao evento (seq. 417) RECEBIDOS OS AUTOS(13/08/2024 16:02:19). Identificador do Cumprimento: 0025.",
                      "tags": {
                          "crawl_id": "730acd6f-a490-4153-a5e0-585e1c851eae"
                      },
                      "private": false,
                      "step_date": "2024-08-15T00:00:00.000Z",
                      "step_id": "2b837df6",
                      "steps_count": 418
                  },
                  "name": "ESTADO DO PARANÁ X USUÁRIO TESTE",
                  "parties": [
                      {
                          "side": "Active",
                          "person_type": "AUTORIDADE",
                          "name": "ESTADO DO PARANÁ",
                          "main_document": "99999999999",
                          "tags": {
                              "crawl_id": "730acd6f-a490-4153-a5e0-585e1c851eae"
                          },
                          "entity_type": "company",
                          "documents": [],
                          "lawyers": []
                      },
                      {
                          "side": "Passive",
                          "person_type": "EXECUTADO",
                          "name": "USUÁRIO TESTE",
                          "main_document": "99999999999",
                          "tags": {
                              "crawl_id": "730acd6f-a490-4153-a5e0-585e1c851eae"
                          },
                          "entity_type": "person",
                          "documents": [],
                          "lawyers": []
                      }
                  ],
                  "related_lawsuits": [],
                  "secrecy_level": 0,
                  "status": "Ativo",
                  "phase": "Suspenso",
                  "steps": [
                      {
                          "step_id": "2b837df6",
                          "step_date": "2024-08-15T00:00:00.000Z"
                      }
                  ],
                  "tags": { "criminal": true },
                  "tribunal_acronym": "TJPR"
              }
          }
      ]
  }
  ```
</Accordion>

> Estrutura completa: veja [Schema Penal Execution](/schemas/penal-execution).

## Erros comuns

| HTTP  | Motivo               | Como tratar                  |
| :---- | :------------------- | :--------------------------- |
| `400` | Payload inválido.    | Validar antes de enviar.     |
| `401` | API Key ausente.     | Conferir o header `api-key`. |
| `404` | Sem execução penal.  | Tratar como ausência.        |
| `429` | Rate limit excedido. | Backoff exponencial.         |

## Próximos passos

* [Mandados de Prisão](/criminal-consultation/warrant) — ordens em aberto.
* [Schema Penal Execution](/schemas/penal-execution) — estrutura completa.
* [Webhooks](/webhook/callbacks) — recebimento via push.
