Тема

Ошибки API — что означает каждый код и как это исправить

FastOG возвращает машиночитаемые коды ошибок, когда запрос завершается неудачно — при подписанном рендере OG-изображения или при вызове одной из встроенных административных поверхностей продукта. Каждый ответ с ошибкой содержит:

  • error — устаревший короткий токен. По-прежнему присутствует при каждом сбое, чтобы старый клиент продолжал работать.
  • code — тот же стабильный документированный код ошибки (таблица ниже) под именем, которое использует публичный API.
  • message — описание того, что пошло не так, в одном предложении.
  • hint — краткое описание простым языком того, что пошло не так и как это исправить.
  • docs_url — ссылка на эту страницу с якорем на раздел для этого кода.
  • request_id — связывает этот сбой HTTP со строкой в таблице Render Logs в панели управления (также возвращается в заголовке ответа X-Request-ID). Поверхность, которой нечего сопоставлять, отвечает null, но ключ присутствует всегда.

Встроенные поверхности продукта — административная панель Shopify, WooCommerce Studio, мост Wix и демо — отвечают тем же конвертом для кодов ниже, поэтому сбой означает одно и то же, где бы вы с ним ни столкнулись. Поверхность модуля может сохранять HTTP-статус, который она всегда возвращала для кода (например, render_failed отвечает 503 при экспорте обложки и 502 в публичном API); код, сообщение, подсказка и ссылка на документацию не меняются.

Чтение ответа с ошибкой

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-..."
}

Если вы получили ответ, который не понимаете, самый быстрый путь таков:

  1. Запишите code.
  2. Проверьте сборщик URL — большинство сбоев вызваны ошибками подписи, а не проблемами с аккаунтом.
  3. Найдите соответствующий код ниже, чтобы узнать точную причину и способ исправления.
  4. В панели управления откройте Render Logs и отфильтруйте по тому же error_code — каждая строка показывает запрошенные параметры, чтобы вы могли воспроизвести ситуацию (и убедиться, что request_id совпадает).

Подпись и аутентификация

missing_signature

В вашем запросе отсутствуют параметры запроса key и/или s (подпись).

Исправление: убедитесь, что ваш URL содержит и key=<api-key>, и s=<hmac-signature>. Используйте SDK или инструкцию /docs/hmac-signature-guide, чтобы его построить.

invalid_signature

Значение s не совпало с тем, что ваш HMAC-секрет выдаёт для этого URL.

Исправление: подпись охватывает все параметры запроса, кроме s, с отсортированными ключами. Изменение любого параметра — включая переупорядочивание, различия в URL-кодировании или добавление пробелов — делает подпись недействительной. Подписывайте заново после каждого изменения. Убедитесь, что ваш секрет совпадает с тем, который был показан при создании API-ключа.

invalid_signature_format

Значение s не является 64-символьной hex-строкой.

Исправление: подпись должна быть в виде сырого SHA-256 hex (нижний регистр a-f0-9). Если вы кодируете в base64 или обрезаете вывод, используйте обычный hex.

expired_timestamp

Предоставленная вами метка времени t старше 5 минут.

Исправление: генерируйте метку времени заново каждый раз, когда строите URL. Этот код относится к устаревшему потоку подписанных URL; в текущем потоке HMAC v2 метки времени нет.

invalid_api_key

Переданный вами key не существует.

Исправление: скопируйте полный API-ключ из панели управления — это публичный идентификатор, начинающийся с sk_. Он публичный и безопасен в URL; именно секрет (никогда не в URL) подтверждает владение.

missing_hmac_secret

Для API-ключа не настроен HMAC-секрет.

Исправление: создайте новый API-ключ в панели управления — HMAC-секрет генерируется и показывается один раз при создании.


Параметр / входные данные

invalid_image_url

Свойство, содержащее URL (image, brand_logo, logo, avatar, background_image, ...), не является публичным http(s) URL.

Исправление: передайте публично доступный по сети URL https://.... Localhost, частные IP-адреса и пути без хоста отклоняются для предотвращения подделки запросов на стороне сервера.


Подписка

subscription_required (402)

Запрос достиг Dynamic API, но у вашей учётной записи нет активного тарифа. Доступ к API предоставляется только по подписке: тариф является условием доступа и включает ту же линейку покрытия и возможностей, которую предлагают приложения FastOG. Сами рендеры не тарифицируются — нет ни месячной квоты на рендеры, ни оплаты за превышение.

Решение: выберите тариф Dynamic API в панели управления и создайте ключ API. В ответе будет top_up_url со ссылкой на страницу тарифов.


