Skip to main content
GET
/
videos
/
{video_id}
Get video status
const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};

fetch('https://api.phaseo.app/v1/videos/{video_id}', options)
  .then(res => res.json())
  .then(res => console.log(res))
  .catch(err => console.error(err));
{
  "id": "<string>",
  "polling_url": "<string>",
  "model": "<string>",
  "request_id": "<string>",
  "session_id": "<string>",
  "generation_id": "<string>",
  "created_at": 123,
  "started_at": 123,
  "completed_at": 123,
  "object": "video",
  "poll_after_seconds": 20,
  "provider": "<string>",
  "seconds": 123,
  "size": "<string>",
  "audio": true,
  "content_url": "<string>",
  "download_url": "<string>",
  "expires_at": 123,
  "progress": 123,
  "progress_source": "<string>",
  "asset": {
    "id": "<string>",
    "mime_type": "<string>",
    "bytes": 123,
    "sha256": "<string>",
    "width": 123,
    "height": 123,
    "duration_seconds": 123
  },
  "outputs": [
    {
      "index": 123,
      "mime_type": "<string>",
      "bytes_available": true,
      "content_url": "<string>",
      "download_url": "<string>",
      "expires_at": 123
    }
  ],
  "billing": {},
  "usage": {
    "cost": 123,
    "is_byok": true
  },
  "error": null
}

Documentation Index

Fetch the complete documentation index at: https://docs.ai-stats.phaseo.app/llms.txt

Use this file to discover all available pages before exploring further.

Fetches the current state of a video generation job.
The public video routes are currently mounted but temporarily disabled, so this route currently returns 501 not_implemented.
Common response fields include:
  • id
  • object
  • status
  • output_access
  • progress
  • progress_source
  • polling_url
  • poll_after_seconds
  • generation_id
  • created_at
  • started_at
  • completed_at
  • provider
  • model
  • seconds
  • size
  • audio
  • asset
  • outputs
  • usage
  • billing
  • error
Output-access fields are conditional:
  • content_url is present when output_access is bytes or both.
  • download_url and expires_at are present when output_access is signed_url or both.
Each entry in outputs includes:
  • index
  • mime_type
  • bytes_available
  • content_url when unsigned byte access is enabled
  • download_url and expires_at when signed download access is enabled
When the job becomes terminal, this response is also where billing, asset metadata, output access, and any final provider error payload are most useful.

Authorizations

Authorization
string
header
required

Bearer token authentication

Path Parameters

video_id
string
required

The ID of the video generation request.

Response

200 - application/json

Video status response

id
string
polling_url
string
model
string
request_id
string
session_id
string
status
enum<string>
Available options:
queued,
processing,
completed,
failed,
cancelled,
expired
output_access
enum<string>
Available options:
bytes,
signed_url,
both
generation_id
string | null
created_at
started_at
completed_at
object
string
Example:

"video"

poll_after_seconds
integer
Example:

20

provider
string
seconds
number
size
string
audio
boolean
content_url
string

Present when output_access includes bytes (authenticated endpoint).

download_url
string | null

Signed first-party URL for direct download when status is completed.

expires_at
integer | null

Unix timestamp (seconds) when the signed download_url expires.

progress
integer | null
progress_source
string
asset
object
outputs
object[]
billing
object
usage
object
error
unknown
Last modified on May 19, 2026