Docs

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:

ParameterDescription
wOutput width in pixels
hOutput height in pixels
fitResize mode (e.g. cover, contain, scale-down)
qQuality, 1100
fmtOutput 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.