Erros
Leia o formato de erro da API, decida o que pode ser repetido e informe o request_id ao suporte.
Formato do erro
Todo erro da API tem o mesmo formato:
{
"error": {
"code": "conflict",
"message": "Oferta inativa",
"request_id": "3f6c1a52-8e1d-4c0b-9a7e-2d5b6c7e8f90"
}
}| Campo | O que significa |
|---|---|
code | Categoria do erro. Sai do status HTTP. |
message | Texto que explica o caso. Use para diferenciar erros com o mesmo code. |
request_id | Id único da requisição. Informe ao suporte. |
O code não diz o caso exato
Dois erros diferentes com o mesmo status têm o mesmo code. Exemplo: "Oferta inativa" e "Oferta expirada" são os dois 409 conflict. Leia message para saber qual aconteceu.
Códigos
code | Status | Quando acontece | Pode repetir? |
|---|---|---|---|
invalid_request | 400 | Corpo, parâmetro ou header inválido. Regra de negócio, como parcelas acima do limite da oferta. | Não. Corrija a requisição: repetir igual dá o mesmo erro. |
unauthorized | 401 | A autenticação falhou. Veja Erros comuns a todas as rotas. | Uma vez, com um token novo. |
forbidden | 403 | IP não autorizado na credencial, ou uma regra da conta impede a operação: produto que não permite troca de plano, ou oferta que não está marcada como selecionável pelo cliente. | Não. Corrija a causa. Veja Trocar de plano. |
not_found | 404 | O recurso não existe na sua conta: produto, oferta, venda, assinatura ou cliente. Ou a rota não existe na API. | Não. Confira o id ou o código enviado. Se a mensagem for de rota, veja Rota inexistente. |
conflict | 409 | O estado do recurso impede a operação: oferta inativa ou expirada, meio de pagamento desligado na oferta, ou requisição com a mesma Idempotency-Key ainda em processamento. | Só o da Idempotency-Key: espere alguns segundos e repita com a mesma chave. Nos outros, ajuste a oferta antes. |
rate_limit_exceeded | 429 | Você passou do limite de requisições. | Sim, depois do tempo do header Retry-After. |
sandbox_unavailable | 502 | Só com a chave de Homologação ou o token dela: o ambiente de testes está fora do ar ou não respondeu em 30 segundos. | Sim, depois de alguns segundos. Veja Ambiente de testes indisponível. |
service_unavailable | 503 | O controle de limite está fora do ar numa rota que movimenta dinheiro. A requisição não foi processada. | Sim, depois de alguns segundos. Nas rotas com Idempotency-Key, use a mesma chave. |
internal_error | 500 ou maior | Erro inesperado na API. | Com cuidado. Numa rota de cobrança, procure a venda antes. |
Qualquer GET pode ser repetido igual.
O code é escolhido só pelo status HTTP, com uma exceção: o 502 sandbox_unavailable. Um status 422 vira unprocessable_entity, e qualquer outro status 4xx sem nome na tabela vira error.
Erros comuns a todas as rotas
Estes erros podem aparecer em qualquer rota que recebe os dados ou o header citados. Os erros próprios de cada fluxo ficam na página da jornada.
| Status | code | Quando | O que fazer |
|---|---|---|---|
| 400 | invalid_request | Campo obrigatório ausente. message: O campo <campo> é obrigatório, como O campo customer.email é obrigatório. | Envie o campo indicado. A mensagem mostra um campo por vez. |
| 400 | invalid_request | Texto menor ou maior que o permitido. message: O campo <campo> deve ter no mínimo 7 caracteres ou O campo <campo> deve ter no máximo 20 caracteres. Os números 7 e 20 aparecem qualquer que seja o limite real. Exemplo: credit_card.cvv, que aceita 3 ou 4 caracteres, responde com essas mensagens. | Confira o limite do campo na Referência da API, não na mensagem. |
| 400 | invalid_request | Número fora do limite (como per_page acima de 100), URL ou IP inválido, data em formato errado. message vazia. | Confira o campo na Referência da API. |
| 400 | invalid_request | customer.document fora do formato. message: Documento inválido: envie o CPF com 11 dígitos ou o CNPJ com 14 dígitos, com ou sem pontuação. | Veja Documento e telefone. |
| 400 | invalid_request | holder_document fora do formato. message: Documento do titular do cartão inválido: envie o CPF com 11 dígitos ou o CNPJ com 14 dígitos, com ou sem pontuação. | Veja Documento e telefone. |
| 400 | invalid_request | customer.phone fora do formato. message: Telefone inválido: envie o DDD e o número, com 10 ou 11 dígitos (12 ou 13 com o código do país 55), com ou sem pontuação. | Veja Documento e telefone. |
| 400 | invalid_request | Header Idempotency-Key é obrigatório ou Header Idempotency-Key excede 255 caracteres. | Envie um UUID no header. Veja Idempotência. |
| 401 | unauthorized | Token ausente, fora do formato Bearer <token>, expirado ou inválido. Credencial revogada ou expirada. Em POST /auth/token, chave ausente ou inválida. | Peça um token novo e repita uma vez, como em Renove o token no 401. Se continuar, leia a message em Respostas de erro de autenticação. |
| 403 | forbidden | IP não autorizado para esta credencial. | Autorize o IP na credencial. Veja Restrição por IP. |
| 409 | conflict | Uma requisição com este Idempotency-Key já está em processamento. | Espere alguns segundos e repita com a mesma chave. |
| 429 | rate_limit_exceeded | Limite de requisições excedido. Aguarde e tente novamente. | Espere os segundos de Retry-After e repita. Veja Limites de requisição. |
| 500 | internal_error | Erro interno. Tente novamente ou contate o suporte informando o request_id. A mensagem é sempre essa em erro 500 ou maior, fora o 502 sandbox_unavailable. | Guarde o request_id. Numa rota de cobrança, procure a venda antes de repetir. Se o erro continuar, fale com o suporte. |
| 502 | sandbox_unavailable | Só com a chave de Homologação ou o token dela: o ambiente de testes está fora do ar ou não respondeu em 30 segundos. | Veja Ambiente de testes indisponível. |
| 503 | service_unavailable | Serviço temporariamente indisponível. Tente novamente em instantes. Só nas rotas que movimentam dinheiro. | Espere alguns segundos e repita. Nas rotas com Idempotency-Key, use a mesma chave. |
Erros de validação
Quando o corpo ou os parâmetros estão errados, a resposta é 400 invalid_request com uma mensagem. Exemplo, ao enviar offer_identifier e offer juntos:
{
"error": {
"code": "invalid_request",
"message": "Envie offer_identifier ou offer, nunca os dois",
"request_id": "9b2e7c14-3a5d-4f60-8e1b-7c9d0a2b3c4d"
}
}A mensagem mostra um problema por vez. Corrija, envie de novo e veja se aparece outro. As mensagens genéricas, inclusive as vazias, estão em Erros comuns a todas as rotas.
Rota inexistente
Quando o método e o caminho não correspondem a nenhuma rota da API, a resposta é 404 not_found:
{
"error": {
"code": "not_found",
"message": "Rota não encontrada na API pública.",
"request_id": "5d8e2a61-4b3c-4f7d-9e0a-1c2b3d4e5f60"
}
}Confira o método e o caminho, e se a URL começa com a URL base https://api.pagpolar.com/v1, sem repetir o /v1. As rotas existentes estão na Referência da API.
O token é conferido antes da rota. Sem token válido, a resposta é 401 unauthorized, mesmo numa rota que não existe. Com IP fora da lista autorizada, é 403 forbidden.
Ambiente de testes indisponível
Quando o ambiente de testes está fora do ar ou demora mais de 30 segundos para responder, as chamadas feitas com a chave de Homologação, ou com o token dela, recebem 502:
{
"error": {
"code": "sandbox_unavailable",
"message": "Ambiente de testes indisponível no momento. Tente novamente em instantes.",
"request_id": null
}
}request_idcheganull, e a resposta não traz o headerX-Request-Id.- As chaves de Produção não são afetadas.
- Quando o ambiente de testes responde, o status e o corpo da resposta dele chegam sem mudança. Os erros seguem o mesmo formato desta página.
Espere alguns segundos e repita. Se o erro veio depois de 30 segundos numa rota de cobrança, a venda de teste pode ter sido criada: procure a venda antes de repetir.
Onde encontrar o request_id
O mesmo valor aparece em dois lugares:
- no campo
error.request_iddo corpo do erro; - no header
X-Request-Idde toda resposta da API, inclusive as de sucesso. A única exceção é o502 sandbox_unavailable.
Grave o X-Request-Id nos logs do seu sistema. No painel, o Histórico de requisições da credencial mostra o mesmo valor em ID da requisição. Veja Credenciais.