# Ltx 2.3 Quality · Render to Real API

> Gjør 3D-, CG- eller spillrenderinger om til en fotorealistisk video, med valgfri intensitet

Konverterer en 3D-rendering levert som `video_url` til et mer realistisk utseende. `intensity` kan være light, strong eller strong-v2, fra skånsom til kraftig. En valgfri `image_url` angir det fotorealistiske første bildet, og `enable_detail_refine` legger til en ekstra skarphetsbehandling med `detail_refine_strength` fra 0.3 to 0.95. Prompten beholder `3DREAL`-utløseren, og utdata er 480p eller 720p.

- Model id: `ltx-2.3-quality/render-to-real`
- Made by: Lightricks
- Category: Video to Video
- Output: video
- Price per megapixel of your output video: from $0.00241 / megapixel of output video (cheapest run $0.003 (3 API credits))
- Run: `POST https://api.doitong.com/v1/run/ltx-2.3-quality/render-to-real`
- Quote: `POST https://api.doitong.com/v1/quote/ltx-2.3-quality/render-to-real`
- Docs page: https://doitong.com/no/developers/models/ltx-2.3-quality/render-to-real

## Pricing

Price: **from $0.00241 / megapixel of output video** (the lowest tier; the quote prices your exact input). Price per megapixel of your output video: 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.

Price by tier:

- base rate: $0.00241 / megapixel of output video
- detail refine: $0.00963 / megapixel of output video

The full example input below costs $0.27 = 270 API credits (112 MP output video × $0.002408).

