Synoppy v1.0 is here— start free
DocsEnrich
Endpoint

Enrich

POST/api/brand resolves a domain into structured brand data: name, description, logo, brand colors, fonts, address, and social links. It reads the live site (and its stylesheets for fonts), so the data reflects how the brand presents itself today. Metered per request by the work performed. This endpoint is live. Accepts a full URL, a bare domain, or a work email (its domain is used). A GET form with ?domain=, ?url=, or ?email= is also supported.

Request body

urlstringrequired
The site to enrich — a full URL, a bare domain like linear.app, or a work email (its domain is used). Aliases: domain, email.

Example request

curl -X POST https://synoppy.com/api/brand \
  -H "Authorization: Bearer $SYNOPPY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "url": "linear.app" }'

Response

{
  "success": true,
  "domain": "linear.app",
  "name": "Linear",
  "description": "Purpose-built for planning and building products.",
  "logo": "https://linear.app/static/apple-touch-icon.png",
  "colors": ["#4354b8", "#e5591d", "#f79ce0", "#26243b"],
  "fonts": ["Inter Variable", "Berkeley Mono"],
  "address": null,
  "socials": [
    { "label": "X", "url": "https://x.com/linear" },
    { "label": "GitHub", "url": "https://github.com/linear" }
  ],
  "latencyMs": 1068,
  "creditsUsed": 4,
  "creditsRemaining": 4996
}

Response fields

successboolean
True when the brand was resolved.
domainstring
The resolved domain (from the url, domain, or email you passed).
namestring
The brand / company name.
descriptionstring | null
Short description or tagline, from meta tags when present.
logostring | null
Best logo URL, verified to actually load (404s are dropped). Null when none is found.
colorsstring[]
Brand colors as hex strings, ranked most-vivid first, pulled from the page and its stylesheets.
fontsstring[]
Font families in use — from Google Fonts links and font-family declarations in the HTML and CSS.
addressstring | null
Postal address when one is published on the site.
socials{ label, url }[]
Social profile links (X, LinkedIn, GitHub, Instagram, YouTube, …), each with a label and absolute url.
latencyMsnumber
End-to-end time in milliseconds.
creditsUsednumber
Credits charged — metered per request by the bytes scanned (page + stylesheets).
creditsRemainingnumber
Your credit balance after this call.

Every field is read live from the site in a single call — you never request logos, colors, or socials separately.

In code

import { Synoppy } from "@synoppy/sdk";
const synoppy = new Synoppy({ apiKey: process.env.SYNOPPY_API_KEY });

// accepts a url, bare domain, or work email
const brand = await synoppy.enrich("linear.app");
console.log(brand.colors, brand.logo, brand.socials);