Tópico

Erros de API — O que significa cada código e como corrigi-lo

O FastOG devolve códigos de erro legíveis por máquina quando um pedido falha — uma renderização de imagem OG assinada, ou uma chamada a uma das superfícies de administração do produto. Todas as respostas de erro incluem:

  • error — o token curto legado. Continua presente em todas as falhas para que um cliente mais antigo continue a funcionar.
  • code — o mesmo código de erro estável e documentado (tabela abaixo), sob o nome que a API pública utiliza.
  • message — uma descrição numa frase do que correu mal.
  • hint — uma descrição curta em linguagem simples do que correu mal e de como corrigi-lo.
  • docs_url — uma ligação para esta página, ancorada na secção desse código.
  • request_id — correlaciona esta falha HTTP com uma linha da tabela Render Logs do dashboard (também devolvido no cabeçalho de resposta X-Request-ID). Uma superfície sem nada para 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, pelo que uma falha significa o mesmo onde quer que a encontre. Uma superfície de módulo pode manter o estado HTTP que sempre devolveu 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 a ligação à documentação não mudam.

Ler 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 receber uma resposta que não compreende, o caminho mais rápido é:

  1. Anote o code.
  2. Verifique o seu construtor de URL — a maioria das falhas são bugs de assinatura, não problemas de conta.
  3. Consulte 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 pedidos para que possa reproduzir (e confirmar que request_id corresponde).

Assinatura e autenticação

missing_signature

Faltam na sua requisição os parâmetros de query key e/ou s (assinatura).

Correção: garanta que o seu URL inclui tanto key=<api-key> como s=<hmac-signature>. Use o SDK ou o guia /docs/hmac-signature-guide para o construir.

invalid_signature

O valor de s não corresponde ao que o seu segredo HMAC produz para este URL.

Correção: a assinatura cobre todos os parâmetros de query exceto s, com as chaves ordenadas. Alterar qualquer parâmetro — incluindo reordenar, diferenças de codificação de URL ou adicionar espaços — invalida a assinatura. Volte a assinar após cada alteração. Confirme que o seu segredo é o mesmo que foi mostrado 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 tem de ser SHA-256 hex em bruto (a-f0-9 minúsculo). Se estiver a codificar em base64 ou a truncar o resultado, use hex simples.

expired_timestamp

O timestamp t que forneceu tem mais de 5 minutos.

Correção: regenere o timestamp sempre que construir um URL. Este código aplica-se ao fluxo legado de URL assinado; o fluxo atual HMAC v2 não tem timestamp.

invalid_api_key

O key que passou não existe.

Correção: copie a chave de API completa a partir do dashboard — é o identificador público que começa por sk_. É público e seguro em URLs; o segredo (nunca em URLs) é o que prova 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 mostrado uma única vez na criação.


Parâmetro / entrada

invalid_image_url

Uma prop com URL (image, brand_logo, logo, avatar, background_image, ...) não é um URL http(s) público.

Correção: passa um URL https://... acessível publicamente. Localhost, IPs privados e caminhos simples são rejeitados para prevenir server-side request forgery.


Subscrição

subscription_required (402)

O pedido chegou à Dynamic API, mas a sua conta não tem um plano ativo. O acesso à API é exclusivo para subscritores: o plano é o requisito de acesso e inclui a mesma cobertura e a mesma escala de capacidades que as aplicações FastOG comercializam. As renderizações em si não são contabilizadas — não existe quota mensal de renderizações nem faturação de excesso.

Correção: escolha um plano da Dynamic API no dashboard e crie uma chave de API. A resposta inclui um top_up_url que aponta para a página dos planos.


Serviço de renderização

store_blocked (403)

A renderização para a loja associada a esta chave foi suspensa pela FastOG (por exemplo, abuso ou utilização descontrolada). As capas já em cache no edge podem continuar a ser servidas até expirarem. Contacta o suporte para resolver a situação; nada que possas alterar no pedido irá corrigir isto.

render_unreachable

Não foi possível contactar o serviço de renderização (janela breve de reinício).

Correção: tenta novamente dentro de alguns segundos. A renderização não foi contabilizada para esta tentativa.

render_failed

O serviço de renderização devolveu um erro para o teu pedido.

Correção: verifica as props do teu 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.


Superfícies de administração da loja

