Autenticação: API keys e escopos
Atualizado em
Nesta página
Toda chamada à API é autenticada por uma chave de API da empresa. A chave define o ambiente (teste ou produção) e o que ela pode fazer (escopos).
Formato da chave#
emt_<ambiente>_<prefixo>_<segredo>
emt_test_xxxxxxxx_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ← teste (sandbox)
emt_live_xxxxxxxx_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ← produção- O prefixo (8 caracteres) identifica a chave no painel e nos logs.
- O segredo (32 caracteres) só existe com você. A Emitra guarda apenas um hash dele e não consegue mostrar a chave de novo.
Enviando a chave#
Use o header Authorization com o esquema Bearer:
GET /api/v1/integracao/me HTTP/1.1
Host: emitra.com.br
Authorization: Bearer emt_test_xxxxxxxx_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxO header X-Api-Key: <chave> também é aceito, para ferramentas que não permitem mexer no Authorization.
curl https://emitra.com.br/api/v1/integracao/me \
-H "Authorization: Bearer $EMITRA_API_KEY"import os, requests
r = requests.get(
"https://emitra.com.br/api/v1/integracao/me",
headers={"Authorization": f"Bearer {os.environ['EMITRA_API_KEY']}"},
timeout=30,
)const r = await fetch("https://emitra.com.br/api/v1/integracao/me", {
headers: { Authorization: `Bearer ${process.env.EMITRA_API_KEY}` },
});<?php
$ch = curl_init("https://emitra.com.br/api/v1/integracao/me");
curl_setopt_array($ch, [
CURLOPT_HTTPHEADER => ["Authorization: Bearer " . getenv("EMITRA_API_KEY")],
CURLOPT_RETURNTRANSFER => true,
]);
$resposta = json_decode(curl_exec($ch), true);Criando uma chave#
Só owner e admin da empresa criam chaves (permissão integracao:gerenciar).
- Abra Notas › Automação › Integrações › Chaves de API.
- Clique em Nova chave e informe:
- Nome (ex.: "ERP Produção");
- Ambiente: teste (
emt_test_) ou produção (emt_live_); - Escopos (veja abaixo);
- Expiração: obrigatória, de até 1 ano.
- Copie a chave e marque "Guardei a chave em um local seguro". Ela não será mostrada de novo.
Escopos#
| Escopo | Permite |
|---|---|
nfse:emit |
Emitir NFS-e (POST /nfse) |
nfse:read |
Consultar e listar notas, baixar XML e PDF, listar eventos |
nfse:cancel |
Cancelar NFS-e |
nfse:replace |
Substituir NFS-e |
customers:read |
Consultar e listar tomadores |
customers:write |
Criar, alterar e excluir tomadores |
items:read |
Consultar e listar itens de serviço |
items:write |
Criar, alterar e excluir itens de serviço |
webhooks:manage |
Gerenciar endpoints de webhook e ver entregas |
As rotas de utilidade (/me, /referencia/*) aceitam qualquer chave válida.
Os escopos são um subconjunto das permissões de quem cria a chave. Um admin não consegue criar uma chave com um escopo que ele próprio não tem.
Respostas de autenticação#
| HTTP | code |
Quando |
|---|---|---|
| 401 | UNAUTHORIZED |
Chave ausente, malformada, expirada, revogada ou inexistente |
| 403 | FORBIDDEN |
Chave válida, mas sem o escopo da rota |
A mensagem de erro é genérica de propósito: ela não diz se a chave existe.
Proteja sua chave#
- O painel mostra o último uso (data e IP) de cada chave. Revise as chaves sem uso e revogue.
- Toda ação feita por uma chave entra na auditoria da empresa com o ator
api_keye o nome da chave.
Revogando e rotacionando#
Revogar tem efeito imediato: as chamadas seguintes recebem 401. Para rotacionar sem parar a integração:
- Crie a chave nova com os mesmos escopos.
- Publique a chave nova no seu sistema.
- Confira no painel que a chave antiga parou de ser usada.
- Revogue a chave antiga.