Saltar al contenido principal

Renders y exportación directa

Cada clip que lleva una publicación lo renderiza un trabajo de render. La exportación directa es la otra forma de usar el mismo renderizador: rellenar una plantilla y llevarse el video. Sin fila de trabajo de render, sin publicación, sin canal. El video terminado se conserva con los clips renderizados del espacio de trabajo, de modo que sigue ahí cuando vuelve a buscarlo.

En el panel, la exportación directa es Crear clip en el Estudio de clips, y sus videos aparecen allí en Videos exportados. Su área de permisos es Clip studio - Create clip (renders:read y renders:write); las rutas de la API y las herramientas MCP conservan el nombre exportación directa.

MétodoRutaPermiso
GET/v1/render-jobsrenders:read
GET/v1/render-jobs/{id}/packagerenders:read
GET/v1/renders/quotaallowance:read
POST/v1/templates/{templateId}/validatetemplates:read
POST/v1/direct-export/timingrenders:read
POST/v1/direct-export/videorenders:write
POST/v1/direct-export/batchrenders:write
GET/v1/direct-export/queuerenders:read
GET/v1/direct-export/video/{jobId}/reuserenders:read
POST/v1/direct-export/ziprenders:write
GET/v1/direct-export/video/{jobId}renders:read
GET/v1/direct-export/video/{jobId}/downloadrenders:read
POST/v1/direct-export/video/{jobId}/linkrenders:write
POST/v1/direct-export/video/{jobId}/discardrenders:write
GET/v1/direct-export/videosrenders:read
GET/v1/direct-export/videos/{jobId}renders:read
POST/v1/direct-export/keyframesrenders:write
GET/v1/export-files/{jobId}ninguna: el propio enlace firmado
POST/v1/renders/buy, /v1/renders/keep, /v1/renders/droppropietario con sesión iniciada
POST/v1/storage/splitpropietario con sesión iniciada

Lo que queda este mes​

curl http://localhost:4000/v1/renders/quota \
-H "Authorization: Bearer rw_your_key_here"
{
"quota": {
"allowance": 1200,
"used": 9,
"extra": 0,
"remaining": 1191,
"periodStart": "2026-09-06T13:50:50.821Z",
"periodEnd": "2026-10-06T13:50:50.821Z",
"overridden": false
},
"seats": { "used": 6, "max": 10 },
"partners": { "used": 0, "max": 100 },
"storage": {
"used": 26.9,
"max": 500,
"usedBytes": 28182585,
"maxBytes": 524288000,
"usedBy": { "media": 10821887, "renders": 17360698 },
"mediaPercent": 30,
"media": { "used": 10.3, "max": 150 },
"clips": { "used": 16.6, "max": 350 },
"split": { "minPercent": 10, "maxPercent": 90 }
}
}

Vigile quota.remaining antes de un lote. periodEnd es cuándo se reinicia. La respuesta lleva más que esto, que es lo que muestra la pantalla Cuota: sources, de dónde procede cada límite (lo que incluye el plan, lo que se compró y lo que concedió Reelwire), addOns, qué extras tiene el espacio de trabajo y cuánto costarían más, y canBuy, si la persona que pregunta puede comprar. Lo que cuestan los extras (addOns.monthlyCents, addOns.monthlyBy y los precios de addOns.offers) es del propietario: una clave sin plan:read, y cualquier colega, recibe null en ambos totales y ninguna oferta.

addOns.offers contiene solo lo que un espacio de trabajo añade por sí mismo, con precio para él: en Enterprise, a los precios acordados en su oferta. Los participantes de sindicación nunca están entre ellos. addOns.agreed nombra lo que el espacio de trabajo tiene pero acuerda con Reelwire en lugar de comprar: ["partners"] en Enterprise, y vacío en los planes inferiores, que no tienen participantes. Más participantes son una oferta nueva, y POST /v1/renders/buy rechaza un incremento de participantes con un 409. addOns.paysBy es CARD, donde lo que se añade se cobra de inmediato a la tarjeta, o INVOICE, donde se factura de inmediato, pagadero en addOns.invoiceDays días.

