Códigos de erro
Todo erro da API chega com o status HTTP e um corpo com dois campos:
{"error": "your trial covers up to 2 apps on GoShip's cluster; add a card to run more, billed from now", "code": "trial_allowance_exceeded"}codeé o motivo, estável e legível por máquina. É nele que um script, o CLI ou um agente decide o que fazer.erroré a mensagem pra pessoas. O texto pode mudar a qualquer momento: não compare com ele.
Um código publicado aqui nunca é removido nem renomeado. Quando deixa de ser usado, ele é marcado como obsoleto e continua existindo. Uma falha que responde com um código continua respondendo com ele; códigos novos podem aparecer para falhas novas.
Status 5xx e 429 podem ser tentados de novo depois de um tempo. Status 4xx não: o pedido precisa mudar antes.
Alguns corpos trazem campos a mais, sempre junto do code:
card_declinedtrazdecline_code, o motivo que o banco informou (por exemploinsufficient_funds).in_uselista o que bloqueia o pedido (veja Referência → Erros).route_movedtrazsuccessor, o caminho novo.
No stream de eventos de deploy, rollback e comandos, a linha result de uma falha também traz o code.
O CLI mostra o código numa linha Code: logo depois do Error:. As ferramentas MCP terminam o texto de uma falha com a linha code: <código>.
Todos os códigos
| Código | Status | Descrição | O que fazer |
|---|---|---|---|
account_suspended | 402 | A cobrança da conta está suspensa: o trial acabou sem cartão ou o cartão foi recusado. | Adicione ou atualize um cartão em cobrança para retomar. |
already_exists | 409 | Já existe um recurso com esse nome. | Escolha outro nome. |
already_invited | 409 | Já existe um convite pendente para esse e-mail. | Reenvie o convite existente. |
already_member | 409 | A pessoa já é membro da organização. | |
api_token_not_allowed | 403 | Esse endpoint não aceita tokens de API. | Entre com sua conta em vez de usar um token. |
browser_login_required | 401 | Esse login só pode ser concluído no navegador (MFA, SSO obrigatório ou e-mail a verificar). | Entre com goship login, que abre o navegador. |
card_declined | 402 | O banco recusou o cartão; decline_code traz o motivo informado pelo banco. | Use outro cartão ou fale com o banco. |
command_failed | 422 | O comando rodou e terminou com erro. | |
conflict | 409 | O pedido conflita com o estado atual do recurso. | Leia a mensagem em error, ajuste e tente de novo. |
database_not_found | 404 | O banco de dados não existe mais no servidor. | |
database_paused | 409 | O banco de dados está pausado. | Retome o banco antes. |
database_user_not_found | 404 | O usuário do banco de dados não existe mais. | |
deploy_failed | 422 | O build ou o release falhou; a mensagem traz o motivo. | Corrija o código ou a configuração e faça o deploy de novo. |
email_mismatch | 403 | O convite é para outro e-mail. | Entre com o e-mail que recebeu o convite. |
email_not_verified | 403 | O e-mail da conta ainda não foi verificado. | Abra o link de verificação enviado por e-mail. |
extension_in_use | 409 | A extensão ainda é usada por tabelas do banco. | Remova essas tabelas antes. |
extension_unavailable | 409 | A extensão não está disponível nesse servidor. | |
forbidden | 403 | A credencial não tem permissão para essa ação nesse recurso. | Peça acesso a um administrador da organização. |
identity_conflict | 409 | Esse e-mail já está ligado a outra forma de login. | Fale com support@goship.sh. |
in_use | 409 | O recurso ainda está em uso; o corpo lista o que o bloqueia. | Remova ou mova o que está listado e tente de novo. |
internal | 500 | Erro inesperado no GoShip. | Tente de novo; se persistir, fale com o suporte. |
invalid_credentials | 401 | E-mail ou senha incorretos. | |
invalid_request | 400 | O pedido tem um parâmetro ausente, inválido ou um corpo que não pôde ser lido. | Corrija o pedido conforme a mensagem em error. |
invalid_role | 400 | O papel informado não existe. | Use um dos papéis listados na referência da API. |
invite_already_redeemed | 403 | O convite já foi aceito. | |
invite_expired | 403 | O convite expirou. | Peça um novo convite. |
invite_invalid | 403 | O convite é inválido, expirou ou é para outro e-mail. | Peça um novo convite. |
invite_required | 403 | O cadastro exige um convite. | |
invite_revoked | 403 | O convite foi cancelado. | |
last_owner | 409 | O dono não pode ser removido, rebaixado nem sair. | Transfira a propriedade antes. |
method_not_allowed | 405 | O caminho existe, mas não aceita esse método HTTP. | Use um dos métodos listados no cabeçalho Allow. |
not_configured | 501 | Esse provedor de login não está configurado. | |
not_found | 404 | O recurso não existe ou não é visível para essa credencial. | |
payload_too_large | 413 | O corpo do pedido passa do tamanho aceito. | Diminua o arquivo enviado. |
payment_failed | 402 | O pagamento não foi concluído: o cartão precisa de autenticação ou o primeiro pagamento ficou pendente. | Atualize o cartão em cobrança. |
payment_method_required | 402 | Não há cartão cadastrado para cobrar esse recurso. | Adicione um cartão em cobrança. |
platform_error | 502 | A plataforma por baixo falhou; a mensagem diz a etapa. | Tente de novo em um minuto. |
private_apps_unsupported | 409 | Apps privados não estão disponíveis aqui. | |
rate_limited | 429 | Pedidos demais em pouco tempo. | Espere um pouco e tente de novo. |
reconnect_required | 409 | A conta de nuvem precisa ser reconectada para conceder uma permissão nova. | Reconecte a conta de nuvem. |
route_moved | 410 | O caminho saiu do ar; successor traz o caminho novo. | Use o caminho em successor. |
router_update_failed | 502 | O roteamento do app não pôde ser atualizado. | Tente de novo em um minuto. |
signup_disabled | 403 | Novos cadastros estão desativados. | |
tier_limit_exceeded | 402 | O plano da organização não comporta mais esse recurso. | Mude de plano ou remova um recurso. |
trial_allowance_exceeded | 402 | O trial não cobre esse recurso, tamanho ou quantidade. | Adicione um cartão; a cobrança começa a partir de agora. |
trial_required | 402 | Essa ação exige um trial ativo. | |
unauthenticated | 401 | O pedido não tem credencial válida, ou a sessão expirou. | Entre de novo com goship login ou envie um token válido. |
unavailable | 503 | O serviço necessário está indisponível no momento. | Tente de novo mais tarde. |
upgrade_required | 426 | Essa versão do goship é antiga demais para a API. | Atualize o goship. |