SEEAPISEEAPI
Developer CenterDocs
Get API Key
  • Getting Started
  • Authentication
  • List Model Prices
  • Create a Generation
  • Get Task Details
Image Models
Alibaba
Black Forest Labs
ByteDance
Google
Grok
OpenAI
SeeAPI
Video Models
Alibaba
ByteDance
Google
Grok
Kling
Lightricks
MiniMax
PixVerse
Runway
SeeAPI
Music Models
Text Models
www.seeapi.com

One AI API for every leading model. Create images, videos, music, and multimodal AI assets online, or build with one unified API.

Support
  • Pricing
  • [email protected]
Legal
  • Privacy Policy
  • Refund Policy
  • Terms & Conditions

Copyright 2026 © SeeAPI. All rights reserved.

GROWCRAFT PTE. LTD.

·5 RAFFLES PLACE, #06-00, RAFFLES PLACE MRT STATION, SINGAPORE 048618

preview

AI Music M1 · Music Generation

Generate vocal songs or instrumental music with AI Music M1. Submit a generation, follow its progress, and retrieve every generated track.

Developer API pricing

Provider: SeeAPI

USD estimate: $0.0037 / credit · Estimated equivalent, not an additional charge.

Price: 16 credits/gen (≈ $0.06/gen)

Query Task Status

After submitting a task, use the unified query endpoint to check progress and retrieve results:

Get Task DetailsLearn how to query task status and retrieve generation results

Save generation.id and query GET /v1/generations/{task_id} until a terminal status. Music progress is returned in generation.stage; stage alone does not indicate task success.

Note

  • Read the task detail response from generation. All tracks are in generation.result.assets[]. Each asset has a stable track id; tracks can share a title. Display every returned track rather than assuming a fixed count.
  • text + processing: lyrics and track metadata are available. The asset prompt contains generated lyrics, while tags describes the music style. Some text-stage responses already include expiring preview URLs; other responses contain no playable media yet.
  • first + processing: use audio_url or stream_audio_url for a preview when present and valid. duration may be returned for only some tracks. Missing fields mean the information is not available yet, not that the track failed.
  • Preview links are temporary. Check each track’s stream_expires_at before playing, and query the task again for a current link when it expires. Do not store preview URLs as permanent files or expose their tokens in logs.
  • complete + succeeded: audio_url is the permanent audio file; stream_audio_url may point to the same file. image_url is the cover when returned, and duration is the actual track length in seconds. Download or archive final files only after the task succeeds.
  • One generation can return multiple tracks. The generation charge covers the returned tracks; variety controls creative variation rather than the number of tracks. Follow the credits reported by the API for the actual charge.

Related Resources

Market Overview

Explore all available models

Credits & Billing

View credit balance, plans, and billing activity

Usage

Review API usage and credit consumption

Callbacks

Manage the secret used to verify generation webhook signatures. Callback URLs are supplied when you create each generation.

Webhook flow

Callback URL per generation.

Webhook signing key

Request

POST/v1/generations
AuthorizationSend your API key in the Authorization header using the Bearer scheme.Authorization: Bearer ****************

Header Params

stringrequired

Use a new stable key for each generation. Reuse it only when retrying the same request body.

max length: 255
Example:
order-20260818-001

Body Params

application/json
stringrequired

The public model ID for this page.

Allowed:ai-music-m1
Default:
ai-music-m1
Example:
ai-music-m1
stringrequired

Use music-generation for this capability.

Allowed:music-generation
Default:
music-generation
Example:
music-generation
stringoptional

Omit this field to use the default public provider, seeapi.

Allowed:seeapi
Default:
seeapi
Example:
seeapi
objectrequired

Music generation settings. Choose normal mode for a creative brief or custom mode for detailed song settings.

  • In normal mode, the combined attachment count must not exceed 10: each non-empty style and lyrics counts as 1, plus the number of input_images, reference_video_urls, and reference_audio_urls. For example, style + lyrics + 5 images + 1 video leaves room for at most 2 audio references.

Provider parameters

SeeAPIseeapiDefault Provider
booleanrequired

Set false for normal mode or true for custom mode. Custom mode requires a title and at least one of style, lyrics, or negative_tags. Normal mode requires at least one of style, lyrics, or a reference asset.

Example:
true
booleanrequired

Set true for instrumental music without vocals, or false for a vocal song.

Example:
false
stringoptional

Optional. In normal mode, describe the song idea in up to 3000 characters; generated lyrics need not match this text. For a vocal song in custom mode, prompt is used as lyrics when lyrics is omitted. Returned track lyrics are in generation.result.assets[].prompt.

stringoptional