Сервис рендеринга

store_blocked (403)

Рендеринг для магазина, которому принадлежит этот ключ, приостановлен FastOG (например, из-за злоупотребления или неконтролируемого использования). Уже закэшированные на периферии изображения могут продолжать отдаваться до истечения их срока действия. Обратитесь в поддержку, чтобы решить вопрос; никакие изменения в запросе это не исправят.

render_unreachable

Не удалось связаться с сервисом рендеринга (кратковременное окно перезапуска).

Исправление: повторите попытку через несколько секунд. Рендер не был засчитан для этой попытки.

render_failed

Сервис рендеринга вернул ошибку на ваш запрос.

Исправление: проверьте свойства шаблона (props) — слишком длинные или некорректные значения, неподдерживаемые поля или недоступное вышестоящее изображение. Ответ содержит исходную ошибку status. Рендер не был засчитан.


Интерфейсы администратора магазина

Эти коды отвечают из административной панели Shopify и WooCommerce Studio — встроенных редакторов, в которых работает продавец, а не из подписанного API. Несколько из них используются совместно с публичным API (invalid_image_url, render_failed, invalid_signature); для них сохраняется описание, приведённое выше.

Код HTTP Что это значит и что делать
invalid_shop 422 Не удалось определить магазин Shopify. Перезагрузите приложение FastOG из панели администратора Shopify, чтобы встроенный запрос снова содержал магазин, затем повторите попытку.
invalid_shop_or_page 422 Магазин или тип страницы неизвестен. Откройте приложение FastOG из панели администратора Shopify и выберите тип страницы обложки в редакторе.
invalid_store 422 Не удалось определить магазин WooCommerce. Снова откройте Studio из панели администратора WordPress, чтобы токен магазина был передан заново, затем повторите попытку.
invalid_store_or_page 422 Магазин или тип страницы неизвестен. Снова откройте Studio из панели администратора WordPress и выберите тип страницы обложки, который предлагает редактор.
missing_api_key 422 У магазина нет ключа подписи. Завершите установку плагина из панели администратора WordPress, чтобы FastOG мог выдать магазину его ключ подписи.
store_ownership_unverified 403 Не удалось проверить сайт WordPress. Он должен быть доступен по публичному HTTPS с включённым REST API.
community_is_free 422 План Community бесплатный. Это бесплатный план по умолчанию, его нельзя купить; выберите платный тариф для перехода на него.
not_installed 404 FastOG не установлен для этого магазина. Установите приложение FastOG из Shopify App Store для этого магазина, затем откройте его снова.
oauth_required 409 Магазину нужно снова авторизовать FastOG. Повторно выполните установку FastOG через OAuth из панели администратора Shopify; сохранённое разрешение было отозвано или его области доступа изменились.
reconnect_required 409 Подключение к Shopify нужно установить заново. Используйте кнопку Reconnect в приложении FastOG, чтобы был выдан новый токен доступа.
token_rejected 409 Shopify выдал токен доступа, а затем отклонил его. Повторите переподключение один раз; если Shopify продолжит его отклонять, переустановите приложение.
unauthorized 401 Запрос не содержит действительной сессии для этой поверхности. Перезагрузите приложение FastOG из панели администратора вашей платформы, чтобы был прикреплён новый токен сессии, затем повторите попытку.
shop_not_found 404 Магазина больше нет в FastOG. Переустановите FastOG из панели администратора Shopify, чтобы заново создать запись магазина.
invalid_product 422 Ссылка на товар недействительна. Перезагрузите страницу товара и снова откройте FastOG; отправленный id товара отсутствовал или не был числом.
invalid_product_cover 422 Данные обложки товара имеют неверный формат. Перезагрузите редактор и сохраните снова; props, style и signals должны быть объектами.
product_not_found 404 Не удалось прочитать товар из магазина. Проверьте, что товар по-прежнему существует и опубликован, затем перезагрузите редактор.
product_customization_not_on_plan 403 Настройка обложки для отдельных товаров недоступна на этом плане. Перейдите на более высокий план или отредактируйте общую обложку товаров.
no_product_handles 422 Не найдено ни одного товара для обновления. Опубликуйте хотя бы один товар с публичным handle, затем снова попробуйте обновить превью для соцсетей.
invalid_style 422 Блок стилей непригоден к использованию. Перезагрузите редактор и заново выберите цвета и шрифты; одно значение не удалось нормализовать.
invalid_template 422 Запрошенного шаблона нет в каталоге этой платформы. Выберите один из макетов, которые предлагает редактор.
invalid_preset 422 Пресет с таким именем не предлагается на этой платформе. Выберите пресет на экране настройки.
invalid_set 422 Данные набора обложек отсутствуют или имеют неверный формат. Перезагрузите экран настройки и снова выберите набор.
preset_not_applyable 422 Пресет нельзя применить ко всем типам страниц. Выберите другой пресет; в этом отсутствует обложка хотя бы для одного типа страниц.
template_not_available 422 Шаблона нет в каталоге доступных для рендеринга. Выберите макет, который предлагает средство выбора.
template_not_available_on_shopify 422 Шаблон недоступен для магазинов Shopify. Выберите макет, который предлагает редактор Shopify.
template_not_available_on_woocommerce 422 Шаблон недоступен для магазинов WooCommerce. Выберите макет, который предлагает Studio.
template_unavailable 422 Шаблон недоступен для этого магазина. Выберите макет, который предлагает редактор; он снят с поддержки, неизвестен или превышает возможности магазина.
template_not_on_plan 403 Для шаблона нужен более высокий план. Смените план или выберите макет, который покрывает текущий план. В ответе план указан в requires.
template_requires_higher_plan 403 Для шаблона нужен более высокий план. В ответе план указан в requires.
no_rule 404 Для этого типа страниц ещё нет правила обложки. Сначала сохраните обложку для этого типа страниц в редакторе.
cover_not_configured 404 Обложка товара ещё не сохранена. Сохраните обложку товара, прежде чем скачивать её или делиться ею.
schedule_only_product 422 Планирование кампании существует только для обложек товаров. Удалите дату возврата или перенесите кампанию на обложку товара.
not_dismissible 422 Это объявление нельзя скрыть. Перезагрузите страницу; оно уже снято или принадлежит другому магазину.
unsupported_locale 422 Этот язык интерфейса не входит в комплект поставки приложения. Выберите один из языков, которые перечислены в ответе в supported.
no_setup_sets 422 Не удалось собрать ни одного подготовленного набора обложек. Повторите попытку на экране настройки; если он остаётся пустым, обратитесь в поддержку.
export_unavailable 403 Скачивание недоступно на этом плане. Перейдите на Pro или выше, чтобы скачивать файлы обложек.
cancellation_failed 502 В отмене подписки отказано. Повторите попытку через некоторое время; если ошибка повторяется, отмените подписку на странице выставления счетов Shopify или обратитесь в поддержку.
logo_override_on_plan 403 Замена логотипа недоступна на этом плане. Перейдите на более высокий план или сбросьте замену логотипа.
invalid_logo 422 Файл логотипа не является допустимым изображением. Загрузите PNG, JPEG или WebP в пределах ограничения размера, указанного в редакторе.
invalid_brand_image 422 Референсное изображение бренда непригодно к использованию. Загрузите поддерживаемое изображение в пределах ограничения размера или сбросьте референс и сохраните снова.
brand_image_too_large 422 Референсное изображение бренда слишком большое. Уменьшите файл и загрузите его снова.
brand_colors_too_many 422 Передано больше трёх цветов бренда. Отправьте не более трёх hex-цветов.
upload_failed 500 Не удалось сохранить загруженный файл. Повторите попытку; если ошибка повторяется, обратитесь в поддержку — хранилище ресурсов не вернуло публичный URL.
attachment_upload_failed 500 Не удалось сохранить вложение для поддержки. Отправьте сообщение без вложения, затем пришлите файл в поддержку по электронной почте.
invalid_webhook 401 Подпись вебхука магазина не прошла проверку. Проверьте, что секрет вебхука в настройках FastOG в WordPress совпадает с выданным FastOG.
not_found 404 Этой конечной точки больше не существует. Снова откройте Studio из панели администратора WordPress.
meta_refresh_unavailable 503 Обновление превью для соцсетей не настроено. Вместо этого повторно поделитесь ссылкой из Facebook.
theme_write_disabled 409 Редактирование темы не включено для этого приложения. Используйте встраивание приложения в тему вместо правки файлов темы.
scope_required 403 FastOG не хватает разрешения Shopify. Одобрите запрошенные области доступа с помощью consent_url в ответе, затем повторите исправление.

