Produção ou desenvolvimento

A conta tem dois tipos de chave, na mesma tela e para a mesma URL. O que muda é o que a chamada faz:

PontoDesenvolvimentoProdução
Prefixoafd_test_pk_…afd_live_pk_…
O que fazSimula a resposta, no formato real. Nunca cobra.Executa e cobra só resposta 2xx.
dev_modeObrigatório: sem ele, 403.Proibido: com ele, 400.
Limite por minutoO menor entre o da rota e 120.O da rota.

Criar a chave

  1. Abra Chaves de API no painel e escolha o ambiente: Produção ou Desenvolvimento.
  2. Clique em Criar chave.
  3. Dê um nome que diga onde ela vai rodar — checkout-web, erp-noturno. Uma chave por integração.
  4. Escolha o Vínculo: Conta inteira, quando o header X-Project-Id escolhe o projeto em cada chamada, ou Somente o projeto, quando a integração é de um cliente só.
  5. Clique em Criar chave.
Tela de Chaves de API com o formulário de criação aberto, nome e projeto preenchidos
Formulário de criação no painel de teste, com dados fictícios.

Guardar o segredo

O par tem uma chave pública e um segredo. O segredo aparece uma única vez, logo depois de criar: a ApiForDevs guarda só o hash dele, e nem o suporte consegue recuperá-lo.

Tela de Chaves de API após a criação, com chave pública, segredo e botões para copiar
Credencial fictícia no painel de teste. Copie o seu segredo assim que criar a chave.

Fazer a primeira chamada

O par vai em HTTP Basic (chave_pública:segredo) e o projeto no header X-Project-Id. Sem o header, vale o projeto padrão; com a chave vinculada a um projeto, vale o dela. O ping passa por todo o caminho — chave, projeto, cota e saldo — sem executar serviço.

cURL
curl 'https://api.apifordevs.com/api/v1/ping/billable?dev_mode=true&summary=true' \
  -u "afd_test_pk_...:$APIFORDEVS_TEST_SECRET" \
  -H 'X-Project-Id: proj_...'
Python
import os
import requests

response = requests.get(
    "https://api.apifordevs.com/api/v1/ping/billable",
    params={"dev_mode": "true", "summary": "true"},
    auth=("afd_test_pk_...", os.environ["APIFORDEVS_TEST_SECRET"]),
    headers={"X-Project-Id": "proj_..."},
    timeout=30,
)
print(response.status_code, response.json())

Resposta esperada, resumida — em Desenvolvimento, billable é false e o preço é zero:

json
{
  "success": true,
  "code": 200,
  "errors": [],
  "header": {
    "service": "platform/ping",
    "billable": false,
    "dev_mode": true,
    "price": "0.000000",
    "log_id": "01a07159-..."
  },
  "data_count": 1,
  "data": [{"pong": true, "service": "platform/ping", "project": "proj_..."}]
}

Rotacionar e revogar

PontoRotacionarRevogar
QuandoTroca periódica, saída de alguém do time.O segredo vazou.
O que aconteceNasce um par novo, com o mesmo ambiente e restrições. O atual continua valendo por 24 horas.A chave para de autenticar na hora. Não tem volta.
O que fazerTrocar o segredo no servidor dentro das 24 horas.Criar outra chave e trocar no servidor.

Erros comuns

Status · códigoO que aconteceuComo resolver
401 unauthorizedChave pública ou segredo errados, ou o par não foi em Basic.Confira o par e o -u chave:segredo.
403 test_key_cannot_run_liveChave de Desenvolvimento sem dev_mode=true.Envie dev_mode=true ou use a de Produção.
400 live_key_cannot_use_dev_modeChave de Produção com dev_mode=true.Tire o dev_mode.
400 bad_requestA credencial está travada em outro projeto.Mande o projeto da chave ou não mande o header.
403 ip_not_allowedO IP do servidor não está na lista do projeto.Inclua o IP em Projetos.
429 rate_limit_exceededLimite por minuto da chave naquela rota.Espere o tempo indicado e reduza a taxa.

Cada conta tem até 25 chaves ativas por ambiente. Chegou ao teto? Revogue as que não usa.

Respostas rápidas

Não dá: só o hash fica guardado. Rotacione a chave — a atual vale mais 24 horas — e salve o novo segredo.

Próximos passos