Generate presigned upload URL

Generates a presigned URL for direct file upload to Google Cloud Storage. This is the first step in the upload workflow - use the returned URL to upload your file. Upload Workflow: 1. Call this endpoint to get a presigned URL 2. Upload file directly to GCS using HTTP PUT 3. Call /v1/upload/confirm to verify upload 4. Use the GCS URL in your transcode request Benefits: - No server bandwidth usage - Faster uploads (direct to GCS) - Secure (presigned URLs expire)

post/v1/upload/presigned-url

Request

  • Base URL: https://api.ffmpeg-micro.com
  • URL: https://api.ffmpeg-micro.com/v1/upload/presigned-url
  • Auth: HTTP bearer

Request body

filenamestring required

Original filename (will be prefixed with timestamp)

contentType'video/mp4' | 'video/webm' | 'video/quicktime' | 'video/x-msvideo' | 'audio/mpeg' | 'audio/mp4' | 'audio/aac' | 'audio/wav' | 'audio/ogg' | 'audio/opus' | 'audio/flac' | 'image/jpeg' | 'image/png' | 'image/gif' | 'image/webp' required

MIME type of the file. Must be one of the supported types below — note AVI is video/x-msvideo (not video/avi). Matroska/MKV is not supported.

fileSizeinteger required

File size in bytes as a JSON number (not a string). Must be finite, positive, and under the hard cap of 1.9 GiB (2040109465 bytes). String values (including digit-only strings like "1024") are rejected with 400. Plans also carry their own maximum input file size (100 MB on Free, 1 GB on Starter, 2 GB on Pro); that limit is checked asynchronously after job creation — an oversize input still returns 201 from POST /v1/transcodes and the job then transitions to failed with error_category: file_size.

Example request

{
  "filename": "my-video.mp4",
  "contentType": "video/mp4",
  "fileSize": 10485760
}

Response

Presigned URL generated successfully

successboolean

Example response

{
  "success": true,
  "result": {
    "uploadUrl": "https://storage.googleapis.com/bucket/timestamp-my-video.mp4?X-Goog-Algorithm=...",
    "filename": "20251023-143045-my-video.mp4"
  }
}

Changes

No recorded changes to this operation across all 1 revision of this API.