storage es una cuota que comparten la biblioteca multimedia y los clips renderizados. storage.split indica hasta dónde puede mover el propietario ahora mismo la línea entre ambos, que es lo que hace POST /v1/storage/split: consulte Biblioteca multimedia.

La cuota es de solo lectura para una clave. POST /v1/renders/buy, /keep y /drop cambian lo que paga el espacio de trabajo, así que pertenecen al propietario, con la sesión iniciada: una clave es rechazada tenga los permisos que tenga, y un colega que no es el propietario recibe un 403 propio:

{
"error": {
"type": "https://reelwire.io/errors/forbidden",
"code": "forbidden",
"message": "Only the owner of this workspace can buy more.",
"requestId": "01M2SQWHPGCVYFJR5HM761W5XN",
"details": []
}
}

Trabajos de render​

curl "http://localhost:4000/v1/render-jobs?perPage=1" \
-H "Authorization: Bearer rw_your_key_here"
{
"jobs": [
{
"id": "01M2SQN531MF686B8KWYJA3NV8",
"origin": "custom",
"details": "Enterprise 2 Stream 1",
"postTitle": null,
"clip": {
"id": "01M2SQPAPH4YF66ZKK5Y5XA9Y7",
"mimeType": "video/mp4",
"url": "http://localhost:4000/v1/assets/01M2SQPAPH4YF66ZKK5Y5XA9Y7/download?exp=1789721392&sig=ae02f120693a5043646e04d5bd65a899deea94add53450aea4e9e510053bf1fb"
},
"templateId": "tpl_dd7e6b264fb8",
"templateName": "Big number",
"templateVariant": "Corporate glass",
"templateVersion": "1.0.0",
"state": "COMPLETED",
"outputsRequested": 1,
"outputsSucceeded": 1,
"submittedAt": "2026-09-18T07:45:50.788Z",
"finishedAt": "2026-09-18T07:46:28.715Z",
"error": null,
"priority": 1,
"clipsStored": 1,
"progress": 1,
"outputs": [{ "ratio": "9x16", "locale": "en", "state": "succeeded", "error": null }]
}
],
"total": 7,
"all": 7,
"page": 1,
"perPage": 1,
"facets": { "state": ["COMPLETED"] }
}

Un trabajo de render pasa por PENDING, SUBMITTED, RENDERING, DOWNLOADING, STORED y COMPLETED, con PARTIAL, FAILED, TIMED_OUT y CANCELLED al margen. Filtre por él con state; la lista pagina, busca y ordena como todo registro (consulte Listas y paginación).

progress es la media de las salidas del trabajo, donde una terminada cuenta completa, por lo que aquí se lee igual que en la pantalla Publicaciones. priority es 1 donde el trabajo se puso en cola con renderizado prioritario, que tiene Enterprise. clipsStored menor que outputsSucceeded significa que se eliminaron clips para hacer sitio en el almacenamiento. clip es el video del trabajo mientras sigue guardado, en una dirección firmada para una hora, y null cuando ya no está.

GET /v1/render-jobs/{id}/package devuelve exactamente lo que se entregó al renderizador: la plantilla, el contenido, la marca, el contexto del canal y las opciones. Es una solicitud propia y no parte de la lista, porque un package lleva un documento de marca completo y la lista se consulta periódicamente.

Exportación directa​

Pregunte cuánto durará el clip, compruebe el contenido, iníciela, consulte el estado y después descargue el video o entregue un enlace a él.

Cuánto durará​

curl http://localhost:4000/v1/direct-export/timing \
-H "Authorization: Bearer rw_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"templateId": "tpl_dd7e6b264fb8",
"version": "1.0.0",
"variant": "Corporate glass",
"data": { "clipData": { "label": "Ten-year Bund yield at the close", "value": 2.41, "unit": "%" } }
}'
{ "fps": 30, "frames": 300, "durationMs": 10000, "version": "1.0.0", "variant": "Corporate glass" }

