Skip to content
Reference

Pricing

Pay-as-you-go and Provisioned Throughput pricing for the Luma Agents API — image (uni-1, uni-1-max) and video (Ray 3.2).

The Luma Agents API has two pricing options. Pick the one that matches how you’ll use the API.

  • Pay-as-you-go — pay in credits per generation. Images are priced per image; videos are priced by request type, resolution, dynamic range, and duration. No minimum spend, no contract. Best for prototypes and lower-volume workloads.
  • Provisioned Throughput — guaranteed capacity and a latency SLA, billed monthly. Best for production workloads at scale.

You can switch tiers as you scale.


For developers, startups, and smaller teams who want to experiment, prototype, or run lower-volume workloads. You pay in credits per generation, with no minimum spend and no contract.

Capacity is shared, so during peak periods you may hit rate limits and there is no latency SLA. If you need guaranteed capacity or consistent latency, use Provisioned Throughput instead.

The API itself counts in credits. To read your balance and spend, and to turn credits into dollars with your overage_rate or the default list rate, see Usage and credits.

All requests output at 2048-pixel (2K) resolution.

TaskCredits per image
Text to image14
Image edit (image to image)15
Image reference (1 image)15
Image reference (2 images)16
Image reference (3 images)17
Image reference (4 images)18
Image reference (5 images)19
Image reference (6 images)20
Image reference (7 images)21
Image reference (8 images)22
Image reference (9 images)23

Each extra reference image adds 1 credit on top of the 1-image price. Note: image_edit requests support up to 8 reference images (the source occupies one slot); image requests support up to 9.

uni-1-max produces higher-quality output than uni-1. Same prompts, same parameters, same wire format — uni-1-max is a drop-in replacement for uni-1 when you want better images. All requests output at 2048-pixel (2K) resolution.

TaskCredits per image
Text to image34
Image edit (image to image)35
Image reference (1 image)35
Image reference (2 images)36
Image reference (3 images)37
Image reference (4 images)38
Image reference (5 images)39
Image reference (6 images)40
Image reference (7 images)41
Image reference (8 images)42
Image reference (9 images)43

Each extra reference image adds 1 credit on top of the 1-image price. uni-1-max is available to all accounts — pass "model": "uni-1-max" on POST /v1/generations.

Ray 3.2 video is priced by duration at a rate that depends on request type, resolution, and dynamic range. Text-to-video / image-to-video, video edits, single-keyframe extend, and reframe each have distinct billing rules.

type: "video" uses the video-generation tier; type: "video_edit" uses the video-edit tier. Single-keyframe extend and type: "video_reframe" each price on their own standard-only tier — HDR and EXR never apply to them.

This tier covers text-to-video, image-to-video, and image-frame interpolation with type: "video". Standard dynamic range has separate 5-second and 10-second totals.

Standard dynamic range — the default. Applies when video.hdr is omitted or false.

ResolutionCredits per 5sCredits per 10s (type: "video")
360p (draft)2060
540p50150
720p100300
1080p4001200

HDR (type: "video" only) — set video.hdr: true. HDR is restricted to 720p/1080p and 5-second duration — 540p and 10s are both rejected, so HDR clips are always priced at the 5-second rate.

ResolutionCredits per 5s
720p200
1080p800

HDR + EXR export (type: "video" only) — set video.hdr: true and video.exr_export: true. Produces an EXR file alongside the MP4. Same 720p/1080p and 5s-only constraints as HDR.

ResolutionCredits per 5s
720p300
1080p1200

Extend is standard dynamic range only. It always bills as one 5-second block, even if video.duration is present on the request.

ResolutionCredits per extend
540p50
720p100
1080p400

Reframe is standard dynamic range only and bills per second.

ResolutionCredits per second
360p (draft)10
540p20
720p40
1080p120

Video edits use their own rate table. Standard, HDR, and HDR + EXR edits each have separate 5-second and 10-second totals.

Standard dynamic range:

ResolutionCredits per 5sCredits per 10s
360p (draft)180360
540p240480
720p360720
1080p7201440

HDR — set video.hdr: true.

ResolutionCredits per 5sCredits per 10s
360p (draft)360720
540p480960
720p7201440
1080p14402880

HDR + EXR export — set video.hdr: true and video.exr_export: true.

ResolutionCredits per 5sCredits per 10s
360p (draft)5401080
540p7201440
720p10802160
1080p21604320

For production workloads where you need guaranteed capacity, predictable latency, and no contention with other users. Pricing is based on requests per minute (RPM).

  • 1 unit = 1 RPM on uni-1
  • 1 unit = 0.4 RPM on uni-1-max
  • Video (ray-3.2) bills against a separate capacity class — contact sales for video Provisioned Throughput pricing

So 10 units gives you 10 concurrent requests per minute on uni-1, or 4 on uni-1-max. Minimum commitment is 8 units. Longer commitments unlock larger discounts.

Commitment$ / unit / monthEffective per-image cost (uni-1 / uni-1-max)
1 month$3,800$0.088 / $0.220
3 months$2,800$0.065 / $0.163
1 year$2,100$0.049 / $0.123

Provisioned Throughput plans include a no-train guarantee — data processed through Provisioned Throughput is never used to train Luma models.

Annual commitments at higher volumes unlock additional discounts. Contact sales for a custom quote.


Start with Pay-as-you-go if you’re prototyping or running variable workloads. Move to Provisioned Throughput when you need guaranteed capacity and consistent latency. You can switch tiers as you scale.

Pay-as-you-goProvisioned Throughput
BillingCredits per generationMonthly, per unit
Minimum spendNone8 units
ContractNone1 month, 3 months, or 1 year
CapacitySharedDedicated
Rate limitsYes — see Rate limitsNone up to your purchased RPM
Latency SLANoYes
No-train guaranteeNoYes

Synchronous errors are never charged; the reserve is released the moment the request is rejected. For asynchronous failures, the charge depends on the failure_code:

failure_codeCharge
content_moderatedRefunded
generation_failedRefunded
output_not_foundRefunded
budget_exhaustedPartial charge possible

See Error handling for the full list.