Regenerate song
December 13, 2024 (January 21, 2026)
Table of contents
https://api.useapi.net/v1/mureka/music/regenerate
Request Headers
Authorization: Bearer {API token}
Content-Type: application/json
# Alternatively you can use multipart/form-data
# Content-Type: multipart/form-data
API tokenis required, see Setup useapi.net for details.
Request Body
{
"song_id": 123456789,
"start_milliseconds": 123456
}
song_idis required.
Thesong_idvalue returned by one of the following endpoints:-
start_millisecondsis required. Define a starting point for the extension. -
asyncis optional, enables fire-and-forget mode (default:false). Whentrue, returns immediately with201 Createdand job metadata. Poll GET /jobs/jobidfor completion status. Useful for avoiding long request timeouts since music generation takes 30-90 seconds. -
replyUrlis optional, webhook URL for job status callbacks. Receives POST requests with job status updates (created,completed,failed). The JSON payload shape matches GET /jobs/jobidresponse. replyRefis optional, custom reference string passed back in webhook callbacks. Useful for tracking jobs on your end.
Responses
-
{ "jobid": "j0121061432017475905m-u777-a12345678901234-bot:mureka", "feed_id": 11223344, "state": 3, "songs": [ { "song_id": "user:777-mureka:123456789-song:33445566", "title": "<title>", "version": "1.1.1", "is_regenerate": true, "regenerate_from": 123456, "duration_milliseconds": 234567, "generate_at": 12345677, "genres": [ "electronic", "indie" ], "moods": [ "quirky", "angry", "restless" ], "mp3_url": "https://<download link>.mp3", "share_key": "<share key>", "recall": true, "machine_audit_state": 1, "credit_type": 1, "cover": "https://<cover image>.png", "share_link": "https://<share link>" }, { "song_id": "user:777-mureka:123456789-song:33445566", "title": "<title>", "version": "1.1.2", "is_regenerate": true, "regenerate_from": 123456, "duration_milliseconds": 1234567, "generate_at": 12345667, "genres": [ "electronic", "world-music" ], "moods": [ "dark", "quirky", "energetic" ], "mp3_url": "https://<download link>.mp3", "share_key": "<share key>", "machine_audit_state": 1, "credit_type": 1, "cover": "https://<cover image>.png", "share_link": "https://<share link>" } ] } -
Job created in async mode (
async: true). Music regeneration is processing in the background.Use GET /jobs/
jobidto poll for completion status.{ "jobid": "j0121061432017475905m-u777-a12345678901234-bot:mureka", "verb": "music/regenerate", "jobType": "music", "status": "created", "created": "2026-01-20T12:34:56.789Z", "request": { "account": "12345678901234", "song_id": "user:777-mureka:123456789-song:33445566", "start_milliseconds": 123456, "async": true, "replyUrl": "https://your-domain.com/webhook", "replyRef": "my-custom-ref-123" } } -
{ "error": "<Error message>", "code": 400 } -
{ "error": "Wrong username/password combination.", "code": 401 } -
- Rate limit exceeded.
Endpoint called too frequently. Wait at least 3 seconds before making another call.{ "code": 9008, "msg": "Too frequently, please try again later." } - Concurrent job limit exceeded. All job slots are taken (typically 10 concurrent generations per account). Wait at least 5 seconds before retrying.
{ "error": "Generate multiple task exceed limit. (6323)" }
- Rate limit exceeded.
-
596 Account Error
Returned when the account has an error state preventing API calls.
{ "error": "Session refresh failed 2026-01-19T14:31:15.000Z, manual update required", "code": "REFRESH_FAILED" }Possible error codes:
ACCOUNT_ERROR- Account has a blocking errorREFRESH_FAILED- Automatic token refresh failedREFRESH_IN_PROGRESS- Token refresh already in progress, retry shortlySESSION_EXPIRED- Session expired and no auto-refresh availableCOOKIE_EXPIRED- Google cookie has expired
To resolve, update your account configuration via POST /accounts.
Model
-
Music regeneration completed. Returns full song data with MP3 URLs.
{ jobid: string // Job identifier (for later lookup) feed_id: number state: number songs?: { song_id: string title: string version: string is_regenerate: boolean regenerate_from: number duration_milliseconds: number generate_at: number genres: string[] moods: string[] mp3_url: string share_key: string machine_audit_state: number credit_type: number cover: string share_link: string }[] error?: string code?: number msg?: string } -
Job created and processing in background. Structure matches GET /jobs/
jobidresponse.{ jobid: string // Job identifier verb: 'music/regenerate' // Job verb jobType: 'music' // Job type status: 'created' // Job status created: string // ISO 8601 timestamp request: { account?: string song_id: string start_milliseconds: number async: true replyUrl?: string replyRef?: string } } -
Error response structure (applies to both sync and async modes).
{ jobid?: string // Present for job-related errors error: string // Error summary message code?: number // HTTP status code or error code msg?: string // Additional error message rawData?: string // Raw error data (if available) }
Examples
-
curl -H "Accept: application/json" \ -H "Content-Type: application/json" \ -H "Authorization: Bearer …" \ -X POST https://api.useapi.net/v1/mureka/music/regenerate \ -d '{"song_id": …, "start_milliseconds": …}' -
const song_id = 123456789; const start_milliseconds = 123456; const apiUrl = `https://api.useapi.net/v1/mureka/music/regenerate`; const api_token = "API token"; const data = { method: 'POST', headers: { 'Authorization': `Bearer ${api_token}`, 'Content-Type': 'application/json' } }; data.body = JSON.stringify({ song_id, start_milliseconds }); const response = await fetch(apiUrl, data); const result = await response.json(); console.log("response", {response, result}); -
import requests song_id = 123456789 start_milliseconds = 123456 apiUrl = f"https://api.useapi.net/v1/mureka/music/regenerate" api_token = "API token" headers = { "Content-Type": "application/json", "Authorization" : f"Bearer {api_token}" } body = { "song_id": song_id, "lyrics": start_milliseconds } response = requests.post(apiUrl, headers=headers, json=body) print(response, response.json())