> ## Documentation Index
> Fetch the complete documentation index at: https://novita.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Chaves de API

Uma chave de API autentica suas solicitações à Novita AI. Esta página aborda como as chaves funcionam, como criar e armazenar uma, e como mantê-la funcionando em seus ambientes.

Use esta página para:

* Autenticar solicitações à Novita AI com uma chave de API Bearer.
* Criar uma chave de API no console e armazená-la com segurança.
* Configurar sua chave como uma variável de ambiente no Linux, macOS e Windows.
* Entender por quanto tempo uma chave permanece válida e o que a OpenAPI cobre e não cobre.

## Autenticação

A Novita AI autentica o acesso à API usando autenticação Bearer. Envie sua chave de API no `Authorization` cabeçalho da requisição:

```
Authorization: Bearer <API Key>
```

Uma solicitação de exemplo:

```bash theme={"system"}
curl "https://api.novita.ai/openai/v1/chat/completions" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $NOVITA_API_KEY" \
  -d '{
    "model": "deepseek/deepseek-r1",
    "messages": [{"role": "user", "content": "Hello"}]
  }'
```

## Crie uma chave de API

<Steps>
  <Step title="Abra o Gerenciamento de chaves">
    Acesse [Gerenciamento de chaves](https://novita.ai/settings/key-management?utm_source=getstarted) no console.
  </Step>

  <Step title="Criar uma nova chave">
    Selecione **Criar chave de API** e dê à chave um nome que reflita seu propósito, como `production` ou `local-testing`.
  </Step>

  <Step title="Copie e armazene a chave">
    A chave completa é mostrada apenas uma vez, na criação. Copie-a imediatamente e armazene-a em um local seguro, como um gerenciador de segredos ou uma variável de ambiente. Se você perdê-la, não poderá recuperá-la — crie uma nova chave.
  </Step>
</Steps>

<Note>
  Opcionalmente, você pode limitar quais modelos uma chave tem permissão para chamar. Consulte [Acesso a modelos para chaves de API](/docs/pt-BR/guides/llm-model-access).
</Note>

## Formato e validade da chave

* Toda chave começa com o `sk_` prefixo.
* Uma chave é mostrada por completo apenas uma vez, na criação. Depois disso, o console exibe uma forma mascarada.
* Uma chave permanece válida indefinidamente após ser criada. Ela continua funcionando até você excluí-la no console.
* Cada conta pode criar até **10** chaves de API.

## O que a OpenAPI cobre

Você cria e exclui chaves de API apenas no console. A Novita OpenAPI não inclui endpoints para criar ou excluir chaves.

Os endpoints da OpenAPI relacionados a chaves cobrem a listagem de chaves e o gerenciamento da política de acesso a modelos de uma chave:

* [Listar chaves de API](/docs/pt-BR/api-reference/key-list-with-model-access) — liste as chaves na sua equipe, com um resumo opcional de acesso a modelos.
* [Obter política de acesso a modelos da chave de API](/docs/pt-BR/api-reference/key-get-model-access-policy) — ler a política de acesso a modelos de uma única chave.
* [Definir política de acesso a modelos da chave de API](/docs/pt-BR/api-reference/key-put-model-access-policy) — defina ou atualize a política de acesso a modelos de uma chave.
* [Redefinir Política de Acesso a Modelos da Chave de API](/docs/pt-BR/api-reference/key-delete-model-access-policy) — redefine a política de acesso a modelos de uma chave para o padrão. Isso redefine apenas a política; não exclui a chave em si.

## Armazene sua chave como uma variável de ambiente

Inserir uma chave diretamente no código-fonte traz o risco de vazá-la, por exemplo, quando você faz commit do arquivo. Ler a chave de uma variável de ambiente, como `NOVITA_API_KEY` mantém isso fora do seu código.

### Temporário vs. permanente

Um conjunto de chaves com `export` (Linux/macOS) ou `set` (Windows) dura apenas pela sessão atual do terminal e desaparece quando você a fecha. Isso é suficiente para um teste rápido. Para manter a chave entre sessões, defina-a permanentemente conforme mostrado abaixo e, em seguida, abra um novo terminal para que a alteração entre em vigor.

<CodeGroup>
  ```bash Linux theme={"system"}
  # Temporary: current session only
  export NOVITA_API_KEY="<Your API Key>"

  # Permanent: append to your shell profile, then reload
  echo 'export NOVITA_API_KEY="<Your API Key>"' >> ~/.bashrc
  source ~/.bashrc
  ```

  ```bash macOS theme={"system"}
  # Temporary: current session only
  export NOVITA_API_KEY="<Your API Key>"

  # Permanent: append to your shell profile, then reload
  # Newer macOS uses zsh (~/.zshrc); older setups use bash (~/.bash_profile)
  echo 'export NOVITA_API_KEY="<Your API Key>"' >> ~/.zshrc
  source ~/.zshrc
  ```

  ```powershell Windows theme={"system"}
  # Temporary: current PowerShell session only
  $env:NOVITA_API_KEY = "<Your API Key>"

  # Permanent: persist for the current user, then open a new terminal
  setx NOVITA_API_KEY "<Your API Key>"
  ```
</CodeGroup>

Leia a chave de volta no seu código a partir do ambiente:

<CodeGroup>
  ```python Python theme={"system"}
  import os
  from openai import OpenAI

  client = OpenAI(
      base_url="https://api.novita.ai/openai",
      api_key=os.environ.get("NOVITA_API_KEY"),
  )
  ```

  ```javascript Node.js theme={"system"}
  import OpenAI from "openai";

  const client = new OpenAI({
    baseURL: "https://api.novita.ai/openai",
    apiKey: process.env.NOVITA_API_KEY,
  });
  ```
</CodeGroup>

### A variável está definida, mas o código ainda não consegue encontrá-la

<AccordionGroup>
  <Accordion title="Você a definiu temporariamente e abriu um novo terminal">
    Uma chave definida com `export` ou `$env:` fica disponível apenas na sessão de terminal em que você a executou. Um novo terminal, ou uma nova aba, não a herda. Defina a chave permanentemente (`>> ~/.zshrc`, `setx`), ou execute novamente o `export`/`$env:` linha na sessão que você está usando.
  </Accordion>

  <Accordion title="Você definiu isso permanentemente, mas não reiniciou">
    Uma alteração permanente (perfil do shell, `setx`) se aplica a terminais iniciados após a alteração. Abra um novo terminal e reinicie sua IDE ou editor para que ele detecte o novo ambiente. No Windows, `setx` não afeta terminais que já estão abertos.
  </Accordion>

  <Accordion title="Um gerenciador de serviços não herda o ambiente do seu shell">
    Processos iniciados por `systemd`, `supervisor`, Docker, ou um executor de CI não leem o perfil do seu shell interativo. Defina a variável na configuração do próprio serviço (por exemplo, uma `systemd` da unidade `Environment=`, um `docker run -e` flag, ou os segredos do projeto de CI), não em `~/.bashrc`.
  </Accordion>

  <Accordion title="Você executou o comando com sudo">
    `sudo` não repassa seu ambiente por padrão, então a variável que você exportou como seu usuário não fica visível para o processo elevado. Use `sudo -E` para preservar o ambiente, ou defina a variável dentro do contexto elevado.
  </Accordion>
</AccordionGroup>

## Relacionados

* [Acesso a modelos para chaves de API](/docs/pt-BR/guides/llm-model-access) — restrinja quais modelos uma chave pode chamar.
* [Códigos de Erro Comuns](/docs/pt-BR/guides/error) — resolver `401` e `403` respostas relacionadas a chaves.
* [Limites de taxa](/docs/pt-BR/guides/llm-rate-limits) — limites de solicitações e de tokens que se aplicam à sua conta.
