> This page is for Plataforma, version Heredado.
> For other versions, use one of these documentation indexes:
> - V4 (default): https://next.developer.frame.io/platform/v4/llms.txt
> - V4 experimental: https://next.developer.frame.io/platform/v4-experimental/llms.txt
> - Heredado: https://next.developer.frame.io/platform/v2/llms.txt

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://next.developer.frame.io/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://next.developer.frame.io/_mcp/server.

# Cargar activos

# Información general




En este tutorial se explica cómo cargar activos en Frame.io. Frame.io puede gestionar todos los tipos de archivos, no solo vídeo, sino también scripts, imágenes, mapas y archivos de referencia. En términos más técnicos, un activo en Frame.io es una representación sólida de un archivo en S3 y su contexto en Frame.io, incluidas las transcodificaciones, el contexto de usuario/equipo/proyecto y los metadatos. Para obtener más información sobre los activos, consulte la definición del activo.





## Jerarquías principales




También es útil saber cómo Frame.io estructura sus modelos principales.

Las **cuentas**, a las que pertenecen los **usuarios**, tienen muchos **proyectos**, que contienen **activos**. Los **equipos** solo están disponibles solo para cuentas de Enterprise, y proporcionan un nivel adicional de separación lógica. Los activos no &quot;saben&quot; a qué equipo pertenecen, solo el proyecto y la cuenta a los que pertenecen, pero los proyectos son propiedad estricta de los equipos, y no de las cuentas, lo que hace que los equipos sean una parte integral del proceso de carga de activos.

## Requisitos previos




Para este tutorial, necesitará:




