Get an upload URL

Request a one-time presigned URL to upload a video directly to S3, so large files never proxy through the API. After uploading, call Submit a video with the returned storage_key.

POST/api/v4/video-recognition/upload-url/

Request (JSON body)

FieldTypeRequiredDescription
filenamestringYesOriginal filename, including extension. The extension must be one of .mp4, .mov, .avi, .mpeg. It is used to validate the type and pin the Content-Type on the upload.
curl https://api.slipstreammusic.com/api/v4/video-recognition/upload-url/ \
  -X POST \
  -H "Authorization: Bearer $PARTNER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"filename": "clip.mp4"}'

Response (201 Created)

{
  "upload_url": "https://bucket.s3.amazonaws.com/temp/video-recognition/8f3c...2a_clip.mp4?X-Amz-...",
  "storage_key": "video-recognition/8f3c...2a_clip.mp4",
  "expires_in": 600,
  "content_type": "video/mp4"
}
FieldDescription
upload_urlPresigned S3 PUT URL. Upload the file here within expires_in seconds.
storage_keyReference to the uploaded file. Pass this to Submit a video.
expires_inSeconds until upload_url expires (default 600).
content_typeThe exact Content-Type header you must send on the PUT.

Upload the file

PUT the raw bytes to upload_url, using the exact content_type returned. Do not add an Authorization header to this request, the URL is already signed.

curl "$UPLOAD_URL" \
  -X PUT \
  -H "Content-Type: video/mp4" \
  --upload-file /path/to/clip.mp4

Then start recognition with the storage_key:

curl https://api.slipstreammusic.com/api/v4/video-recognition/ \
  -X POST \
  -H "Authorization: Bearer $PARTNER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"storage_key": "video-recognition/8f3c...2a_clip.mp4"}'
⚠️

Send the Content-Type on the PUT exactly as returned in content_type. It is pinned at signing time, so a mismatched header is rejected by S3.

Errors

HTTPBodyWhen
400{ "filename": ["File extension must be one of: mov, mpeg, mp4, avi."] }Unsupported file extension.
401 / 403{ "detail": "Authentication credentials were not provided." }Missing or invalid partner key.
501{ "detail": "Presigned uploads require S3 temporary storage." }The environment is not configured for S3 temporary storage. Use the direct file upload instead.