Estes códigos respondem a partir do admin do Shopify e do WooCommerce Studio — os editores incorporados em que o comerciante trabalha, em vez da API assinada. Vários são partilhados 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 a aplicação FastOG a partir do seu admin Shopify para que o pedido incorporado volte a transportar a loja e tente novamente.
invalid_shop_or_page 422 A loja ou o tipo de página é desconhecido. Abra a aplicação FastOG a partir do seu admin 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 a partir do seu admin WordPress para que o token da loja volte a ser apresentado e tente novamente.
invalid_store_or_page 422 A loja ou o tipo de página é desconhecido. Reabra o Studio a partir do seu admin WordPress e escolha um tipo de página de capa que o editor ofereça.
missing_api_key 422 A loja não tem chave de assinatura. Conclua a instalação do plugin a partir do seu admin 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. Tem de estar acessível através de HTTPS público com a REST API ativada.
community_is_free 422 O plano Community é gratuito. É o plano gratuito predefinido 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 a aplicação FastOG a partir da Shopify App Store para esta loja e volte a abri-la.
oauth_required 409 A loja tem de autorizar o FastOG novamente. Execute novamente a instalação OAuth do FastOG a partir do seu admin Shopify; a autorização armazenada foi revogada ou os seus escopos mudaram.
reconnect_required 409 A ligação ao Shopify tem de ser restabelecida. Use o botão Reconnect na aplicação FastOG para que seja emitido um novo access token.
token_rejected 409 O Shopify emitiu um access token e depois recusou-o. Tente a reconexão uma vez; se o Shopify continuar a recusá-lo, reinstale a aplicação.
unauthorized 401 O pedido não transporta uma sessão válida para esta superfície. Recarregue a aplicação FastOG a partir do admin da sua plataforma para que seja anexado um novo token de sessão e tente novamente.
shop_not_found 404 A loja já não existe no FastOG. Reinstale o FastOG a partir do seu admin Shopify para recriar o registo 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 em falta ou não era numérico.
invalid_product_cover 422 O payload da capa do produto está malformado. Recarregue o editor e guarde novamente; props, style e signals têm de ser cada um um objeto.
product_not_found 404 Não foi possível ler o produto a partir da loja. Verifique se o produto ainda existe e está publicado e recarregue o editor.
product_customization_not_on_plan 403 A personalização da capa por produto não está incluída neste plano. Faça upgrade ou edite a capa de produto partilhada.
no_product_handles 422 Não foram encontrados produtos para atualizar. Publique pelo menos um produto com um handle público e tente novamente a atualização da pré-visualização de partilha.
invalid_style 422 O bloco de estilo não é utilizável. Recarregue o editor e volte a escolher as cores e os tipos de letra; um valor não pôde ser normalizado.
invalid_template 422 O template pedido não está no catálogo desta plataforma. Escolha um dos layouts que o editor oferece.
invalid_preset 422 O nome do preset não é um dos que esta plataforma oferece. Escolha um preset no ecrã de configuração.
invalid_set 422 O payload do conjunto de capas está em falta ou malformado. Recarregue o ecrã de configuração e escolha novamente um conjunto.
preset_not_applyable 422 O preset não pode ser aplicado a todos os tipos de página. Escolha outro preset; a este falta uma 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 que o seletor oferece.
template_not_available_on_shopify 422 O template não está disponível nas lojas Shopify. Escolha um layout que o editor Shopify oferece.
template_not_available_on_woocommerce 422 O template não está disponível nas lojas WooCommerce. Escolha um layout que o Studio oferece.
template_unavailable 422 O template não está disponível para esta loja. Escolha um layout que o editor oferece; está retirado, é desconhecido ou está acima do que a loja pode desenhar.
template_not_on_plan 403 O template requer um plano superior. Mude de plano ou escolha um layout abrangido pelo plano atual. A resposta indica o plano em requires.
template_requires_higher_plan 403 O template requer um plano superior. A resposta indica o plano em requires.
no_rule 404 Ainda não existe uma regra de capa para este tipo de página. Guarde primeiro uma capa para este tipo de página no editor.
cover_not_configured 404 Ainda não foi guardada nenhuma capa de produto. Guarde uma capa de produto antes de a transferir ou partilhar.
schedule_only_product 422 O agendamento de campanhas só existe para capas de produto. Remova a data de reversão ou mova a campanha para a capa de produto.
not_dismissible 422 Esse anúncio não pode ser dispensado. Recarregue a página; já foi retirado ou pertence a outra loja.
unsupported_locale 422 Esse idioma da UI não está incluído nesta aplicação. Escolha um dos idiomas que a resposta lista em supported.
no_setup_sets 422 Não foi possível reunir conjuntos de capas curados. Tente novamente o ecrã de configuração; se continuar vazio, contacte o suporte.
export_unavailable 403 As transferências não estão incluídas neste plano. Faça upgrade para Pro ou superior para transferir ficheiros de capa.
cancellation_failed 502 O cancelamento da subscrição foi recusado. Tente novamente dentro de momentos; se continuar a falhar, cancele a partir da página de faturação do Shopify ou contacte o suporte.
logo_override_on_plan 403 A substituição do logótipo não está incluída neste plano. Faça upgrade ou limpe a substituição do logótipo.
invalid_logo 422 O ficheiro do logótipo não é uma imagem aceite. Carregue um PNG, JPEG ou WebP abaixo do limite de tamanho indicado no editor.
invalid_brand_image 422 A imagem de referência da marca não é utilizável. Carregue uma imagem suportada abaixo do limite de tamanho ou limpe a referência e guarde novamente.
brand_image_too_large 422 A imagem de referência da marca é demasiado grande. Reduza o ficheiro e carregue-o novamente.
brand_colors_too_many 422 Foram fornecidas mais de três cores de marca. Envie no máximo três cores hex.
upload_failed 500 Não foi possível armazenar o ficheiro carregado. Tente novamente; se continuar a falhar, contacte o suporte — o armazenamento de assets não devolveu nenhum URL público.
attachment_upload_failed 500 Não foi possível armazenar o anexo de suporte. Envie a mensagem sem o anexo e depois envie o ficheiro por email para o suporte.
invalid_webhook 401 A assinatura do webhook da loja não foi verificada. Verifique se o segredo do webhook nas suas definições do FastOG para WordPress corresponde ao que o FastOG emitiu.
not_found 404 Esse endpoint já não existe. Reabra o Studio a partir do seu admin WordPress.
meta_refresh_unavailable 503 A atualização da pré-visualização de partilha não está configurada. Volte a partilhar a ligação a partir do Facebook.
theme_write_disabled 409 A edição de temas não está ativada para esta aplicação. Use o theme app embed em vez da correção do ficheiro de tema.
scope_required 403 Falta ao FastOG uma permissão do Shopify. Aprove os escopos pedidos usando o consent_url na resposta e tente novamente a correção.

