Skip to main content

Uploading Content via API

Guide to uploading recordings programmatically.

Overview

Uploading is a 3-step process:

  1. Request upload URL — Get presigned S3 URL
  2. Upload file — PUT directly to S3
  3. Confirm upload — Notify Scribe Sight to process

Step-by-Step

1. Request Upload URL

curl -X POST https://scribesight.com/api/v1/projects/proj_xxx/content/upload-url \
-H "Authorization: Bearer sk_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"filename": "meeting-2026-01-06.mp4",
"content_type": "video/mp4",
"size_bytes": 52428800
}'

2. Upload to S3

curl -X PUT "${upload_url}" \
-H "Content-Type: video/mp4" \
--data-binary @meeting-2026-01-06.mp4

3. Confirm Upload

curl -X POST https://scribesight.com/api/v1/projects/proj_xxx/content/cont_xxx/upload-complete \
-H "Authorization: Bearer sk_live_xxx"

Large Files (> 100MB)

For files over 100MB, we use multipart upload. The API returns multiple part URLs:

{
"upload_type": "multipart",
"upload_id": "xxx",
"parts": [
{ "partNumber": 1, "uploadUrl": "..." },
{ "partNumber": 2, "uploadUrl": "..." }
]
}

Upload each part and complete with ETags.

Supported Formats

  • Video: MP4, MOV, WebM, AVI
  • Audio: MP3, WAV, M4A, FLAC, OGG

Limits

  • Max file size: 1 GB
  • Max duration: 70 minutes