Poll a job

June 3, 2026

Table of contents

  1. Request Headers
  2. Responses
  3. Model
  4. Examples
  5. Try It

Fetch one job record by its jobid. Use this to poll an async generation until status is completed or failed.

https://api.useapi.net/v1/flowmusic/jobs/jobid

  • jobid is URL-encoded in the path (it contains : and @).

Request Headers

Authorization: Bearer {API token}
Content-Type: application/json

Responses

  • 200 OK

    {
      "jobid": "job:56ef7890-...-bot:flowmusic",
      "email": "[email protected]",
      "request": {
        "prompt": "...",
        "mode": "async"
      },
      "created_at": "2026-05-31T19:57:23.954Z",
      "completed_at": "2026-05-31T19:59:43.118Z",
      "duration_ms": 139164,
      "status": "completed",
      "clips": [ { "clip": "user:1234-...-clip:...", "duration_s": 173.03, "image_url": "..." } ]
    }
    

    While still running, only status: "pending" and the dispatch fields are present (no clips).

  • 401 Unauthorized — invalid API token.

  • 403 — the jobid does not belong to your account.

  • 404 — no job with that id (expired or never existed).

Model

The job record — the same shape returned by POST /music and POST /music/edit. operation is present only for edit jobs, clips appears once completed, and error appears when failed.

{
  jobid: string                  // job:<uuid>-user:<id>-<email>-bot:flowmusic
  email: string
  operation?: 'effect' | 'extend' | 'replace' | 'cover' | 'remix'   // edit jobs only
  status: 'completed' | 'pending' | 'failed'
  created_at: string             // ISO 8601 timestamp
  completed_at?: string          // present when terminal
  duration_ms?: number           // wall-clock generation time
  clips?: Array<{                // present once completed
    clip: string                 // encoded clip asset id — use with /music/download and /music/edit
    title: string | null
    duration_s: number | null
    lyrics: string | null
    seed: number | null
    lyrics_timing: Array<[number, number]> | null   // timing markers, [start, end] seconds (vocal clips)
    created_at: string
    audio_url: string
    wav_url: string
    image_url: string | null
  }>
  error?: {                      // present when status is 'failed'
    code: string
    message: string
  }
  request: object                // the original request body, echoed back verbatim
}

Examples

  • JOBID="job:56ef7890-...-bot:flowmusic"
    curl -H "Authorization: Bearer YOUR_API_TOKEN" \
         "https://api.useapi.net/v1/flowmusic/jobs/$(python3 -c "import urllib.parse,sys;print(urllib.parse.quote(sys.argv[1],safe=''))" "$JOBID")"
    
  • import requests, urllib.parse
    jobid = 'job:56ef7890-...-bot:flowmusic'
    r = requests.get('https://api.useapi.net/v1/flowmusic/jobs/' + urllib.parse.quote(jobid, safe=''),
                     headers={'Authorization': 'Bearer YOUR_API_TOKEN'})
    print(r.status_code, r.json())
    

Try It