Skip to content

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/login

Corpo: LoginInput

Respostas: 200 Me — Define o cookie de sessão · 401 · 429

Sair ​

http
POST /api/v1/auth/logout

Respostas: 204

Usuário logado ​

http
GET /api/v1/auth/me

Autenticação: session

Respostas: 200 Me · 401

Uso das telas (painel) ​

http
POST /api/v1/telemetry

Lote 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/issuer

Respostas: 200 IssuerEnvelope · 403 — Só o dono, por sessão

PUT /api/v1/issuer ​

http
PUT /api/v1/issuer

Corpo: 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/certificate

Respostas: 200 CertificateEnvelope · 403 — Só o dono, por sessão

POST /api/v1/issuer/certificate ​

http
POST /api/v1/issuer/certificate

Corpo: 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/certificate

Corpo: 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/status

Autenticação: api_key (invoices:read)

Respostas: 200 IssuerStatus

Emissão, consulta e cancelamento de NFS-e ​

Listar notas ​

http
GET /api/v1/invoices

Autenticação: api_key (invoices:read) ou session

ParâmetroOndeTipoDescrição
limitqueryinteger1 a 100 (padrão 50).
cursorquerystring
statusquerystringprocessing, authorized, rejected ou cancelled.
external_refquerystring

Respostas: 200 InvoicePage · 400

Emitir nota ​

http
POST /api/v1/invoices

Responde 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âmetroOndeTipoDescrição
Idempotency-KeyheaderstringChave ú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âmetroOndeTipoDescrição
idpathstring

Respostas: 200 Invoice · 404

Cancelar nota ​

http
POST /api/v1/invoices/{id}/cancel

Responde 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âmetroOndeTipoDescrição
idpathstring
Idempotency-Keyheaderstring

Corpo: CancelInput

Respostas: 202 Invoice · 400 · 404 · 409

XML da NFS-e ​

http
GET /api/v1/invoices/{id}/xml

Autenticação: api_key (invoices:read) ou session

ParâmetroOndeTipoDescrição
idpathstring

Respostas: 200 · 404 · 409

Chaves para integrações ​

Listar API keys ativas ​

http
GET /api/v1/api-keys

Autenticação: session

Respostas: 200 ApiKey[]

Criar API key ​

http
POST /api/v1/api-keys

Autenticação: session

Corpo: NewApiKey

Respostas: 201 CreatedApiKey · 400

Revogar API key ​

http
DELETE /api/v1/api-keys/{id}

Autenticação: session

ParâmetroOndeTipoDescrição
idpathinteger

Respostas: 204 · 404

Notificações de eventos para sistemas externos ​

Reenviar uma entrega ​

http
POST /api/v1/webhook-deliveries/{id}/retry

Autenticação: api_key (webhooks:manage) ou session

ParâmetroOndeTipoDescrição
idpathinteger

Respostas: 202 · 404

Listar endpoints de webhook ​

http
GET /api/v1/webhooks

Autenticação: api_key (webhooks:manage) ou session

Respostas: 200 Endpoint[]

Cadastrar endpoint de webhook ​

http
POST /api/v1/webhooks

Autenticaçã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âmetroOndeTipoDescrição
idpathinteger

Respostas: 204 · 404

Últimas 100 entregas de um endpoint ​

http
GET /api/v1/webhooks/{id}/deliveries

Autenticação: api_key (webhooks:manage) ou session

ParâmetroOndeTipoDescrição
idpathinteger

Respostas: 200 Delivery[] · 404

Modelos ​

ApiKey ​

CampoTipoObrigatórioDescrição
idintegersim
namestringsim
prefixstringsimInício da chave, para identificá-la (ex.: pk_live_a1b2).
scopesstring[]sim
created_atintegersim
last_used_atinteger (opcional)não

CancelInput ​

CampoTipoObrigatórioDescrição
reason_codeintegersim1 = erro na emissão, 2 = serviço não prestado, 9 = outros.
reasonstringsim15 a 255 caracteres.

Cancellation ​

CampoTipoObrigatórioDescrição
reason_codeintegersim
reasonstringsim
requested_atintegersim

Certificate ​

Dados do certificado que podem ser mostrados (nada de chave, senha ou arquivo).

CampoTipoObrigatórioDescrição
idintegersim
cnpjstringsimCNPJ do titular (14 dígitos).
subject_namestringsimNome do titular como está no certificado.
issuer_namestringsim
serialstringsim
fingerprint_sha256stringsimSHA-256 do certificado (hex), para conferir sem expor nada.
not_beforeintegersimValidade, em milissegundos desde 1970 (UTC).
not_afterintegersim
created_atintegersim

CertificateEnvelope ​

CampoTipoObrigatórioDescrição
certificatenull | Certificatenão

CreatedApiKey ​

CreatedEndpoint ​

Delivery ​

CampoTipoObrigatórioDescrição
idintegersim
event_idstringsim
event_typestringsim
statusstringsimpending, delivered ou failed.
attemptsintegersim
last_statusinteger (opcional)não
last_errorstring (opcional)não
created_atintegersim
delivered_atinteger (opcional)não

Endpoint ​

CampoTipoObrigatórioDescrição
idintegersim
urlstringsim
eventsstring[]sim
activebooleansim
created_atintegersim

Invoice ​

CampoTipoObrigatórioDescrição
idstringsimIdentificador (inv_…).
external_refstring (opcional)não
statusstringsimprocessing, authorized, rejected ou cancelled.
environmentstringsimrestricted (produção restrita, sem valor fiscal) ou production.
dps_seriesintegersim
dps_numberintegersim
amount_centsintegersim
competence_datestringsim
takerInvoiceTakersim
serviceInvoiceServicesim
access_keystring (opcional)nãoChave de acesso (50 dígitos) da NFS-e, quando autorizada.
nfse_numberstring (opcional)não
rejectionnull | Rejectionnão
cancellation_pendingnull | Cancellationnão
cancellation_errorstring (opcional)nãoÚltimo pedido de cancelamento recusado pelo governo.
created_atintegersim
authorized_atinteger (opcional)não
cancelled_atinteger (opcional)não

InvoicePage ​

CampoTipoObrigatórioDescrição
dataInvoice[]sim
next_cursorstring (opcional)nãoPasse em cursor para a próxima página; null quando acabou.

InvoiceService ​

CampoTipoObrigatórioDescrição
descriptionstringsim1 a 2000 caracteres.
amount_centsintegersimValor em centavos (1 a 99.999.999.999).
codestring (opcional)nãoCódigo de tributação nacional (6 dígitos); padrão: o da empresa.

InvoiceTaker ​

CampoTipoObrigatórioDescrição
documentstringsimCPF (11 dígitos) ou CNPJ (14 dígitos), com ou sem pontuação.
namestringsim2 a 150 caracteres.
emailstring (opcional)não
addressnull | TakerAddressnão

Issuer ​

CampoTipoObrigatórioDescrição
cnpjstringsim
municipal_registrationstringsim
legal_namestringsim
trade_namestringsim
tax_regimestringsimsimples (ME/EPP do Simples Nacional), mei ou normal (não optante).
municipality_ibgestringsimCódigo IBGE do município emissor (7 dígitos).
service_codestringsimCódigo de tributação nacional do serviço padrão (6 dígitos: item, subitem e desdobramento da LC 116).
iss_rate_bpinteger (opcional)nãoAlíquota do ISS em centésimos de ponto percentual (500 = 5%). Só para regime normal.
simples_rate_bpinteger (opcional)nãoSimples (ME/EPP): % aproximado de tributos informado na nota, em centésimos (600 = 6%).
environmentstringsimrestricted (produção restrita, nota sem valor fiscal) ou production.
dps_seriesintegersim
next_dps_numberintegersim
updated_atintegersim

IssuerEnvelope ​

CampoTipoObrigatórioDescrição
issuernull | Issuernão

IssuerInput ​

CampoTipoObrigatórioDescrição
cnpjstringsim
municipal_registrationstringsim1 a 15 caracteres.
legal_namestringsim2 a 300 caracteres.
trade_namestring (opcional)não
tax_regimestringsim
municipality_ibgestringsim
service_codestringsim
iss_rate_bpinteger (opcional)não
simples_rate_bpinteger (opcional)nãoObrigatório no Simples (ME/EPP): % aproximado de tributos, de 1% a 33% (100 a 3300).
dps_seriesinteger (opcional)não1 a 99999 (padrão 1).

IssuerStatus ​

CampoTipoObrigatórioDescrição
readybooleansimtrue quando a empresa pode emitir nota.
environmentstring (opcional)não
reasonsstring[]simO que falta, em texto para mostrar.
certificate_expires_atinteger (opcional)não

LoginInput ​

CampoTipoObrigatórioDescrição
emailstringsim
passwordstringsim

Me ​

CampoTipoObrigatórioDescrição
idintegersim
namestringsim
emailstringsim
rolestringsimowner ou member.
tenant_idintegersim
tenant_namestringsim
scopesstring[]sim

NewApiKey ​

CampoTipoObrigatórioDescrição
namestringsim
scopesstring[]sim

NewEndpoint ​

CampoTipoObrigatórioDescrição
urlstringsimURL https:// pública que receberá os eventos.
eventsstring[]simEventos assinados; ["*"] para todos.

NewInvoice ​

CampoTipoObrigatórioDescrição
external_refstring (opcional)nãoReferê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_datestring (opcional)nãoData da prestação (AAAA-MM-DD, horário de Brasília); padrão: hoje. Não pode ser futura.
takerInvoiceTakersim
serviceInvoiceServicesim

Rejection ​

CampoTipoObrigatórioDescrição
codestringsim
messagestringsim

RemoveCertificate ​

CampoTipoObrigatórioDescrição
account_passwordstringsimSenha da sua conta no Proton Fiscal (confirmação).

TakerAddress ​

CampoTipoObrigatórioDescrição
zipstringsimCEP com 8 dígitos.
streetstringsim
numberstringsim
complementstring (opcional)não
districtstringsim
municipality_ibgestringsimCódigo IBGE do município (7 dígitos).

UiBatch ​

CampoTipoObrigatórioDescrição
eventsUiEvent[]sim

UiEvent ​

CampoTipoObrigatórioDescrição
kindstringsimview (tela aberta, com ms) ou action (com name).
screenstringsimPadrão da rota, ex.: /itens/:id.
msinteger (opcional)não
namestring (opcional)não

UploadCertificate ​

CampoTipoObrigatórioDescrição
pfx_base64stringsimArquivo .pfx/.p12 em Base64 (até 50 KB).
passwordstringsimSenha do arquivo.
account_passwordstringsimSenha da sua conta no Proton Fiscal (confirmação).