API.Video Summaries API

The Summaries API from API.Video — 3 operation(s) for summaries.

Operations 5

POST /summaries Generate video summary #
GET /summaries List summaries #
DELETE /summaries/{summaryId} Delete video summary #
GET /summaries/{summaryId}/source Get summary details #
PATCH /summaries/{summaryId}/source Update summary details #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/api-video:api-video-summaries-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

api-video-summaries-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: api.video Summaries API
  description: api.video is an API that encodes on the go to facilitate immediate playback, enhancing viewer streaming experiences across multiple devices and platforms. You can stream live or on-demand online videos within minutes.
  version: '1'
servers:
- url: https://ws.api.video
  description: Production server
- url: https://sandbox.api.video
  description: Test server `all videos are watermarked, and deleted after 24 hours.
tags:
- name: Summaries
paths:
  /summaries:
    post:
      tags:
      - Summaries
      summary: Generate video summary
      description: Generate an abstract and key takeaways for a video.
      x-client-action: create
      x-client-description:
        default: Generate an abstract and key takeaways for a video.
      operationId: POST_summaries
      security:
      - apiKey: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/summary-creation-payload'
      responses:
        '201':
          headers:
            X-RateLimit-Limit:
              schema:
                type: integer
              description: The request limit per minute.
            X-RateLimit-Remaining:
              schema:
                type: integer
              description: The number of available requests left for the current time window.
            X-RateLimit-Retry-After:
              schema:
                type: integer
              description: The number of seconds left until the current rate limit window resets.
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/summary'
              examples:
                Summary created:
                  value:
                    summaryId: summary_1CGHWuXjhxmeH4WiZ51234
                    createdAt: '2024-07-14T23:36:07+00:00'
                    updatedAt: '2024-07-14T23:36:07+00:00'
                    videoId: vilkR8K3N7yrRcxcMt91234
                    origin: auto
                    sourceStatus: completed
        '409':
          headers:
            X-RateLimit-Limit:
              schema:
                type: integer
              description: The request limit per minute.
            X-RateLimit-Remaining:
              schema:
                type: integer
              description: The number of available requests left for the current time window.
            X-RateLimit-Retry-After:
              schema:
                type: integer
              description: The number of seconds left until the current rate limit window resets.
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/conflict-error'
              examples:
                Summary already exists:
                  value:
                    type: https://docs.api.video/reference/summary-already-exists
                    title: A summary already exists or is being created on this video.
                    status: 409
                    detail: You can delete the existing summary and generate a new one.
                    name: videoId
    get:
      tags:
      - Summaries
      summary: List summaries
      description: List all summarries for your videos in a project.
      x-client-action: list
      x-client-description:
        default: List all summarries for your videos in a project.
      operationId: GET_summaries
      parameters:
      - name: videoId
        in: query
        required: false
        description: Use this parameter to filter for a summary that belongs to a specific video.
        schema:
          type: string
        example: vilkR8K3N7yrRcxcMt91234
      - name: origin
        in: query
        required: false
        description: 'Use this parameter to filter for summaries based on the way they were created: automatically or manually via the API.'
        schema:
          type: string
          enum:
          - auto
          - api
        example: auto
      - name: sourceStatus
        in: query
        required: false
        description: 'Use this parameter to filter for summaries based on the current status of the summary source.


          These are the available statuses:


          `missing`: the input for a summary is not present.

          `waiting` : the input video is being processed and a summary will be generated.

          `failed`: a technical issue prevented summary generation.

          `completed`: the summary is generated.

          `unprocessable`: the API rules the source video to be unsuitable for summary generation. An example for this is an input video that has no audio.

          '
        schema:
          type: string
          enum:
          - missing
          - waiting
          - failed
          - completed
          - unprocessable
        example: auto
      - name: sortBy
        in: query
        description: 'Use this parameter to choose which field the API will use to sort the response data. The default is `value`.


          These are the available fields to sort by:


          - `createdAt`: Sorts the results based on date and timestamps when summaries were created.

          - `updatedAt`: Sorts the results based on date and timestamps when summaries were last updated.

          - `videoId`: Sorts the results based on video IDs.

          '
        required: false
        style: form
        explode: true
        schema:
          type: string
          enum:
          - createdAt
          - updatedAt
          - videoId
        example: createdAt
      - name: sortOrder
        in: query
        description: Use this parameter to sort results. `asc` is ascending and sorts from A to Z. `desc` is descending and sorts from Z to A.
        required: false
        style: form
        explode: true
        schema:
          type: string
          enum:
          - asc
          - desc
        example: asc
      - $ref: '#/components/parameters/current-page'
      - $ref: '#/components/parameters/page-size'
      x-group-parameters: true
      x-client-paginated: true
      responses:
        '200':
          headers:
            X-RateLimit-Limit:
              schema:
                type: integer
              description: The request limit per minute.
            X-RateLimit-Remaining:
              schema:
                type: integer
              description: The number of available requests left for the current time window.
            X-RateLimit-Retry-After:
              schema:
                type: integer
              description: The number of seconds left until the current rate limit window resets.
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/summaries-list-response'
              examples:
                List all summaries:
                  value:
                    data:
                    - summaryId: summary_1CGHWuXjhxmeH4WiZ51234
                      createdAt: '2024-07-14T23:36:07+00:00'
                      updatedAt: '2024-07-14T23:36:07+00:00'
                      videoId: vilkR8K3N7yrRcxcMt91234
                      origin: auto
                      sourceStatus: completed
                    - summaryId: summary_123HWuXjhxmeH4WiZ55678
                      createdAt: '2024-07-15T23:36:07+00:00'
                      updatedAt: '2024-07-15T23:36:07+00:00'
                      videoId: vibaBXK3N7yrRcxcMt95678
                      origin: auto
                      sourceStatus: waiting
                    pagination:
                      currentPage: 1
                      pageSize: 25
                      pagesTotal: 1
                      itemsTotal: 11
                      currentPageItems: 11
                      links:
                      - rel: self
                        uri: https://ws.api.video/summaries?currentPage=1
                      - rel: first
                        uri: https://ws.api.video/summaries?currentPage=1
                      - rel: last
                        uri: https://ws.api.video/summaries?currentPage=1
  /summaries/{summaryId}:
    delete:
      tags:
      - Summaries
      summary: Delete video summary
      description: Delete a summary tied to a video.
      x-client-action: delete
      x-client-description:
        default: Delete a summary tied to a video.
      operationId: DELETE_summaries-summaryId
      security:
      - apiKey: []
      parameters:
      - name: summaryId
        in: path
        description: The unique identifier of the summary you want to delete.
        required: true
        style: simple
        explode: false
        schema:
          type: string
        example: summary_1CGHWuXjhxmeH4WiZ51234
      responses:
        '204':
          headers:
            X-RateLimit-Limit:
              schema:
                type: integer
              description: The request limit per minute.
            X-RateLimit-Remaining:
              schema:
                type: integer
              description: The number of available requests left for the current time window.
            X-RateLimit-Retry-After:
              schema:
                type: integer
              description: The number of seconds left until the current rate limit window resets.
          description: No Content
  /summaries/{summaryId}/source:
    get:
      tags:
      - Summaries
      summary: Get summary details
      description: Get all details for a summary
      x-client-action: getSummarySource
      x-client-description:
        default: Get all details for a summary.
      operationId: GET_summaries-summaryId-source
      security:
      - apiKey: []
      parameters:
      - name: summaryId
        in: path
        description: The unique identifier of the summary source you want to retrieve.
        required: true
        style: simple
        explode: false
        schema:
          type: string
        example: summary_1CGHWuXjhxmeH4WiZ51234
      responses:
        '200':
          headers:
            X-RateLimit-Limit:
              schema:
                type: integer
              description: The request limit per minute.
            X-RateLimit-Remaining:
              schema:
                type: integer
              description: The number of available requests left for the current time window.
            X-RateLimit-Retry-After:
              schema:
                type: integer
              description: The number of seconds left until the current rate limit window resets.
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/summary-source'
        '404':
          headers:
            X-RateLimit-Limit:
              schema:
                type: integer
              description: The request limit per minute.
            X-RateLimit-Remaining:
              schema:
                type: integer
              description: The number of available requests left for the current time window.
            X-RateLimit-Retry-After:
              schema:
                type: integer
              description: The number of seconds left until the current rate limit window resets.
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/not-found'
              examples:
                response:
                  value:
                    type: https://docs.api.video/reference/resource-not-found
                    title: The requested resource was not found.
                    name: summaryId
                    status: 404
    patch:
      tags:
      - Summaries
      summary: Update summary details
      description: Update details for a summary.
      x-client-action: update
      x-client-description:
        default: Update details for a summary.
      operationId: PATCH_summaries-summaryId-source
      parameters:
      - name: summaryId
        in: path
        description: The unique identifier of the summary source you want to update.
        required: true
        style: simple
        explode: false
        schema:
          type: string
        example: summary_1CGHWuXjhxmeH4WiZ51234
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/summary-update-payload'
      responses:
        '201':
          headers:
            X-RateLimit-Limit:
              schema:
                type: integer
              description: The request limit per minute.
            X-RateLimit-Remaining:
              schema:
                type: integer
              description: The number of available requests left for the current time window.
            X-RateLimit-Retry-After:
              schema:
                type: integer
              description: The number of seconds left until the current rate limit window resets.
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/summary-source'
        '409':
          headers:
            X-RateLimit-Limit:
              schema:
                type: integer
              description: The request limit per minute.
            X-RateLimit-Remaining:
              schema:
                type: integer
              description: The number of available requests left for the current time window.
            X-RateLimit-Retry-After:
              schema:
                type: integer
              description: The number of seconds left until the current rate limit window resets.
          description: Conflict
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/conflict-error'
              examples:
                Summary generation still in progress:
                  value:
                    type: https://docs.api.video/reference/summary-already-exists
                    title: A summary already exists or is being created on this video.
                    status: 409
                    detail: You can delete the existing summary and generate a new one.
components:
  parameters:
    current-page:
      name: currentPage
      in: query
      description: 'Choose the number of search results to return per page. Minimum value: 1'
      required: false
      style: form
      explode: true
      schema:
        type: integer
        default: 1
      example: 2
    page-size:
      name: pageSize
      in: query
      description: Results per page. Allowed values 1-100, default is 25.
      required: false
      style: form
      explode: true
      schema:
        type: integer
        default: 25
      example: 30
  schemas:
    summary-source:
      type: object
      properties:
        abstract:
          type: string
          description: A short outline of the contents of the video. The length of an `abstract` depends on the amount of content in a video that can be transcribed. The API condenses the contents into minimum 20, maximum 300 words.
          example: In this lecture, we discuss how complicated quantum theory is, using the famous example of Schrödingers cat. We also discuss practical applications like quantum computing.
        takeaways:
          type: array
          description: A list of 3 key points from the video, in chronological order.
          maxItems: 3
          items:
            type: string
          example:
          - Quantum theory is complicated.
          - Schrödinger's cat is neither dead, nor alive.
          - Quantum computers are super cool.
    conflict-error:
      type: object
      properties:
        type:
          description: A link to the error documentation.
          type: string
        title:
          description: A description of the error that occurred.
          type: string
        name:
          description: The name of the parameter that caused the error.
          type: string
        status:
          description: The HTTP status code.
          type: integer
        detail:
          description: A solution for the error.
          type: string
    summary-creation-payload:
      required:
      - videoId
      type: object
      properties:
        videoId:
          type: string
          description: Create a summary of a video using the video ID.
          example: vi4k0jvEUuaTdRAEjQ4Jfrgz
        origin:
          type: string
          enum:
          - auto
          description: 'Use this parameter to define how the API generates the summary. The only allowed value is `auto`, which means that the API generates a summary automatically.


            If you do not set this parameter, **the API will not generate a summary automatically**.


            In this case, `sourceStatus` will return `missing`, and you have to manually add a summary using the `PATCH /summaries/{summaryId}/source` endpoint operation.'
          example: auto
        attributes:
          description: Use this parameter to define the elements of a summary that you want to generate. If you do not define this parameter, the API generates a full summary with all attributes. The possible values are `abstract` and `takeaways`.
          type: array
          items:
            type: string
            enum:
            - abstract
            - takeaways
    pagination-link:
      title: PaginationLink
      type: object
      properties:
        rel:
          type: string
        uri:
          type: string
          format: uri
    summary:
      type: object
      properties:
        summaryId:
          type: string
          description: The unique identifier of the summary object.
          example: summary_1CGHWuXjhxmeH4WiZ51234
        createdAt:
          description: Returns the date and time when the summary was created in ATOM date-time format.
          type: string
          format: date-time
          example: '2024-05-28T11:15:07+00:00'
        updatedAt:
          description: Returns the date and time when the summary was last updated in ATOM date-time format.
          type: string
          format: date-time
          example: '2024-05-28T11:15:07+00:00'
        videoId:
          type: string
          description: The unique identifier of the video object.
          example: vi4k0jvEUuaTdRAEjQ4Prklg
        origin:
          type: string
          enum:
          - api
          - auto
          description: 'Returns the origin of how the summary was created.


            - `api` means that no summary was generated automatically. You can add summary manually using the `PATCH /summaries/{summaryId}/source` endpoint operation. Until this happens, `sourceStatus` returns `missing`.

            - `auto` means that the API generated the summary automatically.'
        sourceStatus:
          type: string
          description: 'Returns the current status of summary generation.


            `missing`: the input for a summary is not present.

            `waiting` : the input video is being processed and a summary will be generated.

            `failed`: a technical issue prevented summary generation.

            `completed`: the summary is generated.

            `unprocessable`: the API rules the source video to be unsuitable for summary generation. An example for this is an input video that has no audio.'
          enum:
          - missing
          - waiting
          - failed
          - completed
          - unprocessable
    summaries-list-response:
      type: object
      title: Summaries
      properties:
        data:
          type: array
          description: An array of summary objects.
          items:
            $ref: '#/components/schemas/summary'
        pagination:
          $ref: '#/components/schemas/pagination'
      required:
      - data
      - pagination
    pagination:
      title: Pagination
      required:
      - links
      type: object
      properties:
        itemsTotal:
          type: integer
          description: Total number of items that exist.
          readOnly: true
        pagesTotal:
          type: integer
          description: Number of items listed in the current page.
          readOnly: true
        pageSize:
          type: integer
          description: Maximum number of item per page.
          readOnly: true
        currentPage:
          type: integer
          description: The current page index.
          readOnly: true
        currentPageItems:
          type: integer
          description: The number of items on the current page.
          readOnly: true
        links:
          type: array
          items:
            $ref: '#/components/schemas/pagination-link'
      example:
        itemsTotal: 123
        pagesTotal: 7
        pageSize: 20
        currentPage: 3
        currentPageItems: 20
        links:
          first:
            rel: first
            uri: /videos/search?currentPage=1&pageSize=20
          previous:
            rel: previous
            uri: /videos/search?currentPage=2&pageSize=20
          next:
            rel: next
            uri: /videos/search?currentPage=4&pageSize=20
          last:
            rel: last
            uri: /videos/search?currentPage=6&pageSize=20
    not-found:
      title: NotFound
      type: object
      properties:
        type:
          description: A link to the error documentation.
          type: string
        title:
          description: A description of the error that occurred.
          type: string
        name:
          description: The name of the parameter that caused the error.
          type: string
        status:
          description: The HTTP status code.
          type: integer
    summary-update-payload:
      type: object
      properties:
        abstract:
          type: string
          description: A short outline of the contents of the video.
          example: In this lecture, we discuss how complicated quantum theory is, using the famous example of Schrödingers cat. We also discuss practical applications like quantum computing.
        takeaways:
          type: array
          description: A list of 3 key points from the video, in chronological order.
          maxItems: 3
          items:
            type: string
          example:
          - Quantum theory is complicated.
          - Schrödinger's cat is neither dead, nor alive.
          - Quantum computers are super cool.
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
    apiKey:
      type: http
      scheme: basic
x-stoplight:
  id: ybzk39fiws46g
x-client-base-paths:
  production: https://ws.api.video
  sandbox: https://sandbox.api.video
x-doctave:
  explorer-enabled: true
  proxy-enabled: true
  samples-enabled: true
  samples-languages:
  - curl
  - go
  - node
  - php
  - python
x-provenance:
  method: harvested
  publisher: API.Video
  source: https://docs.api.video/openapi.yaml
  note: split by refine-openapis from the provider's own published document, verified by fetch (openapi/_original/*.fetch.json);
    stamped by stamp-openapi-provenance.py (roadmap#793)