GET /describe/{domain}
Return canonical brand metadata for a domain in the demo catalog.
Try it
Type any domain or pick from the examples below — the response renders live against the deployed catalog.
Request
GET /describe/{domain}Prop
Type
Response
A 200 OK is returned in either of two shapes, depending on whether the cached metadata for the domain is trustworthy. Errors return 400 or 404.
{
"name": "Stripe",
"domain": "stripe.com",
"description": "Stripe is a financial infrastructure platform...",
"indexed_at": "2024-09-12T18:00:00Z",
"socials": { "twitter": "stripe", "linkedin": "stripe" },
"logo": "https://enterprise-demo.logo.dev/img/.../logo.png",
"icon": "https://enterprise-demo.logo.dev/img/.../icon-light.svg",
"wordmark": "https://enterprise-demo.logo.dev/img/.../wordmark-light.svg",
"aliases": ["Stripe, Inc."],
"blurhash": "L6PZfSi_.AyE_3t7t7R**0o#DgR4",
"colors": [
{ "r": 99, "g": 91, "b": 255, "hex": "#635BFF" }
],
"design_md": "# Stripe DESIGN.md\n\n## Typography\n...",
"banner_images": [
{ "url": "https://enterprise-demo.logo.dev/img/.../og.png", "source": "og" },
{ "url": "https://enterprise-demo.logo.dev/img/.../twitter.png", "source": "twitter" }
]
}{ "error": "not cached", "domain": "stripe.com" }{ "error": "invalid domain" }Branch on unavailable === true first. The available-shape fields below are only present when the domain is available.
Available shape
Always present
| Field | Type | Notes |
|---|---|---|
name | string | Brand name. Empty string when unknown. |
domain | string | Echoed back, lowercased. |
description | string | Short brand description. Empty string when unknown. |
indexed_at | string | ISO-8601 timestamp of when the domain was indexed. |
socials | object | Map of platform → handle. {} when none, never null. |
logo | string | Square logo URL (PNG). |
blurhash | string | BlurHash for the logo. |
colors | array of Color | Brand palette. [] when none. |
Color shape:
{ "r": 99, "g": 91, "b": 255, "hex": "#635BFF" }Conditional
| Field | Type | Present when |
|---|---|---|
icon | string | A square SVG/PNG icon is available. |
wordmark | string | A horizontal SVG/PNG wordmark is available. |
aliases | array of string | Known aliases for the brand. |
nsfw | boolean | true only when the brand is flagged NSFW. Omitted otherwise. |
design_md | string | A DESIGN.md (Markdown) sidecar exists for the domain. |
banner_images | array of BannerImage | One or more OG-card-shaped images are available. |
canonical_domain | string | The catalog's canonical domain for this brand. Equals domain when you hit the canonical. |
synonyms | array of string | Other domains in the catalog that resolve to this brand. Only present on canonical entries. |
BannerImage shape:
{ "url": "https://...", "source": "og" }source is one of "og", "facebook", "twitter".
Unavailable shape
Returned when the source can't be trusted (Cloudflare challenge, dead store, parked, 404). Two fields, deliberately minimal:
{
"domain": "stripe.com",
"unavailable": true
}| Field | Type | Notes |
|---|---|---|
domain | string | Echoed back, lowercased. |
unavailable | boolean | Always true in this shape. |
None of the available-shape fields appear — no name, description, logo, icon, wordmark, colors, etc. Render your own "unavailable" state rather than risk surfacing scraped error-page text as the brand name.
Asset URLs
logo, icon, wordmark, and banner_images[].url are all served same-origin through our imgproxy CDN. Treat the URLs as opaque — fetch them as you would any other static URL, drop them straight into an <img> tag, or pipe them through your own CDN.
On this demo, every asset is rendered as a 256px PNG with retina output enabled. That's a deliberately simple default — it covers the common case without forcing format decisions during evaluation.
For your rollout, we can configure the imgproxy pipeline per-customer:
- Format — PNG (default), JPEG, or WebP. JPEG is the right call for banner imagery if you want smaller payloads; WebP is the most aggressive on size if your clients support it.
- Size — Up to 800px on the longest edge. Multiple sizes (e.g. a 64px favicon variant alongside a 256px hero) can be exposed as separate fields or query parameters.
- Retina / 2x — Toggleable per output.
- Theme variants — Light and dark wordmark/icon variants emitted as separate URLs.
Tell us which formats and sizes you need for your evaluation and we'll switch them on.