Get Task Details
Use this endpoint to retrieve the latest state of a generation task. Pass the complete generation ID returned by POST /v1/generations as task_id.
Query a task
Run this example on your server using the API base URL for the current environment and your own key. Replace task_xxx with the complete generation.id returned when the task was created.
export SEEAPI_API_BASE_URL='https://api.seeapi.com'
export SEEAPI_API_KEY='YOUR_API_KEY'
export SEEAPI_TASK_ID='task_xxx'
curl --request GET "$SEEAPI_API_BASE_URL/v1/generations/$SEEAPI_TASK_ID" \
--header "Authorization: Bearer $SEEAPI_API_KEY"Polling guidance
HTTP 200 means the lookup succeeded, not that generation has finished. Inspect generation.status: poll again only while it is processing, and stop on any terminal state. Use an increasing delay with jitter instead of immediate, continuous retries.
Set an application-level waiting timeout. Reaching that timeout does not prove the task failed; retain the task ID so you can query it again later. For production, provide callback_url when creating the task, verify webhook signatures, and use polling as a recovery path.
Retrieve and save results
After status becomes succeeded, use the URLs in generation.result.assets immediately. To retrieve complete asset metadata for the task, call GET /v1/generations/{task_id}/assets.
Before the task succeeds, the asset endpoint returns an empty data array.
Each asset includes id, type, url, mime_type, and byte_size. If an asset-specific expiration applies, expires_at is also returned.
Asset URLs support anonymous GET, HEAD, and Range requests.
Generated assets currently have no automatic expiration period. Platform storage is not a substitute for your own backups; keep copies of business-critical assets.
Read every entry in generation.result.assets rather than assuming a single file. In task details, the asset identifier is asset_id; the separate assets endpoint returns it as id.
Task states
processing — The task is still running.
succeeded — The final result is ready.
failed, canceled, refunded, or expired — The task is terminal.
Credit usage
generation.consumed_credits is the estimated credit usage while the task is processing. After the task reaches a terminal state, it is the actual credit usage. This is a field on generation, separate from the asset list.
Handle lookup errors
An HTTP error from this endpoint is a lookup failure. A successful lookup with generation.status = failed is a completed task failure. Keep these cases separate, and follow the response-specific guidance below. Retry network failures and recoverable server errors with backoff; do not submit a new generation just because a status query failed.
For troubleshooting, keep the complete task ID, model, Endpoint, time of the issue, and a redacted error message. Inspect the task in API Tasks. Never include your API key or Webhook Signing Secret in logs or support messages.
Task logs are retained for 60 days. Export or back up important records before they expire if you need to keep them longer.
Request
/v1/generations/{task_id}Path Params
The complete generation ID returned by POST /v1/generations. Pass it unchanged; do not use a shortened display ID.
- Store the complete generation ID when the task is created.
- Send the API Key in the Authorization header using the Bearer scheme.
- Example:
task_xxx
Responses
200Returns the latest generation state and the completed result when available.
- Continue polling only while status is processing.
- Treat succeeded, failed, canceled, refunded, and expired as terminal states.
- HTTP 200 confirms a successful lookup; inspect generation.status to determine the task outcome.
objectrequiredThe generation task associated with the supplied task_id.
The generation task associated with the supplied task_id.
The complete generation ID returned when the task was created.
- Example:
task_xxx
The model ID used to create this task.
- Example:
model-id
The model Endpoint used to create this task.
- Example:
text-to-image
The public Provider ID selected for this task.
- Example:
seeapi
Current task state: processing, succeeded, failed, canceled, refunded, or expired.
processingsucceededfailedcanceledrefundedexpired- Example:
succeeded
Music progress, independent of task status. text contains available lyrics and metadata and may already include expiring preview URLs. first may include duration for only some songs. Play previews only when the returned URL and expiry are valid. complete with status=succeeded contains permanent audio and available covers. Do not infer task success from stage alone.
textfirstcompleteobjectoptionalThe completed generation output. This object is available after status becomes succeeded.
The completed generation output. This object is available after status becomes succeeded.
arrayoptionalGenerated assets available after status becomes succeeded.
Generated assets available after status becomes succeeded.
The asset identifier. The separate task assets endpoint returns this identifier as id.
imagevideoaudioThe generated file URL. Use the task assets endpoint for metadata and retention information.
Media MIME type, when available (for example, image/png or video/mp4).
File size in bytes, when available.
Stable platform track ID shared across stages; never an upstream ID.
Track title, when available.
Track lyrics, when available (output field; not the request prompt).
Track style tags, when available.
Track duration in seconds, when available. It may arrive for individual songs during first; do not require every song to have duration before completion.
Signed SeeAPI preview proxy URL during processing when available, including text or first; permanent SeeAPI audio URL after status=succeeded.
Optional signed SeeAPI preview proxy URL in text or first, valid for one hour; use stream_expires_at to check expiry. Query the task for a fresh URL after expiry. On complete with status=succeeded it uses the permanent audio URL.
Permanent SeeAPI cover URL on complete, when a cover was returned and stored.
Expiration time of the preview URL; a retry of the same Webhook does not refresh it.
While the task is processing, this is the estimated credit usage. After the task reaches a terminal status, this is the actual credit usage.
- Example:
10
The time when the task was created.
- Example:
2026-08-18T10:00:00Z
The time of the most recent task update.
- Example:
2026-08-18T10:01:00Z
The task completion time, when available. Do not require this field while the task is still processing.
- Example:
2026-08-18T10:01:00Z
200Music succeeded: permanent audio and available covers
objectrequiredThe generation task associated with the supplied task_id.
The generation task associated with the supplied task_id.
The complete generation ID returned when the task was created.
- Example:
task_xxx
The model ID used to create this task.
- Example:
ai-music-m2
The model Endpoint used to create this task.
- Example:
music-generation
The public Provider ID selected for this task.
- Example:
seeapi
Current task state: processing, succeeded, failed, canceled, refunded, or expired.
processingsucceededfailedcanceledrefundedexpired- Example:
succeeded
Music progress, independent of task status. text contains available lyrics and metadata and may already include expiring preview URLs. first may include duration for only some songs. Play previews only when the returned URL and expiry are valid. complete with status=succeeded contains permanent audio and available covers. Do not infer task success from stage alone.
textfirstcompleteobjectoptionalThe completed generation output. This object is available after status becomes succeeded.
The completed generation output. This object is available after status becomes succeeded.
arrayoptionalGenerated assets available after status becomes succeeded.
Generated assets available after status becomes succeeded.
Stable platform track ID shared across stages; never an upstream ID.
Track title, when available.
Track lyrics, when available (output field; not the request prompt).
Track style tags, when available.
Track duration in seconds, when available. It may arrive for individual songs during first; do not require every song to have duration before completion.
Signed SeeAPI preview proxy URL during processing when available, including text or first; permanent SeeAPI audio URL after status=succeeded.
Optional signed SeeAPI preview proxy URL in text or first, valid for one hour; use stream_expires_at to check expiry. Query the task for a fresh URL after expiry. On complete with status=succeeded it uses the permanent audio URL.
Permanent SeeAPI cover URL on complete, when a cover was returned and stored.
Expiration time of the preview URL; a retry of the same Webhook does not refresh it.
While the task is processing, this is the estimated credit usage. After the task reaches a terminal status, this is the actual credit usage.
- Example:
17
The time when the task was created.
- Example:
2026-08-18T10:00:00Z
The time of the most recent task update.
- Example:
2026-08-18T10:01:00Z
The task completion time, when available. Do not require this field while the task is still processing.
- Example:
2026-08-18T10:01:00Z
200Music processing: lyrics and track metadata, with preview audio when available
objectrequiredThe generation task associated with the supplied task_id.
The generation task associated with the supplied task_id.
The complete generation ID returned when the task was created.
- Example:
task_xxx
The model ID used to create this task.
- Example:
ai-music-m2
The model Endpoint used to create this task.
- Example:
music-generation
The public Provider ID selected for this task.
- Example:
seeapi
Current task state: processing, succeeded, failed, canceled, refunded, or expired.
processingsucceededfailedcanceledrefundedexpired- Example:
succeeded
Music progress, independent of task status. text contains available lyrics and metadata and may already include expiring preview URLs. first may include duration for only some songs. Play previews only when the returned URL and expiry are valid. complete with status=succeeded contains permanent audio and available covers. Do not infer task success from stage alone.
textfirstcompleteobjectoptionalThe completed generation output. This object is available after status becomes succeeded.
The completed generation output. This object is available after status becomes succeeded.
arrayoptionalGenerated assets available after status becomes succeeded.
Generated assets available after status becomes succeeded.
Stable platform track ID shared across stages; never an upstream ID.
Track title, when available.
Track lyrics, when available (output field; not the request prompt).
Track style tags, when available.
Track duration in seconds, when available. It may arrive for individual songs during first; do not require every song to have duration before completion.
Signed SeeAPI preview proxy URL during processing when available, including text or first; permanent SeeAPI audio URL after status=succeeded.
Optional signed SeeAPI preview proxy URL in text or first, valid for one hour; use stream_expires_at to check expiry. Query the task for a fresh URL after expiry. On complete with status=succeeded it uses the permanent audio URL.
Permanent SeeAPI cover URL on complete, when a cover was returned and stored.
Expiration time of the preview URL; a retry of the same Webhook does not refresh it.
While the task is processing, this is the estimated credit usage. After the task reaches a terminal status, this is the actual credit usage.
- Example:
17
The time when the task was created.
- Example:
2026-08-18T10:00:00Z
The time of the most recent task update.
- Example:
2026-08-18T10:01:00Z
The task completion time, when available. Do not require this field while the task is still processing.
- Example:
2026-08-18T10:01:00Z
200Music processing: expiring previews and duration as each song becomes ready
objectrequiredThe generation task associated with the supplied task_id.
The generation task associated with the supplied task_id.
The complete generation ID returned when the task was created.
- Example:
task_xxx
The model ID used to create this task.
- Example:
ai-music-m2
The model Endpoint used to create this task.
- Example:
music-generation
The public Provider ID selected for this task.
- Example:
seeapi
Current task state: processing, succeeded, failed, canceled, refunded, or expired.
processingsucceededfailedcanceledrefundedexpired- Example:
succeeded
Music progress, independent of task status. text contains available lyrics and metadata and may already include expiring preview URLs. first may include duration for only some songs. Play previews only when the returned URL and expiry are valid. complete with status=succeeded contains permanent audio and available covers. Do not infer task success from stage alone.
textfirstcompleteobjectoptionalThe completed generation output. This object is available after status becomes succeeded.
The completed generation output. This object is available after status becomes succeeded.
arrayoptionalGenerated assets available after status becomes succeeded.
Generated assets available after status becomes succeeded.
Stable platform track ID shared across stages; never an upstream ID.
Track title, when available.
Track lyrics, when available (output field; not the request prompt).
Track style tags, when available.
Track duration in seconds, when available. It may arrive for individual songs during first; do not require every song to have duration before completion.
Signed SeeAPI preview proxy URL during processing when available, including text or first; permanent SeeAPI audio URL after status=succeeded.
Optional signed SeeAPI preview proxy URL in text or first, valid for one hour; use stream_expires_at to check expiry. Query the task for a fresh URL after expiry. On complete with status=succeeded it uses the permanent audio URL.
Permanent SeeAPI cover URL on complete, when a cover was returned and stored.
Expiration time of the preview URL; a retry of the same Webhook does not refresh it.
While the task is processing, this is the estimated credit usage. After the task reaches a terminal status, this is the actual credit usage.
- Example:
17
The time when the task was created.
- Example:
2026-08-18T10:00:00Z
The time of the most recent task update.
- Example:
2026-08-18T10:01:00Z
The task completion time, when available. Do not require this field while the task is still processing.
- Example:
2026-08-18T10:01:00Z
Invalid API Key or authentication failed
- Stop automatic retries and check that Authorization uses the Bearer scheme with a valid API key.
The current request is not allowed
- Check the API key permissions for this request. Do not retry unchanged credentials indefinitely.
Model, Endpoint, or task not found
- Verify the complete task_id and that you are using the API environment where the task was created. Do not keep retrying an unchanged, invalid task ID.
Too many requests
- Reduce polling frequency and honor Retry-After when provided. Use backoff with jitter instead of immediate retries.
Service temporarily unavailable
- Retry the lookup with backoff using the same task_id. A temporary lookup failure does not require a new generation request.