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"
  }
}
CampoO que significa
codeCategoria do erro. Sai do status HTTP.
messageTexto que explica o caso. Use para diferenciar erros com o mesmo code.
request_idId ú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

codeStatusQuando acontecePode repetir?
invalid_request400Corpo, 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.
unauthorized401A autenticação falhou. Veja Erros comuns a todas as rotas.Uma vez, com um token novo.
forbidden403IP 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_found404O 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.
conflict409O 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_exceeded429Você passou do limite de requisições.Sim, depois do tempo do header Retry-After.
sandbox_unavailable502Só 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_unavailable503O 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_error500 ou maiorErro 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.

StatuscodeQuandoO que fazer
400invalid_requestCampo 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.
400invalid_requestTexto 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.
400invalid_requestNú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.
400invalid_requestcustomer.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.
400invalid_requestholder_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.
400invalid_requestcustomer.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.
400invalid_requestHeader Idempotency-Key é obrigatório ou Header Idempotency-Key excede 255 caracteres.Envie um UUID no header. Veja Idempotência.
401unauthorizedToken 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.
403forbiddenIP não autorizado para esta credencial.Autorize o IP na credencial. Veja Restrição por IP.
409conflictUma requisição com este Idempotency-Key já está em processamento.Espere alguns segundos e repita com a mesma chave.
429rate_limit_exceededLimite de requisições excedido. Aguarde e tente novamente.Espere os segundos de Retry-After e repita. Veja Limites de requisição.
500internal_errorErro 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.
502sandbox_unavailableSó 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.
503service_unavailableServiç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_id chega null, e a resposta não traz o header X-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_id do corpo do erro;
  • no header X-Request-Id de toda resposta da API, inclusive as de sucesso. A única exceção é o 502 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.

Próximos passos