# Cosmos 3 Super API

> Pembuatan text-to-image dengan ekspansi prompt dan mode perbandingan kandidat agentik opsional

Membuat 1 hingga 4 gambar dari `prompt` hingga 4096 karakter. Sisi `image_size` dibatasi ke 512-1280 px. `enable_agentic_generation` menghasilkan beberapa kandidat dan menyempurnakan prompt di antara putaran, dengan hingga 3 iterasi. Juga memiliki `negative_prompt`, `guidance_scale` hingga 20, `num_inference_steps` hingga 50, serta output jpeg atau png.

- Model id: `nvidia/cosmos-3-super/text-to-image`
- Made by: NVIDIA
- Category: Text to Image
- Output: image
- Price per run: from $0.04 / run of output image (cheapest run $0.04 (40 API credits))
- Run: `POST https://api.doitong.ru/v1/run/nvidia/cosmos-3-super/text-to-image`
- Quote: `POST https://api.doitong.ru/v1/quote/nvidia/cosmos-3-super/text-to-image`
- Docs page: https://doitong.com/id/developers/models/nvidia/cosmos-3-super/text-to-image

## Pricing

Price: **from $0.04 / run of output image** (the lowest tier; the quote prices your exact input). Price per run: the input files are measured before the run (length, resolution, frame rate). The quote measures the same files and is exactly what the run charges.

The full example input below costs $0.04 = 40 API credits (1 run × $0.04).

Prices are the upstream price in USD, paid from the API balance in API credits (1000 API credits = 1 USD). `POST https://api.doitong.ru/v1/quote/nvidia/cosmos-3-super/text-to-image` with the same JSON body returns the exact price for that input; the quote is exactly what a run charges. Invalid input is never charged and failed or canceled requests are refunded automatically.

## Input parameters

Send either the canonical name or the native field name (not both). Canonical names are the same across models.

| Parameter | Canonical name | Type | Required | Default | Allowed values / range | Description |
|---|---|---|---|---|---|---|
| `prompt` |  | string | yes |  | 1 – 4096 characters | Deskripsi teks untuk gambar output yang diinginkan. |
| `negative_prompt` |  | string | no | `` | ≤ 1024 characters | Panduan negatif yang mengidentifikasi warna, objek, atau artefak yang tidak diinginkan untuk dihindari dalam pembuatan. |
| `enable_prompt_expansion` |  | boolean | no | `false` |  | Peningkatan prompt sebelum pembuatan melalui OpenRouter, yang menghasilkan representasi dense structured-JSON yang digunakan untuk melatih Cosmos3 saat diaktifkan. Jika peningkatan gagal, pembuatan gambar dilanjutkan dengan prompt yang tidak diubah. |
| `enable_agentic_generation` |  | boolean | no | `false` |  | Loop penyempurnaan prompt otomatis yang ditujukan untuk kepatuhan yang lebih dekat terhadap permintaan asli. Setiap putaran menghasilkan beberapa kandidat gambar dan membandingkannya, dengan revisi prompt di antara putaran. |
| `agentic_max_iterations` |  | integer | no | `2` | 1 – 3 | Batas putaran penyempurnaan untuk pembuatan dengan mode agentic diaktifkan. |
| `agentic_samples_per_iteration` |  | integer | no | `2` | 1 – 3 | Jumlah kandidat gambar per iterasi untuk loop agentic, yang menentukan jumlah gambar yang bersaing dalam evaluasi sebelum kandidat terbaik diteruskan ke penulisan ulang prompt. |
| `agentic_early_stop` |  | boolean | no | `true` |  | Kontrol penghentian awal yang menganggap kecocokan gambar-ke-prompt yang kuat sudah cukup untuk selesai tanpa iterasi tambahan. |
| `image_size` |  | object {width, height} \| enum (string) | no | `square_hd` | `square_hd`, `square`, `portrait_4_3`, `portrait_16_9`, `landscape_4_3`, `landscape_16_9` | Tetapkan dimensi gambar output; pembatasan menjaga setiap sisi antara 512 dan 1280px, dengan panjang sisi dibatasi ke kelipatan 16. |
| `num_inference_steps` |  | integer | no | `28` | 1 – 50 | Jumlah langkah denoising; jumlah yang lebih tinggi menukar waktu pemrosesan yang lebih lama dengan kualitas yang lebih baik. |
| `guidance_scale` |  | number | no | `4` | 0 – 20 | Kekuatan classifier-free guidance. |
| `num_images` | `num_outputs` | integer | no | `1` | 1 – 4 | Jumlah gambar yang diminta untuk dibuat. |
| `seed` |  | integer \| null | no |  |  | Seed untuk pembuatan gambar yang dapat diulang. Gambar output tetap sama di antara proses kecuali seed, prompt, atau versi model berubah. |
| `enable_safety_checker` |  | boolean | no | `true` |  | Sakelar moderasi konten yang mencakup input prompt dan output gambar. Akun harus berwenang untuk melewati moderasi; jika tidak, pemeriksaan tetap wajib dilakukan apa pun pengaturan ini. Gambar yang dianggap tidak aman diganti dengan gambar hitam. |
| `output_format` |  | enum (string) | no | `jpeg` | `jpeg`, `png` | Format file untuk gambar hasil. |