Prices are the upstream price in USD, paid from the API balance in API credits (1000 API credits = 1 USD). `POST https://api.doitong.com/v1/quote/ltx-2.3-quality/render-to-real` 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 |
|---|---|---|---|---|---|---|
| `video_url` | `video` | string (video URL) | yes |  |  | URL som peker til en 3D-, CG- eller spillgjengitt video for fotorealistisk konvertering. |
| `image_url` | `image` | string (image URL) \| null | no |  |  | Valgfritt bildefeste for bilde 0, som etablerer det fotorealistiske utseendet. Uten dette er det bare gjengivelsen som veileder resultatet; når det leveres, blir bildet første bilde, i tråd med adapterens trening for bilde til video. |
| `intensity` |  | enum (string) | no | `light` | `light`, `strong`, `strong-v2` | Nivå for fotorealistisk transformasjon, der `strong-v2` velger den nyeste forbedrede adapteren for bedre sammenheng på tvers av scener, lyd, snakkende karakterer og generell kvalitet. For de andre alternativene velger du `light` for å bevare mer av kildegjengivelsens utseende og bevegelse, eller `strong` for mer omfattende endringer mot fotorealisme. |
| `enable_detail_refine` |  | boolean | no | `false` |  | Aktiverer et ekstra forbedringstrinn for å øke skarphet og oppløsning; deaktivert som standard. Etter grunngenereringen forstørrer en romlig oppskalerer videoens latente representasjon 2x, og deretter forbedrer et kort detaljeringstrinn den med den destillerte modellen. |
| `detail_refine_strength` |  | number | no | `0.75` | 0.3 – 0.95 | Denoising-styrke for detaljering, standard 0.75 og bare relevant når `enable_detail_refine` er aktivert. Bruk en lavere innstilling for mildere endringer som bevarer grunnresultatet; høyere verdi regenererer detaljer mer omfattende, men kan gi større avvik. |
| `prompt` |  | string | no | `3DREAL.` |  | Tekstprompt for ønsket fotorealistisk resultat, skrevet etter den forhåndsutfylte aktiveringstriggeren for `3DREAL`-adapteren. Verken tømming av prompten eller aktivering av promptutvidelse fjerner triggeren; den beholdes alltid. |
| `resolution` |  | enum (string) | no | `720p` | `480p`, `720p` | Velg oppløsningen på kortsiden av utdataene mens kildeformatet beholdes: 480p gir mykere resultater for klipp på opptil omtrent 15 sekunder, mens 720p gir skarpere resultater i opptil omtrent 6 sekunder. Velg 480p for lengre klipp fordi IC-LoRA-kontrollbanen begrenser oppløsning multiplisert med antall bilder; forespørsler som overskrider dette budsjettet, avvises med en tydelig feil. Beregn utdataenes varighet som `num_frames` / `frames_per_second`. |
| `num_frames` |  | integer | no | `121` | 9 – 481 | Antall bilder i utdataene, underlagt et IC-LoRA-budsjett for oppløsning multiplisert med antall bilder: omtrent 6 sekunder ved 720p eller 15 sekunder ved 480p. Hvis budsjettet overskrides, returneres 422; reduser `num_frames` eller velg 480p. Klipplengden i sekunder er lik `num_frames` / `frames_per_second`. |
| `frames_per_second` |  | number | no | `24` | 1 – 60 | Utdataens bildefrekvens for video, målt i bilder per sekund. |
| `num_inference_steps` |  | integer | no | `15` | 8 – 30 | Angi hvor mange inferenssteg som skal kjøres, opptil 30; hvis dette ikke endres, brukes 15. |
| `guidance_scale` |  | number | no | `1` | 1 – 20 | Juster classifier-free guidance med denne skalaen; standardinnstillingen er tilpasset både høy kvalitet og rask generering. |
| `generate_audio` |  | boolean | no | `true` |  | Bryter for lydspor i MP4-filen som returneres: av gir en videofil uten lyd, mens på inkluderer lyd. |
| `negative_prompt` |  | string | no | `color distortion, overexposure, static, blurry details, subtitles, style, artwork, painting, frame, still, dim overall tone, worst quality, low quality, JPEG compression artifacts, ugly, mutilated, extra fingers, poorly drawn hands, poorly drawn face, deformed, disfigured, malformed limbs, fused fingers, motionless frame, cluttered background, three legs, crowded background, walking backwards` |  | Negativ prompt som angir hva genereringen skal unngå. |
| `enable_prompt_expansion` |  | boolean | no | `false` |  | AI-basert berikelse av genereringsprompten, deaktivert som standard slik at formuleringen din sendes gjennom uendret. Utdataene rapporterer prompten som faktisk ble brukt, og beholder alltid `3DREAL`; når utvidelse aktiveres, kan en AI-modell utdype beskrivelsen før generering. |
| `seed` |  | integer \| null | no |  |  | Seed som gjør genereringen reproduserbar. Hvis den settes til None, velges en seed tilfeldig. |
| `enable_safety_checker` |  | boolean | no | `true` |  | Styrer om sikkerhetskontroll er aktivert. |
| `video_quality` |  | enum (string) | no | `high` | `low`, `medium`, `high`, `maximum` | Kvalitetsforvalg som brukes på utdata-videoen. |
| `video_write_mode` |  | enum (string) | no | `balanced` | `fast`, `balanced`, `small` | Skrivemodus for videoen som resultat. |

File parameters (`video`, `image`) take a public `https://` URL, a `data:` URI up to 10 MB, or the `file_url` of an upload from `POST /files`.

## Example input

Required parameters only:

```json
{
  "video": "https://content.doitong.com/video/showcase/v3/gen_fox_cartoon.mp4"
}
```

A fuller example:

```json
{
  "video_url": "https://content.doitong.com/video/showcase/v3/gen_fox_cartoon.mp4"
}
```

## 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.com/v1/run/ltx-2.3-quality/render-to-real?wait=20" \
  -H "Authorization: Bearer $DOITONG_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "video_url": "https://content.doitong.com/video/showcase/v3/gen_fox_cartoon.mp4"
  }'

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

### JavaScript

