Endpoints
Files
Runs take their inputs as URLs. When the picture is on your disk rather than on the web, upload it here first and pass the URL that comes back.
When to upload
- The file is local, private, or behind a login. The API only fetches public https URLs and refuses anything else with
unsafe_url; a URL returned by this endpoint is always accepted. - Use the returned
urlasstartImageUrl,endImageUrlor an entry ofreferenceImageUrlson POST /videos and POST /images. - Send it as
multipart/form-datawith the file in a field namedfile. Uploading is free.
Upload an input file
post/api/v1/files
Bearer keyfiles:writeuploadFile
Store an image, audio or video file (up to 200 MB) and get back a URL that POST /images and POST /videos accept as a reference or frame. Needs files:write.
curl -X POST https://kinoseed.app/api/v1/files \
-H "Authorization: Bearer ks_live_YOUR_KEY" \
-F "file=@./mug.png"
Request body
multipart/form-data
| Field | Type | Required | Description |
|---|---|---|---|
| file | string (binary) | yes | An image (png, jpeg, webp, gif), audio or video file, up to 200 MB. |
Responses
| Status | Body | Meaning |
|---|---|---|
| 201 | FileUploadResponse | Stored. |
| 400 | ErrorEnvelope | Not multipart, no file field, too large (413) or an unsupported type (415). |
| 401 | ErrorEnvelope | Missing, invalid or revoked key. |
| 403 | ErrorEnvelope | The key lacks files:write. |
| 429 | ErrorEnvelope | Over a rate budget; see Retry-After. Also too_many_running when the account already has 5 runs in progress. |
| 503 | ErrorEnvelope | Storage is not available right now. |
Response fields
The 201 body.
| Field | Type | Description |
|---|---|---|
| url | string (uri) | |
| size | integer | |
| type | string | e.g. "image/png" |