Мост Wix

Мост Wix подписывается приложением Wix, а не сессией мерчанта, поэтому его ошибки адресованы разработчику приложения. Каждый ответ по-прежнему содержит code и request_id; идентификатор запроса моста — это идентификатор из подписанного конверта.

Код HTTP Что это значит и что делать
invalid_bridge_signature 401 Подпись моста Wix не прошла проверку. Пересоздайте запрос с общим секретом, точным путём и меткой времени не старше пяти минут.
invalid_bridge_body 400 Тело конверта моста имеет неверный формат. Отправьте body как объект JSON и закодируйте каждое число внутри него как строку, чтобы каноническая подпись совпала.
replayed_bridge_request 401 Этот запрос моста уже был использован. Создавайте новый request_id для каждого изменяющего вызова.
wix_site_not_installed 403 FastOG не установлен на этом сайте Wix. Установите приложение FastOG на сайт, затем откройте его заново.
wix_site_not_provisioned 422 У сайта Wix ещё нет учётных данных для подписи. Переустановите приложение FastOG, чтобы сайт был обеспечен ключом API.
invalid_page_type 422 Этот тип страницы FastOG не поддерживает на Wix. Отправьте один из типов страниц, которые предлагает Studio.
rule_not_found 404 Правила с таким id нет. Обновите список; правило было удалено или принадлежит другому сайту.
invalid_target_id 422 Идентификатор цели Wix недопустим для этого типа страницы. Отправьте id, который приложение Wix предоставляет для этого типа страницы.
invalid_preview 422 Полезная нагрузка предпросмотра имеет неверный формат. Прочитайте объект details, чтобы найти проблемное поле.
invalid_rule 422 Полезная нагрузка правила обложки имеет неверный формат. Прочитайте объект details; template обязателен, а необязательные блоки должны быть объектами.
invalid_sync 422 Полезная нагрузка синхронизации имеет неверный формат. Прочитайте объект details; target_type и target_id должны совпадать.
invalid_regenerate_url 422 Отсутствует URL для перегенерации. Отправьте URL страницы в url.
invalid_regenerate_host 422 URL не принадлежит хосту FastOG. Отправьте URL обложки с fastog.com.
ai_presets_unsupported 422 Наборы обложек, созданные ИИ, больше не генерируются. Выберите один из кураторских вариантов оформления.
original_tags_required 422 Исходные теги метаданных обязательны. Отправьте original_tags (или current_tags), чтобы при удалении можно было восстановить метаданные сайта.
invalid_restored 422 Полезная нагрузка восстановленных ключей имеет неверный формат. Отправьте restored как массив ключей метаданных.
invalid_seo_target 422 Тип цели SEO неизвестен. Используйте в пути site, pattern или item.
invalid_seo_payload 422 Полезная нагрузка метаданных SEO имеет неверный формат. Отправьте target_id, current_tags и fastog_url как абсолютный URL http(s).
sync_failed 500 Синхронизация метаданных с Wix не удалась. Повторите попытку; если ошибка сохраняется, проверьте, что сайт доступен и приложение всё ещё установлено.
invalid_tier 422 Этот тариф FastOG не продаёт на Wix. Отправьте starter, pro или scale в качестве tier.

