Upload one image
Stores the request body as an asset in one call: the bytes are the body, the parameters are the query string. Send the image as the raw body with its own Content-Type (image/jpeg, image/png, …) and a Content-Length, or as multipart/form-data with a file part. The asset is created in PROCESSING and reaches DONE once ingest has written dimensions and metadata — poll POST /api/v1/assets/status or subscribe to the webhook.
The type is the declared Content-Type when it is an image type this product takes, else the extension of name (or the multipart file name); neither → 400 unsupported_format. Bytes the account already holds as a DONE asset (same SHA-1) come back as that asset with existing: true and nothing new is stored.
LIMITS: one file per call, at most 25 MB (413 payload_too_large); a raw body needs Content-Length (400 invalid_param). Over this node's concurrent-upload capacity → 503 provider_unavailable with Retry-After, retryable. No Idempotency-Key (contract §3): the same bytes are the same asset, so re-sending is already safe.
USE THIS WHEN:
- You hold one image of up to 25 MB and want an asset_id for a job
DO NOT USE WHEN:
- The file is over 25 MB, or you have many → POST /api/v1/assets/stage-upload, PUT, then finish-upload (the bytes then go straight to the object store)
- The image is at a public URL → POST /api/v1/assets/from-url
- You only want one image transformed and back → POST /api/v1/images/transform
Request
- Base URL: https://api.imagestep.dev
- URL: https://api.imagestep.dev/api/v1/assets/upload
- Auth: API key in header Authorization
Query parameters
File name. Its extension types the bytes when Content-Type does not; the asset is named after its stem, cut to 200 characters. Defaults to the multipart file name, else image.
Collection to put the new asset in (optional; at most 200 characters, and names starting with job: are reserved). Ignored when the bytes match an asset you already hold
Tags for the new asset (optional; repeat the parameter or separate with commas; at most 50, each at most 100 characters). A duplicate of an asset you already hold keeps that asset's own tags.
Keep the new asset this many days instead of your plan's retention — shorter only; more is kept for the plan's time (imagestep#591). Its expiresAt says what was stamped.
Response
The asset: new (PROCESSING), or the DONE one you already hold for the same bytes (existing: true)
Changes
No recorded changes to this operation across all 1 revision of this API.