Get AI Work Status

State of an AI job: QUEUE, RUNNING, FINISHED, ERROR or SKIPPED.

Recent Requests
Log in to see full request history
TimeStatusUser Agent
Retrieving recent requests…
LoadingLoading…

GET /aiworkflow/{work_id}

Returns the state of an AI job created by POST /aiworkflow. This is the tracking endpoint: generation is asynchronous and the creation call returns before the content exists.

📘

Authorization

Requires the account API key in the Authorization header, without the Bearer prefix.

HTTP Method & Path

GET /aiworkflow/{work_id}

Base URL: https://api-v2.pandavideo.com.br

Path Parameters

ParameterTypeRequiredDescription
work_idstring (uuid)YesJob identifier returned by POST /aiworkflow

Response

Response Schema

FieldTypeContent
idstring (uuid)Job ID — the same work_id
organization_idstring (uuid)Organization that owns the job
video_idstring (uuid)Video being processed
statusstringQUEUE, RUNNING, FINISHED, ERROR or SKIPPED. Starts at QUEUE
typestringJob type — see The type vocabulary below
metadataobjectJob data, varies per type
metadata.from_langstringSource language
metadata.to_langstringTarget language (translation and dubbing jobs)
metadata.dependent_worksarrayIDs of the jobs derived from this one (e.g. a transcription that triggers translations)
metadata.dependent_workstring or nullID of the job this one depends on
created_atstring (ISO 8601)Creation
updated_atstring (ISO 8601)Last state change

The status lifecycle

StatusMeaning
QUEUEQueued, not started. This is the initial state
RUNNINGBeing processed
FINISHEDDone — the content is available
ERRORFailed
SKIPPEDSkipped (e.g. the resource already existed in that language)

QUEUERUNNINGFINISHED, or ERROR / SKIPPED.

The type vocabulary

⚠️

The job type is not the same type you send in the request.

type sent to POST /aiworkflowtype stored on the job
ABSTRACTABSTRACT
MINDMAPMINDMAP
QUESTIONSQUESTIONS
TRANSCRIPTIONTRANSCRIPTION
TRANSLATIONTRANSLATE
DUBBINGDUBBING
ALL_TEXT_ITEMSCreates several jobs (ABSTRACT, MINDMAP, QUESTIONS) linked by dependent_works

There is also a LIPSYNC type, produced internally and not accepted in the request.

All jobs of a video

To list every job of a video instead of checking them one by one:

GET /aiworkflow?video_id={video_id}

Returns an array of jobs in the same format above. Real response of a video whose pt-BR transcription triggered two translations:

[
  {
    "id": "{work_id}",
    "organization_id": "{organization_id}",
    "video_id": "{video_id}",
    "status": "FINISHED",
    "type": "TRANSCRIPTION",
    "metadata": {
      "from_lang": "pt-BR",
      "dependent_works": ["{work_id_2}", "{work_id_3}"]
    },
    "created_at": "2026-07-08T18:41:54.450Z",
    "updated_at": "2026-07-08T18:42:03.892Z"
  },
  {
    "id": "{work_id_2}",
    "organization_id": "{organization_id}",
    "video_id": "{video_id}",
    "status": "FINISHED",
    "type": "TRANSLATE",
    "metadata": {
      "from_lang": "pt-BR",
      "to_lang": "es",
      "dependent_work": null
    },
    "created_at": "2026-07-08T18:41:54.445Z",
    "updated_at": "2026-07-08T20:14:26.665Z"
  }
]
⚠️

Important

  • status: FINISHED tells you the job finished. To know what became available and in which languages, read config.ai.resources[] in GET /videos/{video_id}.
  • A few seconds between checks is enough. Aggressive polling does not move the queue faster.
  • dependent_works explains why a single call may show up as several jobs.

Error Responses

  • 401: missing or invalid API key.
  • 404: job not found (or it belongs to another organization).
  • 500: internal error.

Example Usage

cURL

# One job
curl -X GET "https://api-v2.pandavideo.com.br/aiworkflow/{work_id}" \
  -H "Authorization: {api_key}"

# Every job of a video
curl -X GET "https://api-v2.pandavideo.com.br/aiworkflow?video_id={video_id}" \
  -H "Authorization: {api_key}"
Path Params
string
required

Job identifier returned by POST /aiworkflow.

Responses

401

Missing or invalid API key.

404

Job not found.

Language
Credentials
Header
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json