---
title: "Get submission"
method: GET
path: "/clips/{videoId}/submissions/{submissionId}"
tags: ["Submissions"]
---

# Get submission

`GET /clips/{videoId}/submissions/{submissionId}`

## Request

- Base URL: `https://api.cut.pro/api/v1`
- URL: `https://api.cut.pro/api/v1/clips/{videoId}/submissions/{submissionId}`
- Auth: API key in header `X-Api-Key`

Returns the current status of a clipping submission. Poll this endpoint until `status` is `completed` or `failed`.

We recommend polling every **5–10 seconds**. When `status` is `queued`, use `queue_position` and `estimated_time` to give feedback to your users.

A submission can sit at `downloading` because the SOURCE is not fully published yet — a scheduled premiere, a livestream still on air, or a recording the platform is still processing. In that case `waiting_reason` is set (and `waiting_until` carries the announced start time, when the platform provides one). This is not an error and the submission is not stuck: it resumes on its own once the source becomes available. Surface it to your users instead of a generic "downloading", and offer them the option to cancel — `DELETE /v1/clips/{videoId}/submissions/{submissionId}` refunds the credits while `waiting_reason` is set.

## Path parameters

- `videoId` string, required
- `submissionId` string, required

## Response `200`

Response for status 200

- object
  - `id` string, required: Unique submission ID
  - `video_id` string, required: ID of the source video
  - `status` 'queued' | 'downloading' | 'transcribing' | 'video_analysis' | 'analyzing' | 'finalizing' | 'completed' | 'failed', required
  - `error_code` 'DOWNLOAD_FAILED' | 'DOWNLOAD_ACCESS_DENIED' | 'DOWNLOAD_MEMBERS_ONLY' | 'DOWNLOAD_PRIVATE_VIDEO' | 'DOWNLOAD_GEO_RESTRICTED' | 'DOWNLOAD_TIMEOUT' | 'DOWNLOAD_NETWORK' | 'DOWNLOAD_NO_AUDIO' | 'DOWNLOAD_NOT_AVAILABLE' | 'DOWNLOAD_REMOVED_BY_UPLOADER' | 'DOWNLOAD_PREMIERE_NOT_STARTED' | 'DOWNLOAD_LIVE_IN_PROGRESS' | 'TRANSCRIBE_FAILED' | 'VIDEO_ANALYSIS_FAILED' | 'ANALYZE_FAILED' | 'GENERATE_FAILED' | 'EMPTY_TRANSCRIPT' | 'UPLOAD_CORRUPTED' | 'UNKNOWN', nullable, required
  - `clips_count` number, required: Number of AI-generated clips available; only meaningful when `status` is `completed`
  - `queue_position` number, nullable, required: Position in the processing queue; `null` once processing has started
  - `estimated_time` number, nullable, required: Estimated seconds until completion; `null` once processing has started
  - `waiting_reason` 'SOURCE_PREMIERE_SCHEDULED' | 'SOURCE_LIVE_IN_PROGRESS' | 'SOURCE_VOD_PROCESSING', nullable, required: Why the submission is waiting on its source: `SOURCE_PREMIERE_SCHEDULED` (scheduled premiere that has not aired), `SOURCE_LIVE_IN_PROGRESS` (livestream still on air), `SOURCE_VOD_PROCESSING` (broadcast ended, platform still publishing the recording).
  - `waiting_until` string, nullable, required: ISO 8601 timestamp the platform announced for the premiere, when known; `null` if there is no announced time
  - `created_at` string, required: ISO 8601 timestamp of when this submission was created
  - `completed_at` string, nullable, required: ISO 8601 timestamp of when this submission finished, or `null` if still running

## Other responses

- `404`: Response for status 404
- `410`: Response for status 410

---

[API](https://skmtc.dev/cut/apis/cutpro-api.md) · [All operations](https://skmtc.dev/cut/apis/cutpro-api/llms.txt) · [OpenAPI document](https://skmtc.dev/cut/apis/cutpro-api/revisions/89d0bafe529c?raw)
