> ## 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 Presets

> Retrieve all available caption presets 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 caption presets available in your studio. Presets define the styling, animation, and visual presentation of captions that can be applied to your video projects.

Results are ordered with **your own presets first** (most recently edited first), followed by the built-in system presets. The ordering is stable across pages.

## Response

<ResponseField name="presets" type="array">
  Array of preset objects

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

    <ResponseField name="name" type="string">
      Display name of the preset
    </ResponseField>

    <ResponseField name="source" type="string">
      Source type of the preset ("system" or "user")
    </ResponseField>

    <ResponseField name="preferences" type="object" optional>
      Preset preferences and configuration

      <Expandable title="Preferences Object">
        <ResponseField name="addAudiogram" type="boolean">
          Whether to add an audiogram visualization
        </ResponseField>

        <ResponseField name="addCaptions" type="boolean">
          Whether captions are enabled by default
        </ResponseField>

        <ResponseField name="genre" type="string">
          Default video genre ("talking", "screenshare", "gaming")
        </ResponseField>

        <ResponseField name="language" type="string">
          Default transcription language code
        </ResponseField>

        <ResponseField name="translationLanguage" type="string" optional>
          Default translation target language
        </ResponseField>

        <ResponseField name="transcriptionScript" type="string">
          Script format ("native" or "roman")
        </ResponseField>

        <ResponseField name="orientation" type="string">
          Default video orientation ("portrait", "landscape", "square")
        </ResponseField>

        <ResponseField name="resolution" type="integer">
          Default export resolution (720, 1080, 1440, 2160)
        </ResponseField>

        <ResponseField name="clipDurations" type="array">
          Default clip duration ranges
        </ResponseField>
      </Expandable>
    </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="totalPresets" type="integer">
  Total number of presets in your studio
</ResponseField>

## Example Request

<CodeGroup>
  ```bash cURL theme={"system"}
  curl -X GET "https://public.reap.video/api/v1/automation/get-all-presets?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-presets?page=1&pageSize=20', {
    method: 'GET',
    headers: {
      'Authorization': 'Bearer YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  });

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

  ```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-presets',
      headers=headers,
      params={'page': 1, 'pageSize': 20}
  )

  data = response.json()
  print(data['presets'])
  ```
</CodeGroup>

## Example Response

<CodeGroup>
  <CodeGroup.Tab label="200 OK">
    ```json theme={"system"}
    {
      "presets": [
        {
          "id": "system_beasty",
          "name": "Beasty",
          "source": "system",
          "preferences": {
            "addAudiogram": false,
            "addCaptions": true,
            "genre": "talking",
            "language": "en",
            "translationLanguage": null,
            "transcriptionScript": "native",
            "orientation": "portrait",
            "resolution": 720,
            "clipDurations": [[30, 60]]
          }
        },
        {
          "id": "system_minimal",
          "name": "Minimal",
          "source": "system",
          "preferences": {
            "addAudiogram": false,
            "addCaptions": true,
            "genre": "talking",
            "language": "en",
            "translationLanguage": null,
            "transcriptionScript": "native",
            "orientation": "portrait",
            "resolution": 720,
            "clipDurations": [[30, 60]]
          }
        },
        {
          "id": "custom_brand_style",
          "name": "Brand Style",
          "source": "user",
          "preferences": {
            "addAudiogram": false,
            "addCaptions": true,
            "genre": "talking",
            "language": "en",
            "translationLanguage": null,
            "transcriptionScript": "native",
            "orientation": "portrait",
            "resolution": 1080,
            "clipDurations": [[30, 60]]
          }
        }
      ],
      "currentPage": 1,
      "totalPages": 1,
      "totalPresets": 3
    }
    ```
  </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>

## Rate Limiting

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

## Preset Types

Caption presets control various aspects of subtitle presentation:

* **Typography**: Font family, size, weight, and color
* **Positioning**: Caption placement and alignment on screen
* **Animation**: Text entrance and exit effects
* **Background**: Caption background styling and transparency
* **Highlighting**: Keyword emphasis and emoji integration

## Common Use Cases

<CardGroup cols={2}>
  <Card title="Custom Caption Styles" icon="closed-captioning">
    Choose from your own caption styles when creating video projects
  </Card>

  <Card title="Preset Validation" icon="check-circle">
    Validate preset IDs before creating video projects
  </Card>

  <Card title="Brand Consistency" icon="paint-brush">
    Maintain consistent caption styling across all your video content
  </Card>

  <Card title="Style Previews" icon="eye">
    Display caption style previews to help users choose the right visual presentation
  </Card>
</CardGroup>

## Error Responses

<ResponseField name="401" type="error">
  Unauthorized - Invalid or missing API key
</ResponseField>

<ResponseField name="429" type="error">
  Too Many Requests - Rate limit exceeded
</ResponseField>

<ResponseField name="500" type="error">
  Internal Server Error - Something went wrong on our end
</ResponseField>

## Next Steps

Once you have your presets, you can use them when creating video projects:

* [Create Clips](/api-reference/create-clips) - Use presets in clipping projects
* [Create Captions](/api-reference/create-captions) - Apply caption styles to your videos
* [Create Transcription](/api-reference/create-transcription) - Generate transcriptions from videos
* [Create Reframe](/api-reference/create-reframe) - Apply captions to reframed videos
* [Create Dubbing](/api-reference/create-dubbing) - Add styled captions to dubbed content


## OpenAPI

````yaml GET /automation/get-all-presets
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-presets:
    get:
      summary: Get All Presets
      description: Retrieve all available caption presets for your studio
      operationId: getAllPresets
      parameters:
        - $ref: '#/components/parameters/page'
        - name: pageSize
          in: query
          schema:
            type: integer
            default: 20
          description: Number of presets per page (max 100)
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetPresetsResponse'
components:
  parameters:
    page:
      name: page
      in: query
      schema:
        type: integer
        default: 1
      description: Page number for pagination
  schemas:
    GetPresetsResponse:
      type: object
      properties:
        presets:
          type: array
          items:
            $ref: '#/components/schemas/AutomationPreset'
        currentPage:
          type: integer
        totalPages:
          type: integer
        totalPresets:
          type: integer
    AutomationPreset:
      type: object
      properties:
        id:
          type: string
        name:
          type: string
        source:
          type: string
          enum:
            - system
            - user
        preferences:
          $ref: '#/components/schemas/BrandKitPreferences'
    BrandKitPreferences:
      type: object
      properties:
        addAudiogram:
          type: boolean
          default: false
        addCaptions:
          type: boolean
          default: true
        genre:
          $ref: '#/components/schemas/VideoGenre'
        language:
          type: string
          default: en
        translationLanguage:
          type: string
          nullable: true
        transcriptionScript:
          $ref: '#/components/schemas/TranscriptionScript'
        orientation:
          $ref: '#/components/schemas/VideoOrientation'
        resolution:
          $ref: '#/components/schemas/ExportResolution'
        clipDurations:
          type: array
          items:
            type: array
            items:
              type: integer
    VideoGenre:
      type: string
      enum:
        - talking
        - screenshare
        - gaming
      default: talking
    TranscriptionScript:
      type: string
      enum:
        - native
        - roman
      default: native
    VideoOrientation:
      type: string
      enum:
        - landscape
        - portrait
        - square
    ExportResolution:
      type: integer
      enum:
        - 720
        - 1080
        - 1440
        - 2160
      default: 720
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer

````