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

# Buat World

> Membuat tugas pembuatan dunia World Labs Marble

Buat dunia 3D yang dapat dijelajahi dengan World Labs Marble. API ini asinkron: respons create mengembalikan identitas tugas dan `poll_url` untuk memeriksa status.

Model yang didukung adalah `marble-1.0`, `marble-1.1`, dan `marble-1.1-plus`. World Labs mendokumentasikan `marble-1.0-draft`, tetapi TokenLab belum mengekspos draft generation di endpoint ini.

## Isi Permintaan

<ParamField body="model" type="string" default="marble-1.0">
  Model Marble yang digunakan: `marble-1.0`, `marble-1.1`, atau `marble-1.1-plus`.
</ParamField>

<ParamField body="prompt" type="string">
  Prompt teks untuk generasi teks saja atau sebagai panduan dengan input gambar/video.
</ParamField>

<ParamField body="world_prompt" type="object">
  Objek native World Labs `world_prompt` untuk pemanggil tingkat lanjut. Tipe prompt yang didukung adalah `text`, `image`, `multi-image`, dan `video`.
</ParamField>

<ParamField body="image" type="string">
  Prompt gambar Base64 atau data URL.
</ParamField>

<ParamField body="image_url" type="string">
  Prompt URL gambar.
</ParamField>

<ParamField body="images" type="array">
  Beberapa prompt gambar untuk shortcut multi-image generation. Berikan hingga 4 gambar. Untuk mode rekonstruksi native World Labs, kirim `world_prompt.type="multi-image"` dengan `reconstruct_images: true` dan hingga 8 gambar.
</ParamField>

<ParamField body="video_url" type="string">
  Prompt URL video.
</ParamField>

<ParamField body="is_pano" type="boolean | string">
  Untuk input gambar, set `true` untuk panorama yang sudah ada, `false` untuk gambar tunggal normal, atau `auto`.
</ParamField>

<ParamField body="seed" type="integer">
  Seed opsional dari 0 sampai 4294967295.
</ParamField>

<ParamField body="display_name" type="string">
  Nama tampilan opsional untuk world yang dibuat, hingga 64 karakter.
</ParamField>

<ParamField body="tags" type="array">
  Tag World Labs opsional. Hingga 10 tag, masing-masing hingga 32 karakter.
</ParamField>

<ParamField body="permission" type="object">
  Objek permission World Labs opsional.
</ParamField>

## Respons

<ResponseField name="id" type="string">
  ID tugas publik untuk polling.
</ResponseField>

<ResponseField name="task_id" type="string">
  Alias identifier tugas asinkron.
</ResponseField>

<ResponseField name="operation_id" type="string">
  ID operasi World Labs.
</ResponseField>

<ResponseField name="poll_url" type="string">
  URL polling yang disarankan untuk tugas ini.
</ResponseField>

<ResponseField name="status" type="string">
  Status tugas: `pending`, `processing`, `completed`, atau `failed`.
</ResponseField>

<ResponseField name="world_marble_url" type="string">
  URL dunia Marble yang dihasilkan saat selesai.
</ResponseField>

<ResponseField name="glb_url" type="string">
  URL GLB collider mesh jika tersedia.
</ResponseField>

<ResponseField name="pano_url" type="string">
  URL gambar panorama jika tersedia.
</ResponseField>

## Harga

World Labs menagih dalam credits. TokenLab melakukan pre-deduct maksimum sesuai tipe request dan menyelesaikan berdasarkan `cost.total_credits` dari operation yang selesai jika tersedia. Request Marble standar hingga 1.600 credits. `marble-1.1-plus` hingga 3.100 credits.

## Cakupan

Endpoint manajemen ini mencakup aset media milik TokenLab dan world selesai. TokenLab masih belum mengekspos generasi `marble-1.0-draft` atau alat pano/depth mandiri.

<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": "Kota pesisir yang tenang saat matahari terbenam dengan gang sempit dan lampu hangat"
    }'
  ```

  ```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": "Kota pesisir yang tenang saat matahari terbenam dengan gang sempit dan lampu hangat",
      },
  )

  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: 'Kota pesisir yang tenang saat matahari terbenam dengan gang sempit dan lampu hangat'
    })
  });

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