Algunas plantillas duran lo que necesita su contenido, así que esto se pregunta mientras aún se rellena el formulario. No cuesta nada y no guarda nada, de modo que, aunque es un POST, puede preguntarlo una clave que pueda leer renders. version y variant indican qué compilación se midió: sin ellos, la compilación más reciente de la primera variante de la plantilla. Es la duración propia de la plantilla; el intro y el outro de una marca se reproducen a su alrededor en un clip terminado.

Compruebe primero el contenido​

POST /v1/templates/{templateId}/validate admite variant, version y data y ejecuta exactamente las comprobaciones a las que está sujeto el contenido de un video antes de iniciarse, incluido si cada imagen que nombra el contenido (media://...) está en la biblioteca multimedia del espacio de trabajo. No renderiza nada, no guarda nada y no cuesta nada, de modo que puede preguntarlo una clave que pueda leer templates, aunque sea un POST. Es Validar entrada en el diálogo Crear clip.

curl http://localhost:4000/v1/templates/tpl_dd7e6b264fb8/validate \
-H "Authorization: Bearer rw_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"variant": "Corporate glass",
"data": { "clipData": { "headline": "Bund yields close at a three-week high", "value": 2.41 } }
}'
{
"ok": false,
"templateId": "tpl_dd7e6b264fb8",
"variant": "Corporate glass",
"version": "1.0.0",
"problems": [
{ "path": "/clipData", "message": "missing label" },
{ "path": "/clipData", "message": "has a field this template does not take: headline" }
]
}

Un contenido que no encaja es una respuesta con ok: false, no un error: cada problema nombra el campo por su ruta y dice con palabras qué está mal, como que falta el campo, un campo que la plantilla no admite, los valores que permite una opción, un texto que supera su longitud o una imagen que la biblioteca no tiene. variant y version indican contra qué se comprobó: sin ellos, la compilación más reciente de la primera variante de la plantilla. Una variante que la plantilla no tiene es un 400 schema_validation que nombra las variantes que tiene, y también una versión que no tiene, o un data que no es un solo objeto.

Iniciar un video​

POST /v1/direct-export/video admite los mismos campos más el aspecto: brandId, ratio y locale. En lugar de brandId admite style, un documento de marca completo como lo devuelve GET /v1/brands/{id}, para una marca aún no guardada; sus archivos solo se renderizan donde son referencias media:// a archivos de la biblioteca multimedia del espacio de trabajo, y cualquier otra cosa se omite. Indique uno de los dos, nunca ambos. Las rutas de lote y de keyframes admiten la misma opción.

curl http://localhost:4000/v1/direct-export/video \
-H "Authorization: Bearer rw_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"templateId": "tpl_dd7e6b264fb8",
"version": "1.0.0",
"variant": "Corporate glass",
"brandId": "01M1VFRWE7VHP3H54ESRJQ0SAJ",
"ratio": "9x16",
"locale": "en",
"data": {
"clipData": {
"kicker": "Rates",
"label": "Ten-year Bund yield at the close",
"value": 2.41,
"unit": "%",
"window": "a three-week high",
"source": "Deutsche Finanzagentur"
},
"metaData": { "title": "Bund yields close at a three-week high" }
}
}'
{ "jobId": "01M2SQTF3R3GHBVTR3DQQNH1DK", "templateId": "tpl_dd7e6b264fb8", "variant": "Corporate glass", "version": "1.0.0" }

202. Sin version (o con latest) se renderiza la compilación más reciente de la variante, y sin variant la primera de la plantilla: la respuesta indica cuál, y también lo hacen la exportación conservada y su reutilización. Una variante que la plantilla no tiene se rechaza con las que tiene, nunca se renderiza como otra. El contenido se renderiza en el idioma pedido, con la copia de ese idioma de locales superpuesta a la predeterminada, exactamente como el clip de un canal.

Las plantillas Fondo, Cortinilla, Intro y Outro crean las películas propias de una marca, que luego pasan a formar parte de la marca, así que sus clips siempre se renderizan solos: sin el intro, el outro, la cortinilla ni la banda sonora de la marca a su alrededor y sin su fondo debajo, tenga la marca lo que tenga configurado.

