A chave é validada no provedor ao ser salva e fica no Vault. Nenhuma leitura devolve o segredo: só last4. Provedores aceitos:
| provider | Nome | Onde gerar a chave |
|---|---|---|
anthropic | Anthropic · Claude | https://console.anthropic.com/settings/keys |
openai | OpenAI | https://platform.openai.com/api-keys |
google | Google · Gemini | https://aistudio.google.com/apikey |
openrouter | OpenRouter | https://openrouter.ai/keys |
deepseek | DeepSeek | https://platform.deepseek.com/api_keys |
xai | xAI · Grok | https://console.x.ai |
Credenciais
GET /ai/credentials
Escopo agents:read
Query customer_id. Retorna todas as credenciais do Cliente, com os usos de cada uma.
POST /ai/credentials
Escopo agents:write
| Campo | Tipo e limites | Uso |
|---|---|---|
provider | anthropic, openai, google, openrouter, deepseek, xai | Provedor da chave. |
label | string 1–80 | Nome exibido. |
key | string 8–4096 | Segredo. Nunca é devolvido. |
{
"customer_id": "11111111-1111-4111-8111-111111111111",
"provider": "openai",
"label": "OpenAI produção",
"key": "CHAVE_DO_SEU_PROVEDOR"
}Responde 201 com a credencial. Confira validation_status (valid, invalid ou pending) e last_error: só uma credencial válida e ativa pode ser publicada.
{
"id": "22222222-2222-4222-8222-222222222222",
"customer_id": "11111111-1111-4111-8111-111111111111",
"provider": "openai",
"label": "OpenAI produção",
"last4": "a1B2",
"revision": "1",
"active": true,
"validation_status": "valid",
"validated_at": "2026-09-25T13:00:00.000Z",
"last_error": null,
"models": [
"MODELO_A",
"MODELO_B"
],
"usage_count": 1,
"usages": [
{
"kind": "agent_version",
"id": "55555555-5555-4555-8555-555555555555",
"label": "Atendimento · v3"
}
]
}GET /ai/credentials/{id}
Escopo agents:read
Query customer_id. Mesmo formato do item da lista.
PATCH /ai/credentials/{id}
Escopo agents:write
Corpo com customer_id e expected_revision, mais uma das formas:
labele/ouactive: renomeia ou ativa/desativa;keysozinho: troca o segredo e valida de novo.keyjunto delabelouactiveé recusado com422 invalid.
Trocar a chave cria uma nova revisão.
POST /ai/credentials/{id}/revalidate
Escopo agents:write
Corpo {customer_id, expected_revision}. Consulta o provedor de novo e atualiza models e validation_status.
DELETE /ai/credentials/{id}
Escopo agents:write
Corpo {customer_id, expected_revision}. Responde 204. Uma credencial referenciada por versão, roteador ou finalidade retorna 409 in_use: troque os vínculos antes.
| Status | Código | Quando |
|---|---|---|
| 404 | not_found | Credencial inexistente neste Cliente. |
| 409 | revision_conflict | Revisão desatualizada. |
| 409 | in_use | Exclusão de credencial em uso. |
| 422 | invalid | Corpo fora do contrato ou modelo incompatível com a finalidade. |
| 503 | unavailable | Falha ao consultar as credenciais. |
Confirmação de uso de dados
Se a Conta já conectou o Google Agenda, cada revisão de credencial precisa de uma confirmação das condições de uso de dados do provedor antes de qualquer inferência. Sem ela, testes, execuções e consultas retornam 409 google_data_use_ack_required. Trocar a chave cria uma revisão nova e exige nova confirmação. A confirmação pode ser feita por qualquer membro da Conta no painel, em Configurações › Provedores e chaves, Credenciais › Editar (ou Confirmar uso dos dados, para quem é Operador); pela API, com uma chave live que tenha agents:write e tenha sido criada por um Administrador (outra chave recebe 403 forbidden). Confira as condições do provedor antes de confirmar; a API registra a chave de API como autora.
GET /ai/credentials/{id}/data-use
Escopo agents:read
Query customer_id. Retorna credential_revision, policy_version, requires_ack (a Conta exige a confirmação), acknowledged (há confirmação ativa para a revisão atual), accepted_at, accepted_by_user_id ou accepted_by_api_key_id e evidence_note.
POST /ai/credentials/{id}/data-use
Escopo agents:write · chave criada por um Administrador
Corpo {customer_id, expected_revision, policy_version: "2026-09-24", confirmed: true, evidence}. evidence (10 a 2000 caracteres) descreve como as condições foram verificadas no provedor; texto com chave, token ou senha é recusado com 422 invalid. Repetir para a mesma revisão não cria outro registro. Responde com o mesmo formato do GET.
POST /ai/credentials/{id}/data-use/revoke
Escopo agents:write · chave criada por um Administrador
Corpo {customer_id, expected_revision, reason} (reason com 10 a 2000 caracteres). A evidência anterior é preservada; as próximas inferências com a credencial param enquanto a Conta exigir a confirmação.
| Status | Código | Quando |
|---|---|---|
| 403 | forbidden | Chave sem agents:write, expirada ou criada por quem não é Administrador. |
| 404 | not_found | Credencial inexistente neste Cliente. |
| 409 | revision_conflict | expected_revision diferente da revisão atual da credencial. |
| 409 | account_frozen | Conta em exclusão. |
| 422 | invalid | Versão da política, confirmação ou texto fora do contrato. |
Finalidades
Cada chamada de modelo tem uma finalidade. O atendimento, o operador e o roteador usam o que foi publicado na versão ou no roteador. As outras usam o vínculo configurado aqui.
| purpose | Uso | Origem do modelo |
|---|---|---|
default | Padrão do Cliente | Vínculo próprio: padrão do Cliente |
agent_turn | Atendimento | Versão do agente |
agent_operator | Operador | Versão do agente |
router | Roteamento | Classificador do roteador |
followup | Acompanhamento | Vínculo próprio; sem ele, usa o padrão do Cliente |
proposal | Propostas | Vínculo próprio; sem ele, usa o padrão do Cliente |
transcription | Transcrição de áudio | Vínculo próprio com modelo de transcrição |
embedding | Base de conhecimento | Vínculo próprio, só OpenAI text-embedding-3-small |
guard | Proteção contra manipulação | Vínculo próprio; sem ele, usa o padrão do Cliente |
evaluator | Avaliação antes do envio | Vínculo próprio; sem ele, usa o padrão do Cliente |
classification | Classificação de conversas | Vínculo próprio; sem ele, usa o padrão do Cliente |
compaction | Compactação de memória | Vínculo próprio; sem ele, usa o padrão do Cliente |
case_chat | Consulta interna de casos | Vínculo próprio; sem ele, usa o padrão do Cliente |
learning_judge | Aprendizado: avaliação | Vínculo próprio; sem ele, usa Propostas e depois o padrão |
learning_distiller | Aprendizado: síntese | Vínculo próprio; sem ele, usa Propostas e depois o padrão |
vision | Descrição de imagens | Vínculo próprio; sem ele, usa o padrão do Cliente |
commercial_proposal | Propostas comerciais | Vínculo próprio; sem ele, usa o padrão do Cliente |
GET /ai/providers
Escopo agents:read
Query customer_id. Retorna providers, purposes (rótulos), configurable_purposes, configuration_sources (onde ficam agent_turn, agent_operator e router), credentials e bindings.
PUT /ai/providers
Escopo agents:write
| Campo | Tipo e limites | Uso |
|---|---|---|
purpose | uma finalidade configurável | agent_turn, agent_operator e router são recusadas com 422. |
provider, model, credential_id | obrigatórios | Modelo compatível com a finalidade e credencial do mesmo provedor. |
fallback | objeto com provider, model, credential_id ou null | Alternativa usada quando o principal falha. |
{
"customer_id": "11111111-1111-4111-8111-111111111111",
"purpose": "embedding",
"provider": "openai",
"model": "text-embedding-3-small",
"credential_id": "22222222-2222-4222-8222-222222222222",
"fallback": null
}Retorna o vínculo salvo. embedding aceita apenas OpenAI text-embedding-3-small; transcription exige modelo de transcrição; vision recusa modelos que o catálogo indica sem entrada de imagem.
DELETE /ai/providers
Escopo agents:write
Corpo {customer_id, purpose}. Responde 204. A finalidade volta a herdar o padrão, quando herda.
Modelos e catálogo
GET /ai/providers/{provider}/models
Escopo agents:read
Query customer_id e credential_id. Lista os modelos que a credencial validada enxerga, com capabilities (text, transcription ou embedding).
GET /ai/providers/catalog
Escopo agents:read
Query customer_id. Último retrato do catálogo de cada credencial, sem chaves.
POST /ai/providers/catalog
Escopo agents:write · chave criada por um Administrador
Corpo {customer_id, credential_id, expected_revision}, com a revisão da credencial ("1" ou mais). Consulta o provedor com a sua chave e responde 201 com o retrato. Preços do catálogo são sugestões: não alteram as tarifas de Uso e orçamento.
| Status | Código | Quando |
|---|---|---|
| 502 | provider_<erro> | O provedor não respondeu ao catálogo. Nada foi alterado. |
Visão geral do Agente de IA · Próxima: Agentes e versões
