APIGenerate Music (3/11)

POST /v2/generate

Generate music using AI. Supports both inspiration mode (text description) and custom mode (lyrics, style, title).

POSThttps://aimusicapi.org/api/v2/generate

Tips

Two Generation Modes:

  • Inspiration Mode: Use gpt_description_prompt to generate music from a text description
  • Custom Mode: Use prompt, style, and title for detailed control

Image to Music (Inspiration Mode only): Pass up to 5 publicly accessible image URLs in image_urls; the music reads the mood of the pictures and can be combined with gpt_description_prompt. Image input adds 1 credit per request and is silently ignored in Custom Mode.

Model Selection: Current models are chirp-v6 (12 credits), chirp-v6-mini (10 credits) and chirp-v6-wild (12 credits). Legacy identifiers are still accepted and billed at their historical price: chirp-v5 / chirp-v5-5 are served by chirp-v6, while chirp-v3-5, chirp-v4-0, chirp-v4-5 and chirp-v4-5-plus are served by chirp-v6-mini. Results always report the model that actually produced the audio in model_name.

Rejected requests are refunded: if a request is rejected during validation you receive 422 (fix the parameters) or 500 (temporary, retry later) with data.refunded; tasks that fail after being accepted are marked FAILED and refunded automatically.

Request Headers

AuthorizationRequired

Bearer token for authentication

Content-TypeRequired

application/json

Request Body

Request body supports two modes: Inspiration Mode or Custom Mode

Inspiration Mode

Generate music from a text description

ParameterTypeRequiredDescriptionExample
gpt_description_promptstringYesText description of the music you want to generate. Max length: 3000 characters (longer input is truncated). Optional when image_urls is provided.A upbeat pop song about summer vacation with catchy melody
Custom Mode

Generate music with custom lyrics, style, and title

ParameterTypeRequiredDescriptionExample
promptstringYesCustom lyrics or detailed prompt. Max length: 5000 characters for every model (longer input is truncated).Verse 1: Walking down the street, feeling so free...
stylestringNoMusical style/genre. Max length: 1000 characters for every model (longer input is truncated).pop, upbeat, electronic, 120 bpm
titlestringNoSong title. Max length: 80 characters (longer input is truncated).Summer Dreams
tagsstringNoNegative tags to avoid in generationsad, slow
durationnumberNoTarget length in seconds, Custom Mode only. Honoured by chirp-v6, chirp-v6-mini and chirp-v6-wild, and by legacy identifiers served by them. Values from 10 to 360 are accepted. When missing or invalid, no target is sent and the model sizes the track from the lyrics; legacy chirp-v5-5 defaults to 20. This is a target, not an exact length: a value shorter than the lyrics need may end the track before every line is sung. Ignored in Inspiration Mode and by /v2/extend.20
Common Parameters
ParameterTypeRequiredDescriptionExample
modelstringNoModel to use. Current options: 'chirp-v6' (12 credits), 'chirp-v6-mini' (10 credits), 'chirp-v6-wild' (12 credits). Legacy identifiers 'chirp-v3-5' (5), 'chirp-v4-0' (8), 'chirp-v4-5' (10), 'chirp-v4-5-plus' (10), 'chirp-v5' (12) and 'chirp-v5-5' (12) keep their historical price and are served by chirp-v6 (chirp-v5 / chirp-v5-5) or chirp-v6-mini (all others). When omitted the request is billed at the 5-credit base tier and served by chirp-v6-mini.chirp-v6
image_urlsstring[]NoImage to Music. Up to 5 publicly accessible image URLs (JPEG, JPG, PNG or WEBP, max 10MB each). The generated track reflects the mood of the images and can be steered with gpt_description_prompt. Adds 1 credit per request. Only applies to Inspiration Mode; silently ignored in Custom Mode.["https://cdn.example.com/sunset-beach.jpg"]
make_instrumentalbooleanNoGenerate instrumental music without vocalsfalse
genderstringNoVocal gender preference. Use 'male' or 'female'female
style_weightnumberNoStrength of adherence to style. Range 0–1, up to 2 decimals0.65
weirdness_constraintnumberNoControls creative deviation. Range 0–1, up to 2 decimals0.65
audio_weightnumberNoBalance weight for audio features. Range 0–1, up to 2 decimals0.65

Responses

{
  "code": 200,
  "message": "success",
  "workId": "gen2abc123def456bksv",
  "data": {
    "task_id": "gen2abc123def456bksv"
  }
}
{
  "code": 400,
  "message": "No body provided"
}
{
  "code": 401,
  "message": "No API key provided in Authorization header"
}
{
  "code": 422,
  "message": "Request rejected: title must be 80 characters or fewer. Your credits have been refunded.",
  "data": {
    "task_id": "gen2abc123def456bksv",
    "refunded": true
  },
  "workId": "gen2abc123def456bksv"
}
{
  "code": 500,
  "message": "The generation request could not be processed right now. Your credits have been refunded. Please retry later.",
  "data": {
    "task_id": "gen2abc123def456bksv",
    "refunded": true
  },
  "workId": "gen2abc123def456bksv"
}

Code Examples

curl -X POST "https://aimusicapi.org/api/v2/generate" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "chirp-v6",
    "prompt": "Verse 1: Walking down the street, feeling so free\nChorus: Summer dreams are calling me",
    "style": "pop, upbeat, electronic, 120 bpm",
    "title": "Summer Dreams",
    "duration": 20,
    "make_instrumental": false,
    "gender": "female",
    "style_weight": 0.65,
    "weirdness_constraint": 0.65,
    "audio_weight": 0.65
  }'
const response = await fetch('https://aimusicapi.org/api/v2/generate', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    model: 'chirp-v6-mini',
    gpt_description_prompt: 'A upbeat pop song about summer vacation with catchy melody',
    make_instrumental: false,
    gender: 'female',
    style_weight: 0.65,
    weirdness_constraint: 0.65,
    audio_weight: 0.65
  })
});

const data = await response.json();
console.log(data);
curl -X POST "https://aimusicapi.org/api/v2/generate" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "chirp-v6",
    "image_urls": [
      "https://cdn.example.com/sunset-beach.jpg",
      "https://cdn.example.com/city-lights.png"
    ],
    "gpt_description_prompt": "Warm lo-fi track that matches the mood of these photos",
    "make_instrumental": true
  }'
const response = await fetch('https://aimusicapi.org/api/v2/generate', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_API_KEY',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    model: 'chirp-v6',
    prompt: 'Verse 1: Walking down the street, feeling so free\nChorus: Summer dreams are calling me',
    style: 'pop, upbeat, electronic, 120 bpm',
    title: 'Summer Dreams',
    duration: 20,
    make_instrumental: false,
    gender: 'female',
    style_weight: 0.65,
    weirdness_constraint: 0.65,
    audio_weight: 0.65
  })
});

const data = await response.json();
console.log(data);