Logo endpoint
One URL per company. The endpoint returns the best available logo for the domain, ready to be used anywhere an image URL works.
URL shape
Section titled “URL shape”# the logo, as an imageGET https://img.anylogo.dev/{domain}
# exampleshttps://img.anylogo.dev/github.comhttps://img.anylogo.dev/stripe.comhttps://img.anylogo.dev/linear.app{domain} is a bare registrable domain — no scheme, no path, no www. prefix.
What you get back
Section titled “What you get back”The response is a plain image: an SVG when a sharp vector mark is available, otherwise a high-resolution PNG. The Content-Type header reflects the format.
Logos are served at their original size — there are no resizing parameters. SVGs scale to any size losslessly; for PNGs, size the image in your markup or CSS (for example width="64") and the browser scales it down cleanly.
Caching
Section titled “Caching”Responses are cached aggressively so repeat loads are instant: browsers cache a logo for a day, and the edge network keeps it for a week. Logos refresh automatically as new versions become available — you never need to bust the cache yourself.
CORS and headers
Section titled “CORS and headers”The endpoint is CORS-enabled (Access-Control-Allow-Origin: *), so it can be fetched from browser code on any origin, not just used in img tags. Every successful response also carries an X-Anylogo-Source header, a short label identifying which logo variant was served.
# response headers on a successful requestContent-Type: image/svg+xml # or image/pngCache-Control: public, max-age=86400, s-maxage=604800Access-Control-Allow-Origin: *X-Anylogo-Source: ... # which logo variant was servedErrors
Section titled “Errors”When no logo is available for a domain, the endpoint returns 404 with a JSON body. Misses aren’t permanent: the domain is re-checked periodically (roughly weekly), so if a logo becomes available later, the same URL starts working.
# 404 — no logo available for this domain{ "error": "no logo found", "domain": "example.com" }
# 400 — the domain is malformed{ "error": "invalid domain" }In an img tag, a 404 simply fires the image’s onerror handler — handy for falling back to initials or a placeholder. See Errors for the full reference.
Sizes and formats
Section titled “Sizes and formats”By default the original image is returned. Request a variant with query parameters:
<img src="https://img.anylogo.dev/github.com?size=64"><img src="https://img.anylogo.dev/github.com?size=128&format=webp">size— one of16, 32, 64, 128, 256, 512. The image is scaled to fit within that square, never upscaled beyond its source resolution.format—pngorwebp.
SVG logos are returned as-is regardless of size — they scale losslessly at any resolution, so use them directly. Responses include X-Anylogo-Width and X-Anylogo-Height headers with the source dimensions.
Freshness
Section titled “Freshness”Every logo response includes an X-Anylogo-Verified-At header with the timestamp of the last successful fetch, so you always know how current the asset is.
Logos refresh automatically when they age past 30 days. If a company rebrands before then, anyone can flag it — no key required:
curl -X POST https://api.anylogo.dev/report/{domain}{ "ok": true, "domain": "stripe.com", "previouslyVerifiedAt": "2026-08-15T18:50:58.595Z", "note": "Thanks — this logo will be re-fetched on the next request."}The next request for that domain fetches a fresh copy. Premium plans can also force an immediate refresh of both the logo and company record with POST /refresh/{domain}.
Fallbacks
Section titled “Fallbacks”By default a domain with no logo returns 404 with a JSON body. Add fallback to get an image instead, so an <img> tag never renders broken:
<img src="https://img.anylogo.dev/unknown-startup.io?fallback=monogram">monogram— a lettered tile in a colour derived from the domain, so the same company always gets the same tile.transparent— a 1×1 transparent pixel.404— the default JSON error.
Fallback responses carry an X-Anylogo-Fallback header naming the mode used.