Tema

Errores de la API: qué significa cada código y cómo solucionarlo

FastOG devuelve códigos de error legibles por máquina cuando falla una petición: el render de una imagen OG firmada o una llamada a una de las superficies de administración del producto. Toda respuesta de error incluye:

  • error — el token corto heredado. Sigue presente en todos los fallos para que un cliente antiguo siga funcionando.
  • code — el mismo código de error estable y documentado (tabla a continuación), con el nombre que usa la API pública.
  • message — una descripción de una frase sobre qué ha fallado.
  • hint — una descripción breve en lenguaje llano de qué ha fallado y cómo solucionarlo.
  • docs_url — un enlace a esta página, anclado en la sección de ese código.
  • request_id — correlaciona este fallo HTTP con una fila de la tabla Render Logs del dashboard (también se devuelve en la cabecera de respuesta X-Request-ID). Una superficie sin nada que correlacionar responde null, pero la clave siempre está presente.

Las superficies del producto —el admin de Shopify, el WooCommerce Studio, el puente de Wix y la demo— responden con el mismo envelope para los códigos de abajo, así que un fallo significa lo mismo allí donde te lo encuentres. Una superficie de módulo puede mantener el estado HTTP que siempre ha devuelto para un código (por ejemplo, render_failed responde 503 en la exportación de portada y 502 en la API pública); el código, el mensaje, la pista y el enlace a la documentación no cambian.

Leer una respuesta de error

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

Si recibes una respuesta que no entiendes, el camino más rápido es:

  1. Anota el code.
  2. Revisa tu constructor de URL — la mayoría de los fallos son errores de firma, no problemas de cuenta.
  3. Consulta el código de abajo para conocer la causa exacta y la solución.
  4. En el dashboard, abre Render Logs y filtra por el mismo error_code — cada fila muestra los parámetros solicitados para que puedas reproducirlo (y confirmar que request_id coincide).

Firma y autenticación

missing_signature

A tu solicitud le faltan los parámetros de consulta key y/o s (firma).

Solución: asegúrate de que tu URL incluya tanto key=<api-key> como s=<hmac-signature>. Usa el SDK o el recorrido de /docs/hmac-signature-guide para construirla.

invalid_signature

El valor de s no coincidía con lo que produce tu secreto HMAC para esta URL.

Solución: la firma cubre todos los parámetros de consulta excepto s, con las claves ordenadas. Cambiar cualquier parámetro —incluido reordenarlos, diferencias de codificación de URL o añadir espacios en blanco— invalida la firma. Vuelve a firmar después de cada cambio. Confirma que tu secreto es el mismo que se mostró al crear la clave de API.

invalid_signature_format

El valor de s no es una cadena hexadecimal de 64 caracteres.

Solución: la firma debe ser el SHA-256 en hexadecimal sin procesar (minúsculas a-f0-9). Si estás codificando en base64 o truncando la salida, usa hexadecimal simple.

expired_timestamp

La marca de tiempo t que proporcionaste tiene más de 5 minutos de antigüedad.

Solución: vuelve a generar la marca de tiempo cada vez que construyas una URL. Este código se aplica al flujo heredado de URL firmada; el flujo actual de HMAC v2 no tiene marca de tiempo.

invalid_api_key

El key que pasaste no existe.

Solución: copia la clave de API completa desde el panel —es el identificador público que empieza por sk_. Es pública y segura en las URL; el secreto (nunca en las URL) es lo que demuestra la posesión.

missing_hmac_secret

La clave de API no tiene configurado ningún secreto HMAC.

Solución: crea una nueva clave de API en el panel —el secreto HMAC se genera y se muestra una sola vez al crearla.


Parámetro / entrada

invalid_image_url

Una prop que contiene una URL (image, brand_logo, logo, avatar, background_image, ...) no es una URL http(s) pública.

Solución: pasa una URL https://... accesible públicamente. Se rechazan localhost, las IP privadas y las rutas sin dominio para evitar la falsificación de peticiones del lado del servidor.


Suscripción

subscription_required (402)

La solicitud llegó a la Dynamic API, pero tu cuenta no tiene un plan activo. El acceso a la API es solo por suscripción: el plan es la condición indispensable y ofrece la misma cobertura y la misma escala de capacidades que venden las aplicaciones de FastOG. Las renderizaciones en sí no se miden: no hay cuota mensual de renderizaciones ni facturación por exceso.

Solución: elige un plan de Dynamic API en el panel y crea una clave de API. La respuesta incluye un top_up_url que apunta a la página de planes.


Servicio de renderizado

store_blocked (403)

