Chaves de API
Gerar, delimitar e revogar API keys — o acesso dos sistemas externos ao GraphQL das tuas apps.
Os sistemas externos — um ERP que sincroniza clientes, um site que cria
pedidos, uma integração de facturação — chamam o GraphQL das apps com uma
API key: um segredo enviado no header x-api-key de cada pedido. As
keys são geridas ao nível da plataforma e partilhadas entre apps:
cada key tem um scope — escolhes as apps e, por app, todos os endpoints
ou só alguns. Uma integração de facturação pode, por exemplo, ler contas
na app Gestão de Clientes e escrever documentos noutra app, com uma única
key.
Nota
As keys são de quem administra a plataforma: a página API Keys só está disponível a contas de administrador.
A página API Keys
Abre o menu API Keys na navegação global. A lista mostra todas as keys da plataforma:
| Coluna | O que é |
|---|---|
| Nome | O nome que deste à key — identifica a integração. |
| Prefixo | Os primeiros caracteres da chave (ex. amk_A1b2C3…) — servem para reconheceres qual é qual sem nunca mostrar a chave inteira. |
| Scope | As apps a que dá acesso e, por app, "todos os endpoints" ou a lista dos concedidos. |
| Estado | activa ou revogada. |
| Última utilização | Quando a key foi usada pela última vez — nunca, se ainda não foi. |

Dica
A coluna Última utilização é a tua ferramenta de limpeza: uma key com meses sem uso é candidata a revogação.
Criar uma API key
- Carrega em Nova API key.
- Dá um Nome da key — ex.
integração-faturação. - Em Scope — apps e endpoints permitidos, marca as apps a incluir. Por omissão, cada app marcada concede "Todos os endpoints desta app."
- Para apertar o acesso numa app, marca Restringir a endpoints específicos e escolhe as APIs uma a uma. Numa API de Tabela, o grant cobre todas as operações activas — a lista mostra "dá acesso a: getContas, addContas, …" para saberes exactamente o que concedes.
- Carrega em Gerar API key.

Copiar e guardar a chave
Depois de gerar, a janela mostra a Chave em texto claro — uma única vez. Copia-a com Copiar e guarda-a num sítio seguro (um gestor de segredos, o cofre da tua equipa). Quando fechares a janela já não a voltas a ver — a plataforma não guarda a chave em claro; se a perderes, só poderás revogá-la e gerar outra.

Atenção
Trata a chave como uma password: não a metas em código-fonte, nem em URLs, nem em ecrãs de utilizador. Se suspeitares de fuga, revoga já — gerar uma key nova custa segundos.
Usar a chave
A chave segue no header x-api-key de cada pedido ao endpoint GraphQL da
app:
curl -X POST 'https://o-teu-host/api/graphql/gestao-clientes' \
-H 'content-type: application/json' \
-H 'x-api-key: amk_………' \
-d '{"query":"query { getContas(take: 5) { id nome } }"}'
O separador Docs de cada API gera este exemplo (e a variante JavaScript) já com a operação certa — só falta a tua chave.
O que uma key vê e não vê:
- Só APIs publicadas — rascunhos nunca, mesmo com scope de app inteira.
- Só o que o scope concede: chamar uma app fora do scope devolve
403 — API key not authorised for this project; chamar um endpoint fora do scope,403 — API key not authorised for this endpoint. - Sempre a versão principal da app (ou a versão publicada do endereço usado) — nunca a versão de trabalho de um developer.
Limites e erros
Cada key tem um tecto de pedidos por minuto. As respostas de erro que uma integração deve saber tratar:
| Resposta | Significado | O que fazer |
|---|---|---|
401 |
Key em falta, inválida, expirada ou revogada. | Verifica o header e o estado da key na lista. |
403 |
Key válida mas sem acesso à app ou ao endpoint. | Ajusta o scope — gera uma key nova com o scope certo. |
429 |
Tecto de pedidos por minuto atingido. | Espera o tempo indicado no header retry-after e repete. |
Revogar uma key
- Na lista, carrega no ícone de revogar da linha.
- Confirma em Revogar key.
A revogação é imediata: todas as apps consumidoras desta key perdem
acesso no pedido seguinte. Uma key revogada não pode ser reactivada —
fica na lista, marcada revogada, como registo.
Porque não…?
- Perdi a chave — posso vê-la outra vez? Não. A chave em claro só é mostrada no momento da criação. Revoga a antiga e gera outra.
- Preciso de dar acesso a mais um endpoint — edito a key? O scope define-se na criação. Gera uma key nova com o scope completo, troca-a na integração e revoga a antiga.
- Porque recebe a integração
403num endpoint novo? A key foi restringida a endpoints específicos e o novo não está na lista — o mesmo remédio: key nova com o scope certo. - A key dá acesso aos ecrãs da app? Não. Uma key só fala com o endpoint GraphQL. As contas de utilizadores da app são outra coisa, geridas nas definições da própria app.