Lyrics content, up to 5000 characters. In custom mode, lyrics takes priority over prompt for vocal songs. In normal mode, it can be supplied as a lyrics attachment alongside the creative brief. Returned track lyrics are in generation.result.assets[].prompt.

max: 5000max length: 5000
Example:
The morning opens like a door. A little brighter than before. We take a breath and start again. A new day rises with a friend.
stringoptional

Song title. Required in custom mode; unavailable in normal mode.

  • Custom mode requires a title
  • Title is only available in custom mode
max: 80max length: 80
Example:
A New Day
stringoptional

Describe the desired genre, mood, instruments, or vocal style.

  • Custom mode requires style, lyrics, or negative tags
  • Normal mode requires style, lyrics, or a reference asset
max: 1000max length: 1000
Example:
Acoustic pop, gentle vocals, warm acoustic guitar
stringoptional

Styles or characteristics to avoid. Available only in custom mode.

numberoptional

Requested track duration in seconds: 10–360, default 20 when omitted in custom mode. Available only in custom mode. The actual track length is returned in each asset’s duration.

  • Duration is only available in custom mode
min: 10max: 360
stringoptional

Vocal preference: m for male or f for female. Available only in custom mode; use with a vocal-song request.

  • Vocal gender is only available in custom mode
Allowed:mf
numberoptional

Strength of adherence to the requested style: 0–1, with up to two decimal places. Available only in custom mode.

  • Style weight is only available in custom mode
min: 0max: 1
numberoptional

Creative and experimental deviation: 0–1, with up to two decimal places. Available only in custom mode.

  • Weirdness is only available in custom mode
min: 0max: 1
numberoptional

Relative weight of audio features: 0–1, with up to two decimal places. Available only in custom mode and unavailable for instrumental music.

  • Audio weight is only available in custom mode
  • Audio weight is unavailable for instrumental music
min: 0max: 1
numberoptional

Creative diversity, expressed as an integer from 0 to 4; default 1 when omitted in custom mode. 0: exact style; 1: balanced; 2: distinct styles; 3: bold exploration; 4: maximum variation. Available only in custom mode. This does not set the number of output tracks.

  • Variety is only available in custom mode
min: 0max: 4
array <uri>optional

Reference image URLs for normal mode only. Accepted formats: JPEG, PNG, WebP, BMP; up to 10 MB per file.

  • Reference images are only available in normal mode
min items: 1max items: 5
array <uri>optional

Reference video URL for normal mode only. Up to 1 file, no larger than 100 MB and no longer than 241 seconds. Accepted formats: MP4, MOV (QuickTime), WebM.

  • Reference video is only available in normal mode
min items: 1max items: 1
array <uri>optional

Reference audio URLs for normal mode only. Each file must be 6–1800 seconds long (up to 30 minutes) and no larger than 500 MB. The combined attachment limit also applies.

  • Reference audio is only available in normal mode
max items: 10
string <uri>optional

Optional absolute HTTPS URL for generation progress notifications and terminal outcomes.

max length: 2048
Example:
https://client.example.com/webhooks/seeapi

Music result examples

Illustrative task detail extracts from GET /v1/generations/{task_id}. The full response can also include model, input, timestamps, and credits. IDs, tokens, dates, and URLs below are placeholders, not playable links.

Text: lyrics and metadata

This example has no preview URL yet. Actual text-stage responses may already contain expiring preview links.

{
  "generation": {
    "id": "task_example",
    "status": "processing",
    "stage": "text",
    "result": {
      "assets": [
        {
          "id": "track_example_1",
          "title": "A New Day",
          "prompt": "[Verse]\nA new day opens like a door\n[Chorus]\nA little brighter than before",
          "tags": "acoustic pop, warm vocals"
        },
        {
          "id": "track_example_2",
          "title": "A New Day",
          "prompt": "[Verse]\nA new day opens like a door\n[Chorus]\nA little brighter than before",
          "tags": "acoustic pop, gentle guitar"
        }
      ]
    }
  }
}

First: temporary previews

Both tracks have preview links. Only the first track has a duration so far. Check each returned expiry before playing.

