WWeavy Studio

API reference

Generate songs from lyrics and a style with the YuE2 model. Authenticate with an API key from the studio (Authorization: Bearer ws_...).

Base URL https://studio.weavyaudio.com/api/v1 · OpenAPI 3.1: /api/v1/openapi.json · Quickstart: API quickstart

Authentication

Create a key in the studio (API keys) and send it on every request: Authorization: Bearer ws_…. Keys can be revoked at any time.

Endpoints

POST/generations

Create a song (one or more takes). Queues one render per take on separate GPUs. Returns immediately; poll each id until its status is done.

Request body

FieldTypeDefault · rangeDescription
titlerequiredstring length 1–120Song title.
artiststring length 0–120Artist / act name (label only).
languagestring length 0–40Vocal language, e.g. "English" or "Polish". Put first in the style.
stylerequiredstring length 3–1000Genre, instruments, voice, mood, BPM, key - comma separated.
lyricsrequiredstring length 1–6000Lyrics with section tags: [Verse], [Chorus], [Bridge]...
cot"full" | "melody" | "off""full" full = write a melody-and-chord score first (most stable); melody = melody only; off = direct.
cfg_scalenumber2 1–4Style strength (classifier-free guidance). 1 = off.
takesinteger2 1–8How many versions to render (each on its own GPU slot).
seedinteger 0–2147483647Fixed seed for the first take; omitted = random.
lock_seedbooleanfalse Use the same seed for every take (only settings differ).
max_len_sinteger300 30–360Upper bound for the song length in seconds.
abcstring length 0–20000Optional ABC score (melody + chords) to sing instead of planning one.
abc_samplingobject Sampling for the score stage.
semantic_samplingobject Sampling for the audio-token stage.

Responses

  • 201 Queued.
  • 401 Missing or invalid API key.
  • 422 Validation error.
  • 429 Hourly limit reached.
curl -X POST https://studio.weavyaudio.com/api/v1/generations \
  -H "Authorization: Bearer $WEAVY_KEY" -H "Content-Type: application/json" \
  -d '{"title":"City Lights","language":"English","style":"warm piano pop, expressive female voice, 88 BPM","lyrics":"[Verse]\nNeon fades along the lane\n\n[Chorus]\nLet the day come into view","takes":2,"cfg_scale":2}'

GET/generations

List generations. Newest first. To page, pass before = created_at of the last item.

ParameterInTypeDescription
limitqueryinteger 1–200
beforequeryinteger Unix ms cursor.

Responses

  • 200 A page of generations.
  • 401 Missing or invalid API key.
curl https://studio.weavyaudio.com/api/v1/generations?limit=20 -H "Authorization: Bearer $WEAVY_KEY"

GET/generations/{id}

Get one generation.

ParameterInTypeDescription
idpathstring Generation id.

Responses

  • 200 The generation.
  • 401 Unauthorized.
  • 404 Not found.
curl https://studio.weavyaudio.com/api/v1/generations/GEN_ID -H "Authorization: Bearer $WEAVY_KEY"

DELETE/generations/{id}

Delete a generation and its files. Cancels it first if it is still running.

ParameterInTypeDescription
idpathstring Generation id.

Responses

  • 204 Deleted.
  • 401 Unauthorized.
  • 404 Not found.
curl -X DELETE https://studio.weavyaudio.com/api/v1/generations/GEN_ID -H "Authorization: Bearer $WEAVY_KEY"

POST/generations/{id}/cancel

Cancel a queued or running generation.

ParameterInTypeDescription
idpathstring Generation id.

Responses

  • 200 The generation.
  • 401 Unauthorized.
  • 404 Not found.
curl -X POST https://studio.weavyaudio.com/api/v1/generations/GEN_ID/cancel -H "Authorization: Bearer $WEAVY_KEY"

The Generation object

FieldTypeDefault · rangeDescription
idrequiredstring Generation id (one per take).
batch_idrequiredstring Shared by all takes created in one request.
statusrequired"queued" | "running" | "done" | "failed" | "cancelled"
stagerequired"planning" | "generating" | "encoding" | "uploading" | null Current stage while running.
titlerequiredstring
artistrequiredstring | null
languagerequiredstring | null
stylerequiredstring
cotrequired"full" | "melody" | "off"
cfg_scalerequirednumber
seedrequiredinteger -9007199254740991–9007199254740991
max_len_srequiredinteger -9007199254740991–9007199254740991
abc_samplingrequiredobject | null
semantic_samplingrequiredobject | null
progressrequiredobject | null
errorrequiredstring | null
duration_srequirednumber | null Song length in seconds (done only).
render_srequirednumber | null GPU time in seconds (done only).
audiorequiredobject | null Absolute download URLs (done only).
lyricsstring
abc_instring | null
abc_outstring | null The ABC score the model sang.
created_atrequiredinteger -9007199254740991–9007199254740991Unix ms.
finished_atrequiredinteger | null

The Sampling object

FieldTypeDefault · rangeDescription
temperaturenumber 0–2Randomness. 0 = greedy.
top_pnumber 0.1–1Nucleus sampling cut-off.
top_kinteger 1–500Only the k most likely tokens are considered.
repetition_penaltynumber 1–3Penalty for tokens repeated inside the window.
penalty_windowinteger 1–1000How many recent tokens the penalty looks at.

Errors and limits

Errors are JSON {"error": "...", "issues": [...]}. Codes: 401 bad or missing key · 404 not found · 422 validation (see issues) · 429 more than 40 takes in the last hour.