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

# Upload Media File

> To use the provided temporary storage is a two step process.
    You start by declaring a media:// url that you can reference in any other API calls. The response will provide a url where you can put your media. This allows you to use the media:// url as a short-cut for a temporary storage location.
    You'll be returned a pre-signed url you can use to PUT and upload your media file. The temporary storage should allow you to read and write to the media:// locations for a period of at least 24 hours before it is removed.

For cases when your file is not public accessible, you can upload your file to the pyannoteAI servers using this endpoint.

For a complete guide on uploading files, see the [How to Upload Files](/tutorials/how-to-upload-files) tutorial.


## OpenAPI

````yaml POST /v1/media/input
openapi: 3.0.0
info:
  title: pyannoteAI API
  description: ''
  version: local
  contact: {}
  termsOfService: https://pyannote.ai/terms-of-use
servers:
  - url: https://api.pyannote.ai
security: []
tags: []
externalDocs:
  description: pyannoteAI Docs
  url: https://docs.pyannote.ai/
paths:
  /v1/media/input:
    post:
      tags:
        - Media
      summary: Get upload URL
      description: |-
        To use the provided temporary storage is a two step process.
            You start by declaring a media:// url that you can reference in any other API calls. The response will provide a url where you can put your media. This allows you to use the media:// url as a short-cut for a temporary storage location.
            You'll be returned a pre-signed url you can use to PUT and upload your media file. The temporary storage should allow you to read and write to the media:// locations for a period of at least 24 hours before it is removed.
      operationId: getMediaUploadURL
      parameters: []
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GetMediaUploadUrl'
      responses:
        '201':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MediaResponse'
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationErrorResponse'
        '402':
          description: Subscription is required
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
        '429':
          description: Too many requests
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiError'
      security:
        - api-key: []
components:
  schemas:
    GetMediaUploadUrl:
      type: object
      properties:
        url:
          type: string
          maxLength: 255
          pattern: /^media:\/\/[a-zA-Z0-9\-_\.\/]+$/
          description: >-
            The url should be in the form media://object-key where the
            object-key can be any alpha-numeric string. The object-key is unique
            to your account API token so there is no risk of collision with
            other users.
      required:
        - url
    MediaResponse:
      type: object
      properties:
        url:
          type: string
      required:
        - url
    ValidationErrorResponse:
      type: object
      properties:
        message:
          type: string
          description: Error message
          example: Invalid request
        errors:
          description: List of errors
          type: array
          items:
            $ref: '#/components/schemas/ValidationError'
      required:
        - message
        - errors
    ApiError:
      type: object
      properties:
        requestId:
          type: string
          description: Request ID
          example: 37a4c3a0-b034-4e8c-9ed9-76da6645544a
        message:
          type: string
          description: Error message
          example: Error message
      required:
        - requestId
        - message
    ValidationError:
      type: object
      properties:
        field:
          type: string
          description: Field name
          example: url
        message:
          type: string
          description: Error message
          example: Invalid URL
      required:
        - field
        - message
  securitySchemes:
    api-key:
      scheme: bearer
      bearerFormat: JWT
      type: http

````