GET
https://octopusx.ai
/
v1
/
videos
/
{task_id}
Grok Task Query
curl --request GET \
  --url https://octopusx.ai/v1/videos/{task_id} \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "task_id": "<string>"
}
'
{
  "id": "video_abc123",
  "object": "video",
  "model": "grok-video-3",
  "status": "processing",
  "progress": 42,
  "created_at": 1735689600,
  "completed_at": 0,
  "expires_at": 1735776000,
  "seconds": "6",
  "size": "720P",
  "remixed_from_video_id": "",
  "error": {
    "message": "",
    "code": ""
  },
  "video_url": ""
}

Grok Task Query

OpenAI-format query entry point. If the task was submitted via POST /v1/video/create, please use Query Task. After a Grok series task is submitted, poll the status via GET /v1/videos/{task_id}.
  • The API path is GET /v1/videos/{task_id}.
  • After the task is completed, the result URL can usually be read from video_url or output.url.
  • If directly downloading video_url fails, fall back to GET /v1/videos/{task_id}/content.

Method and Path

GET /v1/videos/{task_id}

Request Example

curl https://octopusx.ai/v1/videos/video_abc123 \
  -H "Authorization: Bearer YOUR_API_KEY"

Response Example

{
  "id": "video_abc123",
  "object": "video",
  "model": "grok-video-3",
  "status": "processing",
  "progress": 42,
  "created_at": 1735689600,
  "completed_at": 0,
  "expires_at": 1735776000,
  "seconds": "6",
  "size": "720P",
  "remixed_from_video_id": "",
  "error": {
    "message": "",
    "code": ""
  },
  "video_url": ""
}

Authentication

Authorization: Bearer YOUR_API_KEY

Path Parameters

task_id
string
required
Video task ID.

Response

id
string
Task ID.
status
string
Task status. Common values include processing, failed, and completed.
progress
integer
Progress percentage.
completed_at
integer
Completion timestamp.
expires_at
integer
Result expiration timestamp.
seconds
string
Output duration.
size
string
Output resolution tier.
video_url
string
Video URL. When completed, this field will be read first, or output.url will be read for compatibility.
error
object
Failure reason object.

Polling Recommendations

The implementation will obtain the result URL in the following order:
  1. output.url
  2. video_url
  3. url
  4. detail.url
If directly downloading the returned video URL fails, fall back to:
GET /v1/videos/{task_id}/content