Assets & files
How file and image fields are delivered, and how to request on-the-fly image transforms.
File and image fields return asset objects with a stable delivery URL:
{
"id": "ast_9f2",
"url": "https://actions.einblick.xyz/api/v1/assets/TOKEN/facade.jpg",
"fileName": "facade.jpg",
"mimeType": "image/jpeg",
"fileSize": 482133,
"width": 2400,
"height": 1600,
"title": "Front facade",
"copyright": "© Jane Doe",
"tags": ["exterior"],
"focalPointX": 0.5,
"focalPointY": 0.32
}Treat url as the contract: Einblick may serve the bytes directly or
respond with a 302 redirect to the current storage or optimization
backend, and may change that behavior without notice. Follow redirects.
The asset endpoint is public but capability-based — the token in the URL is
what authorizes access, so the URLs work directly in <img> tags and can
be handed to browsers without exposing your API key.
Image transforms
Image assets can be resized and re-encoded on the fly with query parameters on the asset URL:
| Parameter | Description |
|---|---|
w | Output width in pixels |
h | Output height in pixels |
fit | Resize mode (e.g. cover, contain, scale-down) |
q | Quality, 1–100 |
fmt | Output format (e.g. webp, avif, jpeg) |
<img
src="https://actions.einblick.xyz/api/v1/assets/TOKEN/facade.jpg?w=800&fmt=webp&q=80"
alt="Front facade"
/>Some assets also ship preset variants under transforms in the asset
object — a map of named { width, height, fit, quality, format } presets
you can apply the same way.
Uploading files
File uploads are not part of the resource write API. Flows that accept
external uploads (for example job applications) use
commands such as jobs.prepareApplicationUpload and
files.prepareExternalUpload, which return a scoped upload target for the
file bytes.