A API usa o status HTTP e um corpo JSON para explicar cada falha. Leia os dois antes de repetir a chamada.
{
"error": true,
"message": "Token de autenticação não fornecido",
"code": "MISSING_TOKEN"
}| Status | Significado | Próxima ação |
|---|---|---|
400 | A chamada tem parâmetros inválidos ou excede uma regra do plano | Leia code e corrija a chamada |
401 | O token está ausente ou inválido | Envie um token ativo no header Authorization |
403 | O plano não libera o recurso | Remova o recurso ou use um plano compatível |
404 | A rota ou o recurso não existe | Confira a URL e o identificador |
429 | A cota ou a simultaneidade chegou ao limite | Espere Retry-After antes de repetir |
500 | A API falhou ao processar a chamada | Repita com atraso e registre o código |
503 | Um dado necessário está indisponível | Repita com atraso crescente |
O status 400 indica que a API entendeu a chamada, mas não pode executá-la.
O campo code informa a regra que falhou.
Os códigos mais comuns são:
BAD_REQUEST: a chamada tem um formato inválido.VALIDATION_ERROR: um parâmetro não passou pela validação.QUOTES_PER_REQUEST_EXCEEDED: a chamada pediu ativos demais.INVALID_RANGE: o período não está disponível no plano.INVALID_INTERVAL: o intervalo não está disponível no plano.Não repita a mesma chamada. Corrija o parâmetro indicado na mensagem.
Use o OpenAPI para conferir nomes, formatos e valores aceitos.
O status 401 indica um problema de autenticação.
MISSING_TOKEN significa que a chamada não enviou um token. INVALID_TOKEN
significa que a API não aceitou o token enviado.
Envie o token no header:
curl "https://brapi.dev/api/v2/stocks/quote?symbols=PETR4" \
-H "Authorization: Bearer SEU_TOKEN"Confira estes pontos:
Bearer .PETR4, MGLU3, VALE3 e ITUB4 funcionam no sandbox sem token.
Leia também Autenticação e tokens.
O status 403 indica que a autenticação funcionou, mas o plano não libera o
recurso pedido.
O código pode ser FEATURE_NOT_AVAILABLE, MODULES_NOT_AVAILABLE ou outro
código específico da regra. A resposta pode incluir details com o limite
atual e a opção necessária.
Remova o módulo ou o dado bloqueado. Você também pode comparar os limites dos planos.
Não gere outro token. Um novo token da mesma conta mantém o mesmo plano.
O status 404 indica que a rota ou o recurso pedido não existe. A resposta usa
o código NOT_FOUND.
Confira o domínio, a versão, o caminho e o identificador. Use /api/v2/... nas
novas integrações.
Consulte a lista atual de rotas no OpenAPI.
Alguns endpoints retornam HTTP 200 com results e errors. Isso permite que
uma chamada em lote entregue os itens válidos. Leia os dois campos.
O status 429 indica que a chamada atingiu a cota mensal, a simultaneidade ou
o limite do sandbox.
Leia estes headers:
| Header | Uso |
|---|---|
RateLimit-Limit | Cota da janela atual |
RateLimit-Remaining | Requisições restantes |
RateLimit-Reset | Fim da janela atual |
Retry-After | Segundos mínimos antes da próxima tentativa |
X-Brapi-Concurrency-Limit | Máximo de chamadas simultâneas |
Se X-Brapi-Concurrency-Limit estiver presente, reduza o número de chamadas
paralelas. Aguarde o valor de Retry-After antes de tentar novamente.
const response = await fetch(url, { headers });
if (response.status === 429) {
const retryAfter = Number(response.headers.get('Retry-After') ?? '60');
await new Promise((resolve) => setTimeout(resolve, retryAfter * 1_000));
}Não use um loop sem espera. Isso aumenta a fila e atrasa a recuperação.
Os status 500 e 503 indicam uma falha temporária no processamento ou na
obtenção de um dado necessário.
Use estas regras:
code, rota e horário.Não registre o token. Remova dados pessoais antes de enviar um relato.
Se a falha continuar, consulte o status do serviço e envie o contexto pelo contato.
| Situação | Repetir? |
|---|---|
400, 401, 403 ou 404 | Não, até corrigir a causa |
429 | Sim, após Retry-After |
500 ou 503 | Sim, com atraso crescente e limite de tentativas |
| Falha de rede ou timeout | Sim, se a operação for segura para repetição |
Chamadas de leitura podem ser repetidas. Para qualquer operação de escrita, confirme a política do endpoint antes de repetir.
Envie estas informações:
code;Nunca envie o token, cookies ou dados pessoais.