Tema
Referência da API
API REST v1. Erros em application/problem+json (RFC 9457). Paginação por cursor. Webhooks assinados com HMAC-SHA256.
Versão 0.1.0. Gerado de openapi.json — não edite à mão.
Sessão do painel web
Entrar (painel web)
http
POST /api/v1/auth/loginCorpo: LoginInput
Respostas: 200 Me — Define o cookie de sessão · 401 · 429
Sair
http
POST /api/v1/auth/logoutRespostas: 204
Usuário logado
http
GET /api/v1/auth/meAutenticação: session
Respostas: 200 Me · 401
Uso das telas (painel)
http
POST /api/v1/telemetryLote de até 50 eventos do painel: tela aberta e tempo nela, ou ação marcada. Uso interno do painel (sessão).
Autenticação: session
Corpo: UiBatch
Respostas: 204 · 400 · 401
Dados fiscais e certificado A1 da empresa emissora
GET /api/v1/issuer
http
GET /api/v1/issuerRespostas: 200 IssuerEnvelope · 403 — Só o dono, por sessão
PUT /api/v1/issuer
http
PUT /api/v1/issuerCorpo: IssuerInput
Respostas: 200 Issuer · 400 — Dado inválido · 403 · 409 — CNPJ em uso ou troca com certificado ativo
GET /api/v1/issuer/certificate
http
GET /api/v1/issuer/certificateRespostas: 200 CertificateEnvelope · 403 — Só o dono, por sessão
POST /api/v1/issuer/certificate
http
POST /api/v1/issuer/certificateCorpo: UploadCertificate
Respostas: 201 Certificate · 403 — Só o dono, por sessão, com a senha da conta · 422 — Certificado recusado (motivo em detail)
DELETE /api/v1/issuer/certificate
http
DELETE /api/v1/issuer/certificateCorpo: RemoveCertificate
Respostas: 204 · 403 — Só o dono, por sessão, com a senha da conta · 404
GET /api/v1/issuer/status
http
GET /api/v1/issuer/statusAutenticação: api_key (invoices:read)
Respostas: 200 IssuerStatus
Emissão, consulta e cancelamento de NFS-e
Listar notas
http
GET /api/v1/invoicesAutenticação: api_key (invoices:read) ou session
| Parâmetro | Onde | Tipo | Descrição |
|---|---|---|---|
limit | query | integer | 1 a 100 (padrão 50). |
cursor | query | string | |
status | query | string | processing, authorized, rejected ou cancelled. |
external_ref | query | string |
Respostas: 200 InvoicePage · 400
Emitir nota
http
POST /api/v1/invoicesResponde 202 com a nota em processing; o envio ao governo é assíncrono (acompanhe pelo GET ou pelo webhook invoice.authorized/invoice.rejected). Idempotency-Key obrigatório: repetir com a mesma chave e o mesmo corpo devolve a mesma nota.
Autenticação: api_key (invoices:write) ou session
| Parâmetro | Onde | Tipo | Descrição |
|---|---|---|---|
Idempotency-Key | header | string | Chave única da operação (até 100 caracteres) |
Corpo: NewInvoice
Respostas: 202 Invoice · 400 · 409 — Já há nota viva para o external_ref · 422 — Empresa não pronta para emitir, ou chave repetida com outro corpo
Buscar nota
http
GET /api/v1/invoices/{id}Autenticação: api_key (invoices:read) ou session
| Parâmetro | Onde | Tipo | Descrição |
|---|---|---|---|
id | path | string |
Respostas: 200 Invoice · 404
Cancelar nota
http
POST /api/v1/invoices/{id}/cancelResponde 202; o cancelamento é assíncrono (webhook invoice.cancelled ou invoice.cancellation_rejected). Idempotency-Key obrigatório.
Autenticação: api_key (invoices:cancel) ou session
| Parâmetro | Onde | Tipo | Descrição |
|---|---|---|---|
id | path | string | |
Idempotency-Key | header | string |
Corpo: CancelInput
Respostas: 202 Invoice · 400 · 404 · 409
XML da NFS-e
http
GET /api/v1/invoices/{id}/xmlAutenticação: api_key (invoices:read) ou session
| Parâmetro | Onde | Tipo | Descrição |
|---|---|---|---|
id | path | string |
Respostas: 200 · 404 · 409
Chaves para integrações
Listar API keys ativas
http
GET /api/v1/api-keysAutenticação: session
Respostas: 200 ApiKey[]
Criar API key
http
POST /api/v1/api-keysAutenticação: session
Corpo: NewApiKey
Respostas: 201 CreatedApiKey · 400
Revogar API key
http
DELETE /api/v1/api-keys/{id}Autenticação: session
| Parâmetro | Onde | Tipo | Descrição |
|---|---|---|---|
id | path | integer |
Respostas: 204 · 404
Notificações de eventos para sistemas externos
Reenviar uma entrega
http
POST /api/v1/webhook-deliveries/{id}/retryAutenticação: api_key (webhooks:manage) ou session
| Parâmetro | Onde | Tipo | Descrição |
|---|---|---|---|
id | path | integer |
Respostas: 202 · 404
Listar endpoints de webhook
http
GET /api/v1/webhooksAutenticação: api_key (webhooks:manage) ou session
Respostas: 200 Endpoint[]
Cadastrar endpoint de webhook
http
POST /api/v1/webhooksAutenticação: api_key (webhooks:manage) ou session
Corpo: NewEndpoint
Respostas: 201 CreatedEndpoint · 400
Remover endpoint de webhook
http
DELETE /api/v1/webhooks/{id}Autenticação: api_key (webhooks:manage) ou session
| Parâmetro | Onde | Tipo | Descrição |
|---|---|---|---|
id | path | integer |
Respostas: 204 · 404
Últimas 100 entregas de um endpoint
http
GET /api/v1/webhooks/{id}/deliveriesAutenticação: api_key (webhooks:manage) ou session
| Parâmetro | Onde | Tipo | Descrição |
|---|---|---|---|
id | path | integer |
Respostas: 200 Delivery[] · 404
Modelos
ApiKey
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id | integer | sim | |
name | string | sim | |
prefix | string | sim | Início da chave, para identificá-la (ex.: pk_live_a1b2). |
scopes | string[] | sim | |
created_at | integer | sim | |
last_used_at | integer (opcional) | não |
CancelInput
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
reason_code | integer | sim | 1 = erro na emissão, 2 = serviço não prestado, 9 = outros. |
reason | string | sim | 15 a 255 caracteres. |
Cancellation
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
reason_code | integer | sim | |
reason | string | sim | |
requested_at | integer | sim |
Certificate
Dados do certificado que podem ser mostrados (nada de chave, senha ou arquivo).
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id | integer | sim | |
cnpj | string | sim | CNPJ do titular (14 dígitos). |
subject_name | string | sim | Nome do titular como está no certificado. |
issuer_name | string | sim | |
serial | string | sim | |
fingerprint_sha256 | string | sim | SHA-256 do certificado (hex), para conferir sem expor nada. |
not_before | integer | sim | Validade, em milissegundos desde 1970 (UTC). |
not_after | integer | sim | |
created_at | integer | sim |
CertificateEnvelope
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
certificate | null | Certificate | não |
CreatedApiKey
CreatedEndpoint
Delivery
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id | integer | sim | |
event_id | string | sim | |
event_type | string | sim | |
status | string | sim | pending, delivered ou failed. |
attempts | integer | sim | |
last_status | integer (opcional) | não | |
last_error | string (opcional) | não | |
created_at | integer | sim | |
delivered_at | integer (opcional) | não |
Endpoint
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id | integer | sim | |
url | string | sim | |
events | string[] | sim | |
active | boolean | sim | |
created_at | integer | sim |
Invoice
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id | string | sim | Identificador (inv_…). |
external_ref | string (opcional) | não | |
status | string | sim | processing, authorized, rejected ou cancelled. |
environment | string | sim | restricted (produção restrita, sem valor fiscal) ou production. |
dps_series | integer | sim | |
dps_number | integer | sim | |
amount_cents | integer | sim | |
competence_date | string | sim | |
taker | InvoiceTaker | sim | |
service | InvoiceService | sim | |
access_key | string (opcional) | não | Chave de acesso (50 dígitos) da NFS-e, quando autorizada. |
nfse_number | string (opcional) | não | |
rejection | null | Rejection | não | |
cancellation_pending | null | Cancellation | não | |
cancellation_error | string (opcional) | não | Último pedido de cancelamento recusado pelo governo. |
created_at | integer | sim | |
authorized_at | integer (opcional) | não | |
cancelled_at | integer (opcional) | não |
InvoicePage
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
data | Invoice[] | sim | |
next_cursor | string (opcional) | não | Passe em cursor para a próxima página; null quando acabou. |
InvoiceService
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
description | string | sim | 1 a 2000 caracteres. |
amount_cents | integer | sim | Valor em centavos (1 a 99.999.999.999). |
code | string (opcional) | não | Código de tributação nacional (6 dígitos); padrão: o da empresa. |
InvoiceTaker
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
document | string | sim | CPF (11 dígitos) ou CNPJ (14 dígitos), com ou sem pontuação. |
name | string | sim | 2 a 150 caracteres. |
email | string (opcional) | não | |
address | null | TakerAddress | não |
Issuer
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
cnpj | string | sim | |
municipal_registration | string | sim | |
legal_name | string | sim | |
trade_name | string | sim | |
tax_regime | string | sim | simples (ME/EPP do Simples Nacional), mei ou normal (não optante). |
municipality_ibge | string | sim | Código IBGE do município emissor (7 dígitos). |
service_code | string | sim | Código de tributação nacional do serviço padrão (6 dígitos: item, subitem e desdobramento da LC 116). |
iss_rate_bp | integer (opcional) | não | Alíquota do ISS em centésimos de ponto percentual (500 = 5%). Só para regime normal. |
simples_rate_bp | integer (opcional) | não | Simples (ME/EPP): % aproximado de tributos informado na nota, em centésimos (600 = 6%). |
environment | string | sim | restricted (produção restrita, nota sem valor fiscal) ou production. |
dps_series | integer | sim | |
next_dps_number | integer | sim | |
updated_at | integer | sim |
IssuerEnvelope
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
issuer | null | Issuer | não |
IssuerInput
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
cnpj | string | sim | |
municipal_registration | string | sim | 1 a 15 caracteres. |
legal_name | string | sim | 2 a 300 caracteres. |
trade_name | string (opcional) | não | |
tax_regime | string | sim | |
municipality_ibge | string | sim | |
service_code | string | sim | |
iss_rate_bp | integer (opcional) | não | |
simples_rate_bp | integer (opcional) | não | Obrigatório no Simples (ME/EPP): % aproximado de tributos, de 1% a 33% (100 a 3300). |
dps_series | integer (opcional) | não | 1 a 99999 (padrão 1). |
IssuerStatus
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
ready | boolean | sim | true quando a empresa pode emitir nota. |
environment | string (opcional) | não | |
reasons | string[] | sim | O que falta, em texto para mostrar. |
certificate_expires_at | integer (opcional) | não |
LoginInput
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
email | string | sim | |
password | string | sim |
Me
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id | integer | sim | |
name | string | sim | |
email | string | sim | |
role | string | sim | owner ou member. |
tenant_id | integer | sim | |
tenant_name | string | sim | |
scopes | string[] | sim |
NewApiKey
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
name | string | sim | |
scopes | string[] | sim |
NewEndpoint
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
url | string | sim | URL https:// pública que receberá os eventos. |
events | string[] | sim | Eventos assinados; ["*"] para todos. |
NewInvoice
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
external_ref | string (opcional) | não | Referência do seu sistema (ex.: oficina:u3:os:812), 1 a 100 caracteres [A-Za-z0-9:_.-]. Nunca há duas notas vivas (processando ou autorizada) com a mesma referência. |
competence_date | string (opcional) | não | Data da prestação (AAAA-MM-DD, horário de Brasília); padrão: hoje. Não pode ser futura. |
taker | InvoiceTaker | sim | |
service | InvoiceService | sim |
Rejection
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
code | string | sim | |
message | string | sim |
RemoveCertificate
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
account_password | string | sim | Senha da sua conta no Proton Fiscal (confirmação). |
TakerAddress
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
zip | string | sim | CEP com 8 dígitos. |
street | string | sim | |
number | string | sim | |
complement | string (opcional) | não | |
district | string | sim | |
municipality_ibge | string | sim | Código IBGE do município (7 dígitos). |
UiBatch
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
events | UiEvent[] | sim |
UiEvent
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
kind | string | sim | view (tela aberta, com ms) ou action (com name). |
screen | string | sim | Padrão da rota, ex.: /itens/:id. |
ms | integer (opcional) | não | |
name | string (opcional) | não |
UploadCertificate
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
pfx_base64 | string | sim | Arquivo .pfx/.p12 em Base64 (até 50 KB). |
password | string | sim | Senha do arquivo. |
account_password | string | sim | Senha da sua conta no Proton Fiscal (confirmação). |