imageInput. Whether you’re providing a style reference, a base image for image-to-image generation, or a visual for your prompt’s imageUrl field, the upload flow is the same: request a signed upload URL, push the bytes directly to storage, then use the returned permanent URL in your API calls.
Supported formats and limits
Upload an image
1
Request a signed upload URL
Send a
POST /api/v1/uploads/images request with the contentType and size (in bytes) of the file you want to upload. This endpoint requires the prompts:write scope. The API returns a short-lived signed URL, a token, and the permanent URL your file will live at once uploaded:2
Upload the file bytes
Send the raw file bytes to the A
uploadUrl using a PUT request. Set the Content-Type header to match the contentType you declared in the previous step:200 OK response confirms the bytes were written successfully. No Prompt Bank Authorization header is needed for this step — the signed URL carries the required authorization.3
Use the permanent URL in your prompts and generations
After the upload succeeds, use the Attach to a prompt as Use as a reference in Pass as
url value (not the uploadUrl) wherever Prompt Bank expects an image URL. The url is permanent and does not expire.Always use the
url field from the upload response — not the uploadUrl. The uploadUrl is a temporary signed URL used only to write your file to storage; it stops working after the 2-hour expiry window. The url is the CDN-hosted address where your file lives permanently.imageUrl:referenceMediaUrls:imageInput in a generation:Next steps
- Use your uploaded images as generation inputs in the Generate Media guide.
- Store image URLs on prompts by following the Manage Prompts guide.