Una exportación espera en la misma cola que las publicaciones del espacio de trabajo, en el orden en que se pidió: con renderizado prioritario, que tiene Enterprise, ambas pasan por delante del trabajo estándar.

Todo se comprueba antes de enviar nada, de modo que un error es una respuesta y no un render que falla un minuto después:

RechazoPor qué
404 unknown_templateLa plantilla no se ofrece a este espacio de trabajo, o aún no tiene una compilación con la que renderizar.
404 not_foundNo hay ninguna marca con ese id en este espacio de trabajo.
400 ratio_not_supportedLa plantilla no renderiza ese formato.
400 schema_validationEl contenido no encaja en la compilación, exactamente como se comprueba la publicación de una lista de publicaciones, o nombra una imagen (media://...) que la biblioteca multimedia no tiene; cada detalle apunta al campo, como hace la comprobación anterior. También una variante que la plantilla no tiene (el mensaje nombra las que tiene), una versión que no tiene y un cuerpo con brandId y style a la vez, o con ninguno de los dos.
429 rate_limitedNo quedan videos este mes, contando las exportaciones que aún se renderizan. El mensaje nombra la cuota y la fecha en que se reinicia.
503 upstream_unavailableAhora mismo no hay ningún renderizador libre.

Varios formatos e idiomas a la vez​

POST /v1/direct-export/batch admite el mismo cuerpo con ratios y locales en lugar de ratio y locale, e inicia un video por cada formato en cada idioma: como máximo 24, y un formato o idioma repetido cuenta una vez.

curl http://localhost:4000/v1/direct-export/batch \
-H "Authorization: Bearer rw_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"templateId": "tpl_dd7e6b264fb8",
"version": "1.0.0",
"brandId": "01M1VFRWE7VHP3H54ESRJQ0SAJ",
"ratios": ["9x16", "1x1"],
"locales": ["en", "de"],
"data": {
"clipData": { "label": "Ten-year Bund yield at the close", "value": 2.41, "unit": "%" },
"locales": { "de": { "clipData": { "label": "Rendite der zehnjährigen Bundesanleihe zum Schluss" } } }
}
}'
{
"jobs": [
{ "jobId": "01M2SQTF3R3GHBVTR3DQQNH1DK", "ratio": "9x16", "locale": "en" },
{ "jobId": "01M2SQTF6B1Y8XK2G5E7WQ9D3M", "ratio": "9x16", "locale": "de" },
{ "jobId": "01M2SQTF9C4J7P0R2T6V8N1B5H", "ratio": "1x1", "locale": "en" },
{ "jobId": "01M2SQTFC2D5F8H1K4M7Q0S3V6", "ratio": "1x1", "locale": "de" }
],
"problem": null,
"variant": "Corporate glass",
"version": "1.0.0"
}

202. Cada trabajo es desde entonces una exportación ordinaria: se consulta, se descarga, se conserva y se cobra por separado. variant y version indican qué compilación renderiza cada uno, resuelta como para un solo video. El contenido y cada formato se comprueban, y la cuota se comprueba para todos, contando las exportaciones que aún se renderizan, antes de iniciar el primero, de modo que un error rechaza todo el lote con las mismas respuestas que un solo video; se nombra un formato que la plantilla no renderiza. Más de 24 videos es un 400 schema_validation que indica cuántos se pidieron. Si los renderizadores rechazan a mitad, se responde por los trabajos que sí se iniciaron, y problem indica cuántos de cuántos y por qué.

Cada exportación y hasta dónde ha llegado​

GET /v1/direct-export/queue lista cada exportación del espacio de trabajo, la más reciente primero: las que aún esperan o se renderizan, las que fallaron en las últimas dos horas y las conservadas (las 100 más recientes). Es una solicitud para todo un lote, y lo que muestra la tarjeta Videos exportados del panel.

