Skip to main content
Every other video workflow starts with a video. Underscore starts with the words. Paste a short-form script: a TikTok hook, a Reels voiceover, a LinkedIn explainer. Cue reads it the way a music supervisor would: it infers the mood, the pace and the payoff from the writing, then returns a ranked shortlist of licensed tracks that fit. There’s no video to ingest and no per-minute analysis, so it’s one synchronous call. The result comes straight back.

Match a script

You get back a lane of tracks. Each carries a track_id you resolve in your catalog, its tempo, and a why-it-fits map.
200
script runs from 1 to 7000 characters. Anything longer is a 422 here rather than a truncated body at the edge. The shortlist is a fixed ten tracks, enough to give a creator a real choice without making them wade. It isn’t a request parameter, which is what keeps the call’s latency and its bill predictable.

The why-it-fits map

Every track carries a match_map: a short list of links between a phrase in the script (the video side) and a trait in the track (the audio side). It is the reasoning made legible, which words pulled which sound, so you can show a creator why a track was picked and not just that it was.

Steering the result

string
A free-form hint, up to 40 characters, passed to the model as part of the brief. tiktok, reels, shorts, linkedin and youtube are the vocabulary it’s written for. A LinkedIn explainer leans calmer and cleaner, a TikTok hook faster and more contemporary. Nothing rejects another value, and an unrecognised one is simply a weaker steer.
string
A plain-language steer, e.g. “warm, upbeat, no vocals”. Up to 500 characters.
string
A single mood, e.g. “uplifting” or “tense”.
string
A period steer, e.g. ”80s”.
string
Whether you want vocals, and what kind.

Getting the audio

The response identifies tracks, it doesn’t carry them. soundstripe_song_id is the work and soundstripe_audio_file_id is the specific render. Resolve them through your own catalog access. This is the same posture as every other Cue endpoint, and the reasoning is in Render under your own license. If you’re still evaluating and don’t license a catalog yet, ask us to enable preview on your account. Each track then also carries a short-lived watermarked link for judging a track before you license it. Without that grant no audio is attached at all, on this endpoint or any other. ?expand=full swaps the lean track object for the full one, adding tags, energy, musical key and description, and puts a candidate_pool array on the lane. You don’t need it to draw a result card: title, artist, tempo and the why-it-fits map are all on the default response.

What it costs

Underscore is $0.05 per call, flat, however many tracks come back. There’s no analysis charge, because there’s no video to ingest. A call that errors, or that comes back with no tracks at all, isn’t billed. See Metering & pricing. Over MCP the same thing is the underscore tool.