video_projects_retrieve_details
Check the progress of a video project. The downloads field is populated after a successful render.
Statuses
queued— waiting to startrendering— in progresscomplete— ready; seedownloadserror— a failure occurred (seeerror)canceled— user canceleddraft— not used
MCP guidance:
Use this after a create tool to poll job status. When status is
complete, surface thedownloadsURLs to the user; if status iserror, surface the error message.Each
downloads[n].urlis already the full signed download URL. Use it exactly as returned. Do not shorten it, strip query parameters, or appendexpires_atonto the URL string.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Unique ID of the video project. This value is returned by all of the POST APIs that create a video. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Unique ID of the video. Use it with the [Get video Project API](https://docs.magichour.ai/api-reference/video-projects/get-video-details) to fetch status and downloads. | |
| fps | Yes | Frame rate of the video. If the status is not 'complete', the frame rate is an estimate and will be adjusted when the video completes. | |
| name | Yes | The name of the video. | |
| type | Yes | The type of the video project. Possible values are ANIMATION, AUTO_SUBTITLE, VIDEO_TO_VIDEO, FACE_SWAP, TEXT_TO_VIDEO, IMAGE_TO_VIDEO, LIP_SYNC, TALKING_PHOTO, AVATAR, VIDEO_UPSCALER, VIDEO_EDITOR, CHARACTER_REPLACE, VIDEO_COLORIZER, VIDEO_TRANSLATOR, MUSIC_VIDEO, EXTEND, AUDIO_TO_VIDEO, VIDEO_EXPANDER, UGC_AD | |
| error | Yes | In the case of an error, this object will contain the error encountered during video render | |
| width | Yes | The width of the final output video. A value of -1 indicates the width can be ignored. | |
| height | Yes | The height of the final output video. A value of -1 indicates the height can be ignored. | |
| status | Yes | The status of the video. - `draft` - the project was created but has not been submitted for rendering - `queued` - the job is waiting for an available server - `rendering` - the job is being processed; the `video.started` webhook event fires when rendering begins - `complete` - the job finished successfully; fires `video.completed` - `error` - the job failed during processing; fires `video.errored` - `canceled` - the job was manually canceled (for example from the Magic Hour web app) **Note:** `rendering`, `complete`, and `error` have matching webhook events; `canceled` does not - a canceled job emits no webhook event, so poll this endpoint to detect cancellation. | |
| enabled | Yes | Whether this resource is active. If false, it is deleted. | |
| downloads | Yes | ||
| created_at | Yes | ||
| end_seconds | Yes | End time of your clip (seconds). Must be greater than start_seconds. | |
| start_seconds | Yes | Start time of your clip (seconds). Must be ≥ 0. | |
| credits_charged | Yes | The amount of credits deducted from your account to generate the video. If the status is not 'complete', this value is an estimate and may be adjusted upon completion based on the actual FPS of the output video. If video generation fails, credits will be refunded, and this field will be updated to include the refund. |