An uncensored AI video generator by API bills by the second, so a clip costs its length times the per-second rate of its resolution. The table below reads every uncensored video build on this key from the live catalog and multiplies it out for 5, 10, 15 second clips. If you want a prompt box and a preview with no code, one of the web apps named further down is the shorter path; if you want the price in a field before the clip renders, keep reading.
Uncensored AI video generator API prices per second
Every uncensored video build on this key, read from GET /v1/catalog/media on 2026-10-27. The price is per second of finished video and depends on resolution alone. The clip columns multiply the per-second rate by the clip length; nothing is typed by hand.
| Model | Settings | Per second | 5 s clip | 10 s clip | 15 s clip |
|---|---|---|---|---|---|
| LTX-2.3 Image-to-Video Uncensored | resolution 480p | $0.08 | $0.40 | $0.80 | $1.20 |
| resolution 720p | $0.16 | $0.80 | $1.60 | $2.40 | |
| resolution 1080p | $0.24 | $1.20 | $2.40 | $3.60 | |
| Wan 3.0 Image-to-Video Uncensored | resolution 480p | $0.20 | $1.00 | $2.00 | $3.00 |
| resolution 720p | $0.40 | $2.00 | $4.00 | $6.00 | |
| resolution 1080p | $0.80 | $4.00 | $8.00 | $12.00 | |
| Wan 3.0 Video Uncensored | resolution 480p | $0.20 | $1.00 | $2.00 | $3.00 |
| resolution 720p | $0.40 | $2.00 | $4.00 | $6.00 | |
| resolution 1080p | $0.80 | $4.00 | $8.00 | $12.00 |
A clip on LTX-2.3 Image-to-Video Uncensored runs 3 to 20 seconds, 5 when you send no duration. The charge is the seconds you ask for times the rate of the resolution you pick, and it is fixed in the response that accepts the request, before a frame renders.
So the spread is $0.08 a second at resolution 480p to $0.24 a second at resolution 1080p. The resolution you send is the whole decision; audio, aspect ratio and seed change nothing on the bill.
Read the same numbers yourself
The catalog is public and needs no key. Each row carries its pricing tiers with a when object naming the settings a price applies to, so a script can quote a clip before it submits one. This page is built from that call every five minutes.
curl -s https://api.uncensoredllm.ai/v1/catalog/media \ | jq '.data[] | select(.id == "ltx-2.3-i2v-uncensored") | {id, unit, pricing}'What 100 clips cost
The same job at each resolution: 100 clips of 10 seconds on LTX-2.3 Image-to-Video Uncensored, from the per-second rates above. Pick the row that matches the output you need and read the right-hand column.
| Settings | Per second | One 10 s clip | 100 clips |
|---|---|---|---|
| resolution 480p | $0.08 | $0.80 | $80.00 |
| resolution 720p | $0.16 | $1.60 | $160.00 |
| resolution 1080p | $0.24 | $2.40 | $240.00 |
Credit is prepaid from $10, with no subscription, and a larger top-up carries bonus credit. The tiers below mirror the gateway's own table; the seconds column is the bonus-inclusive credit divided by the per-second rate at resolution 480p, rounded down.
| Top up | Bonus | Credit | Seconds of video |
|---|---|---|---|
| $200.00 | +5% | $210.00 | 2,625 |
| $500.00 | +10% | $550.00 | 6,875 |
| $1,000.00 | +15% | $1,150.00 | 14,375 |
Per-token prices for the chat models on the same key are on the pricing page; a video clip and a roleplay message draw from one balance.
One request: submit, poll, download
Video goes through POST /v1/generations, the endpoint every media model on this key shares. Send the model id and an input object with the prompt and the settings. The endpoint answers 202 at once with a generation id and the charge; you poll the id until its status is succeeded or failed. The base URL and key are the same ones the docs page gives every client.
curl https://api.uncensoredllm.ai/v1/generations \ -H "Authorization: Bearer sk-ullm-live-…" \ -H "Content-Type: application/json" \ -d '{ "model": "ltx-2.3-i2v-uncensored", "input": { "prompt": "a lighthouse at dusk, slow push-in, waves on the rocks", "resolution": "480p", "duration": 5 } }'The answer, before anything renders. charge.amount_usd is the seconds times the per-second rate; charge.units is the seconds you asked for.
{ "id": "gen_7b2e41…", "object": "generation", "model": "ltx-2.3-i2v-uncensored", "kind": "video", "status": "queued", "progress": 0, "outputs": [], "error": null, "charge": { "amount_usd": 0.4, "units": 5, "unit": "second", "refunded": false }}A video clip takes one to a few minutes. Poll every ten seconds or so; the status moves through queued and running on the way.
curl https://api.uncensoredllm.ai/v1/generations/gen_7b2e41… \ -H "Authorization: Bearer sk-ullm-live-…" { "id": "gen_7b2e41…", "status": "succeeded", "progress": 100, "outputs": [ { "url": "https://api.uncensoredllm.ai/v1/files/2026-10-27/gen_7b2e41…/0.mp4", "content_type": "video/mp4", "bytes": 4810213 } ], "charge": { "amount_usd": 0.4, "units": 5, "unit": "second", "refunded": false }}The MP4 sits at outputs[0].url on this domain for 30 days; fetch it with the same key. A generation that fails comes back with status failed, an error.message, charge.amount_usd at 0 and charge.refunded true, so a failed clip never costs anything.
The same loop in Python, with the requests library.
import time, requests BASE = "https://api.uncensoredllm.ai/v1"HEADERS = {"Authorization": "Bearer sk-ullm-live-…"} gen = requests.post( f"{BASE}/generations", headers=HEADERS, json={"model": "ltx-2.3-i2v-uncensored", "input": {"prompt":"a lighthouse at dusk, slow push-in, waves on the rocks","resolution":"480p","duration":5}}, timeout=30,).json()print("charged", gen["charge"]["amount_usd"]) # fixed here, before the clip renders while gen["status"] not in ("succeeded", "failed"): time.sleep(10) gen = requests.get(f"{BASE}/generations/{gen['id']}", headers=HEADERS, timeout=30).json() if gen["status"] == "succeeded": url = gen["outputs"][0]["url"] # kept on https://api.uncensoredllm.ai for 30 days with open("clip.mp4", "wb") as f: f.write(requests.get(url, headers=HEADERS, timeout=120).content)else: print(gen["error"]["message"], "refunded:", gen["charge"]["refunded"])To check the billed seconds against the file, read its duration with ffprobe. The number should match charge.units.
ffprobe -v error -show_entries format=duration -of default=nw=1:nk=1 clip.mp4# prints the clip length in seconds; compare it with charge.unitsEvery setting on LTX-2.3 Image-to-Video Uncensored
From the same catalog row, so the table changes when the model does. enable_safety_checker defaults to false on this build: that is the whole difference between it and the filtered video models, which run the frame checker on every clip.
| Setting | Type | Values | Default |
|---|---|---|---|
prompt (required) | string | string | |
image_urls (required) | urls | urls | |
resolution | string | 480p, 720p, 1080p | 480p |
duration | integer | 3 to 20 | 5 |
seed | integer | 0 to 2147483647 |
LTX-2.3 Image-to-Video Uncensored takes a text prompt and image_urls, so a reference frame can start the clip. Its own page, ltx-2.3-i2v-uncensored, prints the same tiers and a one-line first request.
Two rules apply to every uncensored media model here and are checked before the request is accepted: no clip may depict a minor, and no real person's likeness without that person's consent. A prompt that breaks the first is refused with 400 content_not_allowed and nothing is charged. The acceptable use page has the full text.
Where a consumer generator wins
The Google results for "uncensored ai video generator" on 2026-10-19 were web apps with a prompt box: Senzia, VideoAny, MagicLight, Crano and ZenCreator, plus Reddit threads and best-of lists. They win on the first five minutes. You type, you watch, you download, and the listings said as much: Senzia's "free to start, MP4 export", ZenCreator's 1080p at 60 fps with credits that do not expire. No key, no JSON, no polling loop.
Venice sells one API for text, image, video and audio, and its app has a video generator. Its pricing page on 2026-10-19 priced video per job through a quote API rather than a fixed per-second rate, so read it for the current figure; it is not reproduced here.
Local models are the third route the same results pushed: the Reddit answer was "run it offline", and a YouTube pick ran on 8 GB of VRAM. If you own the GPU and the time, the per-second price is zero after the hardware.
Where the uncensored video API wins
- The price is a number before the clip exists: $0.08 a second at resolution 480p, multiplied by the seconds you asked for, printed in the 202. Credit packs and daily quotas never tell you what one clip cost.
- Per second, not per clip. A 3-second test costs 3 seconds. On a per-clip plan the short test and the long render cost the same.
- One key for the chat and media models. The same
sk-ullm-key that answers a roleplay message on the models page submits the clip, and both land on one balance and one statement. - A prompt box too. The console's Media page runs the same model as one of your keys and lists every clip with its status and cost, so the five-minute test does not need code either.
- Failed clips are free. The charge is reversed in full the moment a generation fails, and the record says so.
The honest comparison is price and time, which this page can measure, against output quality, which it does not score. Run one prompt here and on one other seller and compare the two files.
The rest of the uncensored media on this key
The video build sits next to the uncensored image models on the image and video page, all priced per image or per second and all on the same endpoint. The per-image side gets its own price breakdown in the uncensored image generator API post.
| Per | Endpoints | |||
|---|---|---|---|---|
| LTX-2.3 Image-to-Video Uncensored | Video | $0.08 | second | |
| Wan 3.0 Image-to-Video Uncensored | Video | $0.20 | second | |
| Wan 3.0 Video Uncensored | Video | $0.20 | second | |
| Anime Image Uncensored | Images | $0.03 | image | |
| Chroma Uncensored | Images | $0.08 | image | |
| CyberRealistic XL Uncensored | Images | $0.0136 | image | |
| Lustify SDXL Uncensored | Images | $0.0313 | image | |
| Qwen Edit Uncensored | Images | $0.08 | image | |
| Qwen Image 2.1 Uncensored | Images | $0.0375 | image | |
| Qwen Image 3 Uncensored | Images | $0.08 | image | |
| Seedream 5.0 Lite Edit Uncensored | Images | $0.0313 | image | |
| Vision Image Uncensored | Images | $0.04 | image | |
| Vision Pro Image Uncensored | Images | $0.0938 | image | |
| WAI Illustrious SDXL Uncensored | Images | $0.0136 | image |
Questions
The web apps on page one of that search on 2026-10-19 advertise free starts and credit packs, and open-weight video models run locally for the cost of a GPU. This API is not free: credit is prepaid from $10, and each clip's price is fixed at $0.08 a second at resolution 480p before it renders. See the image and video page.
Venice sells one API for text, image, video and audio, and its pricing page on 2026-10-19 priced video per job through a quote API, so check it for the current figure. Here video is priced per second at fixed resolution tiers, $0.08 to $0.24 a second, read live from the catalog.
The apps that rank for that phrase are consumer sites with a prompt box. This is an API with the same prompt box in the console, where the Media page runs the uncensored video model as one of your keys and lists each clip with its cost. Two rules hold in both places: no minor in any clip, and no real person's likeness without consent. See the acceptable use page.
$2.40 today: 10 seconds at $0.24 a second, the live rate at resolution 1080p. The amount is set in the response that accepts the request, and a clip that fails is refunded in full.
Yes. LTX-2.3 Image-to-Video Uncensored takes image_urls next to the prompt, so a reference frame can start the clip.
One to a few minutes. The request answers at once with an id and the charge, and you poll GET /v1/generations/{id} every ten seconds or so until the status is succeeded or failed; the MP4 then stays on this domain for 30 days. See the docs.