> ## 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 Project Details

> Retrieve complete details and configuration for a video project

> **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 comprehensive information about a video project, including processing configuration, metadata, and current status. This endpoint returns the full project object with all settings and URLs.

## Response

<ResponseField name="id" type="string">
  Unique project identifier
</ResponseField>

<ResponseField name="title" type="string">
  Project title (usually the filename or video title)
</ResponseField>

<ResponseField name="thumbnail" type="string">
  URL to the project thumbnail image
</ResponseField>

<ResponseField name="billedDuration" type="number">
  Duration in seconds that was billed to your account
</ResponseField>

<ResponseField name="status" type="string">
  Current processing status ("processing", "completed", "failed", "cancelled")
</ResponseField>

<ResponseField name="projectType" type="string">
  Type of project ("clipping", "captions", "reframe", "dubbing", "transcription")
</ResponseField>

<ResponseField name="source" type="string">
  Source of the original video ("Youtube", "Upload", "Generic")
</ResponseField>

<ResponseField name="genre" type="string">
  Video genre for AI analysis ("talking", "screenshare", "gaming")
</ResponseField>

<ResponseField name="topics" type="array">
  Array of topic strings identified in the video
</ResponseField>

<ResponseField name="clipDurations" type="array">
  Array of clip duration objects with min/max values
</ResponseField>

<ResponseField name="selectedStart" type="number" optional>
  Start time in seconds for processing (null if entire video)
</ResponseField>

<ResponseField name="selectedEnd" type="number" optional>
  End time in seconds for processing (null if entire video)
</ResponseField>

<ResponseField name="reframeClips" type="boolean" optional>
  Whether clips are reframed for different aspect ratios
</ResponseField>

<ResponseField name="exportResolution" type="integer" optional>
  Output resolution for clips (720, 1080, 1440, 2160)
</ResponseField>

<ResponseField name="exportOrientation" type="string" optional>
  Output orientation ("landscape", "portrait", "square")
</ResponseField>

<ResponseField name="captionsPreset" type="string" optional>
  Caption style preset ID (null if captions disabled)
</ResponseField>

<ResponseField name="enableCaptions" type="boolean" optional>
  Whether captions are enabled for this project
</ResponseField>

<ResponseField name="enableEmojis" type="boolean" optional>
  Whether emojis are added to captions
</ResponseField>

<ResponseField name="enableHighlights" type="boolean" optional>
  Whether keywords are highlighted in captions
</ResponseField>

<ResponseField name="language" type="string" optional>
  Primary language of the video content
</ResponseField>

<ResponseField name="dubbingLanguage" type="string" optional>
  Target language for dubbing projects
</ResponseField>

<ResponseField name="translateTranscription" type="boolean">
  Whether transcription is translated to other languages
</ResponseField>

<ResponseField name="translationLanguages" type="array">
  Array of language codes for translation
</ResponseField>

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

<ResponseField name="metadata" type="object" optional>
  Video metadata including duration, resolution, format, etc.
</ResponseField>

<ResponseField name="urls" type="object" optional>
  Object containing various project URLs and assets
</ResponseField>

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

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

## Example Request

