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

# Get All Uploads

> Retrieve all uploaded files for your studio

> **For AI agents:** a documentation index is at [/llms.txt](/llms.txt). Every page is also available as markdown, just append `.md` to the URL.

## Overview

Get a paginated list of all files uploaded to your studio via the Upload API. This endpoint helps you track upload status, manage files, and retrieve upload IDs for use in video projects.

## Response

<ResponseField name="uploads" type="array">
  Array of upload objects

  <Expandable title="Upload Object">
    <ResponseField name="id" type="string">
      Unique identifier for the upload
    </ResponseField>

    <ResponseField name="fileName" type="string">
      Name of the uploaded file
    </ResponseField>

    <ResponseField name="fileType" type="string">
      Type of file ("video", "audio", or "image")
    </ResponseField>

    <ResponseField name="fileSize" type="integer" optional>
      Size of the file in bytes (null if not yet uploaded)
    </ResponseField>

    <ResponseField name="contentType" type="string" optional>
      MIME type of the file (null if not yet uploaded)
    </ResponseField>

    <ResponseField name="status" type="string">
      Current status ("upload", "verified", or "rejected")
    </ResponseField>

    <ResponseField name="createdAt" type="integer">
      Unix timestamp when the upload was created
    </ResponseField>

    <ResponseField name="updatedAt" type="integer">
      Unix timestamp when the upload was last updated
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="currentPage" type="integer">
  Current page number
</ResponseField>

<ResponseField name="totalPages" type="integer">
  Total number of pages available
</ResponseField>

<ResponseField name="totalUploads" type="integer">
  Total number of uploads in your studio
</ResponseField>

## Upload Status Values

<ResponseField name="upload" type="status">
  File upload URL has been generated but file hasn't been uploaded yet
</ResponseField>

<ResponseField name="verified" type="status">
  File has been successfully uploaded and validated when first used in a project - ready for reuse
</ResponseField>

<ResponseField name="rejected" type="status">
  File upload failed validation (invalid format, too large, corrupted, etc.)
</ResponseField>

## Example Request

<CodeGroup>
  ```bash cURL theme={"system"}
  curl -X GET "https://public.reap.video/api/v1/automation/get-all-uploads?page=1&pageSize=20" \
    -H "Authorization: Bearer YOUR_API_KEY" \
    -H "Content-Type: application/json"
  ```

  ```javascript JavaScript theme={"system"}
  const response = await fetch('https://public.reap.video/api/v1/automation/get-all-uploads?page=1&pageSize=20', {
    method: 'GET',
    headers: {
      'Authorization': 'Bearer YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  });

  const data = await response.json();
  console.log(data.uploads);
  ```

  ```python Python theme={"system"}
  import requests

  headers = {
      'Authorization': 'Bearer YOUR_API_KEY',
      'Content-Type': 'application/json'
  }

  response = requests.get(
      'https://public.reap.video/api/v1/automation/get-all-uploads',
      headers=headers,
      params={'page': 1, 'pageSize': 20}
  )

  data = response.json()
  print(data['uploads'])
  ```

  ```php PHP theme={"system"}
  <?php
  $ch = curl_init();
  curl_setopt($ch, CURLOPT_URL, 'https://public.reap.video/api/v1/automation/get-all-uploads?page=1&pageSize=20');
  curl_setopt($ch, CURLOPT_HTTPHEADER, [
      'Authorization: Bearer YOUR_API_KEY',
      'Content-Type: application/json'
  ]);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  $response = curl_exec($ch);
  curl_close($ch);
  $data = json_decode($response, true);
  print_r($data['uploads']);
  ?>
  ```

  ```go Go theme={"system"}
  package main
  import (
      "fmt"
      "io/ioutil"
      "net/http"
  )
  func main() {
      url := "https://public.reap.video/api/v1/automation/get-all-uploads?page=1&pageSize=20"
      req, _ := http.NewRequest("GET", url, nil)
      req.Header.Set("Authorization", "Bearer YOUR_API_KEY")
      req.Header.Set("Content-Type", "application/json")
      client := &http.Client{}
      resp, _ := client.Do(req)
      defer resp.Body.Close()
      body, _ := ioutil.ReadAll(resp.Body)
      fmt.Println(string(body))
  }
  ```

  ```java Java theme={"system"}
  import java.io.BufferedReader;
  import java.io.InputStreamReader;
  import java.net.HttpURLConnection;
  import java.net.URL;
  public class GetAllUploadsExample {
      public static void main(String[] args) throws Exception {
          URL url = new URL("https://public.reap.video/api/v1/automation/get-all-uploads?page=1&pageSize=20");
          HttpURLConnection conn = (HttpURLConnection) url.openConnection();
          conn.setRequestMethod("GET");
          conn.setRequestProperty("Authorization", "Bearer YOUR_API_KEY");
          conn.setRequestProperty("Content-Type", "application/json");
          BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
          StringBuilder response = new StringBuilder();
          String line;
          while ((line = br.readLine()) != null) {
              response.append(line);
          }
          br.close();
          System.out.println(response.toString());
      }
  }
  ```
</CodeGroup>

## Example Response

