{"openapi": "3.1.0", "info": {"title": "Brand Finder API", "version": "1.0.0", "description": "Top 10 brands in each category, built from ListeningMind search data. The Korean edition breaks them down by generation and gender; the Japanese and US editions by category only. For the top 10 brands in 65 categories (64 in the US), it shows search volume, change, rising momentum, 3-year change, and how AI recognises their Distinctive Brand Assets (DBA). Workflow: get_brand_profile → build_brand_profile → get_brand_profile → list_profile_jobs", "contact": {"email": "m-support@listeningmind.com"}}, "servers": [{"url": "https://daas-brand.listeningmind.ai"}], "paths": {"/api/profile": {"get": {"operationId": "get_brand_profile", "summary": "Read brand asset profile", "description": "Returns the stored brand asset profile for one databank brand: {state: done, profile} with search salience of brand plus asset words, SERP / AI Overview evidence lines, distinctive brand asset candidates (colour, shape, logo, character, celebrity, tagline, sound, font, pack), AI answer test results (Gemini and OpenAI, not consumers), synthetic panel and Taste Finder link when they exist, competitors, credits and build time. Other states: running {step}, none (never built), error, unknown (brand not in the databank, HTTP 404). Free. Repeat while state is running. Read only, free. Waits up to about 45 s for 'state' to reach done, error, none, unknown; call again if not done. Usually followed by: build_brand_profile.", "tags": ["read"], "x-lm-kind": "read", "x-lm-cost": "free", "responses": {"200": {"description": "Success"}, "default": {"description": "Error (application/problem+json or JSON with detail)"}}, "parameters": [{"name": "cc", "in": "query", "required": true, "description": "Market of the databank: kr, jp or us. On the /jp/ and /us/ pages it is taken from the URL.", "schema": {"type": "string", "enum": ["kr", "jp", "us"], "default": "kr"}}, {"name": "g", "in": "query", "required": true, "description": "Genre id the brand is listed under. KR ids: apparel, shoes, bag, watch, outdoor, athleisure, makeup, skincare, hair, hairneeds, aesthetic, supplement, drink, detergent, pet, coffee, burger, chicken, bakery, cvs, ramen, delivery, beer, soju, whisky, wine, trad, carmodel, carbrand, ev, usedcar, mobility, music, kpop, game, ott, character, travel, hotel, ota, airline, sports, shopping, interest, seniortopic, hearing, healthdev, parkgolf, golf, homeshop, securities, aichat, aichar, aitool, aitopic, collab, hr, hrm, erp, crm, esign, pg, cloud, smb. JP adds gyudon, sushi, sake, chuhai, jidol, vtuber (no hairneeds, chicken, soju, trad, parkgolf); US adds chicken, pizza, fastcasual, seltzer, spirits (no hairneeds, soju, trad, parkgolf).", "schema": {"type": "string"}}, {"name": "n", "in": "query", "required": true, "description": "Brand name exactly as listed in that market's databank, in the local script (e.g. 유니클로 for kr, ユニクロ for jp, Uniqlo for us).", "schema": {"type": "string"}}]}, "post": {"operationId": "build_brand_profile", "summary": "Build brand asset profile", "description": "Builds the asset profile for a databank brand in the background: brand plus asset-word search volumes, stored SERP and AI Overview evidence, LLM extraction of asset candidates tied to evidence numbers, and a repeated AI answer test on Gemini and OpenAI. Returns {state: running} (HTTP 202), or the stored profile when one exists and force is false. Poll get_brand_profile. About 100 Data API credits plus several LLM calls, 1-2 minutes. Only brands listed in the databank are accepted. Visitors who are not signed in can build too (the app caps visitor builds at 5 per IP and 40 in total per hour; over that it answers HTTP 429 {state: busy}). Rebuilding a stored profile with force=true is for signed-in members only. Spends ListeningMind Data API credits or paid model calls. Over MCP a person approves it first (you get a confirm link); in the browser the page asks the person. Cost: free; built on first open for anyone and cached for everyone (visitor builds capped per IP and per hour). Time: 1-2 minutes. Usually followed by: get_brand_profile.", "tags": ["run"], "x-lm-kind": "run", "x-lm-cost": "free; built on first open for anyone and cached for everyone (visitor builds capped per IP and per hour)", "responses": {"200": {"description": "Success"}, "default": {"description": "Error (application/problem+json or JSON with detail)"}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"cc": {"type": "string", "description": "Market of the databank: kr, jp or us. On the /jp/ and /us/ pages it is taken from the URL.", "enum": ["kr", "jp", "us"], "default": "kr"}, "g": {"type": "string", "description": "Genre id the brand is listed under. KR ids: apparel, shoes, bag, watch, outdoor, athleisure, makeup, skincare, hair, hairneeds, aesthetic, supplement, drink, detergent, pet, coffee, burger, chicken, bakery, cvs, ramen, delivery, beer, soju, whisky, wine, trad, carmodel, carbrand, ev, usedcar, mobility, music, kpop, game, ott, character, travel, hotel, ota, airline, sports, shopping, interest, seniortopic, hearing, healthdev, parkgolf, golf, homeshop, securities, aichat, aichar, aitool, aitopic, collab, hr, hrm, erp, crm, esign, pg, cloud, smb. JP adds gyudon, sushi, sake, chuhai, jidol, vtuber (no hairneeds, chicken, soju, trad, parkgolf); US adds chicken, pizza, fastcasual, seltzer, spirits (no hairneeds, soju, trad, parkgolf)."}, "n": {"type": "string", "description": "Brand name exactly as listed in that market's databank, in the local script (e.g. 유니클로 for kr, ユニクロ for jp, Uniqlo for us)."}, "force": {"type": "boolean", "description": "Rebuild even when a stored profile exists (spends credits and LLM calls again). false returns the stored profile unchanged. A rebuild uses fresh LLM and AI-answer samples, so assets and AI test scores can differ from the previous build. Signed-in members only.", "default": false}}, "required": ["cc", "g", "n"]}}}}}}, "/api/profile/visuals": {"post": {"operationId": "refresh_brand_visuals", "summary": "Refresh brand visuals", "description": "Looks up again the logo, person photos and colours of a stored brand asset profile from public sources (Wikidata, Wikimedia Commons, the official site) with one LLM check. Returns {state: running} (HTTP 202), or {state: busy} (HTTP 429; visitors are capped at 20 per IP per hour). Poll get_brand_visuals. Free: no Data API credits, and no Lima is charged. Spends ListeningMind Data API credits or paid model calls. Over MCP a person approves it first (you get a confirm link); in the browser the page asks the person. Cost: free (no Data API credits; Wikidata, Commons and the official site plus one LLM check; visitors capped at 20 per IP per hour). Usually followed by: get_brand_visuals.", "tags": ["run"], "x-lm-kind": "run", "x-lm-cost": "free (no Data API credits; Wikidata, Commons and the official site plus one LLM check; visitors capped at 20 per IP per hour)", "responses": {"200": {"description": "Success"}, "default": {"description": "Error (application/problem+json or JSON with detail)"}}, "requestBody": {"required": true, "content": {"application/json": {"schema": {"type": "object", "properties": {"cc": {"type": "string", "description": "Market of the databank: kr, jp or us. On the /jp/ and /us/ pages it is taken from the URL.", "enum": ["kr", "jp", "us"], "default": "kr"}, "g": {"type": "string", "description": "Genre id the brand is listed under. KR ids: apparel, shoes, bag, watch, outdoor, athleisure, makeup, skincare, hair, hairneeds, aesthetic, supplement, drink, detergent, pet, coffee, burger, chicken, bakery, cvs, ramen, delivery, beer, soju, whisky, wine, trad, carmodel, carbrand, ev, usedcar, mobility, music, kpop, game, ott, character, travel, hotel, ota, airline, sports, shopping, interest, seniortopic, hearing, healthdev, parkgolf, golf, homeshop, securities, aichat, aichar, aitool, aitopic, collab, hr, hrm, erp, crm, esign, pg, cloud, smb. JP adds gyudon, sushi, sake, chuhai, jidol, vtuber (no hairneeds, chicken, soju, trad, parkgolf); US adds chicken, pizza, fastcasual, seltzer, spirits (no hairneeds, soju, trad, parkgolf)."}, "n": {"type": "string", "description": "Brand name exactly as listed in that market's databank, in the local script (e.g. 유니클로 for kr, ユニクロ for jp, Uniqlo for us)."}}, "required": ["cc", "g", "n"]}}}}}, "get": {"operationId": "get_brand_visuals", "summary": "Read brand visuals refresh", "description": "State and result of refresh_brand_visuals for one brand: {state: none|running|done|error, result}. Free. Repeat while state is running. Read only, free. Waits up to about 45 s for 'state' to reach done, error, none; call again if not done.", "tags": ["read"], "x-lm-kind": "read", "x-lm-cost": "free", "responses": {"200": {"description": "Success"}, "default": {"description": "Error (application/problem+json or JSON with detail)"}}, "parameters": [{"name": "cc", "in": "query", "required": true, "description": "Market of the databank: kr, jp or us. On the /jp/ and /us/ pages it is taken from the URL.", "schema": {"type": "string", "enum": ["kr", "jp", "us"], "default": "kr"}}, {"name": "g", "in": "query", "required": true, "description": "Genre id the brand is listed under. KR ids: apparel, shoes, bag, watch, outdoor, athleisure, makeup, skincare, hair, hairneeds, aesthetic, supplement, drink, detergent, pet, coffee, burger, chicken, bakery, cvs, ramen, delivery, beer, soju, whisky, wine, trad, carmodel, carbrand, ev, usedcar, mobility, music, kpop, game, ott, character, travel, hotel, ota, airline, sports, shopping, interest, seniortopic, hearing, healthdev, parkgolf, golf, homeshop, securities, aichat, aichar, aitool, aitopic, collab, hr, hrm, erp, crm, esign, pg, cloud, smb. JP adds gyudon, sushi, sake, chuhai, jidol, vtuber (no hairneeds, chicken, soju, trad, parkgolf); US adds chicken, pizza, fastcasual, seltzer, spirits (no hairneeds, soju, trad, parkgolf).", "schema": {"type": "string"}}, {"name": "n", "in": "query", "required": true, "description": "Brand name exactly as listed in that market's databank, in the local script (e.g. 유니클로 for kr, ユニクロ for jp, Uniqlo for us).", "schema": {"type": "string"}}]}}, "/api/profile/jobs": {"get": {"operationId": "list_profile_jobs", "summary": "Profile build jobs", "description": "Lists profile builds started since the server last restarted, keyed by market/genre/hash: {state, step, started, ended, cc, g, n, error}. At most 2 builds run at the same time. Free. Read only, free.", "tags": ["read"], "x-lm-kind": "read", "x-lm-cost": "free", "responses": {"200": {"description": "Success"}, "default": {"description": "Error (application/problem+json or JSON with detail)"}}}}}, "externalDocs": {"url": "https://daas-brand.listeningmind.ai/agents.md", "description": "Agent guide"}}