Bridge do Wix

O bridge do Wix é assinado pela app Wix, não por uma sessão de comerciante, pelo que as suas falhas se dirigem ao programador da app. Todas as respostas continuam a incluir code e request_id; o id do pedido do bridge é o do envelope assinado.

Código HTTP O que significa e o que fazer
invalid_bridge_signature 401 A assinatura do bridge do Wix não foi verificada. Volte a gerar o pedido com o segredo partilhado, o caminho exato e um timestamp com menos de cinco minutos.
invalid_bridge_body 400 O corpo do envelope do bridge está malformado. Envie body como um objeto JSON e codifique todos os números no seu interior como strings, para que a assinatura canónica corresponda.
replayed_bridge_request 401 Esse pedido do bridge já foi utilizado. Gere um novo request_id para cada chamada que altere estado.
wix_site_not_installed 403 O FastOG não está instalado neste site Wix. Instale a app FastOG no site e volte a abri-lo.
wix_site_not_provisioned 422 O site Wix ainda não tem credenciais de assinatura. Reinstale a app FastOG para que o site seja aprovisionado com uma chave de API.
invalid_page_type 422 O tipo de página não é um dos que o FastOG suporta no Wix. Envie um dos tipos de página que o Studio disponibiliza.
rule_not_found 404 Não existe nenhuma regra com esse id. Atualize a lista; a regra foi eliminada 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 a app Wix fornece para esse tipo de página.
invalid_preview 422 O payload de pré-visualização está malformado. Consulte o objeto details para identificar o campo com erro.
invalid_rule 422 O payload da regra de capa está malformado. Consulte o objeto details; o template é obrigatório e os blocos opcionais têm de ser objetos.
invalid_sync 422 O payload de sincronização está malformado. Consulte o objeto details; target_type e target_id têm de coincidir.
invalid_regenerate_url 422 Falta o URL a regenerar. Envie o URL da página em url.
invalid_regenerate_host 422 O URL não pertence ao host do FastOG. Envie um URL de capa fastog.com.
ai_presets_unsupported 422 Os conjuntos de capas concebidos por IA já não são gerados. Escolha um dos looks curados.
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. Utilize 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 um URL http(s) absoluto.
sync_failed 500 A sincronização de metadados para o Wix falhou. Tente novamente; se continuar a falhar, verifique se o site está acessível e se a app continua instalada.
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 é a consola de vendas exclusiva do proprietário, não um endpoint de comerciante.

Código HTTP O que significa e o que fazer
url_required 422 Não foi enviado nenhum URL. Cole o link da loja ou do produto antes de ler o cartão.
unreadable_url 422 Não foi possível ler essa página. Verifique se o link é público e está completo; uma página protegida por login não pode ser lida.
no_api_key 422 Não está disponível nenhuma chave de API para assinar capas. Crie uma chave de API (ou introduza uma válida); a resposta tem uma ligação para a página das chaves de API.
no_presets 500 Não estão configurados presets de capa. Configure pelo menos um preset no servidor.

Códigos do editor de regras com âmbito

Os editores de regras com âmbito (administração do Shopify e WooCommerce Studio) traduzem estes tokens para o idioma do próprio comerciante, pelo que as suas respostas incluem error e code mas não hint — uma segunda descrição em inglês apenas divergiria da versão localizada que o comerciante vê efetivamente:

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 dificuldades?

  • Abra a página Render Logs do dashboard — cada resultado (sucesso + rejeição) é listado com o respetivo error_code, o estado HTTP e os parâmetros pedidos.
  • Execute php artisan og:diagnose num URL assinado para percorrer todo o pipeline e ver em que etapa falha.
  • Consulte a documentação na barra lateral para o framework que está a usar (Next.js, Express, SvelteKit, ...).

Experimente gratuitamente — sem necessidade de registo

Pré-visualize e teste imagens OG dinâmicas em segundos.

Abrir o Testador Gratuito de Imagens OG

A BeCaSimulations site