Chyby API — co který kód znamená a jak ho opravit
FastOG vrací strojově čitelné chybové kódy, když požadavek selže — ať už jde o vykreslení podepsaného OG obrázku, nebo volání jedné z administračních ploch přímo v produktu. Každá chybová odpověď obsahuje:
error— původní krátký token. Zůstává u každého selhání, aby starší klient fungoval dál.code— stejný stabilní, zdokumentovaný chybový kód (tabulka níže), pod názvem, který používá veřejné API.message— jednořádkový popis toho, co se pokazilo.hint— krátký popis jednoduchým jazykem, co se pokazilo a jak to opravit.docs_url— odkaz na tuto stránku ukotvený na sekci daného kódu.request_id— propojuje toto HTTP selhání s řádkem v tabulce Render Logs v dashboardu (vrací se také v hlavičce odpovědiX-Request-ID). Plocha, která nemá co propojit, odpovídánull, ale klíč je vždy přítomný.
Plochy přímo v produktu — Shopify admin, WooCommerce Studio, Wix bridge a demo — odpovídají
stejnou obálkou pro níže uvedené kódy, takže selhání znamená totéž, ať na něj narazíš kdekoli. Plocha
modulu si může ponechat HTTP status, který vracela vždy pro daný kód (například render_failed
odpovídá 503 u exportu obálky a 502 u veřejného API); kód, zpráva, nápověda ani odkaz na dokumentaci se nemění.
Čtení chybové odpovědi
{
"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-..."
}
Pokud dostaneš odpověď, které nerozumíš, nejrychlejší postup je:
- Poznamenej si
code. - Zkontroluj svůj URL builder — většina selhání jsou chyby v podpisu, ne problémy s účtem.
- Podle kódu níže najdi přesnou příčinu a opravu.
- V dashboardu otevři Render Logs a filtruj podle stejného
error_code— každý řádek zobrazuje požadované parametry, takže můžeš reprodukovat (a ověřit, žerequest_idsedí).
Podepisování a autentizace
missing_signature
V tvém požadavku chybí query parametry key a/nebo s (podpis).
Oprava: ujisti se, že tvá URL obsahuje jak key=<api-key>, tak s=<hmac-signature>. Použij SDK nebo postup /docs/hmac-signature-guide pro její sestavení.
invalid_signature
Hodnota s neodpovídala tomu, co pro tuto URL vytváří tvůj HMAC secret.
Oprava: podpis pokrývá všechny query parametry kromě s, s klíči seřazenými. Změna jakéhokoli parametru — včetně přeřazení, rozdílů v URL-encoding nebo přidání bílého znaku — podpis zneplatní. Po každé změně podepiš znovu. Ověř, že tvůj secret je stejný jako ten, který se zobrazil při vytvoření API klíče.
invalid_signature_format
Hodnota s není 64znakový hex řetězec.
Oprava: podpis musí být raw SHA-256 hex (malá písmena a-f0-9). Pokud výstup kóduješ do base64 nebo ho zkracuješ, použij prostý hex.
expired_timestamp
Časové razítko t, které jsi poskytl, je starší než 5 minut.
Oprava: generuj časové razítko znovu pokaždé, když sestavuješ URL. Tento kód se týká staršího postupu s podepsanou URL; aktuální postup HMAC v2 žádné časové razítko nemá.
invalid_api_key
key, které jsi předal, neexistuje.
Oprava: zkopíruj celý API klíč z dashboardu — je to veřejný identifikátor začínající na sk_. Je veřejný a v URL je bezpečný; secret (nikdy v URL) je to, co prokazuje vlastnictví.
missing_hmac_secret
API klíč nemá nakonfigurovaný HMAC secret.
Oprava: vytvoř v dashboardu nový API klíč — HMAC secret se vygeneruje a zobrazí jednou při vytvoření.
Parametr / vstup
invalid_image_url
Prop nesoucí URL (image, brand_logo, logo, avatar, background_image, ...) není veřejná http(s) URL.
Oprava: předej veřejně dostupnou URL https://.... Localhost, privátní IP adresy a samotné cesty jsou odmítnuty, aby se zabránilo server-side request forgery.
Předplatné
subscription_required (402)
Požadavek dorazil na Dynamic API, ale tvůj účet nemá aktivní plán. Přístup k API je pouze na předplatné: plán je podmínkou a nese stejnou škálu pokrytí a možností, jakou prodávají aplikace FastOG. Samotné rendery se neměří — neexistuje měsíční kvóta renderů ani účtování nadlimitního čerpání.
Oprava: vyber v dashboardu plán Dynamic API a vytvoř API klíč. Odpověď obsahuje top_up_url odkazující na stránku s plány.
Služba vykreslování
store_blocked (403)
Vykreslování pro obchod za tímto klíčem bylo FastOG pozastaveno (například kvůli zneužití nebo nekontrolovanému využívání). Obaly již uložené v mezipaměti na edge mohou dál sloužit, dokud nevyprší. Pro vyřešení kontaktuj podporu; nic, co můžeš změnit v požadavku, to neopraví.
render_unreachable
Službu vykreslování nebylo možné kontaktovat (krátké okno restartu).
Oprava: zkus to znovu za několik sekund. Vykreslení se pro tento pokus nezapočítalo.
render_failed
Služba vykreslování vrátila pro tvůj požadavek chybu.
Oprava: zkontroluj props své šablony — dlouhé/chybně formátované hodnoty, nepodporovaná pole nebo nedostupný upstream obrázek. Odpověď obsahuje podkladovou status. Vykreslení se nezapočítalo.
Administrátorská rozhraní obchodu
Tyto kódy odpovídají z administrace Shopify a z WooCommerce Studio — z vestavěných editorů, ve kterých obchodník pracuje, nikoli z podepsaného API. Několik z nich je společných s veřejným API (invalid_image_url, render_failed, invalid_signature); ty si zachovávají výše zdokumentovanou položku.
| Kód | HTTP | Co to znamená a co udělat |
|---|---|---|
invalid_shop |
422 | Shopify obchod se nepodařilo identifikovat. Znovu načti aplikaci FastOG ze svého Shopify adminu, aby vložený požadavek znovu nesl obchod, a pak to zkus znovu. |
invalid_shop_or_page |
422 | Obchod nebo typ stránky je neznámý. Otevři aplikaci FastOG ze svého Shopify adminu a v editoru vyber typ stránky pro cover. |
invalid_store |
422 | WooCommerce obchod se nepodařilo identifikovat. Znovu otevři Studio ze svého WordPress adminu, aby se znovu předložil token obchodu, a pak to zkus znovu. |
invalid_store_or_page |
422 | Obchod nebo typ stránky je neznámý. Znovu otevři Studio ze svého WordPress adminu a vyber typ stránky pro cover, který editor nabízí. |
missing_api_key |
422 | Obchod nemá podpisový klíč. Dokonči instalaci pluginu ze svého WordPress adminu, aby FastOG mohl obchodu vydat jeho podpisový klíč. |
store_ownership_unverified |
403 | WordPress web se nepodařilo ověřit. Musí být dostupný přes veřejné HTTPS s povoleným REST API. |
community_is_free |
422 | Plán Community je zdarma. Je to výchozí bezplatný plán a nelze ho zakoupit; pro upgrade vyber placenou úroveň. |
not_installed |
404 | FastOG není pro tento obchod nainstalován. Nainstaluj aplikaci FastOG z Shopify App Store pro tento obchod a pak ji znovu otevři. |
oauth_required |
409 | Obchod musí FastOG znovu autorizovat. Znovu spusť OAuth instalaci FastOG ze svého Shopify adminu; uložené oprávnění bylo odvoláno nebo se změnily jeho scopes. |
reconnect_required |
409 | Připojení k Shopify je třeba znovu navázat. Použij tlačítko Reconnect v aplikaci FastOG, aby se vydal nový access token. |
token_rejected |
409 | Shopify vydal access token a pak ho odmítl. Zkus reconnect jednou znovu; pokud ho Shopify bude odmítat dál, přeinstaluj aplikaci. |
unauthorized |
401 | Požadavek nenese platnou session pro toto rozhraní. Znovu načti aplikaci FastOG ze svého platformového adminu, aby se připojil nový session token, a pak to zkus znovu. |
shop_not_found |
404 | Obchod už ve FastOG neexistuje. Přeinstaluj FastOG ze svého Shopify adminu, aby se záznam obchodu znovu vytvořil. |
invalid_product |
422 | Odkaz na produkt není platný. Znovu načti stránku produktu a otevři FastOG; odeslané product id chybělo nebo nebylo číselné. |
invalid_product_cover |
422 | Payload coveru produktu je poškozený. Znovu načti editor a ulož znovu; props, style a signals musí být každý objekt. |
product_not_found |
404 | Produkt se nepodařilo načíst z obchodu. Zkontroluj, že produkt stále existuje a je publikovaný, a pak znovu načti editor. |
product_customization_not_on_plan |
403 | Přizpůsobení coveru pro jednotlivé produkty není v tomto plánu. Upgraduj, nebo místo toho uprav sdílený cover produktu. |
no_product_handles |
422 | Nebyly nalezeny žádné produkty k obnovení. Publikuj alespoň jeden produkt s veřejným handle a pak zkus obnovení share-preview znovu. |
invalid_style |
422 | Blok stylu nelze použít. Znovu načti editor a znovu vyber barvy a fonty; jednu hodnotu nešlo normalizovat. |
invalid_template |
422 | Požadovaná šablona není v katalogu této platformy. Vyber jeden z layoutů, které editor nabízí. |
invalid_preset |
422 | Název presetu není takový, jaký tato platforma nabízí. Vyber preset na obrazovce nastavení. |
invalid_set |
422 | Payload sady coverů chybí nebo je poškozený. Znovu načti obrazovku nastavení a znovu vyber sadu. |
preset_not_applyable |
422 | Preset nelze použít na všechny typy stránek. Vyber jiný preset; tomuto chybí cover alespoň pro jeden typ stránky. |
template_not_available |
422 | Šablona není ve vykreslitelném katalogu. Vyber layout, který picker nabízí. |
template_not_available_on_shopify |
422 | Šablona není dostupná na Shopify obchodech. Vyber layout, který nabízí Shopify editor. |
template_not_available_on_woocommerce |
422 | Šablona není dostupná na WooCommerce obchodech. Vyber layout, který nabízí Studio. |
template_unavailable |
422 | Šablona není pro tento obchod dostupná. Vyber layout, který editor nabízí; je vyřazená, neznámá, nebo nad rámec toho, co obchod smí vykreslit. |
template_not_on_plan |
403 | Šablona vyžaduje vyšší plán. Změň plán, nebo vyber layout, který aktuální plán pokrývá. Odpověď uvádí plán v requires. |
template_requires_higher_plan |
403 | Šablona vyžaduje vyšší plán. Odpověď uvádí plán v requires. |
no_rule |
404 | Pro tento typ stránky zatím neexistuje žádné pravidlo coveru. Nejprve v editoru ulož cover pro tento typ stránky. |
cover_not_configured |
404 | Zatím nebyl uložen žádný cover produktu. Před stažením nebo sdílením ulož cover produktu. |
schedule_only_product |
422 | Plánování kampaně existuje jen pro covery produktů. Odstraň datum revertu, nebo přesuň kampaň na cover produktu. |
not_dismissible |
422 | To oznámení nelze zavřít. Znovu načti stránku; už bylo vyřazeno, nebo patří jinému obchodu. |
unsupported_locale |
422 | Tento jazyk UI není pro tuto aplikaci přibalen. Vyber jeden z jazyků, které odpověď uvádí v supported. |
no_setup_sets |
422 | Nepodařilo se sestavit žádné kurátorované sady coverů. Zkus obrazovku nastavení znovu; pokud zůstane prázdná, kontaktuj podporu. |
export_unavailable |
403 | Stahování není v tomto plánu. Pro stažení souborů coverů upgraduj na Pro nebo výš. |
cancellation_failed |
502 | Zrušení předplatného bylo odmítnuto. Zkus to za chvíli znovu; pokud to bude selhávat dál, zruš předplatné na stránce fakturace Shopify nebo kontaktuj podporu. |
logo_override_on_plan |
403 | Přepsání loga není v tomto plánu. Upgraduj, nebo přepsání loga zruš. |
invalid_logo |
422 | Soubor loga není přijímaný obrázek. Nahraj PNG, JPEG nebo WebP pod limit velikosti zobrazený v editoru. |
invalid_brand_image |
422 | Referenční obrázek značky nelze použít. Nahraj podporovaný obrázek pod limit velikosti, nebo referenci zruš a ulož znovu. |
brand_image_too_large |
422 | Referenční obrázek značky je příliš velký. Zmenši soubor a nahraj ho znovu. |
brand_colors_too_many |
422 | Bylo zadáno více než tři barvy značky. Pošli nejvýše tři hex barvy. |
upload_failed |
500 | Nahraný soubor se nepodařilo uložit. Zkus to znovu; pokud to bude selhávat dál, kontaktuj podporu — úložiště assetů nevrátilo veřejnou URL. |
attachment_upload_failed |
500 | Přílohu podpory se nepodařilo uložit. Pošli zprávu bez přílohy a pak soubor pošli e-mailem na podporu. |
invalid_webhook |
401 | Podpis webhooku obchodu se nepodařilo ověřit. Zkontroluj, že webhook secret v tvém nastavení FastOG ve WordPressu odpovídá tomu, který vydal FastOG. |
not_found |
404 | Tento endpoint už neexistuje. Znovu otevři Studio ze svého WordPress adminu. |
meta_refresh_unavailable |
503 | Obnovení share-preview není nakonfigurováno. Místo toho odkaz znovu nasdílej z Facebooku. |
theme_write_disabled |
409 | Úprava šablony není pro tuto aplikaci povolena. Použij theme app embed místo opravy souboru šablony. |
scope_required |
403 | FastOG nemá oprávnění v Shopify. Schval požadované scopes pomocí consent_url v odpovědi a pak opravu zkus znovu. |
Wix bridge
Wix bridge je podepisován aplikací Wix, nikoli relací obchodníka, takže jeho chyby jsou adresovány vývojáři aplikace. Každá odpověď stále nese code a request_id; id požadavku bridge je to z podepsaného obalu.
| Kód | HTTP | Co to znamená a co dělat |
|---|---|---|
invalid_bridge_signature |
401 | Podpis Wix bridge se nepodařilo ověřit. Znovu vytvoř požadavek se sdíleným tajemstvím, přesnou cestou a časovým razítkem mladším než pět minut. |
invalid_bridge_body |
400 | Tělo obalu bridge je poškozené. Pošli body jako objekt JSON a každé číslo v něm zakóduj jako řetězec, aby kanonický podpis seděl. |
replayed_bridge_request |
401 | Tento požadavek bridge už byl použit. Pro každé mutující volání vytvoř nový request_id. |
wix_site_not_installed |
403 | FastOG není na tomto Wix webu nainstalován. Nainstaluj aplikaci FastOG na web a pak ho znovu otevři. |
wix_site_not_provisioned |
422 | Wix web zatím nemá podpisové přihlašovací údaje. Přeinstaluj aplikaci FastOG, aby byl web vybaven API klíčem. |
invalid_page_type |
422 | Typ stránky není jeden z těch, které FastOG na Wixu pokrývá. Pošli jeden z typů stránek, které nabízí Studio. |
rule_not_found |
404 | Neexistuje pravidlo s tímto id. Obnov seznam; pravidlo bylo smazáno nebo patří jinému webu. |
invalid_target_id |
422 | Cílové id Wix není pro tento typ stránky platné. Pošli id, které aplikace Wix pro tento typ stránky poskytuje. |
invalid_preview |
422 | Datová část náhledu je poškozená. Přečti objekt details a najdi selhávající pole. |
invalid_rule |
422 | Datová část pravidla coveru je poškozená. Přečti objekt details; template je povinný a volitelné bloky musí být objekty. |
invalid_sync |
422 | Datová část synchronizace je poškozená. Přečti objekt details; target_type a target_id musí souhlasit. |
invalid_regenerate_url |
422 | Chybí URL k regeneraci. Pošli URL stránky v url. |
invalid_regenerate_host |
422 | URL nepatří hostiteli FastOG. Pošli URL coveru na fastog.com. |
ai_presets_unsupported |
422 | Sady coverů navržené AI se už negenerují. Vyber místo toho jeden z kurátorovaných vzhledů. |
original_tags_required |
422 | Původní meta tagy jsou povinné. Pošli original_tags (nebo current_tags), aby odinstalace mohla obnovit metadata webu. |
invalid_restored |
422 | Datová část obnovených klíčů je poškozená. Pošli restored jako pole klíčů metadat. |
invalid_seo_target |
422 | Typ cíle SEO je neznámý. V cestě použij site, pattern nebo item. |
invalid_seo_payload |
422 | Datová část metadat SEO je poškozená. Pošli target_id, current_tags a fastog_url jako absolutní URL s http(s). |
sync_failed |
500 | Synchronizace metadat do Wixu selhala. Zkus to znovu; pokud selhává dál, zkontroluj, že je web dostupný a aplikace je stále nainstalovaná. |
invalid_tier |
422 | Tento tarif FastOG na Wixu neprodává. Jako tier pošli starter, pro nebo scale. |
Demo plocha
Demo je prodejní konzole pouze pro vlastníka, nikoli endpoint pro obchodníky.
| Kód | HTTP | Co to znamená a co dělat |
|---|---|---|
url_required |
422 | Nebyla odeslána žádná URL. Před načtením karty vlož odkaz na obchod nebo produkt. |
unreadable_url |
422 | Tuto stránku nebylo možné načíst. Zkontroluj, že odkaz je veřejný a úplný; stránku za přihlášením nelze načíst. |
no_api_key |
422 | Není k dispozici žádný API klíč pro podepisování coverů. Vytvoř API klíč (nebo zadej platný); odpověď odkazuje na stránku API klíčů. |
no_presets |
500 | Nejsou nakonfigurovány žádné presety coverů. Nakonfiguruj na serveru alespoň jeden preset. |
Kódy editorů pravidel s rozsahem
Editory pravidel s rozsahem (Shopify admin a WooCommerce Studio) si tyto tokeny překládají samy do
jazyka obchodníka, takže jejich odpovědi obsahují error a code, ale žádné hint — druhý anglický
popis by se jen rozešel s lokalizovaným popisem, který obchodník skutečně vidí:
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.
Stále máš problém?
- Otevři stránku Render Logs v dashboardu — každý výsledek (úspěch i odmítnutí) je uveden s
error_code, stavovým kódem HTTP a požadovanými parametry. - Spusť
php artisan og:diagnosena podepsané URL, abys prošel celý pipeline a zjistil, která fáze selhává. - Podívej se do dokumentace v postranním panelu pro framework, který používáš (Next.js, Express, SvelteKit, ...).