## Example input

Required parameters only:

```json
{
  "prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field"
}
```

A fuller example:

```json
{
  "prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field"
}
```

## Run it

Set `DOITONG_API_KEY` to a key from https://doitong.com/developers/dashboard#keys. `?wait=20` returns the finished request in the same call when it is ready within 20 seconds; otherwise poll `GET /requests/{id}` (it also accepts `?wait=`), or pass `webhook_url`.

### curl

```bash
# Run the model; wait up to 20 s for the finished result in the same call
curl -X POST "https://api.doitong.ru/v1/run/nvidia/cosmos-3-super/text-to-image?wait=20" \
  -H "Authorization: Bearer $DOITONG_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field"
  }'

# Still "queued" or "running"? Poll with the id from the response:
curl "https://api.doitong.ru/v1/requests/REQUEST_ID?wait=20" \
  -H "Authorization: Bearer $DOITONG_API_KEY"
```

### JavaScript

```javascript
const API = "https://api.doitong.ru/v1";
const headers = {
  "Authorization": "Bearer " + process.env.DOITONG_API_KEY,
  "Content-Type": "application/json",
};

// Run the model; wait up to 20 s for the finished result in the same call
let res = await fetch(API + "/run/nvidia/cosmos-3-super/text-to-image?wait=20", {
  method: "POST",
  headers,
  body: JSON.stringify({
    "prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field"
  }),
});
let request = await res.json();
if (!res.ok) throw new Error(request.error.code + ": " + request.error.message);

// Not finished yet: long-poll until it is
while (request.status === "queued" || request.status === "running") {
  res = await fetch(API + "/requests/" + request.id + "?wait=20", { headers });
  request = await res.json();
}
if (request.status !== "succeeded") throw new Error(JSON.stringify(request.error));
console.log(request.outputs.map((o) => o.url), request.cost.credits + " API credits ($" + request.cost.usd + ")");
```

### Python

```python
import os
import requests

API = "https://api.doitong.ru/v1"
headers = {"Authorization": "Bearer " + os.environ["DOITONG_API_KEY"]}

payload = {
    "prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field",
}

# Run the model; wait up to 20 s for the finished result in the same call
r = requests.post(API + "/run/nvidia/cosmos-3-super/text-to-image", params={"wait": 20}, json=payload, headers=headers)
request = r.json()
if not r.ok:
    raise RuntimeError(request["error"]["code"] + ": " + request["error"]["message"])

# Not finished yet: long-poll until it is
while request["status"] in ("queued", "running"):
    request = requests.get(API + "/requests/" + request["id"], params={"wait": 20}, headers=headers).json()
if request["status"] != "succeeded":
    raise RuntimeError(request["error"])
print([o["url"] for o in request["outputs"]], request["cost"]["credits"], "API credits", "$" + request["cost"]["usd"])
```

### MCP

