Rendering
Render turns a composition into a finished video or a single frame. It is a metered product: you are billed for the work done, not for a seat.
The endpoints
| Route | What it produces |
|---|---|
POST /v1/render | A rendered video. |
POST /v1/render/still | A single frame — thumbnails, posters, previews. |
Both are on the one gateway, so authentication, scope and metering behave exactly as they do for every other WAVE product.
Access
Render uses the standard scope pair:
render:read— read render jobs and their results.render:write— submit a render.
A key without the right scope is refused with a 403 naming the scope it needed. A request with no credential at all is answered with a 402 payment challenge instead, because render is agent-payable — see below.
What you are billed for
Render records against these meters:
| Meter | Unit | What it counts |
|---|---|---|
wave_render_minutes | minutes | Wall-clock render time on CPU. |
wave_render_gpu_minutes | minutes | GPU render time, billed in minutes. |
wave_render_gpu_seconds | seconds | GPU render time, billed in seconds. |
wave_render_storage_gb | GB | Output held in hot storage. |
wave_render_storage_cold_gb | GB | Output aged into cold storage. |
wave_render_retrieval_gb | GB | Reading output back out of cold storage. |
Storage is a two-tier meter: hot output that is not read for a while ages into the cold tier, which is cheaper to hold and costs a retrieval fee to read back. A render you never fetch again gets cheaper over time on its own.
Meters are recorded by the gateway, not by the render worker, so the same accounting applies whether the call came from your server or from an agent paying per call.
Paying as an agent
Call the route with no credential and you get a quote:
POST https://api.wave.online/v1/render
→ 402 Payment Required
accepts[0].protocol = "x402"
accepts[0].network = "base"
accepts[0].scheme = "exact"
accepts[0].resource = "/v1/render"
Read network and scheme from the challenge you received. Render quotes base/exact while other products quote different rails — /v1/transcribe, for example, quotes tempo/permit. There is no single global network, and an agent that caches one product's answer will fail on the next.
See Billing and payment for the full 402 flow and the retry rules.
Where to go next
- Billing and payment — both payment rails, and how metering rolls up.
- API endpoints — the rest of the product surface.
- API reference — request and response schemas.