Images
Upload a raster or vector image once; reference it from any fill. The build
embeds it into image_N picture-frame fields in the finished deck.
How images work
Slidura’s scanner detects picture-frame shapes in a template and records them as
image fields in the catalog. At build time the filler replaces the placeholder
with your image, cropped and scaled to fill the frame exactly as PowerPoint would.
Supported formats: PNG, JPG, GIF, SVG. Each file is validated on confirm (magic-byte check, dimension cap, decompression-bomb guard) before being stored privately in object storage.
Uploading images
Via the web (MediaLib): open the MediaLib sidebar, choose the Images section, and drag a file onto the upload zone. The page requests a pre-signed upload URL, sends the bytes directly from your browser to storage, then calls the confirm endpoint — no file data passes through the Slidura application server.
Via API:
POST /api/v1/images/presign → { image_id, upload: { url, method, headers }, expires_at }
PUT <upload.url> ← raw bytes (no Slidura auth needed)
POST /api/v1/images/{id}/confirmVia MCP:
request_image_upload(content_type, size, name?)
→ { image_id, upload: { method, url, headers }, max_bytes, expires_at }
confirm_image(image_id)
→ { image_id, status, build_ref, width, height }list_images() and get_image(image_id) round out the MCP surface.
Placing an image in a fill
{ "image_1": "@image:<id>" }The sentinel value comes from the build_ref field returned by confirm_image
or GET /api/v1/images/{id}.
Media scoping
Every image belongs to a scope:
| Scope | Lifetime | Who sees it |
|---|---|---|
library | permanent | all builds for your account |
build | lives until the build is archived | only that build |
template | lives until the template is deleted | only builds of that template |
Images uploaded while a build is open are scoped to that build by default.
The ref-search widget ranks the open build’s items first so they appear at the
top of results. To keep an image across builds, promote it to library scope
via the Promote to library button in the MediaLib or by calling
POST /media/images/{id}/promote.
Build-scoped and template-scoped images are archived automatically when their scope is deleted or archived — they cannot be referenced after that point.
Vision enrichment
When the optional server-side enrichment pass runs (requires GOOGLE_API_KEY),
it can write alt text and a usage description back onto the image metadata. This
metadata is visible in the MediaLib and is used by the build assistant to
suggest relevant images. Enrichment is advisory and does not modify the stored
file.
Private storage and pre-signed URLs
Image files are never served from a public URL. Every download — including the ref-search thumbnail — is delivered via a short-lived pre-signed URL generated at request time. The URL expires after the configured window; sharing it out of band is not supported.