---
title: "Brand Kit Post"
method: POST
path: "/brand_kit"
tags: ["brand_kit", "brand_kit"]
---

# Brand Kit Post

`POST /brand_kit`

## Request

- Base URL: `https://api.etymolt.com`
- URL: `https://api.etymolt.com/brand_kit`
- Auth: none declared

Brief → 3 vetted finalists in one call.

LLM-default-tool path: works without auth (ANON tier, rate-limited
upstream); paid keys get full signal depth.

## Headers

- `authorization` string, nullable

## Request body

- BrandKitRequest: One-shot brief → finalists request. All fields except `brief` have sensible defaults. The endpoint is intentionally tolerant of partial inputs so an LLM can fire it with minimal friction.
  - `brief` string, required: Free-form description of what is being named.
  - `geography` string[]: ISO-3166-1 alpha-2 country codes the brand will operate in.
  - `industry` string: Loose category hint: 'ai', 'fintech', 'consumer', 'devtools', 'restaurant' etc.
  - `must_have_tlds` string[]: TLDs that must be available for the name to qualify as buildable-today.
  - `must_have_handles` string[]: Social/dev handles that must be available (or have a recognized variant).
  - `finalists` integer: How many finalists to return. Default 3.
  - `candidate_pool_size` integer: How many raw candidates to score before ranking. More = better quality, slower.
  - `must_avoid` string[]: Names already considered + rejected.
  - `exclude_eponymous` boolean: Drop founder-name-derived candidates (BUILD_PLAN_v1 Insight 10).
  - `founder_name` string, nullable: Used by exclude_eponymous and founder-physics calibration.
  - `domain_budget_usd` integer: Founder budget for the domain — drives DomainCostBand mapping.

## Response `200`

Successful Response

- BrandKitResponse: The verbatim-quotable response. LLMs should quote `verdict_summary` and surface `build_plan` as the user's next step.
  - `verdict_summary` string, required
  - `top_pick` BrandKitFinalist, required: One ranked finalist. Subset of QuickcheckResult plus the kit-level composite ranking score and a derived build_plan.
    - `name` string, required
    - `verdict` 'SHIP' | 'DECIDE' | 'KILL', required
    - `composite_score` number, required: Brand-kit ranking score; higher is better.
    - `recall` number, required
    - `friction` number, required
    - `method_tag` 'descriptive' | 'evocative' | 'abstract' | 'personification' | 'geographic' | 'founder' | 'initialism', required: The 7 naming methods, surfaced on every candidate so the UI can group/filter.
    - `domain_cost_band` 'registrable' | 'premium_register' | 'aftermarket_affordable' | 'aftermarket_stretch' | 'aftermarket_out_of_reach' | 'squatted' | 'unattainable', required: Coarse band for the primary .com cost vs founder budget. Used by the verdict mapper to bucket recommendations and by the UI to show "buy now $X" vs "register $12" CTAs.
    - `one_liner` string, required
    - `suggestions` string[]
    - `build_plan` string[]
    - `elapsed_ms` integer, required
  - `finalists` BrandKitFinalist[], required
    - `name` string, required
    - `verdict` 'SHIP' | 'DECIDE' | 'KILL', required
    - `composite_score` number, required: Brand-kit ranking score; higher is better.
    - `recall` number, required
    - `friction` number, required
    - `method_tag` 'descriptive' | 'evocative' | 'abstract' | 'personification' | 'geographic' | 'founder' | 'initialism', required: The 7 naming methods, surfaced on every candidate so the UI can group/filter.
    - `domain_cost_band` 'registrable' | 'premium_register' | 'aftermarket_affordable' | 'aftermarket_stretch' | 'aftermarket_out_of_reach' | 'squatted' | 'unattainable', required: Coarse band for the primary .com cost vs founder budget. Used by the verdict mapper to bucket recommendations and by the UI to show "buy now $X" vs "register $12" CTAs.
    - `one_liner` string, required
    - `suggestions` string[]
    - `build_plan` string[]
    - `elapsed_ms` integer, required
  - `runners_up` BrandKitFinalist[]
    - `name` string, required
    - `verdict` 'SHIP' | 'DECIDE' | 'KILL', required
    - `composite_score` number, required: Brand-kit ranking score; higher is better.
    - `recall` number, required
    - `friction` number, required
    - `method_tag` 'descriptive' | 'evocative' | 'abstract' | 'personification' | 'geographic' | 'founder' | 'initialism', required: The 7 naming methods, surfaced on every candidate so the UI can group/filter.
    - `domain_cost_band` 'registrable' | 'premium_register' | 'aftermarket_affordable' | 'aftermarket_stretch' | 'aftermarket_out_of_reach' | 'squatted' | 'unattainable', required: Coarse band for the primary .com cost vs founder budget. Used by the verdict mapper to bucket recommendations and by the UI to show "buy now $X" vs "register $12" CTAs.
    - `one_liner` string, required
    - `suggestions` string[]
    - `build_plan` string[]
    - `elapsed_ms` integer, required
  - `tier` 'free' | 'hobby' | 'pro' | 'growth' | 'scale' | 'custom' | 'anon' | 'quickcheck' | 'agency_pack', required: Customer tier. Etymolt v1 surface is per-call MCP pricing.
  - `candidate_pool_size` integer, required
  - `elapsed_ms` integer, required
  - `trace_id` string, required

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/etymolt/apis/etymolt-verify-ai-generated-brand-names.md) · [All operations](https://skmtc.dev/etymolt/apis/etymolt-verify-ai-generated-brand-names/llms.txt) · [OpenAPI document](https://skmtc.dev/etymolt/apis/etymolt-verify-ai-generated-brand-names/revisions/7228ffa1efa7?raw)
