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

# Relatórios regulatórios

> Como gerar o relatório técnico de suporte (COAF/SUSEP)

A partir de uma [análise](/concepts/analyses) concluída, `POST /reports`
gera o relatório técnico de suporte usado para decisão de comunicação ao
COAF — também de forma síncrona, com o resultado completo na mesma resposta.

## Pré-condições

* A análise de origem (`analysis_uuid`) precisa ter sido criada há **menos
  de 24 horas** (janela regulatória de comunicação).
* `institution_type` define o regime aplicável: `banco` (BCB) ou
  `seguradora` (SUSEP).

Fora dessa janela, ou com uma análise que não pertence à sua empresa, a
chamada retorna `422`/`404` — veja [Erros](/concepts/errors).

## Seções do relatório

O `result` retornado tem 7 seções. As primeiras 4 são texto determinístico
(sempre o mesmo resultado para a mesma análise); as 3 últimas são geradas
por um único agente de LLM:

| Seção                            | Campo                         | Origem         |
| -------------------------------- | ----------------------------- | -------------- |
| §1 Identificação da contraparte  | `counterparty_identification` | determinístico |
| §2 Estrutura societária / UBO    | `ownership_and_ubo`           | determinístico |
| §3 Sinais de risco consolidados  | `consolidated_risk_signals`   | determinístico |
| §4 Sugestão de enquadramento     | `enquadramento_suggestion`    | LLM            |
| §5 Fundamento legal              | `legal_basis`                 | LLM            |
| §6 Minuta de comunicação ao COAF | `coaf_communication_draft`    | LLM            |
| §7 Trilha de auditoria           | `audit_trail`                 | determinístico |

## Regenerando parágrafos

`POST /reports/{uuid}/paragraphs/regenerate` roda de novo **só** o agente de
LLM, sem re-executar o relatório inteiro — útil quando §4/§5/§6 saíram
insatisfatórios. Só essas três seções são regeneráveis (o agente sempre as
produz juntas, mas você escolhe quais substituir no resultado persistido):

```bash theme={null}
curl -X POST "https://api.qa.nlbs.ai/api/reports/{uuid}/paragraphs/regenerate" \
  -H "X-API-Key: nlbs_sua_chave_aqui" \
  -H "Content-Type: application/json" \
  -d '{"paragraphs": ["legal_basis"]}'
```

Pedir uma seção determinística (§1/§2/§3/§7) retorna `422` — ela sempre
produziria o mesmo texto, então não há o que regenerar.

## Artefatos (XML/PDF)

`coaf_xml` e `pdf` não vêm embutidos na resposta — são referências de
armazenamento (`storage_uri` e afins). `available: false` indica que o
leiaute daquele regime ainda não está implementado (comum para XML de
`banco`) ou que a renderização falhou; nesse caso, `limitations` explica o
motivo e o resto do relatório continua íntegro.

<Warning>
  O relatório é sempre uma **minuta** — a comunicação ao COAF em si exige
  validação humana antes de virar uma comunicação de fato.
</Warning>