{
"exports": [
{
"jobId": "01M2SQTF3R3GHBVTR3DQQNH1DK",
"templateId": "tpl_dd7e6b264fb8",
"templateName": "Big number",
"variant": "Corporate glass",
"version": "1.0.0",
"ratio": "9x16",
"locale": "en",
"brandId": "01M1VFRWE7VHP3H54ESRJQ0SAJ",
"brandName": "Northwind Markets",
"status": "rendering",
"progress": 0.4,
"ahead": 0,
"error": null,
"kept": false,
"keptNote": null,
"byteSize": null,
"durationMs": null,
"createdAt": "2026-09-24T09:57:12.402Z"
}
]
}

status, progress, ahead y keptNote significan lo que significan al consultar un video, más abajo. Consultar la cola resuelve cada exportación que lista, de modo que un video que acaba de terminar se conserva y se cuenta, exactamente como al consultarlo. byteSize y durationMs están ahí una vez conservado. Consúltela cada pocos segundos mientras algo se renderiza, no más rápido.

Crear uno de nuevo​

GET /v1/direct-export/video/{jobId}/reuse responde con aquello de lo que se hizo una exportación, en la forma que da /v1/media/renders/{id}/reuse para un clip renderizado: plantilla, variante, compilación, marca, formato, idioma y data, todos los idiomas incluidos. Funciona por id de trabajo, de modo que sirve para una exportación que aún se renderiza o que falló además de una conservada. No se crea nada; cambie lo que haya que cambiar y vuelva a iniciarla con POST /v1/direct-export/video o /batch.

{
"reuse": {
"kind": "export",
"templateId": "tpl_dd7e6b264fb8",
"templateName": "Big number",
"variant": "Corporate glass",
"version": "1.0.0",
"pinnedVersion": "1.0.0",
"brandId": "01M1VFRWE7VHP3H54ESRJQ0SAJ",
"ratio": "9x16",
"locale": "en",
"data": { "clipData": { "label": "Ten-year Bund yield at the close", "value": 2.41, "unit": "%" } },
"title": "Copy of Big number",
"queueId": null
}
}

Varios en un zip​

POST /v1/direct-export/zip con { "jobIds": [...] }, de 1 a 24, responde con un zip que contiene cada .mp4, nombrado por plantilla, variante, versión, marca, formato e idioma:

HTTP/1.1 200 OK
content-type: application/zip
content-disposition: attachment; filename="Reelwire exports 2026-09-24.zip"

Cada exportación elegida debe haber terminado: una que aún se renderiza es un 409 conflict que lo dice, en lugar de un zip que contiene en silencio menos videos de los pedidos. Más de 400 MB en total es un 413 payload_too_large; descárguelos en grupos más pequeños, o de uno en uno.

Es Descargar seleccionados del panel, y la única ruta de exportación directa a la que no llega ninguna herramienta MCP, a propósito: una herramienta no puede llevar un archivo, así que un asistente entrega en su lugar un enlace por video (abajo).

Consultar el estado​

curl http://localhost:4000/v1/direct-export/video/01M2SQTF3R3GHBVTR3DQQNH1DK \
-H "Authorization: Bearer rw_your_key_here"
{ "status": "rendering", "progress": 0.1, "renderer": "render-1", "ahead": 0, "error": null, "kept": false, "keptNote": null, "keptId": null }
{ "status": "succeeded", "progress": 1, "renderer": "render-1", "ahead": 0, "error": null, "kept": true, "keptNote": null, "keptId": "01M2SR0B6K9TQ4V1X3HZJ8D2PA" }

status es queued, rendering, succeeded, failed, timed_out o cancelled. ahead es cuántos clips hay delante del suyo mientras está queued. Un renderizador solo renderiza unos pocos clips a la vez y también toma los clips de las publicaciones, así que «rendering, 0 %» durante un minuto sería una mentira que se lee como un bloqueo.

kept indica que el video terminado se ha copiado en los clips renderizados del espacio de trabajo, lo que ocurre en el momento en que alguien lo ve terminado, o poco después si nadie mira. Se conserva entonces exactamente como el clip de una publicación: en la parte del almacenamiento destinada a clips, listado en /v1/media/renders, y se elimina el más antiguo primero cuando los clips más nuevos necesitan el espacio. Un clip mayor que toda esa parte no se conserva, y keptNote lo dice; aún se puede descargar durante dos horas. keptId es el id de la copia conservada, que admite POST /v1/media/renders/{id}/copy para poner el video en la biblioteca multimedia.

