API-fejl — hvad hver kode betyder, og hvordan du retter den
FastOG returnerer maskinlæsbare fejlkoder, når en anmodning fejler — en signeret OG-billedrendering eller et kald til en af de indbyggede admin-flader. Hvert fejlsvar indeholder:
error— det ældre korte token. Stadig til stede ved hver fejl, så en ældre klient fortsat virker.code— den samme stabile, dokumenterede fejlkode (tabellen nedenfor) under det navn, den offentlige API bruger.message— en beskrivelse på én sætning af, hvad der gik galt.hint— en kort beskrivelse i almindeligt sprog af, hvad der gik galt, og hvordan du retter det.docs_url— et link til denne side, forankret ved afsnittet for den pågældende kode.request_id— korrelerer denne HTTP-fejl med en række i dashboardets Render Logs-tabel (returneres også iX-Request-ID-svarshovedet). En flade uden noget at korrelere svarernull, men nøglen er altid til stede.
De indbyggede flader — Shopify-adminen, WooCommerce Studio, Wix-broen og demoen — svarer
med den samme envelope for koderne nedenfor, så en fejl betyder det samme, uanset hvor du møder den. En
modulflade kan beholde den HTTP-status, den altid har returneret for en kode (for eksempel svarer render_failed
503 på cover-eksporten og 502 på den offentlige API); koden, meddelelsen, hintet og docs-linket ændres ikke.
Læsning af et fejlsvar
{
"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-..."
}
Hvis du får et svar, du ikke forstår, er den hurtigste vej:
- Notér
code. - Tjek din URL-builder — de fleste fejl skyldes signeringsfejl, ikke problemer med kontoen.
- Find den præcise årsag og løsning i koden nedenfor.
- Åbn Render Logs i dashboardet, og filtrér efter samme
error_code— hver række viser de anmodede parametre, så du kan reproducere (og bekræfte, atrequest_idstemmer).
Signering & godkendelse
missing_signature
Din anmodning mangler query-parametrene key og/eller s (signatur).
Ret: sørg for, at din URL indeholder både key=<api-key> og s=<hmac-signature>. Brug SDK'et eller gennemgangen af /docs/hmac-signature-guide til at bygge den.
invalid_signature
Værdien s matchede ikke det, som din HMAC-hemmelighed producerer for denne URL.
Ret: signaturen dækker alle query-parametre undtagen s, med sorterede nøgler. Ændring af en hvilken som helst parameter — herunder omarrangering, forskelle i URL-encoding eller tilføjelse af whitespace — ugyldiggør signaturen. Signer igen efter hver ændring. Bekræft, at din hemmelighed er den samme, som blev vist, da API-nøglen blev oprettet.
invalid_signature_format
Værdien s er ikke en hex-streng på 64 tegn.
Ret: signaturen skal være rå SHA-256-hex (små bogstaver a-f0-9). Hvis du base64-encoder eller afkorter outputtet, skal du bruge almindelig hex i stedet.
expired_timestamp
Det tidsstempel t, du angav, er mere end 5 minutter gammelt.
Ret: generér tidsstemplet på ny, hver gang du bygger en URL. Denne kode gælder for det legacy signerede-URL-flow; det nuværende HMAC v2-flow har intet tidsstempel.
invalid_api_key
Den key, du sendte, findes ikke.
Ret: kopiér den fulde API-nøgle fra dashboardet — det er den offentlige identifikator, der starter med sk_. Den er offentlig og sikker i URL'er; det er hemmeligheden (aldrig i URL'er), der beviser ejerskab.
missing_hmac_secret
API-nøglen har ingen HMAC-hemmelighed konfigureret.
Ret: opret en ny API-nøgle i dashboardet — HMAC-hemmeligheden genereres og vises én gang ved oprettelsen.
Parameter / input
invalid_image_url
En prop, der indeholder en URL (image, brand_logo, logo, avatar, background_image, ...), er ikke en offentlig http(s)-URL.
Rettelse: send en offentligt tilgængelig https://...-URL. Localhost, private IP-adresser og bare stier afvises for at forhindre server-side request forgery.
Abonnement
subscription_required (402)
Anmodningen ramte Dynamic API, men din konto har ikke en aktiv plan. API-adgang er kun for abonnenter: planen er adgangsbetingelsen, og den bærer samme dækning + kapabilitetstrappe, som FastOG-appsene sælger. Selve renderingerne måles ikke — der er ingen månedlig render-kvote og ingen fakturering for overforbrug.
Løsning: vælg en Dynamic API-plan i dashboardet, og opret en API-nøgle. Svaret indeholder en top_up_url, der peger på plansiden.
Render-tjeneste
store_blocked (403)
Rendering for butikken bag denne nøgle er blevet sat på pause af FastOG (for eksempel misbrug eller ukontrolleret forbrug). Caches, der allerede er gemt ved edge, kan fortsætte med at blive serveret, indtil de udløber. Kontakt support for at løse det; intet, du kan ændre i forespørgslen, vil rette dette.
render_unreachable
Render-tjenesten kunne ikke nås (kort genstartsvindue).
Løsning: prøv igen om et par sekunder. Renderingen blev ikke talt med for dette forsøg.
render_failed
Render-tjenesten returnerede en fejl for din forespørgsel.
Løsning: verificer dine template-props — lange/fejlbehæftede værdier, ikke-understøttede felter eller et utilgængeligt upstream-billede. Svaret indeholder den underliggende status. Renderingen blev ikke talt med.
Butikadmin-flader
Disse koder svarer fra Shopify-admin og WooCommerce Studio — de indlejrede editorer, som en merchant
arbejder i frem for det signerede API. Flere deles med det offentlige API (invalid_image_url,
render_failed, invalid_signature); de beholder den post, der er dokumenteret ovenfor.
| Kode | HTTP | Hvad det betyder, og hvad du skal gøre |
|---|---|---|
invalid_shop |
422 | Shopify-butikken kunne ikke identificeres. Genindlæs FastOG-appen fra din Shopify-admin, så den indlejrede forespørgsel igen bærer butikken, og prøv derefter igen. |
invalid_shop_or_page |
422 | Butikken eller sidetypen er ukendt. Åbn FastOG-appen fra din Shopify-admin, og vælg en forside-sidetype i editoren. |
invalid_store |
422 | WooCommerce-butikken kunne ikke identificeres. Genåbn Studio fra din WordPress-admin, så butikkens token igen præsenteres, og prøv derefter igen. |
invalid_store_or_page |
422 | Butikken eller sidetypen er ukendt. Genåbn Studio fra din WordPress-admin, og vælg en forside-sidetype, som editoren tilbyder. |
missing_api_key |
422 | Butikken har ingen signeringsnøgle. Fuldfør installationen af plugin'et fra din WordPress-admin, så FastOG kan udstede en signeringsnøgle til butikken. |
store_ownership_unverified |
403 | WordPress-sitet kunne ikke verificeres. Det skal være tilgængeligt over offentlig HTTPS med REST API aktiveret. |
community_is_free |
422 | Community-planen er gratis. Det er den gratis standardplan og kan ikke købes; vælg et betalt niveau for at opgradere. |
not_installed |
404 | FastOG er ikke installeret for denne butik. Installer FastOG-appen fra Shopify App Store til denne butik, og åbn den derefter igen. |
oauth_required |
409 | Butikken skal autorisere FastOG igen. Kør FastOG OAuth-installationen igen fra din Shopify-admin; den gemte tilladelse blev tilbagekaldt, eller dens scopes blev ændret. |
reconnect_required |
409 | Shopify-forbindelsen skal genoprettes. Brug knappen Reconnect i FastOG-appen, så der udstedes et nyt access token. |
token_rejected |
409 | Shopify udstedte et access token og afviste det derefter. Prøv reconnect én gang igen; hvis Shopify fortsat afviser det, skal du geninstallere appen. |
unauthorized |
401 | Forespørgslen bærer ingen gyldig session for denne flade. Genindlæs FastOG-appen fra din platformsadmin, så et nyt sessionstoken vedhæftes, og prøv derefter igen. |
shop_not_found |
404 | Butikken findes ikke længere i FastOG. Geninstaller FastOG fra din Shopify-admin for at genskabe butikkens post. |
invalid_product |
422 | Produktreferencen er ikke gyldig. Genindlæs produktsiden, og åbn FastOG igen; det sendte produkt-id manglede eller var ikke numerisk. |
invalid_product_cover |
422 | Produktforsidens payload er fejlbehæftet. Genindlæs editoren, og gem igen; props, style og signals skal hver være et objekt. |
product_not_found |
404 | Produktet kunne ikke læses fra butikken. Kontroller, at produktet stadig findes og er udgivet, og genindlæs derefter editoren. |
product_customization_not_on_plan |
403 | Tilpasning af forside pr. produkt er ikke inkluderet i denne plan. Opgrader, eller rediger den delte produktforside i stedet. |
no_product_handles |
422 | Der blev ikke fundet nogen produkter at opdatere. Udgiv mindst ét produkt med et offentligt handle, og prøv derefter opdateringen af share-preview igen. |
invalid_style |
422 | Style-blokken kan ikke bruges. Genindlæs editoren, og vælg farver og skrifttyper igen; én værdi kunne ikke normaliseres. |
invalid_template |
422 | Den ønskede skabelon findes ikke i denne platforms katalog. Vælg et af de layouts, som editoren tilbyder. |
invalid_preset |
422 | Preset-navnet er ikke et, som denne platform tilbyder. Vælg et preset på opsætningsskærmen. |
invalid_set |
422 | Payloaden for cover-sættet mangler eller er fejlbehæftet. Genindlæs opsætningsskærmen, og vælg et sæt igen. |
preset_not_applyable |
422 | Preset'et kan ikke anvendes på alle sidetyper. Vælg et andet preset; dette mangler en forside til mindst én sidetype. |
template_not_available |
422 | Skabelonen findes ikke i det renderbare katalog. Vælg et layout, som vælgeren tilbyder. |
template_not_available_on_shopify |
422 | Skabelonen er ikke tilgængelig på Shopify-butikker. Vælg et layout, som Shopify-editoren tilbyder. |
template_not_available_on_woocommerce |
422 | Skabelonen er ikke tilgængelig på WooCommerce-butikker. Vælg et layout, som Studio tilbyder. |
template_unavailable |
422 | Skabelonen er ikke tilgængelig for denne butik. Vælg et layout, som editoren tilbyder; det er udfaset, ukendt eller kræver mere, end butikken må tegne. |
template_not_on_plan |
403 | Skabelonen kræver en højere plan. Skift plan, eller vælg et layout, som den nuværende plan dækker. Svaret angiver planen i requires. |
template_requires_higher_plan |
403 | Skabelonen kræver en højere plan. Svaret angiver planen i requires. |
no_rule |
404 | Der findes endnu ingen forside-regel for denne sidetype. Gem først en forside for denne sidetype i editoren. |
cover_not_configured |
404 | Der er endnu ikke gemt en produktforside. Gem en produktforside, før du downloader eller deler den. |
schedule_only_product |
422 | Planlægning af kampagner findes kun for produktforsider. Fjern tilbagedateringen, eller flyt kampagnen til produktforsiden. |
not_dismissible |
422 | Den meddelelse kan ikke afvises. Genindlæs siden; den er allerede udfaset eller tilhører en anden butik. |
unsupported_locale |
422 | Det UI-sprog er ikke inkluderet i denne app. Vælg et af de sprog, som svaret angiver i supported. |
no_setup_sets |
422 | Der kunne ikke sammensættes kuraterede cover-sæt. Prøv opsætningsskærmen igen; hvis den forbliver tom, skal du kontakte support. |
export_unavailable |
403 | Downloads er ikke inkluderet i denne plan. Opgrader til Pro eller højere for at downloade forsidefiler. |
cancellation_failed |
502 | Annulleringen af abonnementet blev afvist. Prøv igen om et øjeblik; hvis det fortsat fejler, skal du annullere fra Shopifys faktureringsside eller kontakte support. |
logo_override_on_plan |
403 | Tilsidesættelse af logo er ikke inkluderet i denne plan. Opgrader, eller ryd tilsidesættelsen af logoet. |
invalid_logo |
422 | Logofilen er ikke et accepteret billede. Upload en PNG, JPEG eller WebP under størrelsesgrænsen, som vises i editoren. |
invalid_brand_image |
422 | Brandreferencebilledet kan ikke bruges. Upload et understøttet billede under størrelsesgrænsen, eller ryd referencen og gem igen. |
brand_image_too_large |
422 | Brandreferencebilledet er for stort. Formindsk filen, og upload den igen. |
brand_colors_too_many |
422 | Der blev angivet mere end tre brandfarver. Send højst tre hex-farver. |
upload_failed |
500 | Den uploadede fil kunne ikke gemmes. Prøv igen; hvis det fortsat fejler, skal du kontakte support — asset-lageret returnerede ingen offentlig URL. |
attachment_upload_failed |
500 | Supportvedhæftningen kunne ikke gemmes. Send meddelelsen uden vedhæftningen, og send derefter filen til support via e-mail. |
invalid_webhook |
401 | Butikkens webhook-signatur kunne ikke verificeres. Kontroller, at webhook-hemmeligheden i dine FastOG-indstillinger i WordPress matcher den, som FastOG udstedte. |
not_found |
404 | Det endpoint findes ikke længere. Genåbn Studio fra din WordPress-admin. |
meta_refresh_unavailable |
503 | Opdatering af share-preview er ikke konfigureret. Del linket igen fra Facebook i stedet. |
theme_write_disabled |
409 | Tema-redigering er ikke aktiveret for denne app. Brug temaets app-embed i stedet for tema-filrettelsen. |
scope_required |
403 | FastOG mangler en Shopify-tilladelse. Godkend de ønskede scopes ved hjælp af consent_url i svaret, og prøv derefter rettelsen igen. |
Wix-bro
Wix-broen signeres af Wix-appen, ikke af en merchantsession, så dens fejl er rettet til app-udvikleren. Hvert svar bærer stadig code og request_id; broens request-id er det fra den signerede envelope.
| Kode | HTTP | Hvad det betyder, og hvad du skal gøre |
|---|---|---|
invalid_bridge_signature |
401 | Wix-broens signatur kunne ikke verificeres. Generér requesten igen med den delte hemmelighed, den præcise sti og et tidsstempel, der er under fem minutter gammelt. |
invalid_bridge_body |
400 | Broens envelope-body er malformed. Send body som et JSON-objekt, og kod hvert tal i det som en streng, så den kanoniske signatur matcher. |
replayed_bridge_request |
401 | Den bro-request er allerede brugt. Generér et nyt request_id for hvert muterende kald. |
wix_site_not_installed |
403 | FastOG er ikke installeret på dette Wix-site. Installér FastOG-appen på sitet, og åbn det derefter igen. |
wix_site_not_provisioned |
422 | Wix-sitet har endnu ingen signeringsoplysninger. Geninstallér FastOG-appen, så sitet bliver provisioneret med en API-nøgle. |
invalid_page_type |
422 | Sidetypen er ikke en, som FastOG dækker på Wix. Send en af de sidetyper, som Studio tilbyder. |
rule_not_found |
404 | Der findes ingen regel med det id. Opdatér listen; reglen er blevet slettet eller tilhører et andet site. |
invalid_target_id |
422 | Wix-mål-id'et er ikke gyldigt for denne sidetype. Send det id, som Wix-appen leverer til den pågældende sidetype. |
invalid_preview |
422 | Preview-payloaden er malformed. Læs details-objektet for at finde det felt, der fejler. |
invalid_rule |
422 | Cover-reglens payload er malformed. Læs details-objektet; template er påkrævet, og de valgfrie blocks skal være objekter. |
invalid_sync |
422 | Sync-payloaden er malformed. Læs details-objektet; target_type og target_id skal stemme overens. |
invalid_regenerate_url |
422 | URL'en, der skal regenereres, mangler. Send sidens URL i url. |
invalid_regenerate_host |
422 | URL'en tilhører ikke FastOG-værten. Send en cover-URL fra fastog.com. |
ai_presets_unsupported |
422 | AI-designede cover-sæt genereres ikke længere. Vælg et af de kuraterede looks i stedet. |
original_tags_required |
422 | De oprindelige metadata-tags er påkrævet. Send original_tags (eller current_tags), så en afinstallation kan gendanne sitets metadata. |
invalid_restored |
422 | Payloaden med gendannede nøgler er malformed. Send restored som et array af metadata-nøgler. |
invalid_seo_target |
422 | SEO-måltypen er ukendt. Brug site, pattern eller item i stien. |
invalid_seo_payload |
422 | SEO-metadata-payloaden er malformed. Send target_id, current_tags og fastog_url som en absolut http(s)-URL. |
sync_failed |
500 | Metadata-synkroniseringen til Wix mislykkedes. Prøv igen; hvis det fortsat fejler, så tjek, at sitet kan nås, og at appen stadig er installeret. |
invalid_tier |
422 | Den plan er ikke en, som FastOG sælger på Wix. Send starter, pro eller scale som tier. |
Demooverflade
Demoen er den ejer-only salgskonsol, ikke et merchant-endpoint.
| Kode | HTTP | Hvad det betyder, og hvad du skal gøre |
|---|---|---|
url_required |
422 | Der blev ikke sendt nogen URL. Indsæt butikkens eller produktets link, før du læser kortet. |
unreadable_url |
422 | Den side kunne ikke læses. Kontroller, at linket er offentligt og komplet; en side bag et login kan ikke læses. |
no_api_key |
422 | Der er ingen API-nøgle tilgængelig til at signere covers. Opret en API-nøgle (eller indtast en gyldig en); svaret linker til API-nøglesiden. |
no_presets |
500 | Der er ikke konfigureret nogen cover-presets. Konfigurer mindst ét preset på serveren. |
Scoped-rule editor-koder
Scoped-rule-editorerne (Shopify admin og WooCommerce Studio) oversætter selv disse tokens til
forhandlerens eget sprog, så deres svar indeholder error og code, men ingen hint — en ekstra engelsk
beskrivelse ville blot afvige fra den lokaliserede, som forhandleren faktisk ser:
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.
Stadig problemer?
- Åbn Render Logs-siden i dashboardet — hvert resultat (succes + afvisning) er listet med sin
error_code, HTTP-status og de anmodede parametre. - Kør
php artisan og:diagnosepå en signeret URL for at gennemgå hele pipelinen og se, hvilket trin der fejler. - Tjek dokumentationen i sidepanelet for det framework, du bruger (Next.js, Express, SvelteKit, ...).