主题

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,在公共 API 上返回 502);代码、消息、提示和文档链接不会改变。

读取错误响应

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 个字符的十六进制字符串。

修复: 签名必须是原始 SHA-256 十六进制(小写 a-f0-9)。如果您对输出进行了 base64 编码或截断,请改用纯十六进制。

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 的 prop(image、brand_logo、logo、avatar、background_image、...)不是公开的 http(s) URL。

修复: 请传入可公开访问的 https://... URL。为防止服务端请求伪造,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 商店。请从 Shopify 管理后台重新加载 FastOG 应用,使嵌入式请求重新携带商店信息,然后重试。
invalid_shop_or_page 422 商店或页面类型未知。请从 Shopify 管理后台打开 FastOG 应用,并在编辑器中选择一个封面页面类型。
invalid_store 422 无法识别 WooCommerce 商店。请从 WordPress 管理后台重新打开 Studio,使商店令牌重新提交,然后重试。
invalid_store_or_page 422 商店或页面类型未知。请从 WordPress 管理后台重新打开 Studio,并选择编辑器提供的封面页面类型。
missing_api_key 422 商店没有签名密钥。请从 WordPress 管理后台完成插件安装,以便 FastOG 为商店签发签名密钥。
store_ownership_unverified 403 无法验证 WordPress 站点。该站点必须可通过公共 HTTPS 访问,并启用其 REST API。
community_is_free 422 Community 方案是免费的。它是免费的默认方案,不可购买;请选择付费档位进行升级。
not_installed 404 此商店尚未安装 FastOG。请从 Shopify App Store 为此商店安装 FastOG 应用,然后重新打开。
oauth_required 409 商店需要重新授权 FastOG。请从 Shopify 管理后台重新执行 FastOG OAuth 安装;已存储的授权已被撤销或其权限范围发生了变化。
reconnect_required 409 需要重新建立 Shopify 连接。请使用 FastOG 应用中的“重新连接”按钮,以签发新的访问令牌。
token_rejected 409 Shopify 签发了访问令牌后又拒绝了它。请重试一次重新连接;如果 Shopify 持续拒绝,请重新安装应用。
unauthorized 401 该请求未携带适用于此界面的有效会话。请从平台管理后台重新加载 FastOG 应用,以附加新的会话令牌,然后重试。
shop_not_found 404 该商店在 FastOG 中已不存在。请从 Shopify 管理后台重新安装 FastOG 以重新创建商店记录。
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 此应用未内置该 UI 语言。请选择响应在 supported 中列出的某种语言。
no_setup_sets 422 无法组装精选封面集。请重试设置界面;如果仍为空,请联系支持。
export_unavailable 403 当前方案不支持下载。请升级到 Pro 或更高方案以下载封面文件。
cancellation_failed 502 订阅取消被拒绝。请稍后重试;如果持续失败,请从 Shopify 账单页面取消或联系支持。
logo_override_on_plan 403 当前方案不支持覆盖 logo。请升级,或清除 logo 覆盖。
invalid_logo 422 该 logo 文件不是可接受的图片。请上传 PNG、JPEG 或 WebP,且不超过编辑器中显示的大小上限。
invalid_brand_image 422 品牌参考图不可用。请上传受支持的图片且不超过大小上限,或清除参考图后再次保存。
brand_image_too_large 422 品牌参考图过大。请缩小文件后重新上传。
brand_colors_too_many 422 提供的品牌颜色超过三种。请最多发送三个十六进制颜色。
upload_failed 500 无法存储上传的文件。请重试;如果持续失败,请联系支持——资源存储未返回公开 URL。
attachment_upload_failed 500 无法存储支持附件。请在不带附件的情况下发送消息,然后将文件通过电子邮件发送给支持。
invalid_webhook 401 商店 webhook 签名验证失败。请检查 WordPress 的 FastOG 设置中的 webhook 密钥是否与 FastOG 签发的一致。
not_found 404 该端点已不存在。请从 WordPress 管理后台重新打开 Studio。
meta_refresh_unavailable 503 未配置分享预览刷新。请改为从 Facebook 重新分享链接。
theme_write_disabled 409 此应用未启用主题编辑。请使用主题应用嵌入,而不是修改主题文件。
scope_required 403 FastOG 缺少某项 Shopify 权限。请使用响应中的 consent_url 批准所请求的权限范围,然后重试修复。

Wix 桥接

Wix 桥接由 Wix 应用签名,而非商家会话,因此其失败信息面向应用开发者。每个响应仍携带 code 和 request_id;桥接请求 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 应用为该页面类型提供的 id。
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 主机。请发送 fastog.com 的封面 URL。
ai_presets_unsupported 422 不再生成 AI 设计的封面集。请改选一种精选外观。
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 作为绝对 http(s) URL 发送。
sync_failed 500 向 Wix 同步元数据失败。请重试;若持续失败,请检查站点是否可访问以及应用是否仍处于安装状态。
invalid_tier 422 该套餐不是 FastOG 在 Wix 上销售的套餐。请将 tier 发送为 starter、pro 或 scale。

演示界面

该演示是仅限所有者使用的销售控制台,不是商户端点。

代码 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。


仍然无法解决?

  • 请打开 dashboard 的 Render Logs 页面——每个结果(成功和拒绝)都会列出其 error_code、HTTP 状态码以及请求的参数。
  • 请对已签名的 URL 运行 php artisan og:diagnose,以走完整个流水线并查看哪个阶段失败。
  • 请查看侧边栏中你所使用框架的文档(Next.js、Express、SvelteKit 等)。

免费试用——无需注册

在几秒钟内预览和测试动态 OG 图片。

打开免费的 OG 图片测试器

A BeCaSimulations site