<CodeGroup>
  ```bash cURL theme={"system"}
  curl -X GET "https://public.reap.video/api/v1/automation/get-project-details?projectId=65f1a2b3c4d5e6f7a8b9c0d1" \
    -H "Authorization: Bearer YOUR_API_KEY" \
    -H "Content-Type: application/json"
  ```

  ```javascript JavaScript theme={"system"}
  const projectId = '65f1a2b3c4d5e6f7a8b9c0d1';
  const response = await fetch(`https://public.reap.video/api/v1/automation/get-project-details?projectId=${projectId}`, {
    method: 'GET',
    headers: {
      'Authorization': 'Bearer YOUR_API_KEY',
      'Content-Type': 'application/json'
    }
  });

  const project = await response.json();
  console.log('Project:', project.title);
  console.log('Status:', project.status);
  ```

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

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

  project_id = '65f1a2b3c4d5e6f7a8b9c0d1'
  response = requests.get(
      'https://public.reap.video/api/v1/automation/get-project-details',
      headers=headers,
      params={'projectId': project_id}
  )

  project = response.json()
  print(f"Project: {project['title']}")
  print(f"Status: {project['status']}")
  ```

  ```php PHP theme={"system"}
  <?php
  $projectId = '65f1a2b3c4d5e6f7a8b9c0d1';
  $url = 'https://public.reap.video/api/v1/automation/get-project-details?projectId=' . $projectId;
  $ch = curl_init($url);
  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);
  $project = json_decode($response, true);
  echo 'Project: ' . $project['title'] . "\n";
  echo 'Status: ' . $project['status'] . "\n";
  ?>
  ```

  ```go Go theme={"system"}
  package main
  import (
      "fmt"
      "io/ioutil"
      "net/http"
  )
  func main() {
      projectId := "65f1a2b3c4d5e6f7a8b9c0d1"
      url := "https://public.reap.video/api/v1/automation/get-project-details?projectId=" + projectId
      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 GetProjectDetailsExample {
      public static void main(String[] args) throws Exception {
          String projectId = "65f1a2b3c4d5e6f7a8b9c0d1";
          URL url = new URL("https://public.reap.video/api/v1/automation/get-project-details?projectId=" + projectId);
          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"}
    {
      "id": "65f1a2b3c4d5e6f7a8b9c0d1",
      "title": "my-presentation.mp4",
      "thumbnail": "https://cdn.reap.video/thumbnails/65f1a2b3c4d5e6f7a8b9c0d1.jpg",
      "billedDuration": 1800.5,
      "status": "completed",
      "projectType": "clipping",
      "source": "Upload",
      "genre": "talking",
      "topics": ["marketing", "business", "strategy"],
      "clipDurations": [
        {"min": 15, "max": 30},
        {"min": 30, "max": 60}
      ],
      "selectedStart": 0,
      "selectedEnd": 1800,
      "reframeClips": true,
      "exportResolution": 1080,
      "exportOrientation": "portrait",
      "captionsPreset": "system_beasty",
      "enableCaptions": true,
      "enableEmojis": true,
      "enableHighlights": true,
      "language": "en",
      "dubbingLanguage": null,
      "translateTranscription": false,
      "translationLanguages": [],
      "transcriptionScript": "native",
      "metadata": {
        "duration": 1800.5,
        "width": 1920,
        "height": 1080,
        "fps": 30,
        "format": "mp4",
        "size": 157286400,
        "bitrate": 2500000
      },
      "urls": {
        "sourceVideo": "https://cdn.reap.video/source/65f1a2b3c4d5e6f7a8b9c0d1.mp4",
        "thumbnail": "https://cdn.reap.video/thumbnails/65f1a2b3c4d5e6f7a8b9c0d1.jpg"
      },
      "createdAt": 1710345600,
      "updatedAt": 1710347400
    }
    ```
  </CodeGroup.Tab>

  <CodeGroup.Tab label="404 Not Found">
    ```json theme={"system"}
    {
      "detail": "Project not found"
    }
    ```
  </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>

## Project Configuration

### Clipping Projects

For clipping projects, the response includes:

* `topics`: AI-identified topics in the video
* `clipDurations`: Preferred clip length ranges
* `genre`: Video genre for better AI analysis
* `reframeClips`: Whether clips are reframed for different aspect ratios

### Caption Projects

For caption projects, the response includes:

* `captionsPreset`: Style preset for captions
* `enableEmojis`: Whether emojis are added
* `enableHighlights`: Whether keywords are highlighted
* `language`: Primary language of the content

### Reframe Projects

For reframe projects, the response includes:

* `exportOrientation`: Target orientation (portrait/square)
* `genre`: Video genre for better reframing
* `reframeClips`: Always true for reframe projects

### Transcription Projects

For transcription projects, the response includes:

* `language`: Primary language of the content
* `translateTranscription`: Whether transcription is translated
* `translationLanguages`: Target translation languages
* `transcriptionScript`: Script format ("native" or "roman")

### Dubbing Projects

For dubbing projects, the response includes:

* `language`: Source language of the video
* `dubbingLanguage`: Target language for dubbing
* `translateTranscription`: Whether transcription is translated

## URLs Object