Descargar​

Una descarga es el .mp4 en sí.

curl -o export.mp4 \
http://localhost:4000/v1/direct-export/video/01M2SQTF3R3GHBVTR3DQQNH1DK/download \
-H "Authorization: Bearer rw_your_key_here"
HTTP/1.1 200 OK
content-type: video/mp4
content-disposition: inline; filename="export-9x16-en.mp4"

Un video conservado se sirve con Range, de modo que un reproductor puede empezar antes de que llegue el archivo y puede saltar.

Cada clip que crea Reelwire, de una publicación o una exportación, lleva sus propios metadatos, que un reproductor como VLC muestra en la información del archivo:

EtiquetaQué contiene
TítuloEl título de la publicación (metaData.title en el contenido), y si no el nombre de la plantilla
ArtistaEl nombre de la marca, tal como lo muestra el clip
Copyright© <year> <brand>
Fecha y hora de creaciónCuándo se creó el clip
Herramienta de codificaciónReelwire
ComentarioMade with Reelwire, reelwire.io
IdiomaEl idioma del clip, en imagen y sonido

Nada más: ningún nombre de otro programa, nada sobre su espacio de trabajo, canal o lista de publicaciones, y nada que marque el clip como IA. ?as=video, que antes pedía el video sin un zip alrededor, se sigue aceptando y no cambia nada: ya no hay zip.

POST /v1/direct-export/video/{jobId}/link responde con una dirección que guarda el .mp4 en un navegador, sin credencial. Es lo que entrega un asistente, ya que un chat puede llevar una dirección pero no un video.

{
"url": "http://localhost:4000/v1/export-files/01M2SQTF3R3GHBVTR3DQQNH1DK?as=video&key=...",
"expiresAt": null,
"form": "video",
"kept": true
}

El enlace nombra ese único archivo y nada más. Para un video conservado funciona mientras se conserve el video, y expiresAt es null; en otro caso dura quince minutos. Pedirlo antes de que el video haya terminado es un 502 asset_unavailable que indica lo que está haciendo en su lugar. Pedir un enlace cuenta un video terminado contra la cuota exactamente como consultarlo.

El enlace en sí, GET /v1/export-files/{jobId}, no necesita credencial, porque lo es: para exactamente un archivo. Uno alterado o que ha caducado es un 403, y uno a un video que ya no se conserva, un 404.

Todas las exportaciones hasta ahora​

GET /v1/direct-export/videos lista las exportaciones conservadas del espacio de trabajo, la más reciente primero, con un enlace a cada una que dura lo que dure el video. Admite limit, 24 por defecto y como máximo 100.

{
"exports": [
{
"jobId": "01M2SQTF3R3GHBVTR3DQQNH1DK",
"templateId": "tpl_dd7e6b264fb8",
"templateName": "Big number",
"version": "1.0.0",
"variant": "Corporate glass",
"ratio": "9x16",
"locale": "en",
"brandId": "01M1VFRWE7VHP3H54ESRJQ0SAJ",
"width": 1080,
"height": 1920,
"durationMs": 10000,
"byteSize": 742118,
"createdBy": "apikey:01M2SQKKZ3ZPXK8RB7BK5QJ3GH",
"createdAt": "2026-09-18T07:49:02.114Z",
"videoUrl": "http://localhost:4000/v1/export-files/01M2SQTF3R3GHBVTR3DQQNH1DK?as=video&key=..."
}
],
"kept": "Kept with the rendered clips, in their share of the storage. When it is full the oldest clip goes first."
}

variant es el corte en que se renderizó: páselo en una variación, o la variación renderiza el primero de la plantilla. GET /v1/direct-export/videos/{jobId} es una de ellas con el content del que se renderizó, que es donde empieza una variación.

Descartar​

curl -X POST \
http://localhost:4000/v1/direct-export/video/01M2SQTF3R3GHBVTR3DQQNH1DK/discard \
-H "Authorization: Bearer rw_your_key_here"
{ "discarded": true }

