Ir para o conteúdo
Autenticação

Autenticação

Toda requisição leva sua chave de API em um header. Uma chave por conta funciona em todos os endpoints e em todos os modelos, em qualquer uma de duas formas de header.

Header · SDKs da OpenAI
Authorization: Bearer YOUR_API_KEY
Header · SDKs da Anthropic
x-api-key: YOUR_API_KEY

Headers aceitos

Os dois headers são lidos em todos os endpoints /v1, qualquer que seja o formato que o endpoint fale. Envie um deles.

Header Descrição
Authorization: Bearer <key> Verificado primeiro. Escreva Bearer com B maiúsculo e um espaço antes da chave. Os SDKs da OpenAI enviam este header.
x-api-key: <key> Lido quando a requisição não tem um header Authorization: Bearer. Os SDKs da Anthropic enviam este header.

Com um SDK da OpenAI, defina a chave e a base URL; o SDK envia Authorization: Bearer.

from openai import OpenAI

client = OpenAI(
    api_key="YOUR_API_KEY",
    base_url="https://api.shannon-ai.com/v1"
)

response = client.chat.completions.create(
    model="shannon-3",
    messages=[
        {"role": "user", "content": "Hello, Shannon!"}
    ]
)

print(response.choices[0].message.content)

Com um SDK da Anthropic, defina a chave e a base URL sem /v1; o SDK envia x-api-key.

import anthropic

client = anthropic.Anthropic(
    api_key="YOUR_API_KEY",
    base_url="https://api.shannon-ai.com"
)

message = client.messages.create(
    model="shannon-3",
    max_tokens=1024,
    messages=[
        {"role": "user", "content": "Hello, Shannon!"}
    ]
)

print("".join(block.text for block in message.content if block.type == "text"))

Quais endpoints exigem uma chave

Endpoint Chave
POST /v1/chat/completions Obrigatória
POST /v1/messages Obrigatória
POST /v1/responses Obrigatória
POST /v1/tokenize Obrigatória
POST /v1/messages/count_tokens Obrigatória
GET /v1/models Não necessária

Sua chave

  • Uma chave é sk- seguido de 43 caracteres entre A–Z, a–z, 0–9, - e _: 46 caracteres no total.
  • Cada conta tem exatamente uma chave. Ela é criada na primeira vez que você abre Chaves e uso.
  • A chave dá acesso total à API para a sua conta: todos os endpoints, todos os modelos e todo o saldo.
  • Uma chave não tem data de expiração. Ela funciona até você rotacioná-la ou revogá-la.

Rotacionar e revogar

Você rotaciona e revoga a chave na página Chaves e uso. Chaves e uso

Ação O que acontece
Rotacionar Uma nova chave é emitida e a chave antiga para de funcionar. A nova chave funciona imediatamente.
Revogar A chave para de funcionar e nenhuma nova chave é emitida. Rotacione para obter uma chave que funcione de novo.
  • Ambas têm efeito imediato: a próxima requisição com a chave antiga é respondida com 401. Considere 60 segundos como o limite máximo até a chave antiga ser recusada em todos os lugares.
  • Todos os clientes da conta usam a mesma chave, então uma rotação atinge todos eles. Coloque a nova chave nos seus clientes logo depois de rotacionar.
  • Saldo, uso e proteção contra flood pertencem à conta, não à chave. Uma nova chave continua com o mesmo saldo e a mesma contagem de requisições do minuto atual.

Erros

Toda falha de autenticação tem status 401 e tipo authentication_error. A mensagem distingue os casos.

Status Tipo Mensagem Quando
401 authentication_error Missing authentication A requisição não tem nem um header Authorization: Bearer nem um header x-api-key que comece com sk-. Esta também é a resposta para bearer em minúsculas e para um valor de Authorization sem Bearer.
401 authentication_error Invalid API key A chave não é a chave atual de uma conta: foi digitada errado, foi revogada ou foi substituída por uma rotação.
{
  "error": {
    "type": "authentication_error",
    "message": "Invalid API key",
    "code": "invalid_api_key",
    "param": null
  }
}
  • Em todos os caminhos, exceto /v1/messages, o objeto error também contém code: "invalid_api_key", inclusive quando a chave está ausente, e param: null.
  • A chave é verificada antes de o corpo ser lido. Uma requisição sem uma chave válida recebe 401 mesmo quando o corpo é inválido ou grande demais.
  • Um valor Authorization: Bearer que não começa com sk- não é tratado como chave de API. Ele recebe 401 com uma mensagem de que o token é inválido ou expirou.

Navegadores e CORS

  • A API responde a requisições de navegador entre origens (cross-origin) apenas para uma lista fixa de origens. O JavaScript de uma página de outra origem não consegue ler respostas de /v1.
  • Chame a API a partir do seu servidor e deixe sua página falar com o seu servidor. Isso também mantém a chave fora do código-fonte da página.
  • Código do lado do servidor e ferramentas de linha de comando não são afetados: esta regra é aplicada apenas pelos navegadores.
  • Um login em shannon-ai.com não autentica requisições /v1. Os cookies não são lidos ali; a chave é a única credencial.
  • Para uma origem permitida, um navegador pode enviar content-type, authorization, x-api-key, anthropic-version, anthropic-beta, openai-beta e x-request-id, e pode ler o header de resposta x-request-id.

Como manter a chave segura

  • Mantenha a chave em um servidor. Não a coloque em páginas web, apps móveis ou repositórios públicos: quem a tiver pode gastar todo o seu saldo.
  • Carregue a chave de uma variável de ambiente ou de um cofre de segredos em vez de escrevê-la no código.
  • Se a chave pode ter vazado, rotacione-a em Chaves e uso. A chave antiga para de funcionar imediatamente.
  • Depois de um vazamento, consulte a lista de requisições em Chaves e uso. Ela mostra todas as requisições que a chave fez nos últimos 30 dias.