Docs/Brand

GET/v1/brand15 credits

Brand

The curated brand identity: color roles (primary, accent, background, text) with human-readable color names, the clean brand palette, primary fonts, the logo, the social share image, the brand's social profiles, and a 0-1 confidence score. The opinionated view - start here. Add &fields= to return only the parts you need.

  • Build UI "in the style of" a reference site - feed the colors and fonts to your generator.
  • Pre-fill a brand kit or theme from just a domain - colors, fonts, logo and social links in one call.
  • Power "trusted by" logo strips with a live logo URL.
Parameters
urlrequiredThe page to extract from. With or without protocol (https:// is assumed).
fieldsoptionalComma-separated list of fields to return (e.g. fields=logo,palette). Omit for the full object. url is always included. Trims the response only - the credit cost is unchanged. see the fields table below
renderoptionalLoad the page in a real browser and run its JavaScript before extracting. Use for client-rendered sites (React, Next, SPAs) where the default static fetch returns little - runtime-injected images, styles, media and Lotties become visible. Slower (a real page load), and adds 5 credits to the call. Cache hits stay free. You rarely have to guess: when a static extraction comes back thin because the page is client-rendered, the response includes a top-level hint field telling you to retry with render=true. true · false (default)
freshoptionalSkip the 24-hour cache and re-extract from the live page. Use it when you know the site just changed (a redeploy, a rebrand) and a cached copy would be stale. The call is charged normally - the extraction really runs - and the fresh result replaces the cached copy for the next caller. Off by default: identical repeat calls within 24 hours are served from cache at 0 credits. true · false (default)
screenshotoptionalRequires render=true. The same real browser that renders the page also captures a screenshot - true for the 1440x900 viewport, full for the entire page height. The response gains a screenshot field with a public image URL that stays live for 7 days. No extra credits beyond the render surcharge. Captured on fresh extractions - a cache hit returns the screenshot stored with the cached result (pass fresh=true to force a new one). true · full · false (default)
fields values
titlePage / og:title - usually the brand name.
descriptionMeta / og:description of the site.
siteNameog:site_name, when the page declares one.
themeColorThe <meta name="theme-color"> the site declares about itself, when present.
themeWhether the site's default presentation is dark or light.
colorsColor roles: primary, accent, background, text.
colorNamesHuman-readable names for the role colors ("Royal Blue"), parallel to colors.
paletteFull brand palette, each { color, count, name }, brand colors first.
fontsPrimary font families, most-prominent first.
typographyFonts split by role: { primary, mono }.
logoBest single logo / icon URL.
logosAll logo / icon candidates, each tagged by source.
ogImageThe og:image social share URL, when present.
socialsSocial profiles found on the page, one per platform: { platform, url, handle }.
confidence0-1 score: how much of the identity the site declared vs how much was inferred.
signalsWhy the result looks the way it does: where the primary color came from, what else the site declared, and a ready-to-show explanation sentence.

Build a request

GEThttps://miromiro.app/api/v1/v1/brand?url=stripe.com

urlrequired
fields

Nothing selected returns the full response.

render
fresh
screenshot

Options at their default are left out of the URL - the API assumes them. Auth isn't shown here: send your key as an Authorization: Bearer header (see the example below).

Response

Authorization: Bearer mm_live_…
Response fields
urlstringThe resolved URL that was extracted.
titlestring | nullPage / og:title - usually the brand name.
descriptionstring | nullMeta / og:description of the site.
siteNamestring | nullog:site_name, when the page declares one.
themeColorstring | nullThe <meta name="theme-color"> the site declares, when present. A vivid theme-color also outranks usage-count guessing when picking colors.primary.
theme'dark' | 'light'Whether the site's default presentation is dark or light. background and text are picked to match.
colors.primarystring | nullThe brand color, as hex. Read from the site's own signals in order: a brand-role CSS variable (--color-brand, --accent, …) > a vivid theme-color > the site's SVG logo > most-used vivid color.
colors.accentstring | nullSecondary / accent color, same signal order.
colors.backgroundstring | nullPage background color, theme-aware (dark sites return their real dark background).
colors.textstring | nullPrimary body-text color, theme-aware.
colorNamesobjectHuman-readable names for the role colors ("Royal Blue" for #533afd) - nearest CSS color name, parallel to colors. For labeling swatches without shipping your own color-naming code.
palette[]arrayFull brand palette (up to 12 colors, near-duplicate shades merged), each { color, count, name }, brand colors first.
fonts[]string[]Primary font families (up to 4), most-prominent first.
typographyobjectFonts split by role: the primary text face and the monospace face, when the site uses one.
logostring | nullBest-guess logo / icon URL.
logos[]arrayEvery logo / icon candidate, each { url, source, sizes }. source ∈ icon, apple-touch-icon, mask-icon, og.
ogImagestring | nullThe og:image social share URL, when present.
socials[]arraySocial profiles found on the page - JSON-LD sameAs first, then anchor links; one per platform. platform ∈ x, github, linkedin, youtube, instagram, facebook, tiktok, threads, bluesky, dribbble, discord, twitch, producthunt, crunchbase.
confidencenumber0-1: how much of this identity the site declared vs how much was inferred. ≥0.8 = role colors came from the site's own CSS variables or theme-color plus a real logo and fonts; ≤0.4 = mostly usage-count heuristics. Gate on this before applying a brand automatically in bulk.
signalsobjectThe provenance behind confidence - why the result looks the way it does. primarySource says where colors.primary came from, strongest first: css-var (the site's own brand variable) > theme-color > logo (sampled from its SVG mark) > usage (inferred from frequency - a guess, not a declared token). explanation is a ready-to-show sentence saying how much was declared vs inferred; surface it instead of the raw score when you are showing a result to a person.
usageobjectMetering for this call: credits spent this month, your monthly cap (null = unlimited), credits remaining, what this call cost (0 on cache hits), and whether it was served from the 24-hour cache. packCredits appears only when you hold a credit pack: the never-expiring balance left after this call.

Example request

https://miromiro.app/api/v1/extract?url=stripe.com&access_key=mm_live_…