Audio generation PLANNED

Text to music. Send a style prompt, lyrics, or both, and get back a finished track as a stored audio file. Same submit-and-poll shape as every other lane - see Submit, poll, result for the mechanics.

Both audio models are live. ace-step is the music engine and the default. audioldm is short 16kHz sound effects on non-commercial weights, so its output must not go into anything you sell - see the licence note below.

The shortest useful request

curl -X POST https://flopco.in/v1/generate \
  -H "Authorization: Bearer $FLOP_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "mode": "audio",
    "model": "ace-step",
    "prompt": "lo-fi hip hop, warm rhodes, vinyl crackle, relaxed"
  }'

That returns a generation id. Poll GET /v1/generations/{id} until status is done; result is then the path to the finished audio.

Prompt and lyrics are separate fields

prompt is the style line - genre, instruments, mood, production. params.lyrics is the sung text. They do different jobs, and either one alone is a valid request:

You sendYou get
prompt onlyAn instrumental in that style.
lyrics onlyA sung track; the model chooses its own backing.
bothThose lyrics, sung in that style. This is the one you usually want.
neitherA bad_request error. There is nothing to condition on.

Putting lyrics inside the style prompt does not work. The model reads the prompt as production direction, so a verse pasted there becomes a mood description and is never sung.

Parameters

Per-model tunables go in a params object. Every one is optional, and an omitted parameter uses the tuned default below rather than the underlying library's default.

NameTypeRangeDefaultWhat it does
lyricsstringup to 4000 charsemptyThe sung text. Blank gives an instrumental.
durationfloat5 - 240120Track length in seconds.
stepsint10 - 12060Diffusion steps. 60 is the quality setting; past 60 gains very little for the extra time.
guidance_scalefloat1.1 - 3015How literally the prompt is followed. The floor is 1.1 because exactly 0 or 1 switches guidance off entirely.
omega_scalefloat1 - 2010Sampler granularity. Leave it unless the mix sounds smeared.
schedulerenumeuler, heuneulerheun is second-order: cleaner transients, roughly twice the render time.
formatenumwav, mp3, flacwavOutput container. wav is 48kHz stereo, uncompressed.
seedint0 - 21474836474242Same prompt, seed and settings reproduce the take.
Out-of-range values are clamped, not rejected. Asking for duration: 500 gives you a 240-second track, not an error. The worker echoes back the settings it actually used, so read those rather than assuming your request went through verbatim.

A full request

{
  "mode": "audio",
  "model": "ace-step",
  "prompt": "folk ballad, fingerpicked acoustic guitar, close mic, sparse",
  "params": {
    "lyrics": "the road was long\nand the lantern low\n...",
    "duration": 90,
    "steps": 60,
    "scheduler": "heun",
    "format": "wav",
    "seed": 1234
  }
}

Ask the catalog, do not hardcode

The table above is published as data. GET /v1/models?type=audio returns each audio model with a params array carrying the same names, types, ranges and defaults, so a client can build its own controls and stay correct when a model is added or a range moves.

curl https://flopco.in/v1/models?type=audio

Models

ModelWeights licenseUse
ace-stepApache-2.0The shippable music engine. 48kHz stereo, up to four minutes, lyrics-aware. This is the default and the one you want.
audioldmCC BY-NC-SA 4.0Short sound effects and ambience at 16kHz. Non-commercial weights - its output must not go into anything you sell.
Check the licence before you ship the audio. Models whose weights forbid commercial use carry a non-commercial tag in the catalog. That tag is the authoritative answer, and it travels with the model row so you can enforce it in code rather than remembering it.

Timing

A warm worker renders far faster than real time - a two-minute track lands in well under a minute. A cold worker has to start and load the checkpoint first, so the first request after an idle period can take several minutes. The job timeout for the audio lane is 40 minutes; poll rather than holding a connection open.

The audio lane runs on its own RunPod endpoint, separate from the image lane, because the two need different pinned dependencies. That split is invisible from the API - it is one mode either way.