Upload media

Live
Create private, short-lived media references for image, audio, and video inputs.
Open in ChatGPT
(opens in new tab)
Last verified: 2026-08-11

Create an upload

Call POST /uploads with the exact MIME type and byte size. The response contains a 15-minute signed PUT URL and required headers. Upload exactly that object, then call GET /uploads/:id. The endpoint returns a one-hour signed input URL after the stored size and MIME match, the container signature is valid, and audio/video duration is decodable and within the configured limit.

Security boundary

Objects are private and encrypted at rest. Supported inputs are allow-listed image, audio, and video MIME types up to 100 MB. Audio is limited to 3,600 seconds and video to 600 seconds by default. Each account may keep 25 active uploads totaling up to 500 MB; a full quota returns upload_quota_exceeded. ModelRush rejects signature mismatches, undecodable media, non-HTTPS external references, credentials in URLs, redirects, non-standard ports, private networks, localhost, and cloud metadata targets.

Expiry and deletion

Upload records expire after 24 hours; signed read URLs expire after one hour. Use DELETE /uploads/:id for early deletion. Do not store signed URLs in logs or databases—store the upload_... ID and request a fresh workflow when it expires.