```javascript
const API = "https://api.doitong.com/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/ltx-2.3-quality/render-to-real?wait=20", {
  method: "POST",
  headers,
  body: JSON.stringify({
    "video_url": "https://content.doitong.com/video/showcase/v3/gen_fox_cartoon.mp4"
  }),
});
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.com/v1"
headers = {"Authorization": "Bearer " + os.environ["DOITONG_API_KEY"]}

payload = {
    "video_url": "https://content.doitong.com/video/showcase/v3/gen_fox_cartoon.mp4",
}

# Run the model; wait up to 20 s for the finished result in the same call
r = requests.post(API + "/run/ltx-2.3-quality/render-to-real", 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.com/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": "ltx-2.3-quality/render-to-real",
      "input": {
        "video_url": "https://content.doitong.com/video/showcase/v3/gen_fox_cartoon.mp4"
      },
      "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": "ltx-2.3-quality/render-to-real",
  "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": 270,
    "usd": "0.27",
    "charged": 270,
    "refunded": 0
  },
  "input": {
    "video_url": "https://content.doitong.com/video/showcase/v3/gen_fox_cartoon.mp4"
  },
  "output": {
    "video": {
      "url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.mp4",
      "content_type": "video/mp4",
      "file_name": "0-output.mp4",
      "file_size": 1843200
    },
    "seed": 42,
    "prompt": "string"
  },
  "outputs": [
    {
      "type": "video",
      "url": "https://content.doitong.com/dev-api/2026/10/20/req_8k2m4q7x1z9c3v5b6n0p2r4t/0-output.mp4",
      "content_type": "video/mp4",
      "file_size": 1843200,
      "width": 1280,
      "height": 720,
      "duration": 5,
      "stored": true
    }
  ],
  "error": null,
  "metrics": {
    "inference_seconds": 6.8
  },
  "urls": {
    "self": "https://api.doitong.com/v1/requests/req_8k2m4q7x1z9c3v5b6n0p2r4t",
    "cancel": "https://api.doitong.com/v1/requests/req_8k2m4q7x1z9c3v5b6n0p2r4t/cancel"
  }
}
```

### Output fields (`output`)

| Field | Type | Description |
|---|---|---|
| `video` | object {url, content_type, file_name, file_size} | Video produsert av modellen. |
| `seed` | integer | Faktisk seed som brukes under genereringen. |
| `prompt` | string | Genereringsprompt, inkludert eventuell utvidelse som er brukt før den tas i bruk. |

## Related models

- [Ltx 2.3 Quality · Text to Video](https://doitong.com/developers/models/ltx-2.3-quality/text-to-video.md) (`ltx-2.3-quality/text-to-video`): $0.00241 / megapixel of output video
- [Ltx 2.3 Quality · Text to Video · LoRA](https://doitong.com/developers/models/ltx-2.3-quality/text-to-video/lora.md) (`ltx-2.3-quality/text-to-video/lora`): $0.00271 / megapixel of output video
- [Ltx 2.3 Quality · Image to Video](https://doitong.com/developers/models/ltx-2.3-quality/image-to-video.md) (`ltx-2.3-quality/image-to-video`): $0.00241 / megapixel of output video
- [Ltx 2.3 Quality · Image to Video · LoRA](https://doitong.com/developers/models/ltx-2.3-quality/image-to-video/lora.md) (`ltx-2.3-quality/image-to-video/lora`): $0.00271 / megapixel of output video
- [Ltx 2.3 Quality · Ingredient](https://doitong.com/developers/models/ltx-2.3-quality/ingredient.md) (`ltx-2.3-quality/ingredient`): $0.00241 / megapixel of output video
- [Ltx 2.3 Quality · Clean Plate](https://doitong.com/developers/models/ltx-2.3-quality/clean-plate.md) (`ltx-2.3-quality/clean-plate`): $0.00241 / megapixel of output video
- [Ltx 2.3 Quality · Colorization](https://doitong.com/developers/models/ltx-2.3-quality/colorization.md) (`ltx-2.3-quality/colorization`): $0.00241 / megapixel of output video
- [Ltx 2.3 Quality · Cross Eyed](https://doitong.com/developers/models/ltx-2.3-quality/cross-eyed.md) (`ltx-2.3-quality/cross-eyed`): $0.00241 / megapixel of output video

## Links

- HTML page: https://doitong.com/developers/models/ltx-2.3-quality/render-to-real
- 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=ltx-2.3-quality/render-to-real
- Errors: https://doitong.com/developers/docs/errors
- Model details as JSON: https://api.doitong.com/v1/models/ltx-2.3-quality/render-to-real
