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

# Create an upload link

> Returns a link to PUT one audio or video file to (works for 1 hour), and the url to pass to GET /v1/transcript (works for 24 hours, then the file is deleted). No request body.



## OpenAPI

````yaml /api-reference/openapi.yaml post /v1/uploads
openapi: 3.1.0
info:
  title: Video Transcript API
  version: '1.0'
  description: >-
    Transcripts of YouTube, Instagram, Facebook, X and LinkedIn videos and of
    audio or video files.
servers:
  - url: https://app.bestvideotranscriptapi.com
security:
  - apiKey: []
  - bearer: []
paths:
  /v1/uploads:
    post:
      summary: Create an upload link
      description: >-
        Returns a link to PUT one audio or video file to (works for 1 hour), and
        the url to pass to GET /v1/transcript (works for 24 hours, then the file
        is deleted). No request body.
      operationId: createUpload
      responses:
        '200':
          description: The upload links.
          headers:
            x-request-id:
              $ref: '#/components/headers/RequestId'
          content:
            application/json:
              schema:
                type: object
                required:
                  - uploadUrl
                  - url
                  - expiresAt
                  - maxBytes
                properties:
                  uploadUrl:
                    type: string
                    description: PUT the file's bytes here, with no API key.
                  url:
                    type: string
                    description: Pass this as url to GET /v1/transcript.
                  expiresAt:
                    type: string
                    format: date-time
                    description: When url stops working.
                  maxBytes:
                    type: integer
                    example: 2000000000
        '401':
          $ref: '#/components/responses/Error'
        '429':
          $ref: '#/components/responses/RateLimited'
        '502':
          $ref: '#/components/responses/Error'
components:
  headers:
    RequestId:
      description: This request's ID. Quote it to support.
      schema:
        type: string
  responses:
    Error:
      description: An error. See the Errors page for every code.
      headers:
        x-request-id:
          $ref: '#/components/headers/RequestId'
      content:
        application/json:
          schema:
            type: object
            required:
              - error
            properties:
              error:
                $ref: '#/components/schemas/Error'
    RateLimited:
      description: Over your plan's requests per second.
      headers:
        x-request-id:
          $ref: '#/components/headers/RequestId'
        Retry-After:
          description: Seconds to wait.
          schema:
            type: string
      content:
        application/json:
          schema:
            type: object
            required:
              - error
            properties:
              error:
                $ref: '#/components/schemas/Error'
  schemas:
    Error:
      type: object
      required:
        - code
        - message
        - requestId
      properties:
        code:
          type: string
          enum:
            - UNAUTHENTICATED
            - INVALID_REQUEST
            - UNSUPPORTED_PLATFORM
            - NOT_A_VIDEO
            - VIDEO_UNAVAILABLE
            - MEDIA_NOT_FOUND
            - CAPTIONS_UNAVAILABLE
            - LANGUAGE_NOT_AVAILABLE
            - NO_SPEECH_FOUND
            - FILE_TOO_LARGE
            - VIDEO_TOO_LONG
            - LIVE_STREAM
            - AI_HOURS_EXHAUSTED
            - CAPTIONS_LIMIT_REACHED
            - RATE_LIMITED
            - JOB_NOT_FOUND
            - UPSTREAM_FAILURE
        message:
          type: string
        requestId:
          type: string
        availableLangs:
          type: array
          items:
            type: string
        durationSeconds:
          type: number
        maxDurationSeconds:
          type: number
        sizeBytes:
          type: number
        maxSizeBytes:
          type: number
        aiMinutesNeeded:
          type: integer
        aiMinutesRemaining:
          type: integer
        refillsAt:
          type: string
          format: date-time
        billingUrl:
          type: string
  securitySchemes:
    apiKey:
      type: apiKey
      in: header
      name: x-api-key
    bearer:
      type: http
      scheme: bearer

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.