Logo API
Favicon
Palette
SSRF Guard

Brand marks. Ranked and fetched.

Discover favicon, manifest, and Open Graph images for a domain. Get the winner as base64 plus an optional color palette. Private network targets stay blocked.

GET · /discover2 MB · image cap30 min · HTML cache30 · req / 15 min

Discover a brand logo.

This calls GET /discover for allowlisted domains only (example.com, datpaq.com, github.com, wikipedia.org). Discovery can be slower than a cache hit so the playground waits for you to press Run.

Request builder
Domain in, logo metadata out.
GET /discover
Output preview
Live response from the API, plus the exact request to reproduce it.

Press Run to discover a logo for an allowlisted domain. Large base64 payloads are truncated.

Why Logo API

Brand marks without a scavenger hunt.

Ranked brand assets

Favicon, web manifest icons, and Open Graph images are tried and ranked per domain.

Base64 delivery

The selected image comes back as imageBase64 with byteLength so CRM cards can render immediately.

Dominant colors

includePalette (default true) returns a dominant hex and weighted colors for theming.

SSRF-safe fetches

Private and reserved network targets are blocked. A leading www. is stripped before lookup.

Hostname or URL

Pass example.com or https://www.example.com. Domain length is 3 to 253 characters.

Diagnostics on misses

found:false is success. sourcesTried lists every candidate URL, status, and cache flag.

/api/v1/logo

Endpoints, at a glance.

GET-only discovery. Private targets are SSRF-blocked. found:false is still a successful empty result.
GET/api/v1/logo/discover

Discover brand assets

Rank favicon, manifest, and Open Graph images. Return the winner as base64 plus optional palette.

PRIMARY
ParameterTypeRequiredDescription
domainstringyesHostname or URL, 3 to 253 characters. www. is stripped.
includePalettebooleannoExtract dominant colors. Default true.

Error reference

Failures you can plan for.

Structured errors use error.code values such as SSRF_BLOCKED. found:false is still a successful lookup.
400Validation Error

Invalid domain (must be 3 to 253 characters) or a malformed query.

400SSRF Blocked

Domain resolved to a private or reserved network target.

401Authentication Error

Missing or invalid gateway API key. Send x-api-key or api_key with every request.

404Not Found

Unknown route under /api/v1/logo.

429Rate Limit Error

More than 30 requests in a 15-minute window. Discovery is fetch-heavy.

502Upstream Unavailable

Every candidate asset source was unavailable.

504Upstream Timeout

Candidate asset sources exceeded the fetch deadline.

Example error response

{
  "success": false,
  "error": {
    "code": "SSRF_BLOCKED",
    "message": "Domain blocked by SSRF policy"
  },
  "correlationId": "req_error123"
}

FAQ

API questions developers ask first.

What do I pass for domain?

A hostname or URL, 3 to 253 characters. A leading www. is stripped. example.com and https://www.example.com resolve to the same lookup.

What if no logo is found?

found:false is still success. sourcesTried lists every candidate URL, status, and cache flag so you can see what was attempted.

Can I skip palette extraction?

Yes. includePalette defaults to true. Set it to false when you only need the image bytes.

Why is the rate limit 30 requests per 15 minutes?

Each discovery performs multiple outbound fetches. Private and reserved network targets are blocked by the SSRF guard.

How do I authenticate requests?

Send your Datpaq API key as an x-api-key header or an api_key query parameter. Keys are created in the Datpaq dashboard and a free tier is included.

Fetch a brand mark in one GET.

Discover favicon, manifest, and Open Graph images for a domain, return the winner as base64, and optionally extract a color palette.