---
title: "Video File Summarizer API"
method: POST
path: "/v1/video/summarize"
tags: ["Utilities"]
---

# Video File Summarizer API

`POST /v1/video/summarize`

## Request

- Base URL: `https://api.captapi.com`
- URL: `https://api.captapi.com/v1/video/summarize`
- Auth: one of:
  - HTTP bearer
  - API key in header `X-API-Key`

AI transcription + summary of an uploaded file — transcript included; 1 credit/min + 1.

POST multipart form field `file` (use curl -F file=@path — not a query string). Transcribes the upload with AI speech-to-text, then an AI model returns summary, keyPoints, topics, and sentiment in the same JSON as the full transcript (transcript, transcriptSegments, wordCount, language, durationSeconds). Summary length scales with the audio — short clips may be one paragraph with fewer bullets; longer recordings aim for 2–3 paragraphs and 4–8 key points. same transcription controls (language, translate, timestampGranularity) and 200MB / 60 min limits as File Transcript. Empty/no-speech → HTTP 422 at 0 credits. Billing: ceil(durationSeconds/60) + 1 — verify with durationSeconds.

Docs: https://captapi.com/apis/video-summarize

## Response `200`

Success. The data object for this endpoint.

- object
  - `success` unknown, required
  - `data` object, required
    - `filename` string: Filename. Example: "sample.mp3".
    - `summary` string: AI executive summary. Length scales with the transcript — short clips may be one paragraph; longer audio aims for 2–3.
    - `keyPoints` string[]: Bullet takeaways (typically 4–8 on longer audio; fewer on short clips).
    - `topics` string[]: Detected topics and themes.
    - `sentiment` string: Overall tone (positive, neutral, negative).
    - `transcript` string: Full transcript of the upload — always present on success (not summary-only).
    - `transcriptSegments` object[]
      - `text` string: Text content.
      - `start` number: Start time in seconds.
      - `duration` number: Duration when present — prefer durationSeconds (number) and durationText on endpoints that expose both.
      - `end` number: End time in seconds.
      - `timestamp` string: Human-readable timestamp (MM:SS format).
    - `wordCount` integer: Total number of words in the transcript (file-upload endpoints).
    - `segments` integer: Timed caption/ASR: array of {text,startMs,endMs}. File-upload video-transcript: segment count. Sponsor endpoints: sponsor segment list.
    - `language` string: Detected (or hinted) speech language from transcription.
    - `durationSeconds` number: Audio duration in seconds from transcription — basis for the per-minute part of billing. The only duration key on this payload.
    - `noSpeech` boolean: Should be false on success — empty speech returns HTTP 422 at 0 credits instead.

## Other responses

- `400`: Bad request: wrong platform URL, unknown endpoint, or an invalid parameter value. Not billed.
- `401`: Missing, invalid or revoked API key. Not billed.
- `402`: Not enough credits for this request. Not billed.
- `404`: The resource does not exist or is not public. Not billed.
- `422`: A required parameter is missing or has the wrong type. Not billed.
- `429`: Rate limit reached. Wait for Retry-After seconds. Not billed.
- `502`: The platform could not be reached or returned nothing usable. Retryable, not billed. 503 and 504 use the same envelope.

---

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