> ## Documentation Index
> Fetch the complete documentation index at: https://cut.pro/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# List videos

> Returns a paginated list of all source videos in your library, ordered by most recent submission. Each item includes lifecycle counters (clips generated, edits, exports, posts) and the status of the latest submission.



## OpenAPI

````yaml https://api.cut.pro/api/v1/openapi.json get /clips
openapi: 3.0.3
info:
  title: CutPro API
  version: 1.0.0
  description: >-
    The CutPro API lets you automate AI-powered video clipping and rendering
    programmatically.


    ## Typical workflow


    1. **Analyze** a public video URL to preview metadata and credit cost — no
    charge (`POST /clips/info`)

    2. **Submit** the video for AI clipping — credits are deducted immediately
    (`POST /clips`)

    3. **Poll** the submission until `status` is `completed` or `failed` (`GET
    /clips/{videoId}/submissions/{submissionId}`)

    4. **Fetch** the AI-generated highlight clips (`GET
    /clips/{videoId}/submissions/{submissionId}/clips`)

    5. **Optionally** apply one of your templates in bulk (`POST
    /clips/{videoId}/submissions/{submissionId}/apply_template`)

    6. **Render** each clip to a final MP4 (`POST
    /clips/{videoId}/submissions/{submissionId}/clips/{clipId}/render`)

    7. **Poll** the render until `status` is `completed` (`GET
    /renders/{renderId}`)

    8. **Download** the rendered video (`GET /renders/{renderId}/download`)


    ## Authentication


    Pass your API key on every request via the `X-Api-Key` header or as
    `Authorization: Bearer <key>`.

    You can generate API keys from your account settings at
    [cut.pro](https://cut.pro).


    ## Workspaces


    An API key is bound to one or more workspaces (Cloudflare-style scoped
    tokens).


    - **Single-workspace key**: every request operates on that workspace
    automatically. No header needed.

    - **Multi-workspace key**: pass `X-Workspace-Id: <workspace-id>` on every
    request to pick which workspace
      the call hits. Without the header, you get `400 MISSING_WORKSPACE_ID` with the list of allowed
      workspace ids in the response.

    Call `GET /workspace` to inspect the workspace the current request resolved
    to, plus its plan and role.


    ## Credits


    Credits are consumed when a submission is created. Check the workspace
    balance at `GET /balance`.

    Use `POST /clips/info` to see the exact cost before committing.
servers:
  - url: https://api.cut.pro/api/v1
security: []
tags:
  - name: Workspace
    description: >-
      The workspace this request resolved to. Single-workspace keys always
      resolve to their bound workspace. Multi-workspace keys resolve via the
      `X-Workspace-Id` header — credits, submissions, clips and renders belong
      to whichever workspace the header selects on each request.
  - name: Videos
    description: >-
      Your clipping library — the source videos you have submitted for AI
      clipping.
  - name: Submissions
    description: >-
      Clipping jobs — the full lifecycle from pre-flight analysis through AI
      processing to completion. Each submission is tied to a video and produces
      a set of generated clips when it completes.
  - name: Clips
    description: >-
      AI-generated highlight clips produced by a completed submission. Each clip
      includes timestamps, a relevance score, and signed URLs for streaming and
      downloading. Clips can have a template applied and then be rendered to a
      final MP4.
  - name: Renders
    description: >-
      Video render jobs. After optionally applying a template to a clip, start a
      render to produce a final MP4. Poll the render until completed, then
      download the file.
  - name: Posts
    description: >-
      Multi-platform publishing. Create a post that references one or more
      edited clips plus the social connections to publish to, then poll it
      through `pending → processing → completed`. Failed items can be retried or
      removed without disturbing siblings that already published.
  - name: Templates
    description: >-
      Video editing templates that apply visual effects, captions, cropping, and
      other styles to clips in bulk. List your templates to find an ID to pass
      to `apply_template`.
  - name: Balance
    description: >-
      Credit balance and ledger of the workspace this API key represents.
      Credits are consumed when you create a submission. For full workspace
      metadata (plan, seats, role, member count) see `GET /workspace`.
  - name: Connections
    description: >-
      Social media accounts connected to this workspace — the IDs you pass as
      `connection_id` when creating a post. To connect a new account, sign in at
      [cut.pro](https://cut.pro) and use the in-app OAuth flow; connection
      lifecycle is not exposed via API.
paths:
  /clips:
    get:
      tags:
        - Videos
      summary: List videos
      description: >-
        Returns a paginated list of all source videos in your library, ordered
        by most recent submission. Each item includes lifecycle counters (clips
        generated, edits, exports, posts) and the status of the latest
        submission.
      operationId: listVideos
      parameters:
        - name: page
          in: query
          required: false
          schema:
            minimum: 1
            description: 'Page number (default: 1)'
            type: number
        - name: limit
          in: query
          required: false
          schema:
            minimum: 1
            maximum: 100
            description: 'Items per page (default: 12, max: 100)'
            type: number
        - name: sort
          in: query
          required: false
          schema:
            type: string
            enum:
              - recent
              - oldest
              - title
              - title-desc
      responses:
        '200':
          description: Response for status 200
          content:
            application/json:
              schema:
                type: object
                required:
                  - videos
                  - pagination
                properties:
                  videos:
                    type: array
                    items:
                      type: object
                      required:
                        - id
                        - title
                        - author
                        - platform
                        - duration
                        - thumbnail_url
                        - video_url
                        - clips_count
                        - edited_count
                        - exported_count
                        - posted_count
                        - submissions_count
                      properties:
                        id:
                          description: Unique video ID
                          type: string
                        title:
                          description: Video title as reported by the source platform
                          type: string
                        author:
                          description: Channel or creator name
                          type: string
                        platform:
                          description: >-
                            Source platform — e.g. `youtube`, `twitch`, `kick`,
                            `tiktok`, `upload`
                          type: string
                        duration:
                          description: Video duration in seconds
                          type: number
                        thumbnail_url:
                          description: URL of the video thumbnail image
                          type: string
                        video_url:
                          description: >-
                            Direct URL to the source video, or `null` if no
                            longer available
                          type: string
                          nullable: true
                        clips_count:
                          description: >-
                            Total AI-generated clips available across all
                            submissions
                          type: number
                        edited_count:
                          description: Number of clips customised in the editor
                          type: number
                        exported_count:
                          description: Number of clips rendered and exported
                          type: number
                        posted_count:
                          description: Number of clips posted to social media
                          type: number
                        submissions_count:
                          description: Total number of clipping submissions for this video
                          type: number
                        last_submission:
                          type: object
                          required:
                            - status
                            - error_code
                            - estimated_time
                            - queue_position
                            - is_priority
                            - created_at
                            - completed_at
                          properties:
                            status:
                              type: string
                              enum:
                                - queued
                                - downloading
                                - transcribing
                                - video_analysis
                                - analyzing
                                - finalizing
                                - completed
                                - failed
                            error_code:
                              anyOf:
                                - type: string
                                  enum:
                                    - download_failed
                                - type: string
                                  enum:
                                    - download_access_denied
                                - type: string
                                  enum:
                                    - download_members_only
                                - type: string
                                  enum:
                                    - download_private_video
                                - type: string
                                  enum:
                                    - download_geo_restricted
                                - type: string
                                  enum:
                                    - download_timeout
                                - type: string
                                  enum:
                                    - download_network
                                - type: string
                                  enum:
                                    - download_no_audio
                                - type: string
                                  enum:
                                    - download_not_available
                                - type: string
                                  enum:
                                    - download_removed_by_uploader
                                - type: string
                                  enum:
                                    - download_premiere_not_started
                                - type: string
                                  enum:
                                    - download_live_in_progress
                                - type: string
                                  enum:
                                    - transcribe_failed
                                - type: string
                                  enum:
                                    - video_analysis_failed
                                - type: string
                                  enum:
                                    - analyze_failed
                                - type: string
                                  enum:
                                    - generate_failed
                                - type: string
                                  enum:
                                    - empty_transcript
                                - type: string
                                  enum:
                                    - unknown
                              nullable: true
                            estimated_time:
                              description: Estimated seconds remaining until completion
                              type: number
                              nullable: true
                            queue_position:
                              description: >-
                                Position in the processing queue; `null` once
                                processing has started
                              type: number
                              nullable: true
                            is_priority:
                              description: >-
                                `true` if this submission has priority
                                processing
                              type: boolean
                            created_at:
                              description: >-
                                ISO 8601 timestamp of when the submission was
                                created
                              type: string
                            completed_at:
                              description: >-
                                ISO 8601 timestamp of when the submission
                                finished, or `null` if still running
                              type: string
                              nullable: true
                  pagination:
                    type: object
                    required:
                      - current_page
                      - total_pages
                      - total_count
                      - has_next_page
                      - has_previous_page
                      - limit
                    properties:
                      current_page:
                        description: Current page number (1-based)
                        type: number
                      total_pages:
                        description: Total number of pages
                        type: number
                      total_count:
                        description: Total number of items across all pages
                        type: number
                      has_next_page:
                        type: boolean
                      has_previous_page:
                        type: boolean
                      limit:
                        description: Items per page used for this response
                        type: number
      security:
        - apiKey: []
components:
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: X-Api-Key

````