This page covers the API (pay as you go). Using the Cue app? That is sold as monthly
credit plans, Creator, Pro and Studio, plus custom Enterprise. See
pricing.
Video and audio minutes both round up, with a one-minute floor.
The cheap rate is not “once per track”
Loop is strictly per pair. The plan cache is keyed on(video_id, track_source, track_key) and
there is no track-level fallback, so preparing a track for one video buys you nothing on the next.
Fanning one track across ten videos is ten calls at the higher rate, and fanning ten tracks across
one video is also ten calls at the higher rate.
Sync has one escape hatch. POST /v1/align is cheap when Cue already holds sync points for that
exact pair, and also when it holds both profiles it would need to score them in memory: the video’s
sync profile and the track’s audio profile. The audio profile is built the first time you align
that track against anything, and the video’s profile is warmed in the background after ingest.
That background warm is best-effort and swallows its own failures. When the video’s profile is
missing, the call is cold and bills $0.01, however many times you have aligned that track before.
Sizing a batch, multiply the higher rate by the number of distinct pairings rather than by the
number of tracks.
A cold call comes back as a job
A cold/v1/align or /v1/loop cannot finish inside the gateway’s 29-second budget, so it
returns 202 with a job_id and a poll URL rather than a result:
200
with the plan or the sync points directly, and cached: true on an align response tells you which
one you got.
Expect a job on your first call for a new pairing. Retrying that request with the same
Idempotency-Key returns the original job rather than starting a second one, so a timeout on your
side cannot bill the cold rate twice. Polling the URL you already have is still faster.
Analysis and match
Analysis is billed once, when a video is ingested. Cue analyzes the whole clip and prices it per minute of its length. One engine, one rate. Every match against that video afterwards is the flat match price, however many times you run it. Sync points embedded in a match (include_sync: true) are included in the match price. They are a
cache-only read, so a track whose points are not yet cached comes back with an empty sync_points
array and sync_status: "warming" rather than a billable alignment. Expect that on a first match
against a new video. Cue kicks a background warm, and a later match on the same video returns
sync_status: "warm" with the points filled in.
Underscore
Underscore matches music to a script. There is no video to ingest, so there is no analysis charge, just one flat rate per call. The shortlist is a fixed size, so there is no quantity to move the price. A call that returns no tracks bills nothing. Nothing about a script is stored or analyzed ahead of time, so a second call for the same script costs the same as the first.What is never billed
Failed calls. If a match errors out, you pay nothing.
A loop that comes back
applicable: false, because no loop was delivered.Polling.
GET /v1/videos/{id} and the job endpoints are free.