<CodeGroup>
  <CodeGroup.Tab label="200 OK">
    ```json theme={"system"}
    {
      "uploads": [
        {
          "id": "65f1a2b3c4d5e6f7a8b9c0d1",
          "fileName": "presentation.mp4",
          "fileType": "video",
          "fileSize": 157286400,
          "contentType": "video/mp4",
          "status": "verified",
          "createdAt": 1710345600,
          "updatedAt": 1710345660
        },
        {
          "id": "65f1a2b3c4d5e6f7a8b9c0d2",
          "fileName": "tutorial.mov",
          "fileType": "video",
          "fileSize": 234567890,
          "contentType": "video/quicktime",
          "status": "verified",
          "createdAt": 1710345500,
          "updatedAt": 1710345550
        },
        {
          "id": "65f1a2b3c4d5e6f7a8b9c0d3",
          "fileName": "demo.mp4",
          "fileType": "video",
          "fileSize": null,
          "contentType": null,
          "status": "upload",
          "createdAt": 1710345400,
          "updatedAt": 1710345400
        }
      ],
      "currentPage": 1,
      "totalPages": 2,
      "totalUploads": 25
    }
    ```
  </CodeGroup.Tab>

  <CodeGroup.Tab label="401 Unauthorized">
    ```json theme={"system"}
    {
      "detail": "Unauthorized - Invalid or missing API key"
    }
    ```
  </CodeGroup.Tab>

  <CodeGroup.Tab label="429 Too Many Requests">
    ```json theme={"system"}
    {
      "detail": "Too Many Requests - Rate limit exceeded"
    }
    ```
  </CodeGroup.Tab>

  <CodeGroup.Tab label="500 Internal Server Error">
    ```json theme={"system"}
    {
      "detail": "Internal Server Error - Something went wrong on our end"
    }
    ```
  </CodeGroup.Tab>
</CodeGroup>

## Filtering and Management

### Upload Status Filtering

You can filter uploads by status to find specific files:

* **Verified uploads** - Successfully validated when first used, ready for reuse
* **Pending uploads** - Upload URL generated but file not uploaded yet
* **Rejected uploads** - Failed validation and cannot be used

### File Management

Use this endpoint to:

<CardGroup cols={2}>
  <Card title="Track Upload Progress" icon="chart-line">
    Monitor which files have been successfully uploaded and their validation status
  </Card>

  <Card title="Manage Storage" icon="database">
    Review file sizes and manage your storage usage
  </Card>

  <Card title="Retrieve Upload IDs" icon="tag">
    Get upload IDs for use in project creation endpoints
  </Card>

  <Card title="Debug Upload Issues" icon="bug">
    Identify rejected uploads and troubleshoot problems
  </Card>
</CardGroup>

## Rate Limiting

This endpoint is subject to the standard rate limit of **10 requests per minute**.

## Common Use Cases

<CardGroup cols={2}>
  <Card title="Upload Management" icon="check-circle">
    Track upload status and find verified files for reuse in projects
  </Card>

  <Card title="File Management UI" icon="list">
    Build upload management interfaces in your application
  </Card>

  <Card title="Batch Processing" icon="cubes">
    Process multiple uploaded files in batch operations
  </Card>

  <Card title="Storage Analytics" icon="chart-bar">
    Analyze upload patterns and storage usage
  </Card>
</CardGroup>

## Next Steps

Once you have upload IDs from verified uploads, you can use them to create projects:

* [Create Clips](/api-reference/create-clips) - Generate AI-powered short clips
* [Create Captions](/api-reference/create-captions) - Add AI-generated captions to videos
* [Create Transcription](/api-reference/create-transcription) - Generate transcriptions from videos
* [Create Reframe](/api-reference/create-reframe) - Reframe videos for different aspect ratios
* [Create Dubbing](/api-reference/create-dubbing) - Add voice dubbing to videos


## OpenAPI

````yaml GET /automation/get-all-uploads
openapi: 3.1.0
info:
  title: Reap Automation API
  description: AI-powered video processing automation API
  version: 1.0.0
servers:
  - url: https://public.reap.video/api/v1
security:
  - bearerAuth: []
paths:
  /automation/get-all-uploads:
    get:
      summary: Get All Uploads
      description: Retrieve all uploaded files for your studio
      operationId: getAllUploads
      parameters:
        - $ref: '#/components/parameters/page'
        - name: pageSize
          in: query
          schema:
            type: integer
            default: 20
          description: Number of uploads per page (max 100)
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetUploadsResponse'
components:
  parameters:
    page:
      name: page
      in: query
      schema:
        type: integer
        default: 1
      description: Page number for pagination
  schemas:
    GetUploadsResponse:
      type: object
      properties:
        uploads:
          type: array
          items:
            $ref: '#/components/schemas/UploadResponse'
        currentPage:
          type: integer
        totalPages:
          type: integer
        totalUploads:
          type: integer
    UploadResponse:
      type: object
      properties:
        id:
          type: string
        fileName:
          type: string
        fileType:
          type: string
          enum:
            - video
            - audio
            - image
        fileSize:
          type: integer
          nullable: true
        contentType:
          type: string
          nullable: true
        status:
          type: string
          enum:
            - upload
            - verified
            - rejected
        createdAt:
          type: integer
        updatedAt:
          type: integer
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer

````