* Una cuenta de Frame.io con un token de desarrollador (los tokens se explican a continuación)
* [SDK de Python para Frame.io](https://github.com/Frameio/python-frameio-client)




## Cargar un activo




En esta sección se explican los pasos para cargar un activo.




1. Crear un token de desarrollador en [developer.frame.io](/) con los siguientes ámbitos:




| Ámbito | Motivo |
| ---------- | ---------- |
| **Cuentas:** Lectura | Recuperar la lista de cuentas para el usuario que realiza la solicitud. |
| **Equipos:** Lectura | Recuperar equipos disponibles para la cuenta deseada. |
| **Proyectos:** Lectura | Recuperar proyectos disponibles para el equipo deseado. |
| **Activos:** Creación, Lectura | Crear el nuevo registro de activo y recuperar los activos disponibles para navegar por la estructura de carpetas dentro del proyecto. |



<Info title="¿Necesita ayuda para crear un token de API?">
  Revise las instrucciones que aparecen [**aquí**](doc:get-a-developer-token).
</Info>

2. Localice un destino para su activo. Como mínimo, los activos deben colocarse dentro de un **proyecto**. Necesitará obtener el ID del activo raíz (`root_asset_id`) de un proyecto o el ID de activo de una carpeta para poder especificar la ubicación en la jerarquía de archivos en la que desea realizar la carga.




<Warning title="NOTA:">
  No puede cargar solo con un ID de proyecto. Para cargar a la raíz de su proyecto, especifique el `root_asset_id` en su solicitud.
</Warning>


En general, necesita recuperar (en el orden especificado):



* Los ID de cuenta y elegir una cuenta
* Los ID de equipo y elegir un equipo
* Los proyectos asociados con un equipo
* El ID de proyecto para el proyecto con el que desea trabajar
* El ID de activo raíz o un ID de carpeta

Puede realizar la carga directamente en la raíz de un proyecto con el `root_asset_id`.

### Enumerar activos

Para elegir dónde desea cargar su activo nuevo, puede usar la API para enumerar todos los activos que hay en un proyecto o carpeta dentro de un proyecto. Si un activo es una *carpeta*, contendrá activos secundarios, que también pueden ser archivos y carpetas. Al enumerar información de activos, puede usar cualquier ID de activo, pero si desea revisar todo lo asociado con un proyecto, use el `root_asset_id`.

```

``` python-sdk
from frameioclient import FrameioClient
import os

ASSET_ID = ""
TOKEN = ""

client = FrameioClient(TOKEN)
response_list = client.assets.get_children(ASSET_ID)
assets = response_list.results

for item in assets:
    print(item['id'], item['name'])
```





```

```python-sdk
# Code sample uses the Python SDK: https://github.com/Frameio/python-frameio-client

from frameioclient import FrameioClient

client = frameioclient("FRAMEIO_TOKEN)

asset = client.assets.upload(
  destination_id="PARENT_ASSET_ID",
  filepath="./my_file.mov"
)

# Create a folder:
asset = client.assets.create_folder(
  parent_asset_id=PARENT_ASSET_ID,
  name="My Awesome Folder"
)
```





De la lista de activos que se devuelve, puede usar un ID para cualquier activo que sea una carpeta, o el ID de activo raíz. Usará este ID para marcar dónde desea cargar su activo nuevo.





### Cargar activo




En este ejemplo, vamos a cargar un archivo nuevo. Envíe su solicitud con la siguiente información:




| Parámetro | Descripción |
| ---------- | ---------- |
| `filesize` | Introduzca el tamaño del archivo que desea cargar |
| `filetype` | Elija el tipo de archivo que está cargando. Entre las opciones se incluyen vídeo e imagen. Ejemplos: `video/mp4`, `image/png`. |
| `name` | Introduzca una cadena que represente el nombre del archivo, sin espacios. |
| `type` | Esto representa si está usando un `file` o una `folder`. Una pila de versiones es cuando apila varios archivos uno encima del otro. |
Si desea crear una carpeta nueva, entonces no necesita incluir `filesize` o `filetype` en su solicitud. Para una solicitud `cURL`, puede cargar rápidamente un activo en Frame.io incluyendo un vínculo a su archivo con el parámetro `&quot;source&quot;: { &quot;url&quot;:&quot;URL_FOR_VIDEO&quot; }`. Se debe poder acceder públicamente al vínculo. De lo contrario, puede usar el SDK de Python, que se encarga de dividir su archivo en fragmentos para cada vínculo de carga. ``` cURL

curl --request POST \

--url https://api.frame.io/v2/assets/<asset_id>/children \ --header 'authorization: Bearer<dev_token>' \

--header 'content-type: application/json' \


  

--data '{&quot;filesize&quot;:200000,&quot;filetype&quot;:&quot;video/mp4&quot;,&quot;name&quot;:&quot;test&quot;,&quot;source&quot;:{&quot;url&quot;:&quot;URL_FOR_VIDEO&quot;},&quot;type&quot;:&quot;file&quot;}'


</dev_token></asset_id>```

**`Python`**

```python title="Python"
filesize = 30000000
upload_urls = ["https://...", "https://...", "https://..."]
chunk_size = filesize / len(upload_urls)

start_byte = 0 # Set to 0 to start
for i, url in enumerate(upload_urls):
  end_byte = chunk_size * (i + 1)
  upload_chunk(url=url, start_byte, end_byte)
  start_byte = start_byte + chunk_size
```




<Info title="Las URL de activos caducarán">
  


Las URL que obtiene de la llamada API de creación de activos están firmadas previamente para autorizar su carga, pero caducarán después de 24 horas.



</Info>


# Crear su propio cargador de archivos

Si desea crear su propio cargador, para obtener el mejor rendimiento, se recomienda cargar fragmentos en paralelo. Cada fragmento debe enviarse con `PUT` directamente a las URL de Amazon S3 proporcionadas en la respuesta de la API de Frame.io. Los fragmentos del archivo deben coincidir con el orden de las `upload_urls` proporcionadas, ya que *dictan la secuencia del activo final concatenado y transcodificado.* Esto significa que la primera URL toma el primer fragmento, la segunda URL toma el segundo fragmento, y así sucesivamente.

#### Ejemplo de pseudocódigo

**`title=&quot;Python&quot;`**

```python title=&quot;Python&quot;

filesize = 30000000




upload_urls = [&quot;https://...&quot;, &quot;https://...&quot;, &quot;https://...&quot;]




chunk_size = filesize / len(upload_urls)





start_byte = 0 # Set to 0 to start




for i, url in enumerate(upload_urls):


  

end_byte = chunk_size * (i + 1)


  

upload_chunk(url=url, start_byte, end_byte)


  

start_byte = start_byte + chunk_size

``` Los encabezados de cada solicitud a S3 deben incluir el `filetype` del activo nuevo exactamente como se ha devuelto desde la llamada inicial a la API de Frame.io, así como un encabezado de privacidad adicional:

```text
PUT https://frameio-uploads-production.s3/etc/etc
Content-Type: video/mp4
x-amz-acl: private
```

Puede ver un ejemplo de cómo se gestiona todo esto en nuestro SDK de Python [aquí](https://github.com/Frameio/python-frameio-client/blob/master/examples/upload_asset.py).
<Info title="Los errores de AWS tienen formato XML">
  


Tenga en cuenta que cualquier error que obtenga en esta fase provendrá directamente de AWS y, por lo tanto, tendrá formato XML, no la gestión de errores JSON estándar de Frame.io. Por lo general, recomendamos crear lógica de reintento para estas cargas en cualquier uso de producción, ya que los archivos cargados de forma incompleta (es decir, archivos con fragmentos que faltan) no se transcodificarán y no se mostrarán en Frame.io



</Info>
 Eso es todo. Una vez que haya completado las llamadas `PUT` a las `upload_url`s, tendrá un activo nuevo en Frame.io.