Search
Documentation

← Content types

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}/confirm

Via 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:

ScopeLifetimeWho sees it
librarypermanentall builds for your account
buildlives until the build is archivedonly that build
templatelives until the template is deletedonly 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.