Skip to main content
Last updated: 2026-06-06
Crazyrouter provides temporary public image upload endpoints for converting local reference images into model-readable public URLs. They are suitable for Kling, Veo, Seedance, Runway, Luma, MiniMax, Nano Banana Pro, Doubao Seedream, and other APIs that accept image_url, image_urls, image_list, images, or image_input.
Temporary images are kept for 48 hours by default and then cleaned up automatically. Storage during that period is not billed separately; current anti-abuse controls use per-user upload quota and rate limits.

Endpoint Overview

Common limits:

Local File Upload

cURL
Example response:

Base64 Upload

cURL

Remote URL Rehosting

cURL
The remote URL must be an http or https image URL reachable by Crazyrouter servers. The system checks file size, MIME type, and SSRF protection rules.

Presigned Direct R2 Upload

For high-upload-volume workflows, request a presigned upload URL first, then upload the image directly from your client to the storage endpoint with PUT. The image bytes do not pass through the Crazyrouter application server. First, request a direct upload URL:
cURL
Example response:
Then upload the file directly to upload_url:
cURL
After the upload succeeds, use the returned url as the image URL in the model request.
The upload_url is a short-lived write URL, valid for about 15 minutes by default. Content-Type and Content-Length must match the presign request. Do not pass upload_url to the model; use the returned url instead.

Example: Use a Local Reference Image for Kling Image-to-Video

First, upload the local reference image:
cURL
Then pass the returned IMAGE_URL to Kling image-to-video:
cURL
The submit request returns a task ID. Use the Kling task query endpoint to get the final video result.
Temporary URLs are not a permanent asset library. Make sure the URL has not expired before submitting a generation task, and do not store it as a long-term business image URL.