> ## 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.

# Créer un World

> Crée une tâche de génération de monde World Labs Marble

Générez des mondes 3D explorables avec World Labs Marble. Cette API est asynchrone : les réponses de création renvoient une identité de tâche et une `poll_url` pour vérifier l’état.

Les modèles pris en charge sont `marble-1.0`, `marble-1.1` et `marble-1.1-plus`. World Labs documente aussi `marble-1.0-draft`, mais TokenLab n’expose pas encore la génération draft sur cet endpoint.

## Corps de la requête

<ParamField body="model" type="string" default="marble-1.0">
  Modèle Marble à utiliser : `marble-1.0`, `marble-1.1` ou `marble-1.1-plus`.
</ParamField>

<ParamField body="prompt" type="string">
  Prompt texte pour une génération texte seule ou comme guidage avec des entrées image/vidéo.
</ParamField>

<ParamField body="world_prompt" type="object">
  Objet World Labs natif `world_prompt` pour les appels avancés. Les types pris en charge sont `text`, `image`, `multi-image` et `video`.
</ParamField>

<ParamField body="image" type="string">
  Prompt image en Base64 ou data URL.
</ParamField>

<ParamField body="image_url" type="string">
  Prompt par URL d’image.
</ParamField>

<ParamField body="images" type="array">
  Plusieurs prompts image pour une génération multi-image simplifiée. Fournissez jusqu’à 4 images. Pour le mode reconstruction natif World Labs, passez `world_prompt.type="multi-image"` avec `reconstruct_images: true` et jusqu’à 8 images.
</ParamField>

<ParamField body="video_url" type="string">
  Prompt par URL vidéo.
</ParamField>

<ParamField body="is_pano" type="boolean | string">
  Pour les entrées image, définissez `true` pour un panorama existant, `false` pour une image simple normale, ou `auto`.
</ParamField>

<ParamField body="seed" type="integer">
  Seed optionnel de 0 à 4294967295.
</ParamField>

<ParamField body="display_name" type="string">
  Nom d’affichage optionnel pour le monde généré, jusqu’à 64 caractères.
</ParamField>

<ParamField body="tags" type="array">
  Tags World Labs optionnels. Jusqu’à 10 tags, 32 caractères maximum chacun.
</ParamField>

<ParamField body="permission" type="object">
  Objet permission World Labs optionnel.
</ParamField>

## Réponse

<ResponseField name="id" type="string">
  ID public de tâche pour le polling.
</ResponseField>

<ResponseField name="task_id" type="string">
  Alias de l’identifiant de tâche asynchrone.
</ResponseField>

<ResponseField name="operation_id" type="string">
  ID de l’opération World Labs.
</ResponseField>

<ResponseField name="poll_url" type="string">
  URL de polling recommandée pour cette tâche.
</ResponseField>

<ResponseField name="status" type="string">
  État de la tâche : `pending`, `processing`, `completed` ou `failed`.
</ResponseField>

<ResponseField name="world_marble_url" type="string">
  URL du monde Marble généré une fois terminé.
</ResponseField>

<ResponseField name="glb_url" type="string">
  URL GLB du maillage collider si disponible.
</ResponseField>

<ResponseField name="pano_url" type="string">
  URL de l’image panoramique si disponible.
</ResponseField>

## Tarification

World Labs facture en credits. TokenLab pré-déduit le maximum du type de requête, puis règle selon `cost.total_credits` de l’operation terminée lorsqu’il est disponible. Les requêtes Marble standard vont jusqu’à 1 600 credits. `marble-1.1-plus` va jusqu’à 3 100 credits.

## Périmètre

Ces endpoints de gestion couvrent les médias appartenant à TokenLab et les Worlds générés terminés. TokenLab n’expose toujours pas la génération `marble-1.0-draft` ni les outils pano/depth autonomes.

<RequestExample>
  ```bash cURL theme={null}
  curl -X POST "https://api.tokenlab.sh/v1/worlds/generations" \
    -H "Authorization: Bearer sk-your-api-key" \
    -H "Content-Type: application/json" \
    -d '{
      "model": "marble-1.1",
      "prompt": "Une petite ville côtière calme au coucher du soleil, avec des ruelles étroites et des lumières chaudes"
    }'
  ```

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

  response = requests.post(
      "https://api.tokenlab.sh/v1/worlds/generations",
      headers={"Authorization": "Bearer sk-your-api-key"},
      json={
          "model": "marble-1.1",
          "prompt": "Une petite ville côtière calme au coucher du soleil, avec des ruelles étroites et des lumières chaudes",
      },
  )

  task = response.json()
  print(task["id"], task["poll_url"])
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch('https://api.tokenlab.sh/v1/worlds/generations', {
    method: 'POST',
    headers: {
      Authorization: 'Bearer sk-your-api-key',
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      model: 'marble-1.1',
      prompt: 'Une petite ville côtière calme au coucher du soleil, avec des ruelles étroites et des lumières chaudes'
    })
  });

  const task = await response.json();
  console.log(task.id, task.poll_url);
  ```
</RequestExample>