The `urls` object may contain various project assets:

<ResponseField name="sourceVideo" type="string" optional>
  URL to the original source video
</ResponseField>

<ResponseField name="thumbnail" type="string" optional>
  URL to the project thumbnail image
</ResponseField>

<ResponseField name="videoFile" type="string" optional>
  URL to the processed video file (for caption/reframe projects)
</ResponseField>

<Note>
  URLs are dynamically generated and may expire. Always use the most recent URLs from API responses.
</Note>

## Rate Limiting

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

## Common Use Cases

<CardGroup cols={2}>
  <Card title="Project Monitoring" icon="chart-line">
    Get detailed status and configuration information
  </Card>

  <Card title="Configuration Review" icon="settings">
    Verify project settings and parameters
  </Card>

  <Card title="Metadata Analysis" icon="magnifying-glass">
    Access video metadata and processing details
  </Card>

  <Card title="Asset Management" icon="folder">
    Retrieve URLs for project assets and files
  </Card>
</CardGroup>

## Next Steps

Based on the project details:

* **Completed Projects**: Use [Get Project Clips](/api-reference/get-project-clips) to retrieve clips
* **Processing Projects**: Monitor with [Get Project Status](/api-reference/get-project-status)
* **Failed Projects**: Review configuration and retry if needed


## OpenAPI

````yaml GET /automation/get-project-details
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-project-details:
    get:
      summary: Get Project Details
      description: Retrieve complete details and configuration for a video project
      operationId: getProjectDetails
      parameters:
        - $ref: '#/components/parameters/projectId'
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AutomationProject'
components:
  parameters:
    projectId:
      name: projectId
      in: query
      required: true
      schema:
        type: string
      description: Unique identifier of the project
  schemas:
    AutomationProject:
      type: object
      properties:
        id:
          type: string
        title:
          type: string
        thumbnail:
          type: string
        billedDuration:
          type: number
        status:
          type: string
          enum:
            - queued
            - prepped
            - draft
            - processing
            - finalizing
            - completed
            - invalid
            - expired
            - failed
            - error
        projectType:
          type: string
          enum:
            - clipping
            - captions
            - reframe
            - dubbing
            - transcription
        source:
          type: string
          enum:
            - Upload
            - Youtube
            - Vimeo
            - TwitchVod
            - Twitter
            - RumbleEmbed
            - Generic
        genre:
          $ref: '#/components/schemas/VideoGenre'
        topics:
          type: array
          items:
            type: string
        clipDurations:
          type: array
          items:
            type: array
            items:
              type: integer
        selectedStart:
          type: number
          nullable: true
        selectedEnd:
          type: number
          nullable: true
        reframeClips:
          type: boolean
        exportResolution:
          type: integer
        exportOrientation:
          $ref: '#/components/schemas/VideoOrientation'
        captionsPreset:
          type: string
          nullable: true
        enableCaptions:
          type: boolean
        enableEmojis:
          type: boolean
        enableHighlights:
          type: boolean
        language:
          type: string
          nullable: true
        dubbingLanguage:
          type: string
          nullable: true
        translateTranscription:
          type: boolean
        translationLanguages:
          type: array
          items:
            type: string
        transcriptionScript:
          $ref: '#/components/schemas/TranscriptionScript'
        metadata:
          $ref: '#/components/schemas/VideoFileMeta'
        urls:
          type: object
        createdAt:
          type: integer
        updatedAt:
          type: integer
    VideoGenre:
      type: string
      enum:
        - talking
        - screenshare
        - gaming
      default: talking
    VideoOrientation:
      type: string
      enum:
        - landscape
        - portrait
        - square
    TranscriptionScript:
      type: string
      enum:
        - native
        - roman
      default: native
    VideoFileMeta:
      type: object
      properties:
        width:
          type: integer
        height:
          type: integer
        aspectRatio:
          type: string
        size:
          type: number
        bitrate:
          type: number
        fps:
          type: number
        duration:
          type: number
        rotation:
          type: integer
        resolution:
          type: integer
        codec:
          type: string
        codecFullName:
          type: string
        codecTag:
          type: string
        format:
          type: string
        formatFullName:
          type: string
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer

````