Tópico

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 resposta X-Request-ID). Uma superfície sem nada a correlacionar responde null, 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

json
{
  "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 é:

  1. Anote o code.
  2. Verifique seu construtor de URL — a maioria das falhas são bugs de assinatura, não problemas de conta.
  3. Confira o código abaixo para identificar a causa exata e a correção.
  4. No dashboard, abra Render Logs e filtre pelo mesmo error_code — cada linha mostra os parâmetros solicitados para você reproduzir (e confirmar que request_id corresponde).

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:diagnose em 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, ...).

Experimente grátis — sem necessidade de cadastro

Visualize e teste imagens OG dinâmicas em segundos.

Abrir o Testador de Imagens OG Grátis

A BeCaSimulations site