# Crear una nueva Assembly

POST`https://api2.transloadit.com/assemblies`

###### Advertencia

Este endpoint requiere que tu [Auth Key](/es/docs/api/authentication.md) tenga el alcance `assemblies:write`.

Una Assembly puede procesar y exportar archivos. Las [Assembly Instructions](/es/docs/topics/assembly-instructions.md) determinan cómo debemos procesarlos. Las Instructions pueden proporcionarse directamente (dentro de un parámetro `steps`) o guardarse en unTemplate (al que se hace referencia mediante un parámetro `template_id`). Los Templates te permiten reutilizar Instructions, modificarlas sin desplegar tu aplicación y evitar exponer secretos en el entorno donde está desplegada tu aplicación.

Aceptamos solicitudes POST `multipart/form-data` para admitir subidas habituales mediante `<form>` a nuestro servicio (además del uso de XHR o SDK).

Se pueden incluir varios archivos como parte de esta solicitud. Si quieres realizar subidas reanudables de archivos, estos no se incluyen en esta solicitud, como se describe en[Subidas reanudables](/es/docs/api/resumable-uploads.md).

###### Nota

Transloadit admite archivos de hasta 200 GB. Si necesitas un límite mayor para tu aplicación,[ponte en contacto con nosotros](mailto:support@transloadit.com).

## Campos de POST

* Incluir `signature` es opcional. Para obtener más información, consulta [Signature Authentication](/es/docs/api/authentication.md).
* Es obligatorio incluir `params`. Debe contener un objeto codificado en JSON con las claves que se muestran en la siguiente tabla.
* Incluir `num_expected_upload_files` es opcional. Cuando se usan subidas reanudables, especifica la cantidad de archivos que se subirán. Encontrarás más detalles en [Subidas reanudables](/es/docs/api/resumable-uploads.md).

