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
Vidu
Music Models
Text Models

Policies

  • Data Handling & Privacy
  • Terms of Service
  • Privacy Policy
  • Commercial Use Policy
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.

Developers
  • AI Models
  • API Pricing
  • AI Integrations
  • API Keys
  • Documentation
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

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

GET/v1/generations/{task_id}
AuthorizationSend your API key in the Authorization header using the Bearer scheme.Authorization: Bearer ****************

Path Params

stringrequired

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.
Bodyapplication/json
  • 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.
objectrequired

The generation task associated with the supplied task_id.

stringrequired

The complete generation ID returned when the task was created.

Example:
task_xxx
stringrequired

The model ID used to create this task.

Example:
model-id
stringrequired

The model Endpoint used to create this task.

Example:
text-to-image
stringrequired

The public Provider ID selected for this task.

Example:
seeapi
stringrequired

Current task state: processing, succeeded, failed, canceled, refunded, or expired.

Allowed:processingsucceededfailedcanceledrefundedexpired
Example:
succeeded
stringoptional

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.

Allowed:textfirstcomplete
objectoptional

The completed generation output. This object is available after status becomes succeeded.

arrayoptional

Generated assets available after status becomes succeeded.

stringoptional

The asset identifier. The separate task assets endpoint returns this identifier as id.

stringoptional
Allowed:imagevideoaudio
string <uri>optional

The generated file URL. Use the task assets endpoint for metadata and retention information.

stringoptional

Media MIME type, when available (for example, image/png or video/mp4).

integeroptional

File size in bytes, when available.

stringoptional

Stable platform track ID shared across stages; never an upstream ID.

stringoptional

Track title, when available.

stringoptional

Track lyrics, when available (output field; not the request prompt).

stringoptional

Track style tags, when available.

numberoptional

Track duration in seconds, when available. It may arrive for individual songs during first; do not require every song to have duration before completion.

string <uri>optional

Signed SeeAPI preview proxy URL during processing when available, including text or first; permanent SeeAPI audio URL after status=succeeded.

string <uri>optional

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.

string <uri>optional

Permanent SeeAPI cover URL on complete, when a cover was returned and stored.

string <date-time>optional

Expiration time of the preview URL; a retry of the same Webhook does not refresh it.

numberrequired

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
string <date-time>required

The time when the task was created.

Example:
2026-08-18T10:00:00Z
string <date-time>required

The time of the most recent task update.

Example:
2026-08-18T10:01:00Z
string <date-time>optional

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
Bodyapplication/json
objectrequired

The generation task associated with the supplied task_id.

stringrequired

The complete generation ID returned when the task was created.

Example:
task_xxx
stringrequired

The model ID used to create this task.

Example:
ai-music-m2
stringrequired

The model Endpoint used to create this task.

Example:
music-generation
stringrequired

The public Provider ID selected for this task.

Example:
seeapi
stringrequired

Current task state: processing, succeeded, failed, canceled, refunded, or expired.

Allowed:processingsucceededfailedcanceledrefundedexpired
Example:
succeeded
stringoptional

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.

Allowed:textfirstcomplete
objectoptional

The completed generation output. This object is available after status becomes succeeded.

arrayoptional

Generated assets available after status becomes succeeded.

stringrequired

Stable platform track ID shared across stages; never an upstream ID.

stringoptional

Track title, when available.

stringoptional

Track lyrics, when available (output field; not the request prompt).

stringoptional

Track style tags, when available.

numberoptional

Track duration in seconds, when available. It may arrive for individual songs during first; do not require every song to have duration before completion.

string <uri>optional

Signed SeeAPI preview proxy URL during processing when available, including text or first; permanent SeeAPI audio URL after status=succeeded.

string <uri>optional

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.

string <uri>optional

Permanent SeeAPI cover URL on complete, when a cover was returned and stored.

string <date-time>optional

Expiration time of the preview URL; a retry of the same Webhook does not refresh it.

numberrequired

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
string <date-time>required

The time when the task was created.

Example:
2026-08-18T10:00:00Z
string <date-time>required

The time of the most recent task update.

Example:
2026-08-18T10:01:00Z
string <date-time>optional

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
Bodyapplication/json
objectrequired

The generation task associated with the supplied task_id.

stringrequired

The complete generation ID returned when the task was created.

Example:
task_xxx
stringrequired

The model ID used to create this task.

Example:
ai-music-m2
stringrequired

The model Endpoint used to create this task.

Example:
music-generation
stringrequired

The public Provider ID selected for this task.

Example:
seeapi
stringrequired

Current task state: processing, succeeded, failed, canceled, refunded, or expired.

Allowed:processingsucceededfailedcanceledrefundedexpired
Example:
succeeded
stringoptional

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.

Allowed:textfirstcomplete
objectoptional

The completed generation output. This object is available after status becomes succeeded.

arrayoptional

Generated assets available after status becomes succeeded.

stringrequired

Stable platform track ID shared across stages; never an upstream ID.

stringoptional

Track title, when available.

stringoptional

