Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.prismvideos.com/llms.txt

Use this file to discover all available pages before exploring further.

POST /api/s3/presign-upload
Creates a presigned S3 upload URL for an image, video, or audio reference. Upload the file to the returned upload_url, then pass the returned s3_key into Create Generation.

Request

curl "https://www.prismvideos.com/api/s3/presign-upload" \
  -X POST \
  -H "Authorization: Bearer prism_sk_your_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "kind": "upload",
    "contentType": "image/png",
    "fileName": "product.png"
  }'

Body parameters

ParameterTypeRequiredDescription
kindstringYesUse upload for generic image, video, or audio references
contentTypestringYesFile MIME type, such as image/png, video/mp4, or audio/mpeg
fileNamestringNoOriginal filename. Used by clients for bookkeeping only

Response

{
  "s3_key": "users/user_abc/user-uploads/batch_abc/file_abc.png",
  "upload_url": "https://presigned-s3-put-url...",
  "content_type": "image/png",
  "max_bytes": 20971520
}

Upload the file

Use the returned upload_url with an HTTP PUT request. The Content-Type must match the value used when creating the upload URL.
curl "$UPLOAD_URL" \
  -X PUT \
  -H "Content-Type: image/png" \
  --data-binary "@product.png"

Use in generation

After upload succeeds, pass s3_key into the relevant generation reference field.
{
  "prompt": "Turn this product image into a clean studio video",
  "modelName": "veo-3.1",
  "startFrameKey": "users/user_abc/user-uploads/batch_abc/file_abc.png"
}
For multiple image references:
{
  "prompt": "Use these images as visual references",
  "modelName": "veo-3.1",
  "ingredientImageKeys": [
    "users/user_abc/user-uploads/batch_abc/ref1.png",
    "users/user_abc/user-uploads/batch_abc/ref2.png"
  ]
}
For video editing models, pass uploaded video keys as sourceVideoKey or referenceVideoKeys.

Limits

File typeMax size
Image20 MB
Video200 MB
Audio50 MB

Errors

StatusErrorWhen
400validation errorInvalid kind or unsupported contentType
401unauthorizedMissing or invalid API key
403forbiddenAPI key lacks templates:read scope
500server errorFailed to create upload URL
See Errors for the full error reference.