Erros de API — O que cada código significa e como corrigir
O FastOG retorna códigos de erro legíveis por máquina quando uma requisição falha — uma renderização de imagem OG assinada, ou uma chamada a uma das superfícies administrativas do produto. Toda resposta de erro inclui:
error— o token curto legado. Ainda presente em toda falha para que um cliente mais antigo continue funcionando.code— o mesmo código de erro estável e documentado (tabela abaixo), sob o nome que a API pública usa.message— uma descrição em uma frase do que deu errado.hint— uma descrição curta em linguagem simples do que deu errado e como corrigir.docs_url— um link para esta página, ancorado na seção daquele código.request_id— correlaciona esta falha HTTP a uma linha na tabela Render Logs do dashboard (também retornado no cabeçalho de respostaX-Request-ID). Uma superfície sem nada a correlacionar respondenull, mas a chave está sempre presente.
As superfícies do produto — o admin do Shopify, o WooCommerce Studio, a ponte do Wix e a demo — respondem
com o mesmo envelope para os códigos abaixo, então uma falha significa a mesma coisa onde quer que você a encontre. Uma
superfície de módulo pode manter o status HTTP que sempre retornou para um código (por exemplo, render_failed
responde 503 na exportação de capa e 502 na API pública); o código, a mensagem, a dica e o link da documentação não mudam.
Lendo uma resposta de erro
{
"error": "invalid_signature",
"code": "invalid_signature",
"message": "The signature does not match.",
"hint": "The signature did not match. Re-sign with your HMAC secret after every param change.",
"request_id": "5f2a9c1e-..."
}
Se você receber uma resposta que não entende, o caminho mais rápido é:
- Anote o
code. - Verifique seu construtor de URL — a maioria das falhas são bugs de assinatura, não problemas de conta.
- Confira o código abaixo para identificar a causa exata e a correção.
- No dashboard, abra Render Logs e filtre pelo mesmo
error_code— cada linha mostra os parâmetros solicitados para você reproduzir (e confirmar querequest_idcorresponde).
Assinatura e autenticação
missing_signature
Sua requisição está sem os parâmetros de consulta key e/ou s (assinatura).
Correção: garanta que sua URL inclua tanto key=<api-key> quanto s=<hmac-signature>. Use o SDK ou o passo a passo do /docs/hmac-signature-guide para montá-la.
invalid_signature
O valor de s não correspondeu ao que seu segredo HMAC produz para esta URL.
Correção: a assinatura cobre todos os parâmetros de consulta, exceto s, com as chaves ordenadas. Alterar qualquer parâmetro — incluindo reordenação, diferenças de codificação de URL ou adição de espaços em branco — invalida a assinatura. Reassine após cada alteração. Confirme que seu segredo é o mesmo exibido quando a chave de API foi criada.
invalid_signature_format
O valor de s não é uma string hexadecimal de 64 caracteres.
Correção: a assinatura deve ser o hex bruto do SHA-256 (a-f0-9 em minúsculas). Se você está codificando em base64 ou truncando a saída, use hex simples.
expired_timestamp
O timestamp t que você forneceu tem mais de 5 minutos.
Correção: gere o timestamp novamente a cada vez que montar uma URL. Este código se aplica ao fluxo legado de URL assinada; o fluxo atual HMAC v2 não tem timestamp.
invalid_api_key
A key que você passou não existe.
Correção: copie a chave de API completa do dashboard — é o identificador público que começa com sk_. Ela é pública e segura em URLs; o segredo (nunca em URLs) é o que comprova a posse.
missing_hmac_secret
A chave de API não tem segredo HMAC configurado.
Correção: crie uma nova chave de API no dashboard — o segredo HMAC é gerado e exibido uma única vez na criação.
Parâmetro / entrada
invalid_image_url
Uma prop que contém uma URL (image, brand_logo, logo, avatar, background_image, ...) não é uma URL http(s) pública.
Correção: passe uma URL https://... acessível publicamente. Localhost, IPs privados e caminhos sem host são rejeitados para evitar server-side request forgery.
Assinatura
subscription_required (402)
A requisição chegou à Dynamic API, mas sua conta não tem um plano ativo. O acesso à API é exclusivo para assinantes: o plano é o pré-requisito, e ele traz a mesma cobertura + escada de recursos que os apps FastOG vendem. As renderizações em si não são medidas — não há cota mensal de renderizações nem cobrança por excedente.
Correção: escolha um plano da Dynamic API no dashboard e crie uma chave de API. A resposta inclui um top_up_url apontando para a página de planos.
Serviço de renderização
store_blocked (403)
A renderização da loja associada a esta chave foi pausada pelo FastOG (por exemplo, abuso ou uso descontrolado). As capas já armazenadas em cache na borda podem continuar sendo servidas até expirarem. Entre em contato com o suporte para resolver isso; nada que você altere na requisição vai corrigir isso.
render_unreachable
Não foi possível acessar o serviço de renderização (janela breve de reinício).
Correção: tente novamente em alguns segundos. A renderização não foi contabilizada para esta tentativa.
render_failed
O serviço de renderização retornou um erro para a sua requisição.
Correção: verifique as props do seu template — valores longos/malformados, campos não suportados ou uma imagem upstream inacessível. A resposta inclui o status subjacente. A renderização não foi contabilizada.
Interfaces de administração da loja
Esses códigos respondem a partir do admin do Shopify e do WooCommerce Studio — os editores incorporados em que o lojista
trabalha, em vez da API assinada. Vários são compartilhados com a API pública (invalid_image_url,
render_failed, invalid_signature); esses mantêm a entrada documentada acima.
| Código | HTTP | O que significa e o que fazer |
|---|---|---|
invalid_shop |
422 | Não foi possível identificar a loja Shopify. Recarregue o app FastOG no admin da Shopify para que a requisição embarcada volte a carregar a loja e tente novamente. |
invalid_shop_or_page |
422 | A loja ou o tipo de página é desconhecido. Abra o app FastOG no admin da Shopify e escolha um tipo de página de capa no editor. |
invalid_store |
422 | Não foi possível identificar a loja WooCommerce. Reabra o Studio no admin do WordPress para que o token da loja seja apresentado novamente e tente de novo. |
invalid_store_or_page |
422 | A loja ou o tipo de página é desconhecido. Reabra o Studio no admin do WordPress e escolha um tipo de página de capa oferecido pelo editor. |
missing_api_key |
422 | A loja não tem chave de assinatura. Conclua a instalação do plugin no admin do WordPress para que o FastOG possa emitir a chave de assinatura da loja. |
store_ownership_unverified |
403 | Não foi possível verificar o site WordPress. Ele precisa estar acessível por HTTPS público com a REST API habilitada. |
community_is_free |
422 | O plano Community é gratuito. Ele é o plano padrão gratuito e não pode ser comprado; escolha um nível pago para fazer upgrade. |
not_installed |
404 | O FastOG não está instalado para esta loja. Instale o app FastOG pela Shopify App Store para esta loja e reabra-o. |
oauth_required |
409 | A loja precisa autorizar o FastOG novamente. Execute a instalação OAuth do FastOG outra vez no admin da Shopify; a concessão armazenada foi revogada ou os escopos mudaram. |
reconnect_required |
409 | A conexão com a Shopify precisa ser restabelecida. Use o botão Reconectar no app FastOG para que um novo access token seja emitido. |
token_rejected |
409 | A Shopify emitiu um access token e depois o recusou. Tente a reconexão mais uma vez; se a Shopify continuar recusando, reinstale o app. |
unauthorized |
401 | A requisição não traz uma sessão válida para esta superfície. Recarregue o app FastOG no admin da sua plataforma para que um novo token de sessão seja anexado e tente novamente. |
shop_not_found |
404 | A loja não existe mais no FastOG. Reinstale o FastOG no admin da Shopify para recriar o registro da loja. |
invalid_product |
422 | A referência do produto não é válida. Recarregue a página do produto e reabra o FastOG; o id do produto enviado estava ausente ou não era numérico. |
invalid_product_cover |
422 | O payload da capa do produto está malformado. Recarregue o editor e salve novamente; props, style e signals devem ser cada um um objeto. |
product_not_found |
404 | Não foi possível ler o produto na loja. Verifique se o produto ainda existe e está publicado e recarregue o editor. |
product_customization_not_on_plan |
403 | A personalização de capa por produto não está neste plano. Faça upgrade ou edite a capa de produto compartilhada. |
no_product_handles |
422 | Nenhum produto foi encontrado para atualizar. Publique pelo menos um produto com um handle público e tente novamente a atualização da prévia de compartilhamento. |
invalid_style |
422 | O bloco de estilo não é utilizável. Recarregue o editor e escolha novamente as cores e fontes; um valor não pôde ser normalizado. |
invalid_template |
422 | O template solicitado não está no catálogo desta plataforma. Escolha um dos layouts oferecidos pelo editor. |
invalid_preset |
422 | O nome do preset não é um dos que esta plataforma oferece. Escolha um preset na tela de configuração. |
invalid_set |
422 | O payload do conjunto de capas está ausente ou malformado. Recarregue a tela de configuração e escolha um conjunto novamente. |
preset_not_applyable |
422 | O preset não pode ser aplicado a todos os tipos de página. Escolha outro preset; este não tem capa para pelo menos um tipo de página. |
template_not_available |
422 | O template não está no catálogo renderizável. Escolha um layout oferecido pelo seletor. |
template_not_available_on_shopify |
422 | O template não está disponível em lojas Shopify. Escolha um layout oferecido pelo editor da Shopify. |
template_not_available_on_woocommerce |
422 | O template não está disponível em lojas WooCommerce. Escolha um layout oferecido pelo Studio. |
template_unavailable |
422 | O template não está disponível para esta loja. Escolha um layout oferecido pelo editor; ele foi descontinuado, é desconhecido ou está acima do que a loja pode renderizar. |
template_not_on_plan |
403 | O template exige um plano superior. Mude de plano ou escolha um layout coberto pelo plano atual. A resposta informa o plano em requires. |
template_requires_higher_plan |
403 | O template exige um plano superior. A resposta informa o plano em requires. |
no_rule |
404 | Ainda não há regra de capa para este tipo de página. Salve uma capa para este tipo de página no editor primeiro. |
cover_not_configured |
404 | Nenhuma capa de produto foi salva ainda. Salve uma capa de produto antes de baixá-la ou compartilhá-la. |
schedule_only_product |
422 | O agendamento de campanha só existe para capas de produto. Remova a data de reversão ou mova a campanha para a capa do produto. |
not_dismissible |
422 | Esse anúncio não pode ser dispensado. Recarregue a página; ele já foi retirado ou pertence a outra loja. |
unsupported_locale |
422 | Esse idioma de interface não está incluído neste app. Escolha um dos idiomas listados pela resposta em supported. |
no_setup_sets |
422 | Não foi possível montar nenhum conjunto de capas curado. Tente novamente a tela de configuração; se continuar vazia, entre em contato com o suporte. |
export_unavailable |
403 | Downloads não estão neste plano. Faça upgrade para Pro ou superior para baixar os arquivos de capa. |
cancellation_failed |
502 | O cancelamento da assinatura foi recusado. Tente novamente em instantes; se continuar falhando, cancele pela página de cobrança da Shopify ou entre em contato com o suporte. |
logo_override_on_plan |
403 | A substituição do logo não está neste plano. Faça upgrade ou remova a substituição do logo. |
invalid_logo |
422 | O arquivo de logo não é uma imagem aceita. Envie um PNG, JPEG ou WebP dentro do limite de tamanho mostrado no editor. |
invalid_brand_image |
422 | A imagem de referência da marca não é utilizável. Envie uma imagem suportada dentro do limite de tamanho ou remova a referência e salve novamente. |
brand_image_too_large |
422 | A imagem de referência da marca é grande demais. Reduza o arquivo e envie novamente. |
brand_colors_too_many |
422 | Foram enviadas mais de três cores da marca. Envie no máximo três cores hex. |
upload_failed |
500 | Não foi possível armazenar o arquivo enviado. Tente novamente; se continuar falhando, entre em contato com o suporte — o armazenamento de assets não retornou uma URL pública. |
attachment_upload_failed |
500 | Não foi possível armazenar o anexo do suporte. Envie a mensagem sem o anexo e depois mande o arquivo por e-mail para o suporte. |
invalid_webhook |
401 | A assinatura do webhook da loja não foi verificada. Verifique se o segredo do webhook nas suas configurações do FastOG no WordPress corresponde ao emitido pelo FastOG. |
not_found |
404 | Esse endpoint não existe mais. Reabra o Studio no admin do WordPress. |
meta_refresh_unavailable |
503 | A atualização da prévia de compartilhamento não está configurada. Compartilhe o link novamente pelo Facebook. |
theme_write_disabled |
409 | A edição de tema não está habilitada para este app. Use o app embed do tema em vez da correção por arquivo de tema. |
scope_required |
403 | O FastOG está sem uma permissão da Shopify. Aprove os escopos solicitados usando o consent_url na resposta e tente a correção novamente. |
Ponte do Wix
A ponte do Wix é assinada pelo app do Wix, não por uma sessão de comerciante, portanto as falhas dela são direcionadas ao desenvolvedor do app. Toda resposta ainda carrega code e request_id; o id da requisição da ponte é o do envelope assinado.
| Código | HTTP | O que significa e o que fazer |
|---|---|---|
invalid_bridge_signature |
401 | A assinatura da ponte do Wix não foi verificada. Gere novamente a requisição com o segredo compartilhado, o caminho exato e um timestamp com menos de cinco minutos. |
invalid_bridge_body |
400 | O corpo do envelope da ponte está malformado. Envie body como um objeto JSON e codifique cada número dentro dele como string, para que a assinatura canônica corresponda. |
replayed_bridge_request |
401 | Essa requisição da ponte já foi usada. Gere um novo request_id para cada chamada de mutação. |
wix_site_not_installed |
403 | O FastOG não está instalado neste site do Wix. Instale o app FastOG no site e abra-o novamente. |
wix_site_not_provisioned |
422 | O site do Wix ainda não tem credenciais de assinatura. Reinstale o app FastOG para que o site seja provisionado com uma API key. |
invalid_page_type |
422 | O tipo de página não é um dos que o FastOG cobre no Wix. Envie um dos tipos de página oferecidos pelo Studio. |
rule_not_found |
404 | Não existe regra com esse id. Atualize a lista; a regra foi excluída ou pertence a outro site. |
invalid_target_id |
422 | O id de destino do Wix não é válido para este tipo de página. Envie o id que o app do Wix fornece para esse tipo de página. |
invalid_preview |
422 | O payload de preview está malformado. Leia o objeto details para identificar o campo com falha. |
invalid_rule |
422 | O payload da regra de capa está malformado. Leia o objeto details; template é obrigatório e os blocos opcionais devem ser objetos. |
invalid_sync |
422 | O payload de sincronização está malformado. Leia o objeto details; target_type e target_id devem ser compatíveis. |
invalid_regenerate_url |
422 | A URL a ser regenerada está ausente. Envie a URL da página em url. |
invalid_regenerate_host |
422 | A URL não pertence ao host do FastOG. Envie uma URL de capa do fastog.com. |
ai_presets_unsupported |
422 | Conjuntos de capas criados por IA não são mais gerados. Escolha um dos visuais selecionados. |
original_tags_required |
422 | As tags de metadados originais são obrigatórias. Envie original_tags (ou current_tags) para que uma desinstalação possa restaurar os metadados do site. |
invalid_restored |
422 | O payload de chaves restauradas está malformado. Envie restored como um array de chaves de metadados. |
invalid_seo_target |
422 | O tipo de destino de SEO é desconhecido. Use site, pattern ou item no caminho. |
invalid_seo_payload |
422 | O payload de metadados de SEO está malformado. Envie target_id, current_tags e fastog_url como uma URL http(s) absoluta. |
sync_failed |
500 | A sincronização de metadados com o Wix falhou. Tente novamente; se continuar falhando, verifique se o site está acessível e se o app ainda está instalado. |
invalid_tier |
422 | Esse plano não é um dos que o FastOG vende no Wix. Envie starter, pro ou scale como tier. |
Superfície de demonstração
A demonstração é o console de vendas exclusivo do proprietário, não um endpoint de merchant.
| Código | HTTP | O que significa e o que fazer |
|---|---|---|
url_required |
422 | Nenhuma URL foi enviada. Cole o link da loja ou do produto antes de ler o card. |
unreadable_url |
422 | Não foi possível ler essa página. Verifique se o link é público e completo; uma página atrás de um login não pode ser lida. |
no_api_key |
422 | Nenhuma chave de API está disponível para assinar as capas. Crie uma chave de API (ou insira uma válida); a resposta tem um link para a página de chaves de API. |
no_presets |
500 | Nenhum preset de capa está configurado. Configure pelo menos um preset no servidor. |
Códigos do editor de regras com escopo
Os editores de regras com escopo (Shopify admin e WooCommerce Studio) traduzem esses tokens por conta própria, para o idioma do próprio comerciante, então as respostas deles carregam error e code, mas não hint — uma segunda descrição em inglês só divergiria da versão localizada que o comerciante realmente vê:
scope_already_defined, scoped_rule_limit_reached, scoped_rules_not_on_plan,
scope_value_required, scope_value_too_long, unknown_scope_type, base_rule_required,
scoped_rules_product_only, cannot_delete_base_rule.
Ainda com problemas?
- Abra a página Render Logs do dashboard — cada resultado (sucesso + rejeição) é listado com seu
error_code, status HTTP e os parâmetros solicitados. - Execute
php artisan og:diagnoseem uma URL assinada para percorrer todo o pipeline e ver qual etapa falha. - Consulte a documentação na barra lateral referente ao framework que você está usando (Next.js, Express, SvelteKit, ...).