N-Ways
Documentação para programadoresErros

Erros

O que significa cada erro e o que fazer. Cada erro tem um estado HTTP, um código estável com que o seu código pode agir e uma mensagem para as pessoas.

Nesta página

Como são os erros

Os erros respondem com um código HTTP e o mesmo envelope JSON, quer sejam erros de chave, de quota ou próprios de uma API. reason é estável: o seu programa pode confiar nele. message destina-se às pessoas: diz exatamente o que aconteceu e como resolver, e pode ser reformulado. details contém o ErrorInfo da Google (o motivo e, em metadata, os factos que o explicam e a ligação docs) e uma ligação Help para a entrada do motivo nesta página.

400 Bad Request
{
  "error": {
    "code": 400,
    "status": "INVALID_ARGUMENT",
    "reason": "TOO_MANY_INTERMEDIATES",
    "message": "A route has up to 25 intermediates.",
    "details": [
      { "@type": "type.googleapis.com/google.rpc.ErrorInfo", "reason": "TOO_MANY_INTERMEDIATES", "domain": "nways.ng",
        "metadata": { "docs": "https://nways.ng/developers/errors#api-reasons" } },
      { "@type": "type.googleapis.com/google.rpc.Help",
        "links": [{ "description": "TOO_MANY_INTERMEDIATES: what it means and how to fix it", "url": "https://nways.ng/developers/errors#api-reasons" }] }
    ]
  }
}

Cada resposta tem também um cabeçalho X-Request-Id: junte-o a qualquer pergunta enviada à assistência. Confie no código e no motivo, nunca nas palavras da mensagem.

Nota:

Os endereços antigos (/v1/…) devolvem os erros próprios das API numa forma mais antiga, { "error": "message", "code": "no_route" }, e os erros de chave e de plataforma no envelope acima. Os SDK e as bibliotecas cliente leem ambos.

Códigos HTTP

CódigoSignificadoO que fazer
200Feito.
202Em preparação: um pacote offline a ser criado.Peça de novo após Retry-After segundos.
400Falta um parâmetro ou campo, ou está incorreto.Corrija o pedido. Não o reenvie tal como está.
401Sem chave, uma chave que o N-Ways nunca emitiu, ou uma chave eliminada ou regenerada.O motivo e a mensagem dizem qual. Envie a chave mostrada na consola.
402As chamadas gratuitas do mês esgotaram-se e já não há crédito (BILLING_DISABLED).Adicione crédito na consola e tente de novo.
403A chave não tem permissão para isso: a sua organização, o seu projeto ou a própria chave está desligado, ou a chamada sai das suas restrições.Veja o motivo, abaixo.
404Não encontrado: um código postal, lugar ou endereço desconhecido.Não vale a pena repetir.
422Compreendido, mas impossível: não há percurso entre os pontos.Altere o pedido, ou avise a pessoa.
429Demasiados pedidos, ou uma quota esgotada.Espere o tempo indicado em Retry-After e tente de novo.
503A plataforma está desligada de momento (PLATFORM_DISABLED: a sua chave é válida), ou um problema do nosso lado.Espere o tempo indicado em Retry-After, ou tente de novo espaçando as tentativas.
500, 502Um problema do nosso lado.Tente de novo espaçando as tentativas: após 1, 2, 4, 8 segundos, e depois desista.

Erros de chave, de plataforma, de quota e de faturação

Quando uma chamada é recusada, a resposta diz exatamente porquê e como resolver. O N-Ways verifica, por esta ordem: a plataforma (ligada), a chave (fornecida, emitida e não revogada), a sua organização e o seu projeto (nem fechados nem suspensos), o estado da chave (não em pausa), as suas restrições (a API, depois o site, a aplicação ou o endereço IP), os seus limites e quotas, e por fim o crédito. O primeiro ponto que falha dá a resposta.