FastOG ha pausado el renderizado de la tienda asociada a esta clave (por ejemplo, por abuso o un uso descontrolado). Las imágenes ya almacenadas en caché en el edge pueden seguir sirviéndose hasta que caduquen. Contacta con soporte para resolverlo; nada de lo que cambies en la petición solucionará esto.

render_unreachable

No se pudo contactar con el servicio de renderizado (ventana breve de reinicio).

Solución: vuelve a intentarlo en unos segundos. El renderizado no se contabilizó en este intento.

render_failed

El servicio de renderizado devolvió un error para tu petición.

Solución: verifica las props de tu plantilla — valores largos o mal formados, campos no admitidos o una imagen de origen inaccesible. La respuesta incluye el status subyacente. El renderizado no se contabilizó.


Superficies de administración de la tienda

Estos códigos responden desde el administrador de Shopify y el WooCommerce Studio — los editores integrados en los que trabaja un comerciante en lugar de la API firmada. Varios se comparten con la API pública (invalid_image_url, render_failed, invalid_signature); esos mantienen la entrada documentada arriba.

Código HTTP Qué significa y qué hacer
invalid_shop 422 No se ha podido identificar la tienda de Shopify. Vuelve a cargar la app FastOG desde tu administrador de Shopify para que la petición embebida vuelva a llevar la tienda y, después, reinténtalo.
invalid_shop_or_page 422 La tienda o el tipo de página son desconocidos. Abre la app FastOG desde tu administrador de Shopify y elige un tipo de página de portada en el editor.
invalid_store 422 No se ha podido identificar la tienda de WooCommerce. Vuelve a abrir el Studio desde tu administrador de WordPress para que se vuelva a presentar el token de la tienda y, después, reinténtalo.
invalid_store_or_page 422 La tienda o el tipo de página son desconocidos. Vuelve a abrir el Studio desde tu administrador de WordPress y elige un tipo de página de portada de los que ofrece el editor.
missing_api_key 422 La tienda no tiene clave de firma. Termina de instalar el plugin desde tu administrador de WordPress para que FastOG pueda emitir la clave de firma de la tienda.
store_ownership_unverified 403 No se ha podido verificar el sitio de WordPress. Debe ser accesible mediante HTTPS público con su REST API habilitada.
community_is_free 422 El plan Community es gratuito. Es el plan gratuito por defecto y no se puede comprar; elige un nivel de pago para mejorar el plan.
not_installed 404 FastOG no está instalado para esta tienda. Instala la app FastOG desde la Shopify App Store para esta tienda y vuelve a abrirla.
oauth_required 409 La tienda debe autorizar FastOG de nuevo. Vuelve a ejecutar la instalación OAuth de FastOG desde tu administrador de Shopify; la concesión almacenada se ha revocado o sus scopes han cambiado.
reconnect_required 409 Hay que restablecer la conexión con Shopify. Usa el botón Reconnect de la app FastOG para que se emita un nuevo access token.
token_rejected 409 Shopify emitió un access token y después lo rechazó. Reintenta la reconexión una vez; si Shopify sigue rechazándolo, reinstala la app.
unauthorized 401 La petición no lleva una sesión válida para esta superficie. Vuelve a cargar la app FastOG desde el administrador de tu plataforma para que se adjunte un token de sesión nuevo y, después, reinténtalo.
shop_not_found 404 La tienda ya no existe en FastOG. Reinstala FastOG desde tu administrador de Shopify para volver a crear el registro de la tienda.
invalid_product 422 La referencia del producto no es válida. Vuelve a cargar la página del producto y abre FastOG de nuevo; el id de producto enviado faltaba o no era numérico.
invalid_product_cover 422 El payload de la portada del producto está mal formado. Vuelve a cargar el editor y guarda otra vez; props, style y signals deben ser cada uno un objeto.
product_not_found 404 No se ha podido leer el producto de la tienda. Comprueba que el producto sigue existiendo y está publicado y, después, vuelve a cargar el editor.
product_customization_not_on_plan 403 La personalización de portada por producto no está incluida en este plan. Mejora el plan o edita la portada de producto compartida.
no_product_handles 422 No se ha encontrado ningún producto que actualizar. Publica al menos un producto con un handle público y vuelve a intentar la actualización de la vista previa compartida.
invalid_style 422 El bloque de estilo no es utilizable. Vuelve a cargar el editor y elige de nuevo los colores y las fuentes; un valor no se ha podido normalizar.
invalid_template 422 La plantilla solicitada no está en el catálogo de esta plataforma. Elige uno de los diseños que ofrece el editor.
invalid_preset 422 El nombre del preset no es uno de los que ofrece esta plataforma. Elige un preset en la pantalla de configuración.
invalid_set 422 El payload del conjunto de portadas falta o está mal formado. Vuelve a cargar la pantalla de configuración y elige un conjunto de nuevo.
preset_not_applyable 422 El preset no se puede aplicar a todos los tipos de página. Elige otro preset; a este le falta la portada de al menos un tipo de página.
template_not_available 422 La plantilla no está en el catálogo de plantillas renderizables. Elige un diseño de los que ofrece el selector.
template_not_available_on_shopify 422 La plantilla no está disponible en las tiendas de Shopify. Elige un diseño de los que ofrece el editor de Shopify.
template_not_available_on_woocommerce 422 La plantilla no está disponible en las tiendas de WooCommerce. Elige un diseño de los que ofrece el Studio.
template_unavailable 422 La plantilla no está disponible para esta tienda. Elige un diseño de los que ofrece el editor; está retirada, es desconocida o supera lo que la tienda puede dibujar.
template_not_on_plan 403 La plantilla requiere un plan superior. Cambia de plan o elige un diseño que cubra el plan actual. La respuesta indica el plan en requires.
template_requires_higher_plan 403 La plantilla requiere un plan superior. La respuesta indica el plan en requires.
no_rule 404 Todavía no hay ninguna regla de portada para este tipo de página. Guarda primero una portada para este tipo de página en el editor.
cover_not_configured 404 Todavía no se ha guardado ninguna portada de producto. Guarda una portada de producto antes de descargarla o compartirla.
schedule_only_product 422 La programación de campañas solo existe para las portadas de producto. Elimina la fecha de reversión o traslada la campaña a la portada de producto.
not_dismissible 422 Ese anuncio no se puede descartar. Vuelve a cargar la página; ya se ha retirado o pertenece a otra tienda.
unsupported_locale 422 Ese idioma de la interfaz no está incluido en esta app. Elige uno de los idiomas que la respuesta enumera en supported.
no_setup_sets 422 No se ha podido componer ningún conjunto de portadas seleccionado. Reintenta la pantalla de configuración; si sigue vacía, contacta con soporte.
export_unavailable 403 Las descargas no están incluidas en este plan. Mejora a Pro o superior para descargar los archivos de portada.
cancellation_failed 502 Se ha rechazado la cancelación de la suscripción. Reinténtalo en un momento; si sigue fallando, cancela desde la página de facturación de Shopify o contacta con soporte.
logo_override_on_plan 403 La sustitución del logo no está incluida en este plan. Mejora el plan o borra la sustitución del logo.
invalid_logo 422 El archivo del logo no es una imagen aceptada. Sube un PNG, JPEG o WebP por debajo del límite de tamaño que se muestra en el editor.
invalid_brand_image 422 La imagen de referencia de marca no es utilizable. Sube una imagen compatible por debajo del límite de tamaño o borra la referencia y guarda de nuevo.
brand_image_too_large 422 La imagen de referencia de marca es demasiado grande. Reduce el archivo y vuelve a subirlo.
brand_colors_too_many 422 Se han enviado más de tres colores de marca. Envía como máximo tres colores hex.
upload_failed 500 No se ha podido almacenar el archivo subido. Reinténtalo; si sigue fallando, contacta con soporte: el almacén de assets no ha devuelto ninguna URL pública.
attachment_upload_failed 500 No se ha podido almacenar el adjunto de soporte. Envía el mensaje sin el adjunto y después manda el archivo por correo a soporte.
invalid_webhook 401 La firma del webhook de la tienda no se ha verificado. Comprueba que el secreto del webhook en tus ajustes de FastOG en WordPress coincide con el que emitió FastOG.
not_found 404 Ese endpoint ya no existe. Vuelve a abrir el Studio desde tu administrador de WordPress.
meta_refresh_unavailable 503 La actualización de la vista previa compartida no está configurada. Vuelve a compartir el enlace desde Facebook.
theme_write_disabled 409 La edición de temas no está habilitada para esta app. Usa el app embed del tema en lugar de la corrección del archivo del tema.
scope_required 403 A FastOG le falta un permiso de Shopify. Aprueba los scopes solicitados usando el consent_url de la respuesta y vuelve a intentar la corrección.

