Asset Management

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
post/api/v1/assets/upload

Request

  • Base URL: https://api.imagestep.dev
  • URL: https://api.imagestep.dev/api/v1/assets/upload
  • Auth: API key in header Authorization

Query parameters

namestring

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.

collectionstring

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

tagsstring[]

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.

retentionDaysinteger

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.