> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tokenlab.sh/llms.txt
> Use this file to discover all available pages before exploring further.

# Préparer un upload de média

> Crée une cible d’upload pour un média World Labs

Créez un enregistrement de média World Labs et recevez une URL d’upload pour une image ou une vidéo. Uploadez le fichier binaire vers `upload_info.upload_url`, puis référencez `media_asset.media_asset_id` dans `world_prompt` avec `source: "media_asset"`.

TokenLab enregistre le propriétaire du média. Seule la même organisation peut récupérer ou utiliser ce média dans une génération de World.

## Corps de requête

<ParamField body="file_name" type="string" required>
  Nom de fichier d’origine, jusqu’à 64 caractères.
</ParamField>

<ParamField body="kind" type="string" required>
  Type de média: `image` ou `video`.
</ParamField>

<ParamField body="extension" type="string">
  Extension optionnelle, par exemple `png`, `jpg` ou `mp4`.
</ParamField>

<ParamField body="metadata" type="object">
  Objet de métadonnées optionnel stocké avec le média upstream.
</ParamField>

## Réponse

<ResponseField name="media_asset" type="object">
  Métadonnées du média World Labs préparé.
</ResponseField>

<ResponseField name="upload_info.upload_url" type="string">
  URL upstream signée où uploader le fichier binaire.
</ResponseField>

<RequestExample>
  ```bash cURL theme={null}
  curl -X POST "https://api.tokenlab.sh/v1/worlds/media-assets/prepare-upload" \
    -H "Authorization: Bearer sk-your-api-key" \
    -H "Content-Type: application/json" \
    -d '{
      "file_name": "reference.png",
      "kind": "image",
      "extension": "png"
    }'
  ```

  ```python Python theme={null}
  import requests

  response = requests.post(
      "https://api.tokenlab.sh/v1/worlds/media-assets/prepare-upload",
      headers={"Authorization": "Bearer sk-your-api-key"},
      json={"file_name": "reference.png", "kind": "image", "extension": "png"},
  )

  print(response.json()["media_asset"]["media_asset_id"])
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch('https://api.tokenlab.sh/v1/worlds/media-assets/prepare-upload', {
    method: 'POST',
    headers: {
      Authorization: 'Bearer sk-your-api-key',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({ file_name: 'reference.png', kind: 'image', extension: 'png' })
  });

  const prepared = await response.json();
  console.log(prepared.media_asset.media_asset_id, prepared.upload_info.upload_url);
  ```
</RequestExample>