Puente de Wix

El puente de Wix lo firma la app de Wix, no una sesión de comerciante, así que sus fallos van dirigidos al desarrollador de la app. Todas las respuestas siguen incluyendo code y request_id; el id de la petición del puente es el del sobre firmado.

Código HTTP Qué significa y qué hacer
invalid_bridge_signature 401 La firma del puente de Wix no se verificó. Vuelve a generar la petición con el secreto compartido, la ruta exacta y una marca de tiempo de menos de cinco minutos.
invalid_bridge_body 400 El cuerpo del sobre del puente está mal formado. Envía body como un objeto JSON y codifica cada número que contenga como una cadena, para que la firma canónica coincida.
replayed_bridge_request 401 Esa petición del puente ya se usó. Genera un nuevo request_id para cada llamada que modifique datos.
wix_site_not_installed 403 FastOG no está instalado en este sitio de Wix. Instala la app de FastOG en el sitio y vuelve a abrirlo.
wix_site_not_provisioned 422 El sitio de Wix aún no tiene credenciales de firma. Reinstala la app de FastOG para que el sitio se aprovisione con una clave de API.
invalid_page_type 422 El tipo de página no es uno de los que FastOG cubre en Wix. Envía uno de los tipos de página que ofrece el Studio.
rule_not_found 404 No hay ninguna regla con ese id. Actualiza la lista; la regla se eliminó o pertenece a otro sitio.
invalid_target_id 422 El id de destino de Wix no es válido para este tipo de página. Envía el id que la app de Wix proporciona para ese tipo de página.
invalid_preview 422 La carga útil de la vista previa está mal formada. Consulta el objeto details para ver el campo que falla.
invalid_rule 422 La carga útil de la regla de portada está mal formada. Consulta el objeto details; template es obligatorio y los bloques opcionales deben ser objetos.
invalid_sync 422 La carga útil de la sincronización está mal formada. Consulta el objeto details; target_type y target_id deben coincidir.
invalid_regenerate_url 422 Falta la URL que hay que regenerar. Envía la URL de la página en url.
invalid_regenerate_host 422 La URL no pertenece al host de FastOG. Envía una URL de portada de fastog.com.
ai_presets_unsupported 422 Los conjuntos de portadas diseñados por IA ya no se generan. Elige uno de los estilos seleccionados.
original_tags_required 422 Las etiquetas de metadatos originales son obligatorias. Envía original_tags (o current_tags) para que una desinstalación pueda restaurar los metadatos del sitio.
invalid_restored 422 La carga útil de las claves restauradas está mal formada. Envía restored como un array de claves de metadatos.
invalid_seo_target 422 El tipo de destino de SEO es desconocido. Usa site, pattern o item en la ruta.
invalid_seo_payload 422 La carga útil de los metadatos de SEO está mal formada. Envía target_id, current_tags y fastog_url como una URL http(s) absoluta.
sync_failed 500 Falló la sincronización de metadatos con Wix. Reinténtalo; si sigue fallando, comprueba que el sitio es accesible y que la app sigue instalada.
invalid_tier 422 Ese plan no es uno de los que FastOG vende en Wix. Envía starter, pro o scale como tier.

