> This page is for Plate-forme, version Hérité.
> For other versions, use one of these documentation indexes:
> - V4 (default): https://next.developer.frame.io/platform/v4/llms.txt
> - V4 expérimental: https://next.developer.frame.io/platform/v4-experimental/llms.txt
> - Hérité: 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.

# Charger des asset

# Présentation




Ce tutoriel explique comment charger des asset dans Frame.io. Frame.io peut gérer tous les types de fichiers, pas seulement les vidéos, mais aussi les Script, les images, les cartes et les fichiers de référence. En termes plus techniques, un asset dans Frame.io est une représentation robuste d'un fichier dans S3 et de son contexte dans Frame.io, incluant les transcodages, le contexte utilisateur/équipe/Projet et les métadonnées. Pour plus d'informations sur les asset, veuillez consulter la définition des ressources.​





## Hiérarchies principales




Il est également utile de savoir comment Frame.io structure ses modèles principaux.

Les **Comptes**, auxquels appartiennent les **Utilisateurs**, contiennent de nombreux **Projets**, qui contiennent tous des **asset**. Les **équipes** sont disponibles uniquement pour les comptes Entreprise et fournissent un Niveau supplémentaire de séparation logique. Les asset ne « connaissent » pas l'équipe à laquelle ils appartiennent -- seulement le Projet et le Compte -- mais les Projets appartiennent strictement aux équipes, et non aux Comptes, faisant des équipes une partie intégrante du processus de chargement d'asset.

## Conditions préalables




Pour ce tutoriel, vous aurez besoin de :




* Un Compte Frame.io avec un jeton de développeur (les jetons sont expliqués ci-dessous)
* [Frame.io Python SDK](https://github.com/Frameio/python-frameio-client)




## Charger un asset




Cette section vous guide à travers les étapes pour charger un asset.




1. Créez un jeton de développeur sur [developer.frame.io](/) avec les portées suivantes :




| portée | Raison |
| ---------- | ---------- |
| **Comptes :** Lecture | Récupérer la liste des Comptes pour l'Utilisateur demandeur. |
| **équipes :** Lecture | Récupérer les équipes disponibles pour le Compte souhaité. |
| **Projets :** Lecture | Récupérer les Projets disponibles pour l'équipe souhaitée. |
| **Assets :** Créer, Lecture | Créer le nouvel enregistrement d'asset et récupérer les assets disponibles pour parcourir la structure de dossiers dans le Projet. |



<Info title="Besoin d'aide pour créer un jeton d'API ?">
  Consultez les instructions [**ici**](doc:get-a-developer-token).
</Info>

2. Localisez une destination pour votre asset. Au minimum, les assets doivent être placés dans un **Projet**. Vous devez récupérer l'ID de l'asset racine (`root_asset_id`) d'un projet ou un ID d'asset pour un dossier afin de pouvoir spécifier l'emplacement dans la hiérarchie de fichiers où vous souhaitez charger.




<Warning title="REMARQUE :">
  Vous ne pouvez pas charger avec un ID de projet uniquement. Pour charger à la racine de votre projet, spécifiez le `root_asset_id` dans votre demande.
</Warning>


En général, vous devez récupérer (dans l'ordre spécifié) :



* les ID de Compte et choisir un compte
* les ID d'équipe et choisir une équipe
* les projets associés à une équipe
* l'ID de projet pour le projet avec lequel vous souhaitez travailler
* l'ID de l'asset racine ou un ID de dossier

Vous pouvez charger directement dans la racine d'un projet en utilisant le `root_asset_id`.

### Lister les assets

Pour choisir où vous voulez charger votre nouvel asset, vous pouvez utiliser l'API pour lister tous les assets dans un projet ou dossier au sein d'un projet. Si un asset est un *dossier*, il contiendra des assets enfants, qui peuvent également être des fichiers et des dossiers. Lors de la liste des informations d'assets, vous pouvez utiliser n'importe quel ID d'asset, mais si vous voulez examiner tout ce qui est associé à un projet, utilisez le `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"
)
```





Dans la liste retournée d'assets, vous pouvez utiliser un ID pour tout asset qui est un dossier, ou l'ID de l'asset racine. Vous utiliserez cet ID pour marquer où vous voulez charger votre nouvel asset.





### Charger la ressource




Dans cet exemple, nous allons charger un nouveau fichier. Vous envoyez votre demande avec les informations suivantes :




| Paramètre | Description |
| ---------- | ---------- |
| `filesize` | Entrez la taille du fichier que vous souhaitez charger |
| `filetype` | Choisissez le type de fichier que vous chargez. Les options incluent vidéo et image. Exemples : `video/mp4`, `image/png`. |
| `name` | Entrez une chaîne représentant le nom du fichier, sans espaces. |
| `type` | Ceci indique si vous utilisez un `fichier` ou un `dossier`. Une pile de version est lorsque vous empilez plusieurs fichiers les uns sur les autres. |
Si vous souhaitez créer un nouveau dossier, vous n'avez pas besoin d'inclure `filesize` ou `filetype` dans votre demande. Pour une demande `cURL`, vous pouvez rapidement charger une ressource dans Frame.io en incluant un lien vers votre fichier avec le paramètre `&quot;source&quot;: { &quot;url&quot;:&quot;URL_FOR_VIDEO&quot; }`. Le lien doit être accessible publiquement. Sinon, vous pouvez utiliser le SDK Python, qui gère la division de votre fichier en fragments pour chaque lien de chargement à votre place.

```cURL

curl --request POST \

--url https://api.frame.io/v2/assets/&lt;asset_id&gt;/children \ --header 'authorization: Bearer&lt;dev_token&gt;' \

--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;}'


```

**`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="L'URL des asset va expirer">
  


Les URL que vous obtenez de l'appel API de création d'asset sont pré-signées pour autoriser votre chargement, mais expireront après 24 heures.



</Info>


# Créez votre propre chargeur de fichiers

Si vous voulez créer votre propre chargeur, pour de meilleures performances, il est recommandé de charger les segments en parallèle. Chaque segment doit être `PUT` directement vers les URL Amazon S3 fournies dans la réponse de l'API Frame.io. Vos segments de fichiers doivent correspondre à l'ordre des `upload_urls` fournies, car elles *dictent la séquence de l'asset final concaténé et transcodé.* Cela signifie que la 1ère URL prend le 1er segment, la 2e URL prend le 2e segment, et ainsi de suite.

#### Exemple de pseudocode

**`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 # Définir à 0 pour commencer




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

```

Les en-têtes pour chaque requête vers S3 doivent inclure le `filetype` de votre nouvel asset exactement comme il a été renvoyé de votre appel initial à l'API Frame.io, ainsi qu'un en-tête de confidentialité supplémentaire :

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

Vous pouvez voir un exemple de comment tout cela est géré dans notre SDK Python [ici](https://github.com/Frameio/python-frameio-client/blob/master/examples/upload_asset.py).
<Info title="Les erreurs AWS sont formatées en XML">
  


Veuillez noter que toute erreur que vous obtenez à ce stade viendra directement d'AWS, et sera donc formatée comme XML, et non comme la gestion d'erreur JSON standard de Frame.io. Nous recommandons généralement de créer une logique de nouvelle tentative autour de ces chargements pour tout usage en production, car les fichiers incomplets (c'est-à-dire les fichiers avec des segments manquants) échoueront au transcodage et à l'affichage dans Frame.io



</Info>
 Et voilà ! Une fois que vous avez terminé les appels `PUT` vers les `upload_url`s, vous aurez un nouvel asset dans Frame.io.