---
title: "Get Asset File"
method: GET
path: "/companies/{company_id}/assets/{asset_id}/files/{kind}"
tags: ["assets"]
---

# Get Asset File

`GET /companies/{company_id}/assets/{asset_id}/files/{kind}`

## Request

- Base URL: `https://app.zalster.com` (the document declares no server; this is the origin it was published from)
- URL: `https://app.zalster.com/companies/{company_id}/assets/{asset_id}/files/{kind}`
- Auth: none declared

Stream a file through the API: ``original``, ``normalized``, ``mask``,
``cutout``, or ``thumb`` (a small WebP of the current cutout, made on
first request and cached in storage — grids must not pull 400 kB PNGs).
``photo`` makes the thumb the photo's, whatever cut-out the picture has: the
sorting view judges what a picture shows, not its cut-out (decision 265).

Object storage is internal; the browser reaches it only through here.
Public URLs for channels are the ``/public/media`` routes.

A file that never changes — the original, or a derivative named by its id
— is cached for a day. Any other — the thumbnail, "the cutout", "the
mask" — is the current one of the moment, and is checked each time: an
approval or an upload changed it, and the grid showed the old one for an
hour (decision 209). The check is answered 304 while it has not changed.

## Path parameters

- `company_id` string, uuid, required: Company id
- `asset_id` string, uuid, required
- `kind` string, required

## Query parameters

- `derivative_id` string, uuid, nullable
- `photo` boolean

## Response `200`

Successful Response

- unknown

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/zalster/apis/zalster-feed-processor.md) - [All operations](https://skmtc.dev/zalster/apis/zalster-feed-processor/llms.txt) - [OpenAPI document](https://skmtc.dev/zalster/apis/zalster-feed-processor/revisions/d0b9dc66ad36?raw)