403 Forbidden
{
  "error": {
    "code": 403,
    "status": "PERMISSION_DENIED",
    "reason": "API_KEY_PAUSED",
    "message": "The API key nw_8fK2q… (“Checkout”) is paused, so its calls are refused. Resume it in the console (https://map.nways.ng/console, Keys → the key → Resume); it works again within 30 seconds.",
    "details": [
      {
        "@type": "type.googleapis.com/google.rpc.ErrorInfo",
        "reason": "API_KEY_PAUSED",
        "domain": "nways.ng",
        "metadata": { "docs": "https://nways.ng/developers/errors#api-key-paused", "keyPrefix": "nw_8fK2q" }
      },
      {
        "@type": "type.googleapis.com/google.rpc.Help",
        "links": [{ "description": "API_KEY_PAUSED: what it means and how to fix it", "url": "https://nways.ng/developers/errors#api-key-paused" }]
      }
    ]
  }
}

As mensagens estão em inglês. metadata contém sempre docs, e os factos de que o seu código pode precisar: o que foi visto (seen) e o que é permitido (allowed) para as restrições e as API, o limite atingido (cap) com o seu limit e a sua reposição (resetsAt) para os 429, until e suspendReason para as suspensões, why e revokedAt para as chaves revogadas, keyValid quando a plataforma está desligada. Cada recusa traz também X-Request-Id.

CódigoMotivoSignificado e solução
503PLATFORM_DISABLEDA N-Ways Maps Platform está desligada de momento, para todos. A sua chave é válida (keyValid diz se o N-Ways a conhece): as chamadas voltam a funcionar assim que a plataforma regressar. Espere Retry-After segundos e tente de novo; consulte a página de estado.
401API_KEY_MISSINGO pedido não tem chave. Adicione key= ou o cabeçalho X-NWays-Api-Key.
401API_KEY_INVALIDO N-Ways nunca emitiu esta chave: um erro de escrita, uma chave cortada ou com caracteres a mais (uma chave é nw_ seguido de 32 letras e algarismos). Copie a chave inteira da consola.
401API_KEY_REVOKEDA chave foi eliminada, ou é o valor antigo de uma chave regenerada cujo período de tolerância terminou. A mensagem diz qual e quando. Crie uma nova chave, ou use o novo valor da chave mostrado na consola.
403PLATFORM_PREVIEW_ONLYO N-Ways reservou a plataforma às organizações que convidou, e a sua não é uma delas. A sua chave é válida; para ser convidado, escreva para hello@nways.ng.
403ORGANISATION_CLOSEDA sua organização foi fechada (pelo proprietário ou pelo N-Ways): nenhuma das suas chaves funciona. Crie uma nova organização na consola, ou escreva para hello@nways.ng para a reabrir.
403ORGANISATION_SUSPENDEDO N-Ways suspendeu a sua organização: todas as suas chaves são recusadas. A mensagem indica até quando (hora de Lagos), se houver um fim, e o motivo dado pelo N-Ways, se tiver optado por o partilhar. As chamadas voltam a funcionar sozinhas a essa hora; caso contrário, escreva para hello@nways.ng.
403API_ACCESS_OFFA sua organização gere as entregas no N-Ways (a consola e o N-Ways Business) sem a API: por isso as suas chaves estão desativadas. Para usar também a API, adicione-a na consola, em Faturação: as suas chamadas à API passam então a ser pagas conforme o uso, além do seu plano mensal.
403API_TURNED_OFFO N-Ways desligou as chaves de API da sua organização; o seu acesso e o seu plano não mudam, e a consola e o N-Ways Business continuam a funcionar. A mensagem dá o motivo registado pelo N-Ways. Escreva para hello@nways.ng para as voltar a ligar.
403PROJECT_SUSPENDEDO N-Ways suspendeu o projeto desta chave; os outros projetos da organização continuam a funcionar. A mensagem indica o projeto e dá o motivo. Escreva para hello@nways.ng para o restabelecer.
403API_KEY_PAUSEDA chave está em pausa na consola. Retome-a (Chaves → a chave → Retomar): volta a funcionar em 30 segundos. (Antes de 16 de outubro de 2026, este motivo chamava-se API_KEY_DISABLED.)
403API_KEY_SERVICE_BLOCKEDA chave não pode chamar esta API: a mensagem indica a API e o que a chave, o seu projeto ou o seu plano permitem (service, allowed). Adicione a API às da chave ou do projeto na consola. Se o seu plano não a incluir, escreva-nos para a adicionar.
403API_KEY_HTTP_REFERRER_BLOCKEDA página web não consta das restrições de site da chave, ou o pedido não indicava nenhuma página. A mensagem mostra o site visto e os permitidos. Adicione o endereço dele, ou, se esse site não for seu, alguém copiou a sua chave.
403API_KEY_IP_ADDRESS_BLOCKEDO endereço do servidor não consta das restrições de IP da chave. A mensagem mostra o endereço visto e os permitidos. Adicione o seu endereço público (NAT).
403API_KEY_ANDROID_APP_BLOCKEDO pacote ou o certificado da aplicação Android não é permitido, ou não foi enviado. A mensagem mostra o que foi visto e o que é permitido. Adicione o SHA-1 de carregamento e o do Play.
403API_KEY_IOS_APP_BLOCKEDO bundle ID da aplicação iOS não é permitido, ou não foi enviado. A mensagem mostra o que foi visto e o que é permitido.
429RATE_LIMIT_EXCEEDEDDemasiados pedidos neste minuto: o limite da chave para esta API, ou o da sua organização (todas as chaves em conjunto). A mensagem e cap dizem qual; é reposto no fim do minuto: espere Retry-After segundos.
429QUOTA_EXCEEDEDFoi atingido um limite diário: o da chave para esta API, ou o da sua organização. A mensagem e cap dizem qual, e quando é reposto (meia-noite em Lagos, UTC+1; resetsAt, Retry-After). Aumente o limite da chave na consola, ou espere.
402BILLING_DISABLEDAdicione crédito: as chamadas gratuitas do mês para esta API esgotaram-se e já não há crédito pré-pago. As outras API continuam a funcionar dentro das suas chamadas gratuitas. Adicione crédito na consola (Faturação → Adicionar crédito) e as chamadas recomeçam de imediato.
429TEMPORARILY_BLOCKEDDemasiados pedidos recusados vindos da mesma ligação (uma chave errada ou bloqueada enviada uma e outra vez). Corrija a chave e espere Retry-After segundos.
503BACKEND_ERRORNão foi possível verificar as chaves nesse momento (um problema do nosso lado). Tente de novo espaçando as tentativas.

