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);