The MCP server at `https://api.doitong.ru/v1/mcp` exposes the tools `search_models`, `get_model`, `quote`, `run`, `get_request`, `cancel_request`, `list_requests`, `create_upload` and `get_account`. A `run` call for this model:

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "run",
    "arguments": {
      "model_id": "nvidia/cosmos-3-super/text-to-image",
      "input": {
        "prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field"
      },
      "wait_seconds": 20
    }
  }
}
```

## Response

Every call returns a request object. `status` is one of `queued`, `running`, `succeeded`, `failed`, `canceled`. `outputs` lists the generated files with URLs on our storage (kept forever, or 7 days with `?storage=temporary`; `storage` says which); `output` is the model's own result object with the same URLs.

```json
{
  "id": "req_8k2m4q7x1z9c3v5b6n0p2r4t",
  "object": "request",
  "model": "nvidia/cosmos-3-super/text-to-image",
  "status": "succeeded",
  "created_at": "2026-10-20T12:00:00Z",
  "started_at": "2026-10-20T12:00:02Z",
  "completed_at": "2026-10-20T12:00:09Z",
  "queue_position": null,
  "cost": {
    "credits": 40,
    "usd": "0.04",
    "charged": 40,
    "refunded": 0
  },
  "input": {
    "prompt": "A red fox trots through fresh snow at sunrise, soft golden light, shallow depth of field"
  },
  "output": {
    "images": [
      {
        "url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.jpeg",
        "content_type": "image/jpeg",
        "file_name": "0-output.jpeg",
        "file_size": 1843200,
        "width": 1024,
        "height": 768
      }
    ],
    "seed": 42,
    "has_nsfw_concepts": [
      false
    ]
  },
  "outputs": [
    {
      "type": "image",
      "url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.jpeg",
      "content_type": "image/jpeg",
      "file_size": 1843200,
      "width": 1024,
      "height": 768,
      "stored": true
    }
  ],
  "error": null,
  "metrics": {
    "inference_seconds": 6.8
  },
  "urls": {
    "self": "https://api.doitong.ru/v1/requests/req_8k2m4q7x1z9c3v5b6n0p2r4t",
    "cancel": "https://api.doitong.ru/v1/requests/req_8k2m4q7x1z9c3v5b6n0p2r4t/cancel"
  }
}
```

### Output fields (`output`)

| Field | Type | Description |
|---|---|---|
| `images` | array of object {url, content_type, file_name, file_size, width, height} | Gambar yang dihasilkan oleh model. |
| `seed` | integer | Nilai seed yang diterapkan selama pembuatan. |
| `has_nsfw_concepts` | array of boolean | Status flag pemeriksa keamanan untuk setiap gambar yang dibuat. |

## Related models

- [Cosmos 3 Super Image to Video](https://doitong.com/developers/models/nvidia/cosmos-3-super/image-to-video.md) (`nvidia/cosmos-3-super/image-to-video`): from $0.05 / second of output video
- [FLUX.1 \[dev\]](https://doitong.com/developers/models/flux/dev.md) (`flux/dev`): $0.025 / megapixel
- [FLUX.1 \[schnell\]](https://doitong.com/developers/models/flux/schnell.md) (`flux/schnell`): $0.003 / megapixel
- [FLUX.2 \[dev\]](https://doitong.com/developers/models/flux-2.md) (`flux-2`): $0.012 / megapixel
- [FLUX.2 \[pro\]](https://doitong.com/developers/models/flux-2-pro.md) (`flux-2-pro`): $0.015 / megapixel of output image
- [GPT Image 2.5 Text to Image](https://doitong.com/developers/models/openai/gpt-image-2.5/flare/text-to-image.md) (`openai/gpt-image-2.5/flare/text-to-image`): from $0.008 / image
- [Ideogram V4.5](https://doitong.com/developers/models/ideogram/v4.5.md) (`ideogram/v4.5`): from $0.03 / image
- [Nano Banana 2](https://doitong.com/developers/models/nano-banana-2.md) (`nano-banana-2`): from $0.06 / image

## Links

- HTML page: https://doitong.com/developers/models/nvidia/cosmos-3-super/text-to-image
- All models and guides for AI agents: https://doitong.com/developers/llms.txt
- OpenAPI 3.1 with this model's typed request body: https://doitong.com/developers/openapi.json?model=nvidia/cosmos-3-super/text-to-image
- Errors: https://doitong.com/developers/docs/errors
- Model details as JSON: https://api.doitong.ru/v1/models/nvidia/cosmos-3-super/text-to-image