Track lyrics, when available (output field; not the request prompt).

stringoptional

Track style tags, when available.

numberoptional

Track duration in seconds, when available. It may arrive for individual songs during first; do not require every song to have duration before completion.

string <uri>optional

Signed SeeAPI preview proxy URL during processing when available, including text or first; permanent SeeAPI audio URL after status=succeeded.

string <uri>optional

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.

string <uri>optional

Permanent SeeAPI cover URL on complete, when a cover was returned and stored.

string <date-time>optional

Expiration time of the preview URL; a retry of the same Webhook does not refresh it.

numberrequired

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
string <date-time>required

The time when the task was created.

Example:
2026-08-18T10:00:00Z
string <date-time>required

The time of the most recent task update.

Example:
2026-08-18T10:01:00Z
string <date-time>optional

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
Bodyapplication/json
objectrequired

The generation task associated with the supplied task_id.

stringrequired

The complete generation ID returned when the task was created.

Example:
task_xxx
stringrequired

The model ID used to create this task.

Example:
ai-music-m2
stringrequired

The model Endpoint used to create this task.

Example:
music-generation
stringrequired

The public Provider ID selected for this task.

Example:
seeapi
stringrequired

Current task state: processing, succeeded, failed, canceled, refunded, or expired.

Allowed:processingsucceededfailedcanceledrefundedexpired
Example:
succeeded
stringoptional

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.

Allowed:textfirstcomplete
objectoptional

The completed generation output. This object is available after status becomes succeeded.

arrayoptional

Generated assets available after status becomes succeeded.

stringrequired

Stable platform track ID shared across stages; never an upstream ID.

stringoptional

Track title, when available.

stringoptional

Track lyrics, when available (output field; not the request prompt).

stringoptional

Track style tags, when available.

numberoptional

Track duration in seconds, when available. It may arrive for individual songs during first; do not require every song to have duration before completion.

string <uri>optional

Signed SeeAPI preview proxy URL during processing when available, including text or first; permanent SeeAPI audio URL after status=succeeded.

string <uri>optional

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.

string <uri>optional

Permanent SeeAPI cover URL on complete, when a cover was returned and stored.

string <date-time>optional

Expiration time of the preview URL; a retry of the same Webhook does not refresh it.

numberrequired

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
string <date-time>required

The time when the task was created.

Example:
2026-08-18T10:00:00Z
string <date-time>required

The time of the most recent task update.

Example:
2026-08-18T10:01:00Z
string <date-time>optional

The task completion time, when available. Do not require this field while the task is still processing.

Example:
2026-08-18T10:01:00Z
401

Invalid API Key or authentication failed

  • Stop automatic retries and check that Authorization uses the Bearer scheme with a valid API key.
403

The current request is not allowed

  • Check the API key permissions for this request. Do not retry unchanged credentials indefinitely.
404

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.
429

Too many requests

  • Reduce polling frequency and honor Retry-After when provided. Use backoff with jitter instead of immediate retries.
503

Service temporarily unavailable

  • Retry the lookup with backoff using the same task_id. A temporary lookup failure does not require a new generation request.
Code Examples
Request
const response = await fetch("https://api.seeapi.com/v1/generations/task_xxx", {
  method: "GET",
  headers: {
    "Authorization": "Bearer YOUR_API_KEY"
  }
});

const result = await response.json();
ResponseHTTP 200
{
  "generation": {
    "id": "task_xxx",
    "model": "model-id",
    "endpoint": "text-to-image",
    "provider": "seeapi",
    "status": "succeeded",
    "result": {
      "assets": [
        {
          "asset_id": "asset_xxx",
          "type": "image",
          "url": "https://api.example.com/assets/tasks%2Ftask_xxx%2Fasset.png",
          "mime_type": "image/png",
          "byte_size": 123456
        }
      ]
    },
    "consumed_credits": 10,
    "created_at": "2026-08-18T10:00:00Z",
    "updated_at": "2026-08-18T10:01:00Z",
    "completed_at": "2026-08-18T10:01:00Z"
  }
}
PreviousCreate a GenerationNextGemini Omni Audio · Create Audio
Request
const response = await fetch("https://api.seeapi.com/v1/generations/task_xxx", {
  method: "GET",
  headers: {
    "Authorization": "Bearer YOUR_API_KEY"
  }
});

const result = await response.json();
ResponseHTTP 200
{
  "generation": {
    "id": "task_xxx",
    "model": "model-id",
    "endpoint": "text-to-image",
    "provider": "seeapi",
    "status": "succeeded",
    "result": {
      "assets": [
        {
          "asset_id": "asset_xxx",
          "type": "image",
          "url": "https://api.example.com/assets/tasks%2Ftask_xxx%2Fasset.png",
          "mime_type": "image/png",
          "byte_size": 123456
        }
      ]
    },
    "consumed_credits": 10,
    "created_at": "2026-08-18T10:00:00Z",
    "updated_at": "2026-08-18T10:01:00Z",
    "completed_at": "2026-08-18T10:01:00Z"
  }
}