Desde 16 de outubro de 2026, PARTNER_SUSPENDED passou a ORGANISATION_SUSPENDED, uma organização desativada pelo N-Ways responde ORGANISATION_SUSPENDED e já não PROJECT_SUSPENDED, e as chaves eliminadas ou regeneradas respondem API_KEY_REVOKED e já não API_KEY_INVALID.

As recusas e os pedidos preliminares (preflight) trazem sempre os cabeçalhos CORS da página que faz a chamada, tanto em /maps/v1 como nos endereços antigos (/v1, /tiles, /fonts), para que o seu código (e a nota do SDK Maps no mapa) possa ler o motivo, mesmo quando a plataforma está desligada.

Dica:

Numa página web, um mapa recusado mostra a nota do SDK Maps: a mensagem do N-Ways, com «What to do», que leva ao motivo nesta página. A consola de programador do navegador indica o mesmo, com o código HTTP.

Os motivos de cada API

Cada operação da referência da API lista os seus próprios motivos. Os que vai encontrar com mais frequência:

MotivoCódigoAPISignificado
QUERY_REQUIRED, QUERY_TOO_LONG400Geocodificação, preenchimento automáticoq falta ou ultrapassa 200 caracteres.
POSTCODE_INVALID400Geocodificação, percursosNão é um código postal NIPOST.
POSTCODE_NOT_FOUND_CHECK404GeocodificaçãoUm código postal bem formado que o N-Ways não consegue localizar: confirme-o com o cliente.
GHANAPOST_INVALID, GHANAPOST_UNKNOWN400, 404GeocodificaçãoNão é um endereço GhanaPost GPS; ou é um que o N-Ways não consegue localizar.
FIELDS_REQUIRED, FIELDS_INVALID400LugaresOs detalhes de um lugar exigem fields; ou um nome de campo é desconhecido.
SESSION_INVALID400Preenchimento automáticoO token de sessão não tem de 8 a 64 letras, algarismos, - ou _.
TOO_MANY_INTERMEDIATES400PercursosMais de 25 paragens pelo caminho.
NO_ROUTE, NO_ROAD_ROUTE422PercursosNão há percurso: um ponto está demasiado longe de uma estrada, ou do outro lado da água para um carro ou um okada.
OKADA_BANNED_…, MOTORBIKE_BANNED_…, KEKE_BANNED_…, DANFO_BANNED_…, terminados em _ORIGIN, _DESTINATION, _STOP ou _ROUTE422PercursosA lei proíbe este veículo neste trajeto: a partida, a chegada, uma paragem intermédia ou todos os caminhos possíveis estão numa zona de proibição. A mensagem indica a proibição.
ROUTE_TOO_FAR422PercursosOs lugares estão demasiado afastados para um único percurso deste tipo.
MATRIX_TOO_LARGE, MATRIX_TOO_FAR400Matriz de percursosMais de 50 partidas ou chegadas, ou de 625 pares; ou pontos demasiado afastados.
STOPS_INVALID, VEHICLES_INVALID400Otimização de percursosDe 1 a 50 paragens e de 1 a 5 veículos.
ROUTING_UNAVAILABLE503PercursosO motor de percursos está ocupado ou a reiniciar. Tente de novo.
INVALID_JSON400TodasO corpo do pedido não é JSON válido para este ponto de acesso. A mensagem diz onde.
BODY_TOO_LARGE413TodasO corpo do pedido ultrapassa o tamanho permitido para este ponto de acesso.
NOT_FOUND404TodasEste ponto de acesso não existe: verifique o endereço e o método.
INTERNAL500TodasUm problema do nosso lado. Tente de novo espaçando as tentativas; se persistir, envie-nos o X-Request-Id.
TASK_NOT_FOUND, TASK_ENDED404, 409FrotaEsta entrega não existe; ou já terminou.
DELIVERIES_OFF403FrotaO N-Ways desligou as novas entregas da sua organização (a mensagem diz porquê). As entregas em curso continuam.
CONTRACTORS_OFF403FrotaO envio de entregas aos estafetas N-Ways, o convite ou o recrutamento deles está desligado para a sua organização. Os seus próprios estafetas continuam a poder entregar.
SMART_PRICE_OFF403FrotaAs sugestões de pagamento e o Smart Price estão desligados para a sua organização: envie payMax por sua conta, sem smartPrice.
WEBHOOKS_OFF403FrotaOs webhooks estão desligados para a sua organização: nada é enviado, e adicionar ou testar um ponto de acesso é recusado. Os eventos continuam disponíveis para exportação.
ERP_OFF403FrotaA sincronização ERP (a exportação de eventos) está desligada para a sua organização.
ORGANISATION_SUSPENDED403FrotaO N-Ways suspendeu a sua organização: as novas entregas são recusadas, tal como as suas chaves. As entregas em curso continuam.

Repetir bem

  • Repita apenas os 429 e os 5xx, com esperas crescentes e um pouco de aleatoriedade, para que muitos clientes não repitam todos ao mesmo tempo.
  • Nunca reenvie tal como está um pedido que recebeu um 4xx que não seja 429: vai falhar da mesma forma.
  • Defina um tempo limite: 10 segundos para a geocodificação e os lugares, 20 para os percursos.
  • Guarde em cache o que tem direito a guardar (veja o que pode guardar), para que uma falha curta não pare os seus estafetas.