/api/v1/bannersCrear un banner
Crea un concepto en todos los tamaños e idiomas que pidas. Responde 202 con un trabajo; consulta su estado o espera el webhook.
Una sola petición crea un concepto: una idea de banner que se entrega completa en todos los sizes y locales que envíes. No hace falta una petición por tamaño ni por idioma: el cobro es uno solo, por concepto, y crece con los sizes y los locales que envíes.
La respuesta es inmediata: un trabajo que la IA termina después. Consulta su estado en statusUrl o espera el webhook banner.generated. Requiere el permiso generate.
Qué se cobra
Cada petición cobra 1 concepto, según los sizes y los locales que envíes. Con Sonnet 5.5 es 8 + 1.5 × tamaños + 0.5 × (idiomas − 1) créditos, sin escalones: 1 tamaño en 1 idioma cuesta 10 créditos; 4 tamaños en 1 idioma, 14 créditos; hasta 12 tamaños, 26 créditos. Si pides 4 tamaños en 2 idiomas, obtienes 8 piezas y pagas 15 créditos.
La API usa el modelo por defecto de tu workspace (Ajustes) y el precio depende de él: un concepto de 4 tamaños y 1 idioma cuesta 7 créditos con Haiku 5.5, 14 con Sonnet 5.5, 28 con Opus 5.5 y 70 con Fable 5.1. Las claves de pruebas no cobran. Si el trabajo falla, los créditos se devuelven. Para saber el costo antes de pedir, usa «Estimar créditos» (enlace al final).
Encabezados
AuthorizationContent-TypeIdempotency-Key200 caracteres. La misma clave con el mismo cuerpo devuelve la misma respuesta; con otro cuerpo, un error 422.Cuerpo (JSON, máximo 256 KB)
promptstring1 a 2000 caracteres.sizesstring[]300x250. De 1 a 12. El concepto sale en todos. Si falta, se usan 300x250, 728x90, 160x600 y 320x50 (o los de campaignId, si lo envías; o los de los frames de reference).localesstring[]es-CR o en-US. De 1 a 10. El primero es el idioma base. El concepto sale en todos; cada idioma además del primero suma 0,5 créditos con Sonnet 5.5. Si falta, se usa es-CR (o los de campaignId, si lo envías). Opciones: es-CR, es-MX, es-ES, en-US, en-GB, pt-BR, fr-CA, fr-FR, de-DE, it-IT.styleIdstring400 lista los ids válidos.variantinteger0 (por defecto) a 50. Con 1 o más, la IA busca una idea distinta de la obvia.campaignIdstringreferenceobjectNo se aceptan campos desconocidos: responden 400.
Composición de referencia
Si ya tienes el diseño, envíalo en reference: source (figma, image u other) y frames, hasta 12, uno por tamaño. Cada frame trae su size, su background y sus layers (hasta 60): una caja en píxeles (x, y, w, h), el orden z, el tipo (text, image, vector o shape), el papel en la jerarquía (headline, cta, logo…), el texto literal con su estilo y los rellenos.
- Los textos de la referencia son los del banner, tal cual. Las imágenes y los logos son obligatorios: súbelos antes a la biblioteca (enlace al final) y envía su
assetId. - Se respetan las posiciones y la jerarquía por tamaño. Los tamaños sin frame se adaptan desde el más parecido.
- No cuenta para los
2000caracteres deprompt; por eso el cuerpo admite hasta256KB.
Respuestas
—statusUrl.bad_requestassetId de la referencia no existe en tu workspace.unauthorizedinsufficient_creditsforbiddenemail_unverified).not_foundcampaignId no existe en tu workspace.conflictIdempotency-Key aún en proceso.payload_too_large256 KB.idempotency_mismatchIdempotency-Key ya se usó con otra petición.rate_limitedRetry-After.Límite: 60 peticiones por minuto por clave. [PLACEHOLDER: confirmar el valor en producción]. Si lo superas, la respuesta trae Retry-After.
Con una clave de pruebas
Con bm_test_… la respuesta ya viene resuelta (status: "succeeded"), trae test: true, el creativeId y un bannerUrl, y es la misma para el mismo pedido. Esos ids solo se leen con claves de prueba y no existen en tu workspace.