Skip to main content

Get Job Status

GET /api/v1/music/jobs/{job_id}/status

Get the current status of a music generation job.
from audiopod import AudioPod

client = AudioPod(api_key="ap_your_api_key")

job = client.music.get_job(123)
print(f"Status: {job['status']}")

if job['status'] == 'COMPLETED':
    print(f"Audio URL: {job['output_url']}")
    print(f"Duration: {job['audio_duration']}s")
Response: Full MusicGenerationJob object (see response format).

List Jobs

GET /api/v1/music/jobs

List music generation jobs with filtering, search, and sorting.
# List recent jobs
jobs = client.music.list_jobs(limit=20)

# Filter by task type
songs = client.music.list_jobs(task="text2music", limit=50)
Query Parameters:
ParameterTypeDefaultDescription
skipint0Number of records to skip
limitint50Number of records to return (max 100)
taskstringnullFilter by task type (text2music, prompt2instrumental, etc.)
statusstringnullFilter by status (PENDING, PROCESSING, COMPLETED, FAILED)
song_typestringnullFilter by category: rap, song, vocals, instrumental, samples
likedboolnullFilter to liked (true) or not-liked (false) tracks
searchstringnullSearch across display name, prompt, and lyrics
languagestringnullFilter by vocal language
genrestringnullFilter by genre
emotionstringnullFilter by emotion tag
occasionstringnullFilter by occasion tag
sort_bystring"created_at"Sort field: created_at, display_name, audio_duration, status
sort_orderstring"desc"Sort direction: asc or desc
include_interactionsboolfalseInclude like/dislike status for each job
Response Headers:
  • X-Total-Count: Total number of matching records (for pagination)

Delete Job

DELETE /api/v1/music/jobs/{job_id}

Delete a music generation job and its associated audio files.
result = client.music.delete_job(123)
print(result['message'])  # "Job deleted successfully"

Update Job Metadata

PATCH /api/v1/music/jobs/{job_id}

Update a job’s display name or thumbnail URL.
curl -X PATCH "https://api.audiopod.ai/api/v1/music/jobs/123" \
  -H "X-API-Key: $AUDIOPOD_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "display_name": "My Awesome Track",
    "thumbnail_url": "https://example.com/thumbnail.jpg"
  }'
Request Body:
ParameterTypeDescription
display_namestringNew display name
thumbnail_urlstringNew thumbnail image URL

Retry Failed Job

POST /api/v1/music/jobs/{job_id}/retry

Retry a failed music generation job without consuming additional credits. The original credit reservation is reused.
curl -X POST "https://api.audiopod.ai/api/v1/music/jobs/123/retry" \
  -H "X-API-Key: $AUDIOPOD_API_KEY"
Constraints:
  • Only works on jobs with status: "FAILED"
  • Original credit reservation is reused (no additional charge)
  • Returns a MusicGenerationResponse with the re-queued job
Rate limit: 10 requests per minute.

Job Counts

GET /api/v1/music/jobs/counts

Get aggregated counts of your music generation jobs, broken down by task type and song category.
# All counts
curl "https://api.audiopod.ai/api/v1/music/jobs/counts" \
  -H "X-API-Key: $AUDIOPOD_API_KEY"

# Filter by status
curl "https://api.audiopod.ai/api/v1/music/jobs/counts?status=COMPLETED" \
  -H "X-API-Key: $AUDIOPOD_API_KEY"
Query Parameters:
ParameterTypeDescription
statusstringFilter by status
song_typestringFilter by category: rap, song, vocals, instrumental, samples
Response:
{
  "total": 150,
  "by_task": {
    "text2music": 80,
    "prompt2instrumental": 40,
    "text2rap": 20,
    "retake": 10
  },
  "by_song_type": {
    "songs": 80,
    "rap": 20,
    "instrumental": 40,
    "edits": 10
  },
  "filters": {
    "status": null,
    "song_type": null
  }
}

Liked Tracks

GET /api/v1/music/liked

Get all tracks you’ve liked.
curl "https://api.audiopod.ai/api/v1/music/liked?limit=20" \
  -H "X-API-Key: $AUDIOPOD_API_KEY"
Query Parameters:
ParameterTypeDefaultDescription
skipint0Pagination offset
limitint50Number of records
song_typestringnullFilter by category
statusstringnullFilter by status

Filter Statistics

GET /api/v1/music/filters/stats

Get statistics for building filter UI dropdowns — total tracks, liked count, task distribution, and available filter values.
curl "https://api.audiopod.ai/api/v1/music/filters/stats" \
  -H "X-API-Key: $AUDIOPOD_API_KEY"
Response:
{
  "total_tracks": 150,
  "liked_count": 25,
  "song_types": {
    "songs": 80,
    "rap": 20,
    "instrumental": 40,
    "edits": 10
  },
  "available_filters": {
    "song_types": ["songs", "rap", "instrumental", "edits"],
    "interactions": ["liked"],
    "statuses": ["pending", "processing", "completed", "failed"],
    "languages": ["en", "zh", "ja", "ko"],
    "genres": ["pop", "rock", "jazz"],
    "emotions": ["happy", "sad", "energetic"],
    "occasions": ["party", "relaxation", "workout"]
  }
}

Genre Presets

GET /api/v1/music/presets

Get available genre presets with their pre-configured parameters.
presets = client.music.get_presets()
for name, config in presets['genre_presets'].items():
    print(f"{name}: {config}")

Model Status

GET /api/v1/music/model/status

Get AudioMusic V2 model health and status information.
curl "https://api.audiopod.ai/api/v1/music/model/status" \
  -H "X-API-Key: $AUDIOPOD_API_KEY"

Sample Data

GET /api/v1/music/sample-data

Get sample/test data for development and testing purposes.
curl "https://api.audiopod.ai/api/v1/music/sample-data" \
  -H "X-API-Key: $AUDIOPOD_API_KEY"