{
  "generation": {
    "id": "task_example",
    "status": "processing",
    "stage": "first",
    "result": {
      "assets": [
        {
          "id": "track_example_1",
          "title": "A New Day",
          "prompt": "[Verse]\nA new day opens like a door\n[Chorus]\nA little brighter than before",
          "tags": "acoustic pop, warm vocals",
          "duration": 182.4,
          "audio_url": "https://api.example.com/v1/generations/task_example/tracks/track_example_1/stream?token=EXAMPLE_TOKEN",
          "stream_audio_url": "https://api.example.com/v1/generations/task_example/tracks/track_example_1/stream?token=EXAMPLE_TOKEN",
          "stream_expires_at": "2026-09-30T09:00:00.000Z"
        },
        {
          "id": "track_example_2",
          "title": "A New Day",
          "prompt": "[Verse]\nA new day opens like a door\n[Chorus]\nA little brighter than before",
          "tags": "acoustic pop, gentle guitar",
          "audio_url": "https://api.example.com/v1/generations/task_example/tracks/track_example_2/stream?token=EXAMPLE_TOKEN",
          "stream_audio_url": "https://api.example.com/v1/generations/task_example/tracks/track_example_2/stream?token=EXAMPLE_TOKEN",
          "stream_expires_at": "2026-09-30T09:00:00.000Z"
        }
      ]
    }
  }
}

Complete: permanent results

The task has succeeded. Both tracks have permanent audio URLs and available covers.

{
  "generation": {
    "id": "task_example",
    "status": "succeeded",
    "stage": "complete",
    "result": {
      "assets": [
        {
          "id": "track_example_1",
          "title": "A New Day",
          "prompt": "[Verse]\nA new day opens like a door\n[Chorus]\nA little brighter than before",
          "tags": "acoustic pop, warm vocals",
          "duration": 182.4,
          "audio_url": "https://assets.example.com/music/track_example_1/audio.mp3",
          "stream_audio_url": "https://assets.example.com/music/track_example_1/audio.mp3",
          "image_url": "https://assets.example.com/music/track_example_1/cover.jpeg"
        },
        {
          "id": "track_example_2",
          "title": "A New Day",
          "prompt": "[Verse]\nA new day opens like a door\n[Chorus]\nA little brighter than before",
          "tags": "acoustic pop, gentle guitar",
          "duration": 195.8,
          "audio_url": "https://assets.example.com/music/track_example_2/audio.mp3",
          "stream_audio_url": "https://assets.example.com/music/track_example_2/audio.mp3",
          "image_url": "https://assets.example.com/music/track_example_2/cover.jpeg"
        }
      ]
    }
  }
}
Code Examples
Request
const response = await fetch("https://api.seeapi.com/v1/generations", {
  method: "POST",
  headers: {
    "Authorization": "Bearer YOUR_API_KEY",
    "Idempotency-Key": "order-20260818-001",
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
  "model": "ai-music-m1",
  "endpoint": "music-generation",
  "provider": "seeapi",
  "input": {
    "custom_mode": true,
    "instrumental": false,
    "lyrics": "The morning opens like a door. A little brighter than before. We take a breath and start again. A new day rises with a friend.",
    "title": "A New Day",
    "style": "Acoustic pop, gentle vocals, warm acoustic guitar",
    "vocal_gender": "m"
  },
  "callback_url": "https://client.example.com/webhooks/seeapi"
})
});

const result = await response.json();
ResponseHTTP 202
{
  "generation": {
    "id": "task_xxx",
    "model": "ai-music-m1",
    "endpoint": "music-generation",
    "provider": "seeapi",
    "status": "processing",
    "estimated_credits": 16,
    "consumed_credits": 0,
    "refunded_credits": 0,
    "created_at": "2026-08-18T10:00:00Z",
    "updated_at": "2026-08-18T10:00:00Z"
  },
  "idempotent": false
}
PreviousNSFW Filter · Image ModerationNextAI Music M2 · Music Generation
Request
const response = await fetch("https://api.seeapi.com/v1/generations", {
  method: "POST",
  headers: {
    "Authorization": "Bearer YOUR_API_KEY",
    "Idempotency-Key": "order-20260818-001",
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
  "model": "ai-music-m1",
  "endpoint": "music-generation",
  "provider": "seeapi",
  "input": {
    "custom_mode": true,
    "instrumental": false,
    "lyrics": "The morning opens like a door. A little brighter than before. We take a breath and start again. A new day rises with a friend.",
    "title": "A New Day",
    "style": "Acoustic pop, gentle vocals, warm acoustic guitar",
    "vocal_gender": "m"
  },
  "callback_url": "https://client.example.com/webhooks/seeapi"
})
});

const result = await response.json();
ResponseHTTP 202
{
  "generation": {
    "id": "task_xxx",
    "model": "ai-music-m1",
    "endpoint": "music-generation",
    "provider": "seeapi",
    "status": "processing",
    "estimated_credits": 16,
    "consumed_credits": 0,
    "refunded_credits": 0,
    "created_at": "2026-08-18T10:00:00Z",
    "updated_at": "2026-08-18T10:00:00Z"
  },
  "idempotent": false
}