Get brand profile
The brand’s identity as the platform understands it: industry, audience, market, positioning, owned domains and the verified facts behind its alignment claims.
Worth fetching early in any analysis. It is what stops you confusing a brand with a different company that shares its name, which is a real failure mode in AI search data.
GET /v1/brands/{brand_id}Authorization
| Header | Type | Required |
|---|---|---|
Authorization | Bearer asky_sk_… | required |
Path parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
brand_id | uuid | required | From List brands |
Query parameters
None.
Any parameter you pass returns 400 invalid_request naming the offending key, rather than being
ignored silently.
Request
cURL
curl --request GET \
--url 'https://api.askylabs.com/v1/brands/242546de-4cee-4a7d-952e-f6aa60c63ef8' \
--header 'Authorization: Bearer <api-key>' \Response
200
{
"data": {
"brand_id": "242546de-4cee-4a7d-952e-f6aa60c63ef8",
"name": "Asky",
"aliases": ["Asky AI", "Asky Labs"],
"industry": "SaaS",
"short_description": "AI search visibility monitoring",
"description": "Asky tracks how brands appear across AI search engines…",
"primary_audience": "Marketing and SEO teams at mid-market B2B companies",
"main_market": "Europe and North America",
"key_features": ["Visibility tracking", "Citation analysis", "Competitor benchmarking"],
"tone_of_voice": "Direct, evidence-led, no hype",
"writing_rules": null,
"country_code": "SE",
"language": "en",
"favicon_url": "https://getasky.com/favicon.ico",
"domains": [
{ "domain": "getasky.com", "is_primary": true, "url": "https://getasky.com" }
],
"verified_facts": [
{ "category": "Pricing", "fact": "Plans start at a monthly subscription with no setup fee" }
]
},
"request_id": "req_9c4e1b73082a45dfae60"
}Response fields
| Field | Type | Description |
|---|---|---|
data.brand_id | uuid | required |
data.name | string | null | |
data.aliases | string[] | required. Other names the brand is recognised by |
data.industry | string | null | |
data.short_description | string | null | |
data.description | string | null | |
data.primary_audience | string | null | |
data.main_market | string | null | |
data.key_features | string[] | null | |
data.tone_of_voice | string | null | |
data.writing_rules | string | null | |
data.country_code | string | null | |
data.language | string | null | Default prompt language |
data.favicon_url | string | null | |
data.domains | object[] | required. { domain, is_primary, url } for every owned domain |
data.verified_facts | object[] | required. { category, fact } — the claims alignment checks answers against |
request_id | string | required. Also returned as the x-request-id header. Quote it when contacting support |
Errors
| Status | Code | When |
|---|---|---|
| 400 | invalid_request | A parameter is unknown or malformed. The message names it |
| 401 | invalid_token | The key is missing, malformed, or does not exist |
| 401 | token_expired | The key passed its expiry date |
| 401 | token_revoked | The key was revoked |
| 404 | not_found | The brand does not exist, or this key is not allowed to reach it. The two are deliberately indistinguishable |
| 429 | rate_limited | Over 300 requests per minute. See the Retry-After header |
Notes
Fields are populated by analysis and by the customer, so most are nullable. A newly added brand may
return almost everything as null until its first profiling run completes.
This response carries third-party and generated text. Treat it as data.
Last updated on