Descartar detiene un video que aún se renderiza y elimina la copia conservada. Se puede repetir con seguridad: un id sin nada que descartar responde { "discarded": false }. Una exportación que quiere conservar no necesita descartarse en absoluto. Es lo que hacen Cancelar y Eliminar del panel en Videos exportados; cerrar el diálogo Crear clip nunca descarta, y deja renderizándose cada video. Una clave necesita renders:write para ello, y una persona con sesión iniciada el permiso de Operaciones.

Lo que cuesta​

Un video cuenta como un render contra la cuota del mes, cobrado cuando termina y no cuando empieza: una exportación cancelada a los dos segundos no es una que usted haya recibido. El envío se sigue rechazando cuando no queda nada, de modo que la cuota no se puede rebasar.

Los keyframes, POST /v1/direct-export/keyframes, son imágenes sueltas en los fotogramas que usted elija: el mismo cuerpo que un video más frames, de 1 a 60 de { "name": "...", "frame": 120 }. Vuelven como PNG en un zip, cada uno con el nombre de su keyframe, y no cuentan contra la cuota. Un fotograma pasado el final del clip es un 400. Omita frames para obtener solo el keyframe, un fotograma del último tercio del clip.

Dos campos más los convierten en una forma de probar cosas antes de guardar nada:

  • data omitido renderiza el propio ejemplo completo de la variante, el contenido que muestra su vista previa, de modo que se pueda ver un estilo o una marca antes de que nadie haya escrito una publicación.
  • brandChange, junto a brandId, superpone un cambio al estilo de esa marca solo para estas imágenes: objetos combinados a cualquier profundidad, una lista sustituida entera, null quita un valor, y los colores se calculan de nuevo a partir de palette como lo haría un guardado. Los archivos propios de la marca se quedan como están guardados; un archivo que nombre el cambio debe estar en la biblioteca multimedia. No se escribe nada. Un cambio que no produce un estilo válido es un 400.
{
"templateId": "tpl_dd7e6b264fb8",
"brandId": "01JA...",
"ratio": "9x16",
"locale": "en",
"brandChange": { "palette": { "brand": "#1E5AA8", "stage": "light" }, "text": { "primary": { "font": "montserrat" } } }
}

Los ids de exportación pertenecen a un espacio de trabajo​

Los ids de trabajo del renderizador son globales, así que Reelwire recuerda qué espacio de trabajo inició cada trabajo. Un id de trabajo de otro espacio de trabajo responde 404, exactamente como uno que nunca existió.

Esa memoria es también donde vive un video hasta que se conserva, de modo que un reinicio de Reelwire, un despliegue incluido, pierde cada exportación que aún se renderiza. Si se pregunta por él después, un trabajo así responde 404 con un mensaje que lo dice: no se cobró, y la forma de seguir es iniciarlo de nuevo. Un video ya conservado sobrevive a un reinicio.

Errores frecuentes​

Consultar la ruta de estado antes de necesitarlo. Lea frames de /timing y espere aproximadamente ese tiempo antes de la primera consulta.

Descartar lo que quería conservar. Descartar elimina también la copia conservada. Deje una exportación en paz y se queda hasta que los clips más nuevos necesiten el espacio.

Esperar que la descarga sea JSON, o un zip. Es video/mp4.

Omitir variant en una variación. Entonces es la primera variante de la plantilla, que en una plantilla sectorial como Finance es otra publicación con otros campos. Una exportación conservada, su reutilización y la propia respuesta de la exportación indican qué variante era; páselo.

Gastar un render para encontrar un error. POST /v1/templates/{templateId}/validate responde las mismas comprobaciones gratis, incluidas las imágenes ausentes.

Comprar cuota con una clave de API. Es del propietario, con la sesión iniciada. Una clave no tiene rol, tenga los permisos que tenga.

Eliminar un clip renderizado que una publicación aún necesita. Cada publicación de su trabajo que aún lo espera se cancela con él. Consulte Biblioteca multimedia.