Błędy API — co oznacza każdy kod i jak go naprawić
FastOG zwraca czytelne maszynowo kody błędów, gdy żądanie się nie powiedzie — renderowanie podpisanego obrazu OG lub wywołanie jednej z powierzchni administracyjnych dostępnych w produkcie. Każda odpowiedź z błędem zawiera:
error— starszy krótki token. Nadal obecny przy każdym błędzie, aby starszy klient działał dalej.code— ten sam stabilny, udokumentowany kod błędu (tabela poniżej), pod nazwą używaną przez publiczne API.message— jednozdaniowy opis tego, co poszło nie tak.hint— krótki, prosty opis tego, co poszło nie tak i jak to naprawić.docs_url— link do tej strony, zakotwiczony w sekcji dla danego kodu.request_id— wiąże ten błąd HTTP z wierszem w tabeli Render Logs w dashboardzie (zwracany również w nagłówku odpowiedziX-Request-ID). Powierzchnia, która nie ma nic do powiązania, odpowiadanull, ale klucz jest zawsze obecny.
Powierzchnie dostępne w produkcie — panel administracyjny Shopify, WooCommerce Studio, mostek Wix i demo — odpowiadają
tym samym envelope dla poniższych kodów, więc błąd oznacza to samo, gdziekolwiek go napotkasz. Powierzchnia
modułu może zachować status HTTP, który zawsze zwracała dla danego kodu (na przykład render_failed
odpowiada 503 przy eksporcie okładki i 502 w publicznym API); kod, komunikat, podpowiedź i link do dokumentacji się nie zmieniają.
Odczyt odpowiedzi z błędem
{
"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-..."
}
Jeśli otrzymasz odpowiedź, której nie rozumiesz, najszybsza droga to:
- Zanotuj
code. - Sprawdź swój builder URL — większość błędów to błędy podpisywania, a nie problemy z kontem.
- Dopasuj kod poniżej, aby znaleźć dokładną przyczynę i poprawkę.
- W dashboardzie otwórz Render Logs i filtruj po tym samym
error_code— każdy wiersz pokazuje żądane parametry, więc możesz odtworzyć żądanie (i potwierdzić, żerequest_idsię zgadza).
Podpisywanie i uwierzytelnianie
missing_signature
W Twoim żądaniu brakuje parametrów zapytania key i/lub s (sygnatura).
Poprawka: upewnij się, że Twój URL zawiera zarówno key=<api-key>, jak i s=<hmac-signature>. Użyj SDK lub przejdź przez przewodnik /docs/hmac-signature-guide, aby go zbudować.
invalid_signature
Wartość s nie zgadzała się z tym, co Twój sekret HMAC generuje dla tego URL-a.
Poprawka: sygnatura obejmuje każdy parametr zapytania oprócz s, z posortowanymi kluczami. Zmiana dowolnego parametru — w tym zmiana kolejności, różnice w kodowaniu URL lub dodanie białych znaków — unieważnia sygnaturę. Podpisuj ponownie po każdej zmianie. Upewnij się, że Twój sekret to ten sam, który został wyświetlony przy tworzeniu klucza API.
invalid_signature_format
Wartość s nie jest 64-znakowym ciągiem hex.
Poprawka: sygnatura musi być surowym hex SHA-256 (małe litery a-f0-9). Jeśli kodujesz wynik w base64 lub go obcinasz, użyj zwykłego hex.
expired_timestamp
Podany przez Ciebie znacznik czasu t jest starszy niż 5 minut.
Poprawka: generuj znacznik czasu od nowa za każdym razem, gdy budujesz URL. Ten kod dotyczy starszego przepływu z podpisanym URL-em; obecny przepływ HMAC v2 nie ma znacznika czasu.
invalid_api_key
Przekazany przez Ciebie key nie istnieje.
Poprawka: skopiuj pełny klucz API z dashboardu — to publiczny identyfikator zaczynający się od sk_. Jest publiczny i bezpieczny w URL-ach; to sekret (nigdy w URL-ach) dowodzi posiadania.
missing_hmac_secret
Klucz API nie ma skonfigurowanego sekretu HMAC.
Poprawka: utwórz nowy klucz API w dashboardzie — sekret HMAC jest generowany i wyświetlany jednorazowo przy tworzeniu.
Parametr / dane wejściowe
invalid_image_url
Właściwość zawierająca URL (image, brand_logo, logo, avatar, background_image, ...) nie jest publicznym adresem URL http(s).
Poprawka: przekaż publicznie dostępny adres URL https://.... Localhost, prywatne adresy IP i same ścieżki są odrzucane, aby zapobiec server-side request forgery.
Subskrypcja
subscription_required (402)
Żądanie trafiło do Dynamic API, ale Twoje konto nie ma aktywnego planu. Dostęp do API jest wyłącznie w ramach subskrypcji: plan jest warunkiem dostępu i oferuje ten sam zakres pokrycia i drabinkę możliwości, które sprzedają aplikacje FastOG. Same rendery nie są rozliczane — nie ma miesięcznego limitu renderów ani opłat za przekroczenie.
Poprawka: wybierz plan Dynamic API w panelu (dashboard) i utwórz klucz API. Odpowiedź zawiera top_up_url wskazujący na stronę z planami.
Usługa renderowania
store_blocked (403)
Renderowanie dla sklepu powiązanego z tym kluczem zostało wstrzymane przez FastOG (na przykład z powodu nadużyć lub niekontrolowanego użycia). Okładki już zapisane w pamięci podręcznej na edge mogą być nadal serwowane, dopóki nie wygasną. Skontaktuj się z pomocą techniczną, aby to rozwiązać; nic, co możesz zmienić w żądaniu, tego nie naprawi.
render_unreachable
Nie udało się połączyć z usługą renderowania (krótkie okno restartu).
Poprawka: ponów próbę za kilka sekund. Render nie został policzony dla tej próby.
render_failed
Usługa renderowania zwróciła błąd dla Twojego żądania.
Poprawka: zweryfikuj właściwości szablonu (template props) — zbyt długie/nieprawidłowo sformatowane wartości, nieobsługiwane pola lub nieosiągalny obraz źródłowy. Odpowiedź zawiera bazowy status. Render nie został policzony.
Powierzchnie administracyjne sklepu
Te kody odpowiadają z panelu administracyjnego Shopify i z WooCommerce Studio — osadzonych edytorów, w których pracuje sprzedawca, a nie z podpisanego API. Kilka z nich jest współdzielonych z publicznym API (invalid_image_url, render_failed, invalid_signature); te zachowują wpis udokumentowany powyżej.
| Kod | HTTP | Co to oznacza i co zrobić |
|---|---|---|
invalid_shop |
422 | Nie udało się zidentyfikować sklepu Shopify. Przeładuj aplikację FastOG z panelu administracyjnego Shopify, aby osadzone żądanie ponownie zawierało sklep, a następnie spróbuj ponownie. |
invalid_shop_or_page |
422 | Sklep lub typ strony jest nieznany. Otwórz aplikację FastOG z panelu administracyjnego Shopify i wybierz typ strony okładki w edytorze. |
invalid_store |
422 | Nie udało się zidentyfikować sklepu WooCommerce. Otwórz ponownie Studio z panelu administracyjnego WordPress, aby token sklepu został ponownie przekazany, a następnie spróbuj ponownie. |
invalid_store_or_page |
422 | Sklep lub typ strony jest nieznany. Otwórz ponownie Studio z panelu administracyjnego WordPress i wybierz typ strony okładki oferowany przez edytor. |
missing_api_key |
422 | Sklep nie ma klucza podpisującego. Dokończ instalację wtyczki z panelu administracyjnego WordPress, aby FastOG mógł wydać sklepowi jego klucz podpisujący. |
store_ownership_unverified |
403 | Nie udało się zweryfikować witryny WordPress. Musi być osiągalna przez publiczny HTTPS z włączonym REST API. |
community_is_free |
422 | Plan Community jest darmowy. To domyślny darmowy plan i nie można go kupić; wybierz płatny plan, aby dokonać ulepszenia. |
not_installed |
404 | FastOG nie jest zainstalowany dla tego sklepu. Zainstaluj aplikację FastOG ze sklepu Shopify App Store dla tego sklepu, a następnie otwórz ją ponownie. |
oauth_required |
409 | Sklep musi ponownie autoryzować FastOG. Uruchom ponownie instalację OAuth FastOG z panelu administracyjnego Shopify; zapisane uprawnienie zostało cofnięte lub zmieniły się jego zakresy. |
reconnect_required |
409 | Połączenie z Shopify wymaga ponownego ustanowienia. Użyj przycisku Reconnect w aplikacji FastOG, aby wydano nowy token dostępu. |
token_rejected |
409 | Shopify wydał token dostępu, a następnie go odrzucił. Ponów połączenie raz; jeśli Shopify nadal go odrzuca, zainstaluj aplikację ponownie. |
unauthorized |
401 | Żądanie nie zawiera prawidłowej sesji dla tego interfejsu. Przeładuj aplikację FastOG z panelu administracyjnego platformy, aby dołączono nowy token sesji, a następnie spróbuj ponownie. |
shop_not_found |
404 | Sklep nie istnieje już w FastOG. Zainstaluj ponownie FastOG z panelu administracyjnego Shopify, aby odtworzyć rekord sklepu. |
invalid_product |
422 | Odwołanie do produktu jest nieprawidłowe. Przeładuj stronę produktu i otwórz ponownie FastOG; przesłany identyfikator produktu był brakujący lub nie był liczbą. |
invalid_product_cover |
422 | Ładunek okładki produktu jest nieprawidłowo sformatowany. Przeładuj edytor i zapisz ponownie; props, style i signals muszą być obiektami. |
product_not_found |
404 | Nie udało się odczytać produktu ze sklepu. Sprawdź, czy produkt nadal istnieje i jest opublikowany, a następnie przeładuj edytor. |
product_customization_not_on_plan |
403 | Dostosowywanie okładki dla poszczególnych produktów nie jest dostępne w tym planie. Ulepsz plan lub edytuj współdzieloną okładkę produktu. |
no_product_handles |
422 | Nie znaleziono produktów do odświeżenia. Opublikuj co najmniej jeden produkt z publicznym handle, a następnie ponów odświeżanie podglądu udostępniania. |
invalid_style |
422 | Blok stylu jest nieużywalny. Przeładuj edytor i ponownie wybierz kolory i czcionki; jednej wartości nie udało się znormalizować. |
invalid_template |
422 | Żądany szablon nie znajduje się w katalogu tej platformy. Wybierz jeden z układów oferowanych przez edytor. |
invalid_preset |
422 | Nazwa presetu nie jest oferowana przez tę platformę. Wybierz preset z ekranu konfiguracji. |
invalid_set |
422 | Ładunek zestawu okładek jest brakujący lub nieprawidłowo sformatowany. Przeładuj ekran konfiguracji i ponownie wybierz zestaw. |
preset_not_applyable |
422 | Presetu nie można zastosować do każdego typu strony. Wybierz inny preset; w tym brakuje okładki dla co najmniej jednego typu strony. |
template_not_available |
422 | Szablon nie znajduje się w katalogu szablonów do renderowania. Wybierz układ oferowany przez selektor. |
template_not_available_on_shopify |
422 | Szablon nie jest dostępny w sklepach Shopify. Wybierz układ oferowany przez edytor Shopify. |
template_not_available_on_woocommerce |
422 | Szablon nie jest dostępny w sklepach WooCommerce. Wybierz układ oferowany przez Studio. |
template_unavailable |
422 | Szablon nie jest dostępny dla tego sklepu. Wybierz układ oferowany przez edytor; jest wycofany, nieznany lub przekracza to, co sklep może wyrenderować. |
template_not_on_plan |
403 | Szablon wymaga wyższego planu. Zmień plan lub wybierz układ objęty bieżącym planem. Odpowiedź wskazuje plan w requires. |
template_requires_higher_plan |
403 | Szablon wymaga wyższego planu. Odpowiedź wskazuje plan w requires. |
no_rule |
404 | Nie ma jeszcze reguły okładki dla tego typu strony. Najpierw zapisz okładkę dla tego typu strony w edytorze. |
cover_not_configured |
404 | Nie zapisano jeszcze okładki produktu. Zapisz okładkę produktu przed jej pobraniem lub udostępnieniem. |
schedule_only_product |
422 | Planowanie kampanii istnieje tylko dla okładek produktów. Usuń datę przywrócenia lub przenieś kampanię do okładki produktu. |
not_dismissible |
422 | Tego ogłoszenia nie można odrzucić. Przeładuj stronę; zostało już wycofane lub należy do innego sklepu. |
unsupported_locale |
422 | Ten język interfejsu nie jest dołączony do tej aplikacji. Wybierz jeden z języków wymienionych w odpowiedzi w supported. |
no_setup_sets |
422 | Nie udało się złożyć żadnych wyselekcjonowanych zestawów okładek. Ponów ekran konfiguracji; jeśli pozostaje pusty, skontaktuj się z pomocą techniczną. |
export_unavailable |
403 | Pobieranie nie jest dostępne w tym planie. Ulepsz do Pro lub wyższego, aby pobierać pliki okładek. |
cancellation_failed |
502 | Anulowanie subskrypcji zostało odrzucone. Spróbuj ponownie za chwilę; jeśli nadal się nie udaje, anuluj na stronie rozliczeń Shopify lub skontaktuj się z pomocą techniczną. |
logo_override_on_plan |
403 | Zastąpienie logo nie jest dostępne w tym planie. Ulepsz plan lub usuń zastąpienie logo. |
invalid_logo |
422 | Plik logo nie jest akceptowanym obrazem. Prześlij PNG, JPEG lub WebP poniżej limitu rozmiaru pokazanego w edytorze. |
invalid_brand_image |
422 | Obraz referencyjny marki jest nieużywalny. Prześlij obsługiwany obraz poniżej limitu rozmiaru lub usuń referencję i zapisz ponownie. |
brand_image_too_large |
422 | Obraz referencyjny marki jest za duży. Zmniejsz plik i prześlij go ponownie. |
brand_colors_too_many |
422 | Podano więcej niż trzy kolory marki. Prześlij co najwyżej trzy kolory w formacie hex. |
upload_failed |
500 | Nie udało się zapisać przesłanego pliku. Spróbuj ponownie; jeśli nadal się nie udaje, skontaktuj się z pomocą techniczną — magazyn zasobów nie zwrócił publicznego URL. |
attachment_upload_failed |
500 | Nie udało się zapisać załącznika do zgłoszenia. Wyślij wiadomość bez załącznika, a następnie wyślij plik e-mailem do pomocy technicznej. |
invalid_webhook |
401 | Podpis webhooka sklepu nie został zweryfikowany. Sprawdź, czy sekret webhooka w ustawieniach FastOG w WordPress jest zgodny z tym wydanym przez FastOG. |
not_found |
404 | Ten endpoint już nie istnieje. Otwórz ponownie Studio z panelu administracyjnego WordPress. |
meta_refresh_unavailable |
503 | Odświeżanie podglądu udostępniania nie jest skonfigurowane. Udostępnij link ponownie z Facebooka. |
theme_write_disabled |
409 | Edycja motywu nie jest włączona dla tej aplikacji. Użyj osadzenia aplikacji motywu zamiast poprawki pliku motywu. |
scope_required |
403 | FastOG nie ma uprawnienia Shopify. Zatwierdź żądane zakresy za pomocą consent_url w odpowiedzi, a następnie ponów poprawkę. |
Most Wix
Most Wix jest podpisywany przez aplikację Wix, a nie przez sesję sprzedawcy, więc jego błędy są adresowane do dewelopera aplikacji. Każda odpowiedź nadal zawiera code i request_id; identyfikator żądania mostu to ten z podpisanego envelope'a.
| Kod | HTTP | Co to oznacza i co zrobić |
|---|---|---|
invalid_bridge_signature |
401 | Podpis mostu Wix nie został zweryfikowany. Wygeneruj żądanie ponownie ze wspólnym sekretem, dokładną ścieżką i znacznikiem czasu młodszym niż pięć minut. |
invalid_bridge_body |
400 | Treść envelope'a mostu jest nieprawidłowa. Wyślij body jako obiekt JSON i zakoduj każdą liczbę w nim jako string, aby podpis kanoniczny się zgadzał. |
replayed_bridge_request |
401 | To żądanie mostu zostało już użyte. Wygeneruj nowy request_id dla każdego wywołania modyfikującego. |
wix_site_not_installed |
403 | FastOG nie jest zainstalowany na tej stronie Wix. Zainstaluj aplikację FastOG na stronie, a następnie otwórz ją ponownie. |
wix_site_not_provisioned |
422 | Strona Wix nie ma jeszcze danych uwierzytelniających do podpisywania. Zainstaluj ponownie aplikację FastOG, aby strona została wyposażona w klucz API. |
invalid_page_type |
422 | Typ strony nie jest obsługiwany przez FastOG na Wix. Wyślij jeden z typów stron oferowanych przez Studio. |
rule_not_found |
404 | Nie ma reguły o tym id. Odśwież listę; reguła została usunięta lub należy do innej strony. |
invalid_target_id |
422 | Identyfikator celu Wix jest nieprawidłowy dla tego typu strony. Wyślij id, które aplikacja Wix dostarcza dla tego typu strony. |
invalid_preview |
422 | Ładunek podglądu jest nieprawidłowy. Sprawdź obiekt details, aby znaleźć błędne pole. |
invalid_rule |
422 | Ładunek reguły okładki jest nieprawidłowy. Sprawdź obiekt details; template jest wymagany, a opcjonalne bloki muszą być obiektami. |
invalid_sync |
422 | Ładunek synchronizacji jest nieprawidłowy. Sprawdź obiekt details; target_type i target_id muszą się zgadzać. |
invalid_regenerate_url |
422 | Brakuje URL-a do ponownego wygenerowania. Wyślij URL strony w url. |
invalid_regenerate_host |
422 | URL nie należy do hosta FastOG. Wyślij URL okładki z fastog.com. |
ai_presets_unsupported |
422 | Zestawy okładek projektowane przez AI nie są już generowane. Wybierz jeden z wyselekcjonowanych wyglądów. |
original_tags_required |
422 | Oryginalne tagi metadanych są wymagane. Wyślij original_tags (lub current_tags), aby odinstalowanie mogło przywrócić metadane strony. |
invalid_restored |
422 | Ładunek przywracanych kluczy jest nieprawidłowy. Wyślij restored jako tablicę kluczy metadanych. |
invalid_seo_target |
422 | Typ celu SEO jest nieznany. Użyj site, pattern lub item w ścieżce. |
invalid_seo_payload |
422 | Ładunek metadanych SEO jest nieprawidłowy. Wyślij target_id, current_tags i fastog_url jako bezwzględny URL http(s). |
sync_failed |
500 | Synchronizacja metadanych do Wix nie powiodła się. Ponów próbę; jeśli nadal się nie udaje, sprawdź, czy strona jest osiągalna i czy aplikacja jest nadal zainstalowana. |
invalid_tier |
422 | Ten plan nie jest sprzedawany przez FastOG na Wix. Wyślij starter, pro lub scale jako tier. |
Powierzchnia demo
Demo to konsola sprzedażowa dostępna tylko dla właściciela, a nie endpoint dla sprzedawców.
| Kod | HTTP | Co to oznacza i co zrobić |
|---|---|---|
url_required |
422 | Nie wysłano żadnego URL-a. Wklej link do sklepu lub produktu przed odczytaniem karty. |
unreadable_url |
422 | Nie udało się odczytać tej strony. Sprawdź, czy link jest publiczny i kompletny; strony za logowaniem nie da się odczytać. |
no_api_key |
422 | Brak klucza API do podpisywania okładek. Utwórz klucz API (lub wprowadź prawidłowy); odpowiedź zawiera link do strony kluczy API. |
no_presets |
500 | Nie skonfigurowano żadnych presetów okładek. Skonfiguruj co najmniej jeden preset na serwerze. |
Kody edytorów reguł z zakresem
Edytory reguł z zakresem (panel administracyjny Shopify i WooCommerce Studio) same tłumaczą te tokeny na język
samego merchanta, więc ich odpowiedzi zawierają error i code, ale nie hint — drugi angielski
opis tylko odbiegałby od zlokalizowanego, który merchant faktycznie widzi:
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.
Nadal masz problem?
- Otwórz stronę Render Logs w panelu — każde zdarzenie (sukces i odrzucenie) jest tam wymienione wraz z jego
error_code, statusem HTTP i żądanymi parametrami. - Uruchom
php artisan og:diagnosena podpisanym URL, aby przejść przez cały potok i zobaczyć, na którym etapie występuje błąd. - Sprawdź w pasku bocznym dokumentację dla frameworka, którego używasz (Next.js, Express, SvelteKit, ...).