---
updatedAt: 2026-08-14T14:35:20.000Z
agentTools:
  projectIndex: https://developers.fellow.ai/llms.txt
---

# Upload Recording

Upload a recording from a URL.

Use this endpoint to bring an existing meeting recording into Fellow. After submitting the media file's URL, Fellow processes the recording in the background and returns an ID for the new corresponding Recording object. Use the Retrieve Uploaded Recording endpoint to review whether the upload is still in progress, completed, or failed.

# OpenAPI definition

```json
{
  "openapi": "3.1.0",
  "info": {
    "title": "Fellow Developer API",
    "version": "1.0.3",
    "description": "Create custom integrations and workflows with Fellow's meeting data"
  },
  "paths": {
    "/api/v1/recordings/upload": {
      "post": {
        "operationId": "apps_developer_api_api_upload_recording",
        "summary": "Upload Recording",
        "parameters": [],
        "responses": {
          "201": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RecordingUploadSubmitResponse"
                }
              }
            }
          }
        },
        "description": "Upload a recording from a URL.",
        "tags": [
          "Recordings"
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/RecordingUploadRequest"
              }
            }
          },
          "required": true
        },
        "security": [
          {
            "DeveloperAPIKeyAuth": []
          }
        ]
      }
    }
  },
  "components": {
    "schemas": {
      "RecordingUploadSubmitResponse": {
        "description": "Response for POST /recordings/upload — the 201 confirming a recording was queued for import.",
        "properties": {
          "recording_id": {
            "title": "Recording Id",
            "type": "string"
          }
        },
        "required": [
          "recording_id"
        ],
        "title": "RecordingUploadSubmitResponse",
        "type": "object"
      },
      "BasicAuth": {
        "properties": {
          "type": {
            "const": "basic_auth",
            "default": "basic_auth",
            "title": "Type",
            "type": "string"
          },
          "username": {
            "minLength": 1,
            "title": "Username",
            "type": "string"
          },
          "password": {
            "title": "Password",
            "type": "string"
          }
        },
        "required": [
          "username",
          "password"
        ],
        "title": "BasicAuth",
        "type": "object"
      },
      "BearerTokenAuth": {
        "properties": {
          "type": {
            "const": "bearer_token",
            "default": "bearer_token",
            "title": "Type",
            "type": "string"
          },
          "token": {
            "minLength": 1,
            "title": "Token",
            "type": "string"
          }
        },
        "required": [
          "token"
        ],
        "title": "BearerTokenAuth",
        "type": "object"
      },
      "RecordingUploadRequest": {
        "properties": {
          "url": {
            "format": "uri",
            "minLength": 1,
            "title": "Url",
            "type": "string"
          },
          "title": {
            "maxLength": 255,
            "title": "Title",
            "type": "string"
          },
          "language_code": {
            "allOf": [
              {
                "$ref": "#/components/schemas/TranscriptionLanguage",
                "nullable": true
              }
            ]
          },
          "media_auth": {
            "discriminator": {
              "mapping": {
                "basic_auth": "#/components/schemas/BasicAuth",
                "bearer_token": "#/components/schemas/BearerTokenAuth"
              },
              "propertyName": "type"
            },
            "nullable": true,
            "oneOf": [
              {
                "$ref": "#/components/schemas/BearerTokenAuth"
              },
              {
                "$ref": "#/components/schemas/BasicAuth"
              }
            ],
            "title": "Media Auth"
          },
          "channel_id": {
            "title": "Channel Id",
            "type": [
              "string",
              "null"
            ]
          },
          "event_guid": {
            "title": "Event Guid",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "url",
          "title"
        ],
        "title": "RecordingUploadRequest",
        "type": "object"
      },
      "TranscriptionLanguage": {
        "enum": [
          "en",
          "en_au",
          "en_uk",
          "en_us",
          "es",
          "fr",
          "de",
          "it",
          "pt",
          "nl",
          "hi",
          "ja",
          "zh",
          "fi",
          "ko",
          "pl",
          "ru",
          "tr",
          "uk",
          "vi",
          "af",
          "sq",
          "am",
          "ar",
          "hy",
          "as",
          "az",
          "ba",
          "eu",
          "be",
          "bn",
          "bs",
          "br",
          "bg",
          "my",
          "ca",
          "hr",
          "cs",
          "da",
          "et",
          "fo",
          "gl",
          "ka",
          "el",
          "gu",
          "ht",
          "ha",
          "haw",
          "he",
          "hu",
          "is",
          "id",
          "jw",
          "kn",
          "kk",
          "km",
          "lo",
          "la",
          "lv",
          "ln",
          "lt",
          "lb",
          "mk",
          "mg",
          "ms",
          "ml",
          "mt",
          "mi",
          "mr",
          "mn",
          "ne",
          "no",
          "nn",
          "oc",
          "pa",
          "ps",
          "fa",
          "ro",
          "sa",
          "sr",
          "sn",
          "sd",
          "si",
          "sk",
          "sl",
          "so",
          "su",
          "sw",
          "sv",
          "de_ch",
          "tl",
          "tg",
          "ta",
          "tt",
          "te",
          "th",
          "bo",
          "tk",
          "ur",
          "uz",
          "cy",
          "yi",
          "yo"
        ],
        "title": "TranscriptionLanguage",
        "type": "string"
      }
    },
    "securitySchemes": {
      "DeveloperAPIKeyAuth": {
        "type": "apiKey",
        "in": "header",
        "name": "X-API-KEY"
      }
    }
  },
  "servers": [
    {
      "url": "https://{subdomain}.fellow.app",
      "description": "Fellow",
      "variables": {
        "subdomain": {
          "default": "your-fellow-subdomain",
          "description": "The subdomain for your Fellow workspace"
        }
      }
    }
  ],
  "tags": [
    {
      "name": "Recordings",
      "description": "Access and manage meeting recordings. Retrieve individual recordings, list recordings with filters and pagination, or delete recordings (privileged access required)."
    }
  ]
}
```