Skip to main content
Glama

Get Video Generation Status

get-video-generation-status
Read-only

Gets the status and result of a video generation job started by create-video. Pass the job_id and continuation_token from the previous create-video or get-video-generation-status response. While the job is still running, wait the number of seconds the response's polling_policy.wait_seconds gives, then poll again with the same job_id and the updated continuation_token. Never poll sooner than that: it returns the same answer and the video arrives no earlier. A completed job may carry the video before its preview_url is available; when the response still carries a polling_policy, wait as instructed and poll again to obtain the preview. Follow the polling_policy.instructions in every response, and relay them to the user while they wait. Automatic polling stops after 20 minutes. A delayed response means generation may still be running; direct the user to projects_url and do not start another generation automatically. When the video is ready, share its id and view_url with the user. Temporary preview and download links may expire; view_url opens the saved Canva asset.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
job_idYesThe job_id returned by create-video. This value is stable and never changes.
user_intentNoMandatory description of what the user is trying to accomplish with this tool call. This should always be provided by LLM clients. Please keep it concise (255 characters or less recommended).
continuation_tokenYesThe continuation_token from the most recent create-video or get-video-generation-status response.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
videoNoThe generated video. Only present when the job completed. Its durable id can be used even when the temporary preview_url is absent.
job_idYesID of the video generation job. Stable across all responses.
statusYesStatus of the job. While 'pending' or 'in_progress', poll again with the same job_id and the updated continuation_token after waiting polling_policy.wait_seconds. 'completed' carries the video. 'delayed' means automatic polling has stopped after 20 minutes but generation may still be running; direct the user to projects_url. 'failed' carries the failure. 'polled_too_early' means you called before the wait window elapsed — wait polling_policy.wait_seconds, then poll again with the same job_id and continuation_token.
failureNoWhy the job failed. Only present when status is 'failed'. Tell the user and do not automatically call create-video again.
messageNoHuman-readable delayed-state guidance suitable to relay to the user. Present when status is 'delayed'.
progressNoOptional progress details while the job is in progress.
projects_urlNoCanva Projects destination where a delayed video will appear when it is ready. Present when status is 'delayed'; share it with the user.
polling_policyNoHow and when to poll next. Present while the job is still running, and when the job has completed but the video's preview_url is not yet available.
continuation_tokenNoOpaque token to pass on the next poll. Always use the most recent token.
expected_duration_secondsNoEstimated total generation time in seconds, when available.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / properties / polling_policy / properties / instructions / description
      Previous value: -"Instructions for polling this job and communicating what happens next. They MUST be followed. Relay the generation-time expectation and Canva Projects link to the user, then continue polling as instructed while polling_policy is present."New value: +"Instructions for polling this job and communicating what happens next. They MUST be followed. Follow the polling instructions, but do not repeat the initial generation-time notice unless explicitly instructed. While the status is pending or in_progress, continue polling and do not tell the user the video is available in Canva Projects; it appears there only after generation finishes."
  2. Changed8 schema fields changed
    • addedInput schema / properties / continuation_token
      Added value: +{
      +  "description": "The continuation_token from the most recent create-video or get-video-generation-status response.",
      +  "type": "string"
      +}
    • changedInput schema / required
      Previous value: -[
      -  "job_id"
      -]New value: +[
      +  "job_id",
      +  "continuation_token"
      +]
    • addedOutput schema / properties / continuation_token
      Added value: +{
      +  "description": "Opaque token to pass on the next poll. Always use the most recent token.",
      +  "type": "string"
      +}
    • addedOutput schema / properties / message
      Added value: +{
      +  "description": "Human-readable delayed-state guidance suitable to relay to the user. Present when status is 'delayed'.",
      +  "type": "string"
      +}
    • changedOutput schema / properties / polling_policy / properties / instructions / description
      Previous value: -"Instructions for polling this job and communicating what happens next. They MUST be followed. Relay the generation-time expectation and Canva Uploads link to the user, then continue polling as instructed while polling_policy is present."New value: +"Instructions for polling this job and communicating what happens next. They MUST be followed. Relay the generation-time expectation and Canva Projects link to the user, then continue polling as instructed while polling_policy is present."
    • addedOutput schema / properties / projects_url
      Added value: +{
      +  "description": "Canva Projects destination where a delayed video will appear when it is ready. Present when status is 'delayed'; share it with the user.",
      +  "format": "uri",
      +  "type": "string"
      +}
    • changedOutput schema / properties / status / description
      Previous value: -"Status of the job. While 'pending' or 'in_progress', poll again with the same job_id\nafter waiting polling_policy.wait_seconds. 'completed' carries the video; 'failed'\ncarries the failure."New value: +"Status of the job. While 'pending' or 'in_progress', poll again with the same job_id\nand the updated continuation_token after waiting polling_policy.wait_seconds. 'completed' carries the video. 'delayed'\nmeans automatic polling has stopped after 20 minutes but generation may still be\nrunning; direct the user to projects_url. 'failed' carries the failure.\n'polled_too_early' means you called before the wait window elapsed — wait polling_policy.wait_seconds, then poll again with the same job_id and continuation_token."
    • changedOutput schema / properties / status / enum
      Previous value: -[
      -  "pending",
      -  "in_progress",
      -  "completed",
      -  "failed"
      -]New value: +[
      +  "pending",
      +  "in_progress",
      +  "polled_too_early",
      +  "completed",
      +  "delayed",
      +  "failed"
      +]
  3. Changed3 schema fields changed
    • changedOutput schema / properties / failure / description
      Previous value: -"Why the job failed. Only present when status is 'failed'."New value: +"Why the job failed. Only present when status is 'failed'. Tell the user and do not automatically call create-video again."
    • changedOutput schema / properties / polling_policy / properties / instructions / description
      Previous value: -"Instructions on when to poll this job next, in words. They MUST be followed. Relay them to the user while they wait."New value: +"Instructions for polling this job and communicating what happens next. They MUST be followed. Relay the generation-time expectation and Canva Uploads link to the user, then continue polling as instructed while polling_policy is present."
    • changedOutput schema / properties / polling_policy / properties / wait_seconds / description
      Previous value: -"The number of seconds you MUST wait before calling get-video-generation-status again. Polling sooner returns the same answer and does not make the video arrive sooner. The value falls as the job advances, so read it from every response rather than assuming a fixed interval."New value: +"The number of seconds you MUST wait before calling get-video-generation-status again. Polling sooner returns the same answer and does not make the video arrive sooner. Read it from every response."
  4. Added

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Despite annotations already declaring a safe read, the description adds substantial behavioral context: automatic polling stops after 20 minutes, video may appear before preview_url, preview/download links can expire, and a delayed response means generation may still be running. This is far beyond what readOnlyHint/non-destructive convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Long but dense and front-loaded, with each sentence carrying an operational rule. The only mild redundancy is restating the no-early-poll rule with its rationale, which is arguably justified for a polling contract.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a polling tool with rich annotations and an output schema, the description supplies everything the agent needs – polling cadence, timeout, error/delay handling, and what to relay to the user – so nothing required for correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description adds lifecycle meaning beyond the schema: job_id is stable across calls while continuation_token is the *updated* token from the most recent response, clarifying how the two must be passed together.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Gets the status and result of a video generation job') and explicitly ties it to the create-video producer, which cleanly separates it from sibling job-polling tools like get-generate-image-job and get-create-design-async-job.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives explicit when-to-use and how-to-use rules: pass the job_id/continuation_token from the prior response, wait polling_policy.wait_seconds before re-polling, never poll sooner, follow polling_policy.instructions, and do not start another generation automatically on a delayed response.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources