Product
Identity data
Everything the archive knows about a brand, in one record: its name in both languages and its other names, country, sector and type, website and accounts, its logo colours and where they came from, identity colours for print, fonts, guidelines and related brands. What it doesn’t know comes back null.
Endpoints
- GET /api/v1/brands/{slug}counts as a pull
- Counts as a pull
- One record per brand
- Languages
- Arabic always, English when known
- A missing field
- Empty or an empty list, never a guess
- Colour source
- Editor, guidelines or extracted
What you get
Every name
The name in Arabic and English, and up to 12 other names the brand is known by.
Logo colours and their source
With their role (primary, secondary…) and
colorsSourcesaying where they came from.Identity colours for print
From the guidelines as written: RGB, CMYK, Pantone, proportion and tints.
Fonts and guidelines
The identity’s fonts and their roles, and its published guidelines, usually PDF.
Verification
verifiedis true when the team verified the brand officially and filled in its data.Related brands
Parent, subsidiary, former name, each with its slug so you can read its record.
Try identity data
Pick a brand and go through its record field by field: what has a value and what came back null, what each field means, and its colours with a text colour that reads on them.
Thmanyah
16 of 25 fields have a value
colors
The logo’s colours from one source: the editor, else the guidelines, else extracted. Up to 8.
[
{
"hex": "#000000",
"role": "primary",
"name": {
"ar": null,
"en": null
},
"source": "extracted"
}
]Colours
- #000000primary
colorsSource: extracted from the file
The fields
| Field | What it holds |
|---|---|
name | The name in both languages. ar is always there; en may be null. |
aliases | Other names the brand is known by, up to 12. |
description | A short description in both languages, if written. |
country and city | The two-letter country code, and the city. |
category and industry | Sector and industry, each with a slug and a name. |
entityType | The kind of organisation: government, company, university… |
website and social | The website, and accounts by platform name. |
verified | true when the brand is officially verified. |
colors and colorsSource | The logo’s colours, and where they came from. |
identityColors | The identity’s colours as its guidelines set them, with RGB, CMYK and Pantone. |
fonts | The identity’s fonts. |
guidelines | Published guidelines, usually PDF. |
related | Related brands: parent, subsidiary, former name… |
How to use it
- 01
Get a key
Open a developer account in the console and make a key. The free plan is enough to start, and the key stays on your server in an environment variable.
- 02
Read the record when you need it
When a user opens the brand, not for every brand in a list: a card only needs the list.
- 03
Show what is there
Any field may be missing. Hide what came back
nullinstead of writing «not available» everywhere. - 04
Pick the main colour
The colour whose
roleisprimary, else the first, and a text colour that reads on it by contrast. - 05
Read again when it changes
Keep
updatedAtwith the record, and read again when the list shows a newer one.
Reading the record
curl -sS 'https://new.wasmenia.com/api/v1/brands/stc' \ -H "Authorization: Bearer $WASMENIA_API_KEY"The main colour and its text colour
brand-swatch.js
/** The brand's main colour and a text colour that reads on it. */export function brandSwatch(brand) { const main = brand.colors.find((c) => c.role === 'primary') ?? brand.colors[0]; if (!main) return null; // no colours: keep your own return { background: main.hex, text: readableOn(main.hex), source: brand.colorsSource };}/** White or near-black, whichever contrasts more with `hex` (WCAG). */function readableOn(hex) { const [r, g, b] = [1, 3, 5].map((i) => { const c = parseInt(hex.slice(i, i + 2), 16) / 255; return c <= 0.03928 ? c / 12.92 : ((c + 0.055) / 1.055) ** 2.4; }); const l = 0.2126 * r + 0.7152 * g + 0.0722 * b; return 1.05 / (l + 0.05) >= (l + 0.05) / 0.05 ? '#ffffff' : '#111111';}Questions
Are the colours exact?
colorsSource says: editor set by an editor, guidelines from the identity guidelines, extracted taken from the file automatically and approximate. For print, use identityColors.
What is the difference between logo and identity colours?
colors are the logo’s own colours. identityColors are the whole identity’s colours as its guidelines set them, and may include colours the logo doesn’t use.
Why is the English name sometimes empty?
Some brands have no English name, or it hasn’t been written yet. Show the Arabic name when en is empty.
How do I know a brand is official?
verified is true when the team verified the brand and filled in its data. It doesn’t mean the brand runs its page itself.
Use cases that use it
Employer at sign-up
A picker that suggests brands as people type, instead of a free text field.
Brand directories
A list filtered by country, sector and type, with a card for each brand.
Design and slide tools
Insert a brand’s logo in its colours, with the right file for the background.
AI agents
Two tools an agent calls over HTTP: search by name, and read the record.
The whole record
Every field with its type and meaning, and what its absence means.