Errori API — Cosa significa ogni codice e come risolverlo
FastOG restituisce codici di errore leggibili dalla macchina quando una richiesta fallisce — il rendering di un'immagine OG firmata, o una chiamata a una delle superfici di amministrazione integrate nel prodotto. Ogni risposta di errore include:
error— il vecchio token breve. È ancora presente su ogni errore, così un client più vecchio continua a funzionare.code— lo stesso codice di errore stabile e documentato (tabella sotto), con il nome usato dall'API pubblica.message— una descrizione in una frase di cosa è andato storto.hint— una breve descrizione in linguaggio semplice di cosa è andato storto e di come risolverlo.docs_url— un link a questa pagina, ancorato alla sezione di quel codice.request_id— correla questo errore HTTP a una riga nella tabella Render Logs della dashboard (restituito anche nell'header di rispostaX-Request-ID). Una superficie che non ha nulla da correlare rispondenull, ma la chiave è sempre presente.
Le superfici integrate nel prodotto — l'admin di Shopify, il WooCommerce Studio, il bridge Wix e la demo — rispondono
con lo stesso envelope per i codici qui sotto, quindi un errore significa la stessa cosa ovunque lo incontri. Una
superficie di un modulo può mantenere lo status HTTP che ha sempre restituito per un codice (ad esempio render_failed
risponde 503 sull'export della copertina e 502 sull'API pubblica); il codice, il messaggio, il suggerimento e il link alla documentazione non cambiano.
Leggere una risposta di errore
{
"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 ricevi una risposta che non capisci, la via più rapida è:
- Annota il
code. - Controlla il tuo URL builder — la maggior parte dei fallimenti sono bug di firma, non problemi di account.
- Confronta il codice qui sotto per la causa esatta e la correzione.
- Nella dashboard, apri Render Logs e filtra per lo stesso
error_code— ogni riga mostra i parametri richiesti così puoi riprodurre (e confermare cherequest_idcorrisponda).
Firma e autenticazione
missing_signature
Alla tua richiesta mancano i parametri di query key e/o s (firma).
Correzione: assicurati che il tuo URL includa sia key=<api-key> che s=<hmac-signature>. Usa l'SDK o la guida /docs/hmac-signature-guide per costruirlo.
invalid_signature
Il valore s non corrisponde a quello prodotto dal tuo HMAC secret per questo URL.
Correzione: la firma copre tutti i parametri di query tranne s, con le chiavi ordinate. Modificare qualsiasi parametro — incluso il riordino, differenze nella codifica URL o l'aggiunta di spazi — invalida la firma. Firma di nuovo dopo ogni modifica. Verifica che il tuo secret sia lo stesso mostrato al momento della creazione della API key.
invalid_signature_format
Il valore s non è una stringa esadecimale di 64 caratteri.
Correzione: la firma deve essere l'hex grezzo dello SHA-256 (minuscolo a-f0-9). Se stai codificando in base64 o troncando l'output, usa l'hex semplice.
expired_timestamp
Il timestamp t che hai fornito ha più di 5 minuti.
Correzione: rigenera il timestamp ogni volta che costruisci un URL. Questo codice si applica al flusso legacy degli URL firmati; il flusso HMAC v2 attuale non ha timestamp.
invalid_api_key
La key che hai passato non esiste.
Correzione: copia la API key completa dalla dashboard — è l'identificatore pubblico che inizia con sk_. È pubblica e sicura negli URL; il secret (mai negli URL) è ciò che prova il possesso.
missing_hmac_secret
La API key non ha un HMAC secret configurato.
Correzione: crea una nuova API key nella dashboard — l'HMAC secret viene generato e mostrato una sola volta alla creazione.
Parametro / input
invalid_image_url
Una prop che contiene un URL (image, brand_logo, logo, avatar, background_image, ...) non è un URL http(s) pubblico.
Correzione: passa un URL https://... recuperabile pubblicamente. Localhost, IP privati e percorsi senza host vengono rifiutati per prevenire il server-side request forgery.
Abbonamento
subscription_required (402)
La richiesta ha raggiunto la Dynamic API ma il tuo account non ha un piano attivo. L'accesso all'API è solo tramite abbonamento: il piano è il requisito, e offre la stessa copertura e la stessa scala di funzionalità vendute dalle app FastOG. I render stessi non sono misurati: non esiste una quota mensile di render né una fatturazione per eccedenza.
Correzione: scegli un piano Dynamic API nella dashboard e crea una chiave API. La risposta include un top_up_url che punta alla pagina dei piani.
Servizio di rendering
store_blocked (403)
Il rendering per lo store associato a questa chiave è stato sospeso da FastOG (ad esempio per abuso o utilizzo eccessivo). Le copie già in cache all'edge possono continuare a essere servite fino alla scadenza. Contatta il supporto per risolvere la situazione; nessuna modifica che puoi apportare alla richiesta risolverà il problema.
render_unreachable
Non è stato possibile raggiungere il servizio di rendering (breve finestra di riavvio).
Correzione: riprova tra qualche secondo. Il rendering non è stato conteggiato per questo tentativo.
render_failed
Il servizio di rendering ha restituito un errore per la tua richiesta.
Correzione: verifica le props del tuo template — valori lunghi o malformati, campi non supportati o un'immagine upstream non raggiungibile. La risposta include il status sottostante. Il rendering non è stato conteggiato.
Superfici di amministrazione dello store
Questi codici rispondono dall'admin di Shopify e da WooCommerce Studio — gli editor integrati in cui lavora un merchant
piuttosto che l'API firmata. Diversi sono condivisi con l'API pubblica (invalid_image_url,
render_failed, invalid_signature); per quelli resta valida la voce documentata sopra.
| Codice | HTTP | Cosa significa e cosa fare |
|---|---|---|
invalid_shop |
422 | Non è stato possibile identificare lo shop Shopify. Ricarica l'app FastOG dal tuo admin Shopify in modo che la richiesta incorporata porti di nuovo lo shop, poi riprova. |
invalid_shop_or_page |
422 | Lo shop o il tipo di pagina non sono riconosciuti. Apri l'app FastOG dal tuo admin Shopify e scegli un tipo di pagina di copertina dall'editor. |
invalid_store |
422 | Non è stato possibile identificare lo store WooCommerce. Riapri lo Studio dal tuo admin WordPress in modo che il token dello store venga presentato di nuovo, poi riprova. |
invalid_store_or_page |
422 | Lo store o il tipo di pagina non sono riconosciuti. Riapri lo Studio dal tuo admin WordPress e scegli un tipo di pagina di copertina tra quelli offerti dall'editor. |
missing_api_key |
422 | Lo store non ha una chiave di firma. Completa l'installazione del plugin dal tuo admin WordPress in modo che FastOG possa emettere la chiave di firma per lo store. |
store_ownership_unverified |
403 | Non è stato possibile verificare il sito WordPress. Deve essere raggiungibile tramite HTTPS pubblico con la sua REST API abilitata. |
community_is_free |
422 | Il piano Community è gratuito. È il piano predefinito gratuito e non è acquistabile; scegli un livello a pagamento per eseguire l'upgrade. |
not_installed |
404 | FastOG non è installato per questo shop. Installa l'app FastOG dallo Shopify App Store per questo shop, poi riaprila. |
oauth_required |
409 | Lo shop deve autorizzare di nuovo FastOG. Esegui di nuovo l'installazione OAuth di FastOG dal tuo admin Shopify; la concessione memorizzata è stata revocata o i suoi scope sono cambiati. |
reconnect_required |
409 | La connessione a Shopify deve essere ristabilita. Usa il pulsante Riconnetti nell'app FastOG in modo che venga emesso un nuovo access token. |
token_rejected |
409 | Shopify ha emesso un access token e poi l'ha rifiutato. Riprova la riconnessione una volta; se Shopify continua a rifiutarlo, reinstalla l'app. |
unauthorized |
401 | La richiesta non porta una sessione valida per questa superficie. Ricarica l'app FastOG dall'admin della tua piattaforma in modo che venga allegato un nuovo token di sessione, poi riprova. |
shop_not_found |
404 | Lo shop non esiste più in FastOG. Reinstalla FastOG dal tuo admin Shopify per ricreare il record dello shop. |
invalid_product |
422 | Il riferimento al prodotto non è valido. Ricarica la pagina del prodotto e riapri FastOG; l'id del prodotto inviato era mancante o non numerico. |
invalid_product_cover |
422 | Il payload della copertina del prodotto è malformato. Ricarica l'editor e salva di nuovo; props, style e signals devono essere ciascuno un oggetto. |
product_not_found |
404 | Non è stato possibile leggere il prodotto dallo store. Verifica che il prodotto esista ancora e sia pubblicato, poi ricarica l'editor. |
product_customization_not_on_plan |
403 | La personalizzazione della copertina per singolo prodotto non è inclusa in questo piano. Esegui l'upgrade oppure modifica la copertina prodotto condivisa. |
no_product_handles |
422 | Non sono stati trovati prodotti da aggiornare. Pubblica almeno un prodotto con un handle pubblico, poi riprova l'aggiornamento dell'anteprima di condivisione. |
invalid_style |
422 | Il blocco di stile non è utilizzabile. Ricarica l'editor e scegli di nuovo colori e font; un valore non è stato normalizzato. |
invalid_template |
422 | Il template richiesto non è nel catalogo di questa piattaforma. Scegli uno dei layout offerti dall'editor. |
invalid_preset |
422 | Il nome del preset non è tra quelli offerti da questa piattaforma. Scegli un preset dalla schermata di configurazione. |
invalid_set |
422 | Il payload del set di copertine è mancante o malformato. Ricarica la schermata di configurazione e scegli di nuovo un set. |
preset_not_applyable |
422 | Il preset non può essere applicato a ogni tipo di pagina. Scegli un altro preset; a questo manca una copertina per almeno un tipo di pagina. |
template_not_available |
422 | Il template non è nel catalogo renderizzabile. Scegli un layout offerto dal selettore. |
template_not_available_on_shopify |
422 | Il template non è disponibile sugli store Shopify. Scegli un layout offerto dall'editor Shopify. |
template_not_available_on_woocommerce |
422 | Il template non è disponibile sugli store WooCommerce. Scegli un layout offerto dallo Studio. |
template_unavailable |
422 | Il template non è disponibile per questo store. Scegli un layout offerto dall'editor; è ritirato, sconosciuto o superiore a ciò che lo store può disegnare. |
template_not_on_plan |
403 | Il template richiede un piano superiore. Cambia piano oppure scegli un layout coperto dal piano attuale. La risposta indica il piano in requires. |
template_requires_higher_plan |
403 | Il template richiede un piano superiore. La risposta indica il piano in requires. |
no_rule |
404 | Non esiste ancora una regola di copertina per questo tipo di pagina. Salva prima una copertina per questo tipo di pagina nell'editor. |
cover_not_configured |
404 | Non è stata ancora salvata alcuna copertina prodotto. Salva una copertina prodotto prima di scaricarla o condividerla. |
schedule_only_product |
422 | La pianificazione delle campagne esiste solo per le copertine prodotto. Rimuovi la data di ripristino oppure sposta la campagna sulla copertina prodotto. |
not_dismissible |
422 | Quell'annuncio non può essere ignorato. Ricarica la pagina; è già stato ritirato o appartiene a un altro shop. |
unsupported_locale |
422 | Quella lingua dell'interfaccia non è inclusa in questa app. Scegli una delle lingue elencate dalla risposta in supported. |
no_setup_sets |
422 | Non è stato possibile assemblare set di copertine curati. Riprova la schermata di configurazione; se resta vuota, contatta l'assistenza. |
export_unavailable |
403 | I download non sono inclusi in questo piano. Esegui l'upgrade a Pro o superiore per scaricare i file delle copertine. |
cancellation_failed |
502 | La cancellazione dell'abbonamento è stata rifiutata. Riprova tra un momento; se continua a fallire, cancella dalla pagina di fatturazione Shopify o contatta l'assistenza. |
logo_override_on_plan |
403 | L'override del logo non è incluso in questo piano. Esegui l'upgrade oppure rimuovi l'override del logo. |
invalid_logo |
422 | Il file del logo non è un'immagine accettata. Carica un PNG, JPEG o WebP entro il limite di dimensione mostrato nell'editor. |
invalid_brand_image |
422 | L'immagine di riferimento del brand non è utilizzabile. Carica un'immagine supportata entro il limite di dimensione, oppure rimuovi il riferimento e salva di nuovo. |
brand_image_too_large |
422 | L'immagine di riferimento del brand è troppo grande. Riduci il file e caricalo di nuovo. |
brand_colors_too_many |
422 | Sono stati forniti più di tre colori del brand. Invia al massimo tre colori esadecimali. |
upload_failed |
500 | Non è stato possibile memorizzare il file caricato. Riprova; se continua a fallire, contatta l'assistenza — l'asset store non ha restituito alcun URL pubblico. |
attachment_upload_failed |
500 | Non è stato possibile memorizzare l'allegato del supporto. Invia il messaggio senza l'allegato, poi invia il file via email al supporto. |
invalid_webhook |
401 | La firma del webhook dello store non è stata verificata. Controlla che il segreto del webhook nelle tue impostazioni FastOG di WordPress corrisponda a quello emesso da FastOG. |
not_found |
404 | Quell'endpoint non esiste più. Riapri lo Studio dal tuo admin WordPress. |
meta_refresh_unavailable |
503 | L'aggiornamento dell'anteprima di condivisione non è configurato. Condividi di nuovo il link da Facebook. |
theme_write_disabled |
409 | La modifica del tema non è abilitata per questa app. Usa l'embed dell'app nel tema invece della correzione dei file del tema. |
scope_required |
403 | A FastOG manca un'autorizzazione Shopify. Approva gli scope richiesti usando consent_url nella risposta, poi riprova la correzione. |
Bridge Wix
Il bridge Wix è firmato dall'app Wix, non da una sessione del merchant, quindi i suoi errori sono indirizzati allo sviluppatore dell'app. Ogni risposta porta comunque code e request_id; l'id della richiesta del bridge è quello dell'envelope firmato.
| Codice | HTTP | Cosa significa e cosa fare |
|---|---|---|
invalid_bridge_signature |
401 | La firma del bridge Wix non è stata verificata. Rigenera la richiesta con il secret condiviso, il path esatto e un timestamp più recente di cinque minuti. |
invalid_bridge_body |
400 | Il body dell'envelope del bridge è malformato. Invia body come oggetto JSON e codifica ogni numero al suo interno come stringa, così che la firma canonica corrisponda. |
replayed_bridge_request |
401 | Quella richiesta del bridge è già stata usata. Genera un nuovo request_id per ogni chiamata che modifica lo stato. |
wix_site_not_installed |
403 | FastOG non è installato su questo sito Wix. Installa l'app FastOG sul sito, poi riaprilo. |
wix_site_not_provisioned |
422 | Il sito Wix non ha ancora credenziali di firma. Reinstalla l'app FastOG in modo che il sito venga provisionato con una API key. |
invalid_page_type |
422 | Il tipo di pagina non è tra quelli coperti da FastOG su Wix. Invia uno dei tipi di pagina offerti dallo Studio. |
rule_not_found |
404 | Non esiste nessuna regola con quell'id. Aggiorna la lista; la regola è stata eliminata o appartiene a un altro sito. |
invalid_target_id |
422 | L'id del target Wix non è valido per questo tipo di pagina. Invia l'id che l'app Wix fornisce per quel tipo di pagina. |
invalid_preview |
422 | Il payload di anteprima è malformato. Leggi l'oggetto details per il campo che ha fallito. |
invalid_rule |
422 | Il payload della regola di copertina è malformato. Leggi l'oggetto details; template è obbligatorio e i blocchi opzionali devono essere oggetti. |
invalid_sync |
422 | Il payload di sincronizzazione è malformato. Leggi l'oggetto details; target_type e target_id devono coincidere. |
invalid_regenerate_url |
422 | Manca l'URL da rigenerare. Invia l'URL della pagina in url. |
invalid_regenerate_host |
422 | L'URL non appartiene all'host FastOG. Invia un URL di copertina fastog.com. |
ai_presets_unsupported |
422 | I set di copertine progettati dall'AI non vengono più generati. Scegli uno dei look curati. |
original_tags_required |
422 | I tag dei metadati originali sono obbligatori. Invia original_tags (o current_tags) così che una disinstallazione possa ripristinare i metadati del sito. |
invalid_restored |
422 | Il payload delle chiavi ripristinate è malformato. Invia restored come array di chiavi di metadati. |
invalid_seo_target |
422 | Il tipo di target SEO è sconosciuto. Usa site, pattern o item nel path. |
invalid_seo_payload |
422 | Il payload dei metadati SEO è malformato. Invia target_id, current_tags e fastog_url come URL http(s) assoluto. |
sync_failed |
500 | La sincronizzazione dei metadati verso Wix è fallita. Riprova; se continua a fallire, verifica che il sito sia raggiungibile e che l'app sia ancora installata. |
invalid_tier |
422 | Quel piano non è tra quelli che FastOG vende su Wix. Invia starter, pro o scale come tier. |
Superficie della demo
La demo è la console di vendita riservata al proprietario, non un endpoint per i merchant.
| Codice | HTTP | Cosa significa e cosa fare |
|---|---|---|
url_required |
422 | Non è stata inviata alcuna URL. Incolla il link del negozio o del prodotto prima di leggere la card. |
unreadable_url |
422 | Impossibile leggere quella pagina. Verifica che il link sia pubblico e completo; una pagina dietro un login non può essere letta. |
no_api_key |
422 | Nessuna API key disponibile per firmare le copertine. Crea una API key (oppure inseriscine una valida); la risposta rimanda alla pagina delle API key. |
no_presets |
500 | Nessun preset di copertina configurato. Configura almeno un preset sul server. |
Codici dell'editor delle regole con ambito
Gli editor delle regole con ambito (admin di Shopify e WooCommerce Studio) traducono questi token autonomamente, nella lingua del merchant, quindi le loro risposte contengono error e code ma non hint — una seconda descrizione in inglese finirebbe solo per divergere da quella localizzata che il merchant vede effettivamente:
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.
Ancora bloccato?
- Apri la pagina Render Logs della dashboard — ogni esito (successo + rifiuto) è elencato con il suo
error_code, lo stato HTTP e i parametri richiesti. - Esegui
php artisan og:diagnosesu un URL firmato per percorrere l'intera pipeline e vedere quale fase fallisce. - Consulta la documentazione nella barra laterale per il framework che stai usando (Next.js, Express, SvelteKit, ...).