Демонстрационная поверхность

Демо — это консоль продаж, доступная только владельцу, а не endpoint для мерчантов.

Код HTTP Что это значит и что делать
url_required 422 URL не был отправлен. Вставьте ссылку на магазин или товар перед чтением карточки.
unreadable_url 422 Эту страницу не удалось прочитать. Проверьте, что ссылка публичная и полная; страницу за логином прочитать нельзя.
no_api_key 422 Нет доступного API-ключа для подписи обложек. Создайте API-ключ (или введите действительный); в ответе есть ссылка на страницу API-ключей.
no_presets 500 Пресеты обложек не настроены. Настройте хотя бы один пресет на сервере.

Коды редакторов правил с областью действия

Редакторы правил с областью действия (админка Shopify и WooCommerce Studio) сами переводят эти токены на язык продавца, поэтому в их ответах присутствуют error и code, но нет hint — второе английское описание лишь разошлось бы с локализованным, которое продавец фактически видит:

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.


Всё ещё не получается?

  • Откройте страницу Render Logs в панели управления — каждый результат (успех и отклонение) указан вместе с его error_code, статусом HTTP и запрошенными параметрами.
  • Запустите php artisan og:diagnose на подписанном URL, чтобы пройти весь конвейер и увидеть, на каком этапе происходит сбой.
  • Ознакомьтесь с документацией в боковой панели для используемого вами фреймворка (Next.js, Express, SvelteKit, ...).

Попробуйте бесплатно — регистрация не требуется

Предпросмотр и тестирование динамических OG-изображений за секунды.

Открыть бесплатный тестер OG-изображений

A BeCaSimulations site