---
title: "The site's icon for one domain, from our cache, fetched once per domain"
method: GET
path: "/v1/icons/{domain}"
tags: ["icons"]
---

# The site's icon for one domain, from our cache, fetched once per domain

`GET /v1/icons/{domain}`

## Request

- Base URL: `https://api.sixminute.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.sixminute.ai/v1/icons/{domain}`
- Auth: HTTP bearer

The domain is a bare host: lower-case, no scheme, no port and no path, and never an address. On a miss, or past the cache's TTL, the API asks Google's favicon service about that domain once, under a three second deadline, with the domain as a query parameter of one fixed upstream url and never as a host the caller chose. A redirect is not followed. A 64 KB cap and an image content-type allowlist finish it, and the upstream's own 404, which is what it answers for a domain it has no icon for, is stored as no icon. A domain with no icon we will serve answers 204, which is the client's signal to draw a monogram. No client ever fetches an icon itself.

## Path parameters

- `domain` string, required: A url host: lower-case, no scheme, no port and no path.

## Response `200`

The icon's bytes, with the content type it was served under.

## Other responses

- `204`: This domain has no icon we will serve; draw a monogram.
- `400`: The body, query or path did not validate; `errors` lists the fields.
- `401`: No bearer token, or one that does not verify or has expired.
- `403`: The token verified but may not do this: no organisation, not provisioned, wrong role, or a device problem.

---

[API](https://skmtc.dev/sixminute/apis/sixminute-api.md) - [All operations](https://skmtc.dev/sixminute/apis/sixminute-api/llms.txt) - [OpenAPI document](https://skmtc.dev/sixminute/apis/sixminute-api/revisions/605577eadc10?raw)