Superficie de la demo

La demo es la consola de ventas exclusiva para el propietario, no un endpoint para comercios.

Código HTTP Qué significa y qué hacer
url_required 422 No se envió ninguna URL. Pega el enlace de la tienda o del producto antes de leer la tarjeta.
unreadable_url 422 No se pudo leer esa página. Comprueba que el enlace sea público y esté completo; una página detrás de un inicio de sesión no se puede leer.
no_api_key 422 No hay ninguna clave de API disponible para firmar las portadas. Crea una clave de API (o introduce una válida); la respuesta enlaza a la página de claves de API.
no_presets 500 No hay preajustes de portada configurados. Configura al menos un preajuste en el servidor.

Códigos del editor de reglas con ámbito

Los editores de reglas con ámbito (el admin de Shopify y WooCommerce Studio) traducen estos tokens por sí mismos, al idioma del propio comerciante, por lo que sus respuestas incluyen error y code pero no hint — una segunda descripción en inglés solo se desviaría de la localizada que el comerciante ve realmente:

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.


¿Sigues atascado?

  • Abre la página Render Logs del panel: cada resultado (éxito + rechazo) aparece listado con su error_code, el estado HTTP y los parámetros solicitados.
  • Ejecuta php artisan og:diagnose sobre una URL firmada para recorrer todo el pipeline y ver en qué etapa falla.
  • Consulta en la barra lateral la documentación del framework que estés usando (Next.js, Express, SvelteKit, ...).

Pruébalo gratis: no se requiere registro

Previsualiza y prueba imágenes OG dinámicas en segundos.

Abrir el probador gratuito de imágenes OG

A BeCaSimulations site