Autenticação#
A API aceita três credenciais, cada uma para um caso. O campo {id} nas rotas é
sempre o id do agente.
| Credencial | Header | Prefixo | Uso |
|---|---|---|---|
| API key | X-API-Key: ctc_… |
ctc_ |
Chamadas servidor-a-servidor autenticadas como a sua conta (Console) |
| JWT | Authorization: Bearer <jwt> |
— | Sessão de navegador do Console (curto prazo + refresh + CSRF) |
| Runtime token | X-Agent-Token: prt_… |
prt_ |
Um app externo dirige um agente (ou os agentes de um tenant) |
- API keys (
ctc_) são guardadas com hash (SHA-256) — a chave crua aparece uma única vez, na criação. Cada key aceita uma allowlist opcional de IPs de origem. Crie em Tokens de acesso. - Runtime tokens (
prt_) são escopados. Um token agent-scoped dirige UM agente: o{id}na URL precisa ser o agente do token, senão403 RUNTIME_TOKEN_AGENT_MISMATCH. Um token tenant-scoped dirige todos-e-somente os agentes de um tenant (seu cliente final): outro tenant →403 RUNTIME_TOKEN_TENANT_MISMATCH. É o escopo de quem cria agentes dinamicamente por cliente — o vínculo sobrevive a agente criado ou removido depois, então o app não troca de credencial. A autenticação é por header, sem CSRF — ideais para backend de terceiros. - JWT é o caminho do Console (login → refresh). O header exato de CSRF é
X-CSRF-Token, casando com o cookiesaasbase_csrf_tokenem métodos não-seguros.
GETValidar a credencial#
Não existe um endpoint GET /v1/auth/me. A identidade da conta vem no corpo da
resposta de login / refresh (veja Tokens de acesso). Para checar rapidamente
uma API key servidor-a-servidor, qualquer leitura autenticada serve, por exemplo:
curl -sf https://agents-api.catcher.one/v1/agents \
-H "X-API-Key: ctc_SUA_KEY"
POSTCriar conta (quick-register)#
POST /v1/auth/quick-register — onboarding programático (o caminho para um
agente de IA provisionar a conta sozinho, sem abrir o Console). Público (sem
credencial), protegido por rate-limit/honeypot.
curl -X POST https://agents-api.catcher.one/v1/auth/quick-register \
-H "Content-Type: application/json" \
-d '{ "email": "voce@empresa.com" }'
Resposta 201 Created — guarda as duas credenciais na hora (são mostradas
uma única vez; também vão por email):
{
"company_id": 42,
"api_key": "ctc_…",
"email": "voce@empresa.com",
"password": "…",
"base_url": "https://agents-api.catcher.one",
"message": "account created — credentials sent to your email"
}
api_key(ctc_, role owner) autentica todas as chamadas de conta — criar agente, mintar runtime token, etc.passwordé a senha do Console (POST /v1/auth/login). O email já sai verificado (receber as credenciais prova posse do endereço).409 EMAIL_EXISTSse o email já tem conta — uselogin+forgot-passwordpara recuperar.