One asset ID.
One processing attempt.
The API owns uploads and asset records. The queue carries an ID; the worker reads the latest durable record and runs the engine selected by its mediaType.
The attempt lifecycle
- Load the asset from the configured
AssetRepository. - Claim and mark the processing attempt.
- Select the matching
MediaEngine. - Read, validate, inspect, and checksum the original.
- Emit each rendition to
ObjectStorage. - Persist dimensions, byte counts, keys, and transform metadata in one ready result.
Predictable output keys
Default keys include namespace, media type, asset ID, rendition version, and output name. A retry writes the same keys rather than creating new names.
renditions/<namespace>/<media-type>/<asset-id>/v<version>/<name>.<extension>Who owns what?
Your app owns upload policy, asset identity, database schema, access control, and delivery URLs. RenditionKit owns the processing lifecycle. The provided PostgreSQL repository is available when you want a ready-to-use persistence model.
Failure behavior
Bad inputs are rejected without retrying. Unexpected errors are rethrown so the queue adapter can retry. Completed outputs are not deleted after a transient failure because a ready database write may have committed even when its response was lost.