---
title: "Re-run processing of a failed video"
method: POST
path: "/api/videos/{id}/retry"
tags: ["videos"]
---

# Re-run processing of a failed video

`POST /api/videos/{id}/retry`

## Request

- Base URL: `https://cliponit.app`
- URL: `https://cliponit.app/api/videos/{id}/retry`
- Auth: one of:
  - HTTP bearer
  - API key in cookie `session`
  - OAuth 2 (authorization code, authorization URL `https://cliponit.app/oauth/authorize`, token URL `https://cliponit.app/oauth/token`, scopes: `clips`)

Only for `status: failed` (400 otherwise). Re-downloads if the source came from a URL and the file is gone. 402 if the user is above quota.

## Path parameters

- `id` string, uuid, required

## Response `200`

Video (processing)

- Video
  - `id` string, uuid, required
  - `title` string, required
  - `path` string: Server-side file path (informational)
  - `url` string, required: Source file, relative to the server, e.g. `/files/uploads/<id>.mp4`
  - `thumbnail_url` string, nullable
  - `thumbnail_path` string, nullable
  - `size_bytes` integer, required
  - `duration_s` number, nullable: Seconds, null until probed
  - `width` integer, nullable
  - `height` integer, nullable
  - `status` 'processing' | 'ready' | 'failed', required
  - `state` 'queued' | 'running' | 'ready' | 'failed', required: `processing` split by the job queue: `queued` (waiting behind other videos) or `running`; otherwise = `status`
  - `queue_position` integer, nullable: 1-based position in the processing queue while `state` is `queued`
  - `eta_s` number, nullable: Estimated seconds until `ready` (0.25 × (duration + durations of the videos ahead)); null when not processing
  - `progress` 'downloading' | 'probing' | 'transcribing' | 'detecting' | 'demo' | 'null', nullable: Current step while processing; null when ready/failed. `demo` = demo copy waiting for the master
  - `error` string, nullable: Why it failed
  - `is_demo` 0 | 1, required: 1 = the sample video seeded at signup (cannot be exported on the free plan)
  - `created_at` string, required
  - `clips_count` integer, required

## Other responses

- `400`: Validation error — the message names the field, e.g. `champ subtitles.size invalide : attendu 1..3`
- `402`: Plan quota reached (monthly videos, daily searches, file size/duration on free)
- `404`: Resource not found or not owned by the user

---

[API](https://skmtc.dev/cliponit/apis/cliponit-api.md) · [All operations](https://skmtc.dev/cliponit/apis/cliponit-api/llms.txt) · [OpenAPI document](https://skmtc.dev/cliponit/apis/cliponit-api/revisions/10e3e4327922?raw)