También puedes proporcionar aquí otros campos POST (que no se llamen `params`, `signature` ni`num_expected_upload_files`). Puedes usarlos como variables para [hacer dinámicas tus Assembly Instructions](/docs/robots/file-filter.md#form-fields-in-instructions).

## Claves admitidas en el campo `params`

* ### `auth` — **obligatorio**

`object`\
Contiene, como mínimo, tu Auth Key de Transloadit en la propiedad `key`.\
Si habilitas Signature Authentication, también debes establecer una fecha de vencimiento para la solicitud en la propiedad expires:\
![](/_next/static/media/copy.04p1cju9qekk_.svg?dpl=dpl_GBjmaCTpH3rF6sBBsH4gkTL4K8CU)

```jsonc
{  
  "key": "23c96d084c744219a2ce156772ec3211",  
  "expires": "2009-08-28T01:02:03.000Z"  
}  
```

Recomendamos encarecidamente incluir la propiedad `nonce`: un valor único generado aleatoriamente para cada solicitud que evita el procesamiento duplicado durante los reintentos, puede ayudar con la depuración y evita vectores de ataque como la reutilización de claves de firma:\
![](/_next/static/media/copy.04p1cju9qekk_.svg?dpl=dpl_GBjmaCTpH3rF6sBBsH4gkTL4K8CU)

```jsonc
{  
  // …  
  "nonce": "04ac6cb6-df43-41fb-a7fd-e5dd711a64e1"  
}  
```

La propiedad `referer` es una expresión regular que se compara con el referente HTTP de esta subida, como `"example\.org"`. Especifica esta clave para asegurarte de que las subidas solo procedan de tu dominio.\
Las subidas sin referente siempre pasarán la comprobación, ya que algunos navegadores lo desactivan, por lo que esto solo resulta útil en unos pocos casos de uso. Para obtener detalles sobre las expresiones regulares, consulta la [documentación de RegExp de Mozilla](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global%5FObjects/RegExp).\
La propiedad `max_size` puede utilizarse para establecer el tamaño máximo en bytes de una subida, como `1048576` (1 MB). Especifícalo para impedir que los usuarios suban archivos excesivamente grandes. El tamaño de los archivos se comprueba en cuanto comienza la subida. Si supera el tamaño máximo, se cancela todo el proceso de subida y la Assembly genera un error, aunque contenga archivos que no superen el límite de `max_size`. Si solo quieres ignorar los archivos que superen cierto tamaño y procesar todos los demás, usa [🤖/file/filter](/docs/robots/file-filter.md).\
La propiedad `max_number_of_files` puede utilizarse para establecer la cantidad máxima de archivos que puede contener una subida, como `100`. Especifícalo para impedir que los usuarios suban una cantidad excesiva de archivos, tanto mediante subidas de archivos como mediante Robots de importación.\
Estas propiedades pueden establecerse como parte de la solicitud de la Assembly o como parte del Template.

* ### `allow_steps_override`

`boolean`\
Establece este valor en false para impedir que se anulen Templates durante la ejecución. Si lo estableces en false, template\_id y steps serán mutuamente excluyentes y solo podrás proporcionar uno de esos parámetros. Se recomienda al implementar Transloadit en entornos que no sean de confianza. Es conveniente establecerlo como parte de un Template, en lugar de hacerlo en la propia Assembly al crearla.

* ### `notify_url`

`string | null`\
Transloadit puede enviar una devolución de llamada a tu servidor cuando se complete la Assembly. Enviaremos el estado de la Assembly como una cadena JSON con codificación URL para formularios dentro de un campo transloadit, en una solicitud POST multipart a la URL proporcionada aquí. Usa `notification_payload` para reducir el tamaño de la carga útil (p. ej., `without_uploads`, `without_results`, `without_params`); el mismo filtrado se aplica a los reenvíos de notificaciones.

* ### `notification_payload`

`Array<without_params | without_result_meta_data | without_results | without_upload_meta_data | without_uploads>`\
Controla el tamaño de la carga útil enviada en las notificaciones de la Assembly, tanto en la notificación inicial como en cualquier reenvío. Un arreglo vacío (valor predeterminado) envía el Assembly Status completo. Añade `"without_params"` para eliminar los campos JSON sin procesar de Assembly Instructions (`params`, `template` y `merged_params`). Añade `"without_upload_meta_data"` para eliminar `meta` de los archivos en `uploads`. Añade `"without_result_meta_data"` para eliminar `meta` de los archivos en `results`. Añade `"without_uploads"` para eliminar por completo `uploads`. Añade `"without_results"` para eliminar por completo `results`. El filtrado se aplica antes de la serialización, por lo que usar estas opciones reduce el uso de memoria y ayuda a evitar fallos por cargas útiles demasiado grandes o por falta de memoria en Assemblies grandes.

* ### `fields`

`Record<string, any>`\
Un objeto de valores identificados por claves de cadena (nombre -> valor) que pueden utilizarse como Assembly Variables, al igual que los campos adicionales de un formulario. Puedes usar como valor cualquier elemento que pueda serializarse como JSON

* ### `quiet`

`boolean`\
Establece este valor en true para reducir la respuesta de una solicitud POST de una Assembly únicamente a los campos necesarios. Esto impide que se revele información potencialmente confidencial al usuario final que realiza la solicitud de la Assembly. Una Assembly exitosa solo incluirá los campos ok y assembly\_id. Una Assembly con errores solo incluirá los campos error, http\_code, message y assembly\_id. El Assembly Status completo se seguirá enviando a notify\_url si se especificó uno.

* ### `steps`

`Record<string, object & object>`\
Contiene Assembly Instructions.

* ### `template_id`

`string`\
El ID del Template que contiene tus Assembly Instructions. Si configuras `allow_steps_override` como `false` en tu Template, `steps` y `template_id` serán mutuamente excluyentes; solo puedes proporcionar uno de estos parámetros.

## Respuesta

Este es un ejemplo del cuerpo de la respuesta:

![](/_next/static/media/copy.04p1cju9qekk_.svg?dpl=dpl_GBjmaCTpH3rF6sBBsH4gkTL4K8CU)

```
{
  "ok": "ASSEMBLY_EXECUTING",
  "http_code": 200,
  "message": "The assembly is currently being executed.",
  "assembly_id": "0fce5b1063e611e88d8eb130f7921d8a",
  "parent_id": null,
  "account_id": "6c8b8d10d68b11e3a799b579dfce333a",
  "template_id": null,
  "instance": "morven.transloadit.com",
  "assembly_url": "http://api2.morven.transloadit.com/assemblies/0fce5b1063e611e88d8eb130f7921d8a",
  "assembly_ssl_url": "https://api2-morven.transloadit.com/assemblies/0fce5b1063e611e88d8eb130f7921d8a",
  "uppyserver_url": "https://api2-morven.transloadit.com/uppy-server/",
  "websocket_url": "https://api2-morven.transloadit.com/ws20243",
  "tus_url": "https://api2-morven.transloadit.com/resumable/files/",
  "bytes_received": 1687,
  "bytes_expected": 1687,
  "upload_duration": 0.049,
  "start_date": "2018/05/30 08:47:19 GMT",
  "warnings": [],
  "execution_start": "2018/05/30 08:47:19 GMT",
  "execution_duration": 0.001,
  "queue_duration": 0.04,
  "jobs_queue_duration": 0,
  "fields": {},
  "bytes_usage": 0,
  "template": null,
  "uploads": [
    // …
  ],
  "results": {
    // …
  }
}
```

Para obtener más información sobre la respuesta, consulta nuestra documentación sobre la [Respuesta de Assembly Status](/es/docs/api/assembly-status-response.md).
