Upload Files

Upload images, videos, or audio files for Buble generation inputs.

Upload Files

Use POST /api/v1/files to upload source assets before calling image-to-image, image-to-video, video-to-video, or audio-assisted modes.

Endpoint

POST /api/v1/files
Content-Type: multipart/form-data

Form fields

FieldTypeRequiredDescription
fileFileYesImage, video, or audio file.
file_typestringNoimage, video, or audio. Inferred from MIME type if omitted.
modelstringNoOptional model key for model-specific validation.
modestringNoOptional public mode for mode-specific validation.

If model and mode are provided, Buble validates file type, size, and format against that model mode. If omitted, Buble applies default upload limits.

Default upload limits

TypeDefault max size
Image30 MB
Video100 MB
Audio50 MB

Model-specific limits can be stricter. Check the relevant model reference before uploading production assets.

Upload an image for image-to-image

curl https://buble.ai/api/v1/files \
  -H "Authorization: Bearer $BUBLE_API_KEY" \
  -F "file=@./source.png" \
  -F "file_type=image" \
  -F "model=google/nano-banana-pro" \
  -F "mode=image_to_image"

Response

{
  "data": {
    "object": "file",
    "provider": "r2",
    "url": "https://...",
    "key": "api/image/xxx.png",
    "file_type": "image",
    "content_type": "image/png",
    "size": 123456,
    "filename": "source.png"
  }
}

Pass the returned data.url into image_urls, start_frame, end_frame, video_urls, or audio_urls depending on the selected mode.