Gestão via API
Gerencie projetos, API keys, certificados A1 e configurações white-label da sua organização programaticamente. Ideal para Software Houses, ERPs e BPOs Contábeis que fazem onboarding autônomo de sub-clientes.
Consulte também os Termos de Uso da Org API / White-Label, LGPD e Acordo de Nível de Serviço (SLA) →
Limites por Plano (Homologação vs. Produção)
A Organization API pode ser testada gratuitamente em Homologação (`ambiente: 2`) desde o plano Free. Ao promover ou criar projetos em Produção (`ambiente: 1`) além do limite do seu plano atual, a API retorna 402 Payment Required (PAYWALL_PRODUCTION_PROJECT_REQUIRED).
| Plano | Projetos em Produção | Projetos em Homologação | Org Tokens Ativos | Rate Limit | White-Label |
|---|---|---|---|---|---|
| Free | Até 1 CNPJ | Até 5 CNPJs | Homologação (até 3 tokens) | 30 req/min | — |
| Developer | Até 3 CNPJs | Até 10 CNPJs | Homologação (até 3 tokens) | 30 req/min | — |
| SaaS Pro | Ilimitado | Ilimitado | Completa (até 20 tokens) | 120 req/min | Incluso |
| Enterprise | Ilimitado | Ilimitado | Completa (até 20 tokens) | 300 req/min | Incluso |
Autenticação
Todos os endpoints desta seção exigem um Organization Token (prefixo ntaas_org_) no header x-api-key. Tokens de projeto (ntaas_) não são aceitos nestas rotas.
curl -H "x-api-key: ntaas_org_XXXXXXXXXXXXXXXXXXXXXXXX" \
https://platform.notaas.com.br/api/v1/org/projects| Scope | Permissão |
|---|---|
| projects:read | Listar e visualizar projetos |
| projects:write | Criar, atualizar e excluir projetos |
| api_keys:manage | Criar, listar e revogar API keys |
| settings:read | Ler configurações da organização |
| settings:write | Configurar domínio white-label |
| certificates:write | Upload de certificado A1 |
Projetos
/org/projects🔑 x-api-keyCria um novo projeto (empresa fiscal PJ ou Pessoa Física — Prestador PF de serviços na NFS-e Nacional ou Produtor Rural PF na NF-e) na organização. Verifica limite do plano e duplicidade de CNPJ/CPF.
Body (JSON)
| Campo | Tipo | Req? | Descrição |
|---|---|---|---|
| name | string | sim | Nome do projeto (ex: "Filial SP", "Consultório Dr. João" ou "Fazenda Boa Vista") |
| cnpj (ou cpf / documento) | string | sim | CNPJ com 14 posições (Pessoa Jurídica — numérico tradicional \d{14} ou alfanumérico [0-9A-Z]{12}\d{2} conforme IN RFB nº 2.229/2024, com ou sem máscara SS.SSS.SSS/SSSS-DD) ou CPF com 11 dígitos (Pessoa Física — Prestador de serviços na NFS-e Nacional ou Produtor Rural na NF-e). Validado com dígitos verificadores (Módulo 11 ASCII - 48 para CNPJ). Na resposta da API e no banco, o documento é persistido e retornado no formato canônico limpo em maiúsculas (14 posições para CNPJ ou 11 dígitos para CPF) na propriedade cnpj. |
| razaoSocial | string | sim | Razão social da empresa ou nome completo da Pessoa Física (Prestador de serviços ou Produtor Rural) |
| caepf | string | null | não | Cadastro de Atividade Econômica da Pessoa Física (TSCAEPF — 14 dígitos numéricos ou máscara XXX.XXX.XXX/XXX-XX). Opcional e exclusivo para projetos com CPF (11 dígitos); rejeitado com HTTP 400 em projetos CNPJ. Pré-preenche <CAEPF> no grupo <prest> da DPS Nacional (SNNFSE) e é exibido no DANFSe. |
| inscricaoMunicipal | string | não | Inscrição municipal |
| inscricaoEstadual | string | não | Inscrição estadual. Para emissão de NF-e por Produtor Rural Pessoa Física (CPF), o validador pré-emissão exige IE numérica ativa de 2 a 14 dígitos ("ISENTO" não é aceito). |
| regimeTributario | "1"|"2"|"3"|"3e" | não | "1" = Não Optante (Regime Normal / CRT 3), "2" = MEI, "3" = SN ME/EPP, "3e" = SN Excesso de Sublimite. Para projetos CPF (Prestador PF de serviços ou Produtor Rural PF), deve ser obrigatoriamente "1" (default automático com CRT 3). |
| codigoMunicipio | string | não | Código IBGE 7 dígitos (ex: "4113700"). Validado contra a tabela de municípios. |
| string | não | E-mail da empresa | |
| telefone | string | não | Telefone da empresa |
| description | string | não | Descrição do projeto |
| endereco.logradouro | string | não | Logradouro |
| endereco.numero | string | não | Número |
| endereco.complemento | string | não | Complemento |
| endereco.bairro | string | não | Bairro |
| endereco.cidade | string | não | Nome da cidade |
| endereco.uf | string | não | Sigla do estado (ex: "SP") |
| endereco.cep | string | não | CEP (apenas dígitos) |
| codigoTributacao | string | não | Código de Tributação Nacional (LC 116/2003). Pré-preenche ao emitir NFS-e. |
| tributacaoIss | 1|2|3|4 | não | Tributação ISSQN: 1=Tributável, 2=Fora do campo, 3=Exportação, 4=Não Incidência |
| serieNfse | string | não | Série da NFS-e (padrão: "1608", máx 5 dígitos) |
| aliquotaSimples | number | não | Alíquota efetiva DAS (%) para empresas SN ME/EPP |
| regimeIss | 1|2|3 | não | Apuração ISS no SN: 1=ISS no DAS, 2=ISS separado, 3=Ambos separados |
| codigoServicoSp | string | não | Código de serviço da Prefeitura SP (5 dígitos). Obrigatório para município SP. |
| cnae | string | não | CNAE principal. Obrigatório para GINFES e Brasília/DF. |
| basicAuthUsuario | string | não | Usuário para municípios com sistema Basic Auth (Centi, HM2) |
| basicAuthSenha | string | não | Senha Basic Auth (write-only) |
| ambiente | 1|2 | não | Ambiente: 1=Produção, 2=Homologação (padrão na criação: 2). Respeita os limites de Produção e Homologação do plano. |
| serieNfe | number | não | Série padrão NF-e mod. 55. Para CNPJ: 1 a 889 (padrão: 1). Para CPF (Produtor Rural PF): 920 a 969 conforme NT 2018.001 (padrão: 920). |
| serieNfce | number | não | Série NFC-e mod. 65 (1-999) |
| cscId | string | não | ID do CSC obtido no portal SEFAZ do estado |
| cscToken | string | não | Token CSC (write-only — nunca retornado) |
| cstPisCofins | string|null | não | CST PIS/COFINS padrão (2 dígitos). Ex: "01"=Alíquota Básica, "07"=Isenta. Relevante apenas para Não Optante (regime "1"). Ignorado para MEI/SN. |
| aliquotaPis | number|null | não | Alíquota PIS padrão (%). Ex: 0.65. Usado no cálculo automático do bloco <tribFed> no DPS. |
| aliquotaCofins | number|null | não | Alíquota COFINS padrão (%). Ex: 3.00. Usado no cálculo automático do bloco <tribFed> no DPS. |
| tipoRetencaoPisCofins | number|null | não | Tipo retenção PIS/COFINS: 0=Não Retidos (default), 1=PIS/COFINS Retidos, 3=Todos Retidos. |
| defaultCstIbscbs | string|null | não | CST padrão de IBS/CBS (3 dígitos, Reforma Tributária LC 214/2025). Ex: "000" (Tributada integralmente), "200" (Redução de alíquota), "410" (Isenção). |
| defaultClassificacaoTributaria | string|null | não | Código de classificação tributária padrão cClassTrib (6 dígitos). Ex: "000001", "200046". |
| defaultIndicadorOperacao | string|null | não | Código indicador de operação padrão cIndOp (6 dígitos). Ex: "100301", "020301". |
| defaultNbs | string|null | não | Código NBS padrão (9 dígitos numéricos). Ex: "114012100". |
| danfeTemplate | "padrao"|"retrato_logo"|"paisagem_logo" | não | Modelo de layout do DANFE: "padrao" (default), "retrato_logo" ou "paisagem_logo" (uso de logo customizada requer plano Pro ou superior). |
{
"name": "Filial São Paulo",
"cnpj": "12345678000195",
"razaoSocial": "Acme Sistemas Ltda",
"regimeTributario": "3",
"codigoMunicipio": "3550308",
"email": "[email protected]",
"endereco": {
"logradouro": "Av Paulista",
"numero": "1000",
"bairro": "Bela Vista",
"cidade": "São Paulo",
"uf": "SP",
"cep": "01310100"
},
"defaultCstIbscbs": "000",
"defaultClassificacaoTributaria": "000001",
"defaultIndicadorOperacao": "100301",
"defaultNbs": "114012100"
}// O CNPJ alfanumérico "12.ABC.345/01DE-35" (ou "12abc34501de35") é normalizado
// para 14 caracteres maiúsculos sem pontuação ("12ABC34501DE35") ao persistir.
{
"id": "a1b2c3d4-...",
"name": "Matriz Curitiba — CNPJ Alfanumérico",
"cnpj": "12ABC34501DE35",
"caepf": null,
"razaoSocial": "Tech Inovação Alfanumérica S.A.",
"codigoMunicipio": "4106902",
"ambiente": 2,
"regimeTributario": "1",
"crt": 3,
"serieNfse": "1",
"serieNfe": 1,
"serieNfce": 1,
"tributacaoIss": 1,
"cstPisCofins": null,
"defaultCstIbscbs": null,
"defaultClassificacaoTributaria": null,
"defaultIndicadorOperacao": null,
"defaultNbs": null,
"danfeTemplate": "padrao",
"active": true,
"createdAt": "2026-10-27T14:00:00Z"
}Erros
| Campo | Tipo | Req? | Descrição |
|---|---|---|---|
| 400 | Bad Request | não | CNPJ/CPF inválido, caepf inválido ou informado para projeto CNPJ, ambiente fora de 1|2, regime ou serieNfe incompatível com projeto CPF, campo obrigatório ausente ou código IBGE inexistente |
| 402 | Payment Required | não | PAYWALL_PRODUCTION_PROJECT_REQUIRED — limite de projetos em Produção (ambiente=1) do plano atingido. Faça upgrade para Developer ou SaaS Pro. |
| 403 | Forbidden | não | SANDBOX_PROJECT_LIMIT_REACHED — limite de projetos simultâneos em Homologação (ambiente=2) atingido. |
| 409 | Conflict | não | CNPJ ou CPF já cadastrado na organização (retorna existingProjectId) |
/org/projects🔑 x-api-keyLista todos os projetos da organização com paginação e status de certificado/API key.
Query Params
| Campo | Tipo | Req? | Descrição |
|---|---|---|---|
| page | number | não | Página (padrão: 1) |
| limit | number | não | Itens por página (padrão: 20, máx: 100) |
| active | boolean | não | Filtrar por ativos (padrão: true). Use active=false para incluir inativos. |
// Response 200
{
"data": [
{
"id": "a1b2c3d4-...",
"name": "Filial SP",
"cnpj": "12345678000195",
"codigoMunicipio": "3550308",
"active": true,
"hasCertificate": true,
"hasApiKey": true,
"createdAt": "2026-04-21T20:30:00Z"
}
],
"pagination": { "page": 1, "limit": 20, "total": 3 }
}/org/projects/{id}🔑 x-api-keyRetorna os dados completos de um projeto (exceto certificado e senha).
// Response 200
{
"id": "a1b2c3d4-...",
"name": "Filial SP",
"cnpj": "12345678000195",
"caepf": null,
"razaoSocial": "Acme Sistemas Ltda",
"inscricaoMunicipal": "12345",
"inscricaoEstadual": "123456789",
"regimeTributario": "3",
"crt": 1,
"codigoMunicipio": "3550308",
"endereco": {
"logradouro": "Av Paulista",
"numero": "1000",
"complemento": null,
"bairro": "Bela Vista",
"cidade": "São Paulo",
"uf": "SP",
"cep": "01310100"
},
"email": "[email protected]",
"telefone": "11999999999",
"codigoTributacao": null,
"tributacaoIss": 1,
"serieNfse": "1608",
"aliquotaSimples": 3.5,
"regimeIss": null,
"codigoServicoSp": "01015",
"cnae": "6201501",
"basicAuthUsuario": null,
"ambiente": 2,
"serieNfe": 1,
"serieNfce": 1,
"cscId": "000001",
"hasCscToken": true,
"cstPisCofins": "01",
"aliquotaPis": 0.65,
"aliquotaCofins": 3.00,
"tipoRetencaoPisCofins": 0,
"defaultCstIbscbs": "000",
"defaultClassificacaoTributaria": "000001",
"defaultIndicadorOperacao": "100301",
"defaultNbs": "114012100",
"danfeTemplate": "padrao",
"active": true,
"createdAt": "2026-04-21T20:30:00Z",
"updatedAt": "2026-04-21T20:30:00Z"
}/org/projects/{id}🔑 x-api-keyAtualiza campos do projeto. O CNPJ/CPF é imutável após criação.
Body (JSON) — campos opcionais
| Campo | Tipo | Req? | Descrição |
|---|---|---|---|
| name | string | não | Novo nome do projeto |
| razaoSocial | string | não | Nova razão social ou nome completo da Pessoa Física |
| caepf | string | null | não | CAEPF do prestador Pessoa Física (14 dígitos numéricos ou máscara XXX.XXX.XXX/XXX-XX). Exclusivo para projetos CPF (rejeitado com HTTP 400 em projetos CNPJ). Envie null ou "" para remover. |
| inscricaoMunicipal | string | não | Inscrição municipal |
| inscricaoEstadual | string | não | Inscrição estadual (para emissão de NF-e por Produtor Rural PF, o validador pré-emissão exige IE numérica ativa de 2 a 14 dígitos) |
| regimeTributario | "1"|"2"|"3"|"3e" | não | Regime tributário ("1"=Não Optante, "2"=MEI, "3"=SN ME/EPP, "3e"=SN Excesso). Para projetos CPF (Prestador PF de serviços ou Produtor Rural PF), apenas "1" é permitido. |
| codigoMunicipio | string | não | Código IBGE do município |
| string | não | ||
| telefone | string | não | Telefone |
| description | string | não | Descrição do projeto |
| endereco.* | object | não | Campos de endereço (logradouro, numero, bairro, cidade, uf, cep) |
| codigoTributacao | string | não | Código de Tributação Nacional (LC 116/2003) |
| tributacaoIss | 1|2|3|4 | não | Tributação ISSQN: 1=Tributável, 2=Fora do campo, 3=Exportação, 4=Não Incidência |
| serieNfse | string | não | Série da NFS-e (padrão: "1608", máx 5 dígitos) |
| aliquotaSimples | number | null | não | Alíquota efetiva DAS (%) para empresas SN ME/EPP |
| regimeIss | 1|2|3 | null | não | Apuração ISS no SN: 1=ISS no DAS, 2=ISS separado, 3=Ambos separados |
| codigoServicoSp | string | não | Código de serviço da Prefeitura SP (5 dígitos) |
| cnae | string | não | CNAE principal |
| basicAuthUsuario | string | não | Usuário para municípios com sistema Basic Auth (Centi, HM2) |
| basicAuthSenha | string | não | Senha Basic Auth (write-only) |
| ambiente | 1|2 | não | Ambiente: 1=Produção, 2=Homologação (padrão na criação: 2). Respeita os limites de Produção e Homologação do plano. |
| serieNfe | number | null | não | Série NF-e mod. 55 (1–889 para CNPJ; 920–969 para CPF) |
| serieNfce | number | null | não | Série NFC-e mod. 65 (1-999) |
| cscId | string | null | não | ID do CSC |
| cscToken | string | null | não | Token CSC (write-only) |
| cstPisCofins | string | null | não | CST PIS/COFINS padrão (2 dígitos, ex: "01", "07"). Envie null para remover. |
| aliquotaPis | number | null | não | Alíquota PIS padrão (%). Envie null para remover. |
| aliquotaCofins | number | null | não | Alíquota COFINS padrão (%). Envie null para remover. |
| tipoRetencaoPisCofins | number | null | não | Tipo retenção PIS/COFINS: 0=Não Retidos, 1=Retidos, 3=Todos. Envie null para remover. |
| defaultCstIbscbs | string | null | não | CST padrão IBS/CBS (3 dígitos numéricos). Envie null para remover. |
| defaultClassificacaoTributaria | string | null | não | Classificação tributária cClassTrib padrão (6 dígitos). Envie null para remover. |
| defaultIndicadorOperacao | string | null | não | Indicador de operação cIndOp padrão (6 dígitos). Envie null para remover. |
| defaultNbs | string | null | não | NBS padrão (9 dígitos numéricos). Envie null para remover. |
| danfeTemplate | "padrao"|"retrato_logo"|"paisagem_logo" | null | não | Modelo de layout do DANFE: "padrao", "retrato_logo" ou "paisagem_logo" (uso de logo requer plano Pro ou superior). Envie null para restaurar "padrao". |
// Request
{ "name": "Filial SP - Centro", "regimeTributario": "1", "defaultCstIbscbs": "000" }
// Response 200
{ "updated": true, "id": "a1b2c3d4-..." }/org/projects/{id}🔑 x-api-keyExclui (desativa) o projeto de forma irreversível via API e revoga imediatamente todas as API Keys vinculadas. O histórico fiscal, as notas emitidas, as numerações, os arquivos e o certificado digital são preservados. Libera a quota de CNPJs do plano e permite re-cadastrar o mesmo CNPJ em um novo projeto.
Respostas
| Campo | Tipo | Req? | Descrição |
|---|---|---|---|
| 204 | No Content | não | Projeto desativado com sucesso (sem corpo na resposta) |
| 401 | Unauthorized | não | Token ausente ou inválido |
| 403 | Forbidden | não | Token sem o escopo projects:write |
| 404 | Not Found | não | Projeto inexistente, já inativo ou de outra organização |
| 429 | Too Many Requests | não | Rate limit excedido |
# cURL
curl -X DELETE \
-H "x-api-key: ntaas_org_..." \
https://platform.notaas.com.br/api/v1/org/projects/{id}
// JavaScript (fetch)
const res = await fetch(
'https://platform.notaas.com.br/api/v1/org/projects/{id}',
{ method: 'DELETE', headers: { 'x-api-key': 'ntaas_org_...' } }
);
// res.status === 204 → sucesso (sem corpo)⚠️ Atenção
A desativação é irreversível via API e revoga todas as API Keys do projeto na mesma transação. Notas fiscais já emitidas, numerações e certificado são mantidos para fins fiscais e de auditoria.
Numeração
/org/projects/{id}/numeracao🔑 x-api-keyRetorna o estado atual da numeração de NFS-e, NF-e e NFC-e do projeto.
// Response 200
{
"nfse": {
"ultimoNumero": 1500,
"proximoNumero": 1501,
"serie": "1608"
},
"nfe": {
"ultimoNumero": 2000,
"proximoNumero": 2001,
"serie": 1
},
"nfce": {
"ultimoNumero": 500,
"proximoNumero": 501,
"serie": 1
}
}/org/projects/{id}/numeracao🔑 x-api-keyAjusta a numeração sequencial. Números nunca diminuem — se o valor enviado for menor que o atual, será ignorado (guard GREATEST).
Body (JSON)
| Campo | Tipo | Req? | Descrição |
|---|---|---|---|
| ultimoNumeroNfse | number | não | Último número DPS (NFS-e). O próximo será este +1. |
| ultimoNumeroNfe | number | não | Último número NF-e (mod. 55). O próximo será este +1. |
| ultimoNumeroNfce | number | não | Último número NFC-e (mod. 65). O próximo será este +1. |
curl -X PATCH \
-H "x-api-key: ntaas_org_..." \
-H "Content-Type: application/json" \
-d '{"ultimoNumeroNfse": 1500, "ultimoNumeroNfe": 2000}' \
https://platform.notaas.com.br/api/v1/org/projects/{id}/numeracao
// Response 200 — valores efetivos após GREATEST
{
"nfse": { "ultimoNumero": 1500, "proximoNumero": 1501, "serie": "1608" },
"nfe": { "ultimoNumero": 2000, "proximoNumero": 2001, "serie": 1 },
"nfce": { "ultimoNumero": 500, "proximoNumero": 501, "serie": 1 }
}API Keys de Projeto
/org/projects/{id}/api-keys🔑 x-api-keyCria uma API key para o projeto. A chave completa é retornada apenas nesta resposta — nunca mais.
Body (JSON)
| Campo | Tipo | Req? | Descrição |
|---|---|---|---|
| name | string | sim | Nome descritivo da chave (ex: "Produção Backend") |
// Response 201
{
"id": "key-uuid-...",
"name": "Produção Backend",
"key": "ntaas_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX",
"keyPrefix": "ntaas_XXXX",
"scopes": ["emit", "cancel", "query"],
"rateLimitPerMinute": 60,
"createdAt": "2026-04-21T20:35:00Z"
}⚠️ Atenção
O campo key é exibido apenas nesta resposta. Armazene-o com segurança. Se perdido, revogue e crie uma nova chave.
/org/projects/{id}/api-keys🔑 x-api-keyLista as API keys do projeto (sem expor a chave completa).
// Response 200
{
"data": [
{
"id": "key-uuid-...",
"name": "Produção Backend",
"keyPrefix": "ntaas_XXXX",
"scopes": ["emit", "cancel", "query"],
"rateLimitPerMinute": 60,
"active": true,
"lastUsedAt": "2026-04-21T20:40:00Z",
"createdAt": "2026-04-21T20:35:00Z"
}
]
}/org/projects/{id}/api-keys/{keyId}🔑 x-api-keyRevoga (desativa) uma API key. A chave para de funcionar imediatamente.
// Response 200
{ "revoked": true, "id": "key-uuid-..." }Certificado Digital A1
/org/projects/{id}/certificate🔑 x-api-keyConsulta os metadados seguros do certificado digital A1 ativo do projeto (jamais expõe o binário .pfx ou a senha). Requer escopo projects:read.
// Response 200
{
"projectId": "6f9b1c20-8a4d-4e3a-9c11-...",
"hasActiveCertificate": true,
"validUntil": "2027-01-15T23:59:59.000Z",
"isExpired": false,
"daysUntilExpiration": 269,
"uploadUrl": "https://platform.notaas.com.br/certificates?projectId=6f9b1c20-..."
}/org/projects/{id}/certificate/upload-session🔑 x-api-keyCria uma sessão efêmera one-time (TTL 15 minutos) para upload de Certificado A1 sem expor a senha ao LLM e sem exigir login Clerk. Retorna o comando read -s + curl para terminal (Opção 2 do MCP) e a URL Dropzone /onboarding/cert#token=... para o contador/cliente (Opção 3 do MCP). Requer escopo certificates:write.
// Response 201
{
"sessionId": "8f14e45f-ceea-467f-a8c9-...",
"projectId": "6f9b1c20-8a4d-4e3a-9c11-...",
"projectName": "Matriz SP",
"razaoSocial": "ACME SISTEMAS LTDA",
"cnpj": "12345678000195",
"uploadToken": "ntaas_cert_up_64_hex...",
"uploadSessionUrl": "https://platform.notaas.com.br/onboarding/cert#token=ntaas_cert_up_...",
"terminalCommand": "read -r -s -p \"Senha do Certificado A1: \" NOTAAS_PFX_PASS && echo \"\" && curl -sS -X POST ...",
"expiresAt": "2026-10-28T10:30:00.000Z",
"ttlMinutes": 15
}/org/projects/{id}/certificate🔑 x-api-keyUpload de certificado digital A1 (.pfx/.p12 — e-CNPJ A1 para projetos PJ ou e-CPF A1 para projetos PF — Prestador de serviços na NFS-e Nacional ou Produtor Rural na NF-e). Substitui atomicamente o certificado anterior e valida o documento do titular contra o projeto quando extraível do certificado ICP-Brasil.
Body (multipart/form-data)
| Campo | Tipo | Req? | Descrição |
|---|---|---|---|
| file | File (.pfx/.p12) | sim | Arquivo do certificado A1 e-CNPJ ou e-CPF (máx. 50KB) |
| password | string | sim | Senha do certificado |
curl -X POST https://platform.notaas.com.br/api/v1/org/projects/{id}/certificate \
-H "x-api-key: ntaas_org_XXXXXXXX..." \
-F "[email protected]" \
-F "password=minhaSenha123"// Response 201
{
"id": "cert-uuid-...",
"fileName": "certificado.pfx",
"subjectCN": "ACME SISTEMAS LTDA:12345678000195",
"validFrom": "2026-01-15T00:00:00Z",
"validUntil": "2027-01-15T23:59:59Z",
"daysUntilExpiration": 269,
"active": true
}Erros
| Campo | Tipo | Req? | Descrição |
|---|---|---|---|
| 400 | Bad Request | não | Arquivo inválido, senha incorreta, certificado expirado ou titular (CNPJ numérico ou alfanumérico [0-9A-Z]{12}\d{2} no e-CNPJ via OID 2.16.76.1.3.3 / CN, ou 11 dígitos no e-CPF) divergente do documento do projeto (previne Rejeições SEFAZ 213 e 227) |
| 413 | Payload Too Large | não | Arquivo excede 50KB |
Logo do Emitente
Gerencie o logo que será impresso nos DANFEs dos modelos retrato_logo e paisagem_logo.
/org/projects/{id}/logo🔑 x-api-keyUpload de logo do emitente (PNG/JPEG/WebP). Substitui o logo anterior.
Body (multipart/form-data)
| Campo | Tipo | Req? | Descrição |
|---|---|---|---|
| file | File | sim | Imagem do logo (máx. 500KB). Recomendado 400x400px. |
curl -X POST https://platform.notaas.com.br/api/v1/org/projects/{id}/logo \
-H "x-api-key: ntaas_org_XXXXXXXX..." \
-F "[email protected]"// Response 201
{
"ok": true,
"key": "logos/uuid-proj/logo.png"
}/org/projects/{id}/logo🔑 x-api-keyRemove o logo do projeto e reseta o danfeTemplate para 'padrao'.
curl -X DELETE https://platform.notaas.com.br/api/v1/org/projects/{id}/logo \
-H "x-api-key: ntaas_org_XXXXXXXX..."// Response 200
{ "ok": true }Configurações da Organização
/org/settings🔑 x-api-keyRetorna configurações atuais da organização e resumo de uso do plano.
// Response 200
{
"name": "Acme Sistemas",
"slug": "acme-sistemas",
"storageBaseUrl": "https://storage.acmesistemas.com.br",
"subscription": {
"planName": "Pro",
"planSlug": "pro",
"creditsUsed": 42,
"creditsLimit": 500,
"daysLeft": 18
}
}/org/settings🔑 x-api-keyConfigura o domínio white-label para documentos (PDF/XML). O CNAME deve apontar para backbone.notaas.com.br.
Body (JSON)
| Campo | Tipo | Req? | Descrição |
|---|---|---|---|
| storageBaseUrl | string | null | sim | URL HTTPS do domínio customizado (ex: "https://storage.acme.com.br"). Envie null para remover. |
// Request
{ "storageBaseUrl": "https://storage.acmesistemas.com.br" }
// Response 200
{
"storageBaseUrl": "https://storage.acmesistemas.com.br",
"status": "pending_verification",
"message": "Configure o CNAME do domínio apontando para backbone.notaas.com.br."
}Validações e Requisitos
| Campo | Tipo | Req? | Descrição |
|---|---|---|---|
| Plano | SaaS Pro+ | não | Configurar storageBaseUrl não-nulo exige plano SaaS Pro ou Enterprise (retorna 402 PAYWALL_WHITELABEL_REQUIRED em Free/Dev). Enviar null para remover é permitido em qualquer plano. |
| HTTPS | obrigatório | não | Apenas URLs com protocolo https: são aceitas |
| Domínio público | obrigatório | não | Sem localhost, IPs, .local ou hostnames sem domínio |
| CNAME | manual | não | Configure o registro CNAME apontando para backbone.notaas.com.br |
Rate Limiting e Limite de Tokens
O rate limit dos Org Tokens varia conforme o plano da organização: 30 req/min (Free e Developer em modo Homologação), 120 req/min (SaaS Pro) e 300 req/min (Enterprise). Cada organização pode manter até 3 tokens ativos nos planos Free/Developer e até 20 tokens ativos nos planos SaaS Pro/Enterprise. Ao exceder o rate limit, a API retorna 429 Too Many Requests com o header Retry-After.
Fluxo Completo de Onboarding
PASSO A PASSO
- Criar org token no dashboard (API Keys → Organization Tokens → Novo Token) ou via pareamento Device Flow RFC 8628 no MCP (
notaas_start_account_onboarding) POST /org/projects— criar projeto do sub-cliente (em Homologaçãoambiente: 2ou Produçãoambiente: 1)POST /org/projects/:id/certificate(upload diretomultipart/form-data) ouPOST /org/projects/:id/certificate/upload-session(sessão one-time de 15 min para envio via terminalread -sou link Dropzone sem login/onboarding/cert#token=...para o contador/cliente)POST /org/projects/:id/api-keys— criar API key do projeto- Usar a
ntaas_key retornada para emitir notas viaPOST /emitir
💡 Paridade 100% com o Onboarding Web: as rotas de provisionamento atualizam seletivamente o checklist da organização (onboarding_objectives) conforme a operação e os dados enviados — criação e atualização de projeto (POST /org/projects e PATCH /org/projects/:id) marcam company_data, fiscal_config e nfe_config conforme os campos preenchidos; o upload do certificado marca certificate; e a criação da chave (POST /org/projects/:id/api-keys) marca api_key. Além disso, o cadastro de um projeto fiscal real substitui/promove automaticamente o projeto placeholder inicial intocado ("Projeto Padrão" / CNPJ 00.000.000/0000-00), sem desativar nenhum projeto real existente.