Hlix Brand Kit API
The brand-kit API from Hlix — 3 operation(s) for brand-kit.
The brand-kit API from Hlix — 3 operation(s) for brand-kit.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/hlix-ai:hlix-ai-brand-kit-api"
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
description: Explore the Hlix API for projects, agent teams, and delivery workflows. Authenticate with `x-api-key` and select a Workspace with `X-Organization-Id`. Session-only operations require a signed-in user session. Authentication setup.
title: reference Brand Kit API
version: 1.0.0
servers:
- url: https://server.hlix.ai
description: API server
security:
- apiKey: []
- sessionCookie: []
tags:
- name: brand-kit
paths:
/v1/api/brand-kit:
get:
operationId: getWorkspaceBrandKit
parameters:
- $ref: '#/components/parameters/OrganizationId'
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/WorkspaceBrandKitState'
description: Workspace brand draft and published identity
'400':
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
description: The request named no active organization.
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
description: No valid session or API key.
'403':
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
description: Workspace access denied
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
description: The resource does not exist, or the caller is a task-scoped credential and this endpoint is outside its allowlist.
summary: Read workspace brand settings
tags:
- brand-kit
put:
operationId: saveWorkspaceBrandKit
parameters:
- $ref: '#/components/parameters/OrganizationId'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/SaveBrandKit'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/WorkspaceBrandKitState'
description: Workspace brand draft and published identity
'400':
content:
application/json:
schema:
anyOf:
- $ref: '#/components/schemas/ValidationError'
- $ref: '#/components/schemas/ApiError'
description: The JSON body failed schema validation (`ValidationError`), or the request named no active organization (`ApiError`).
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
description: No valid session or API key.
'403':
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
description: Workspace access denied
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
description: The resource does not exist, or the caller is a task-scoped credential and this endpoint is outside its allowlist.
summary: Save a brand draft
tags:
- brand-kit
/v1/api/brand-kit/extract:
post:
operationId: extractWorkspaceBrandKit
parameters:
- $ref: '#/components/parameters/OrganizationId'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ExtractBrandKit'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/WorkspaceBrandKitState'
description: Workspace brand draft and published identity
'400':
content:
application/json:
schema:
anyOf:
- $ref: '#/components/schemas/ValidationError'
- $ref: '#/components/schemas/ApiError'
description: The JSON body failed schema validation (`ValidationError`), or the request named no active organization (`ApiError`).
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
description: No valid session or API key.
'403':
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
description: Workspace access denied
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
description: The resource does not exist, or the caller is a task-scoped credential and this endpoint is outside its allowlist.
'502':
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
description: Extraction unavailable
summary: Extract a draft brand from one website URL
tags:
- brand-kit
/v1/api/brand-kit/publish:
post:
operationId: publishWorkspaceBrandKit
parameters:
- $ref: '#/components/parameters/OrganizationId'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PublishBrandKit'
required: true
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/WorkspaceBrandKitState'
description: Workspace brand draft and published identity
'400':
content:
application/json:
schema:
anyOf:
- $ref: '#/components/schemas/ValidationError'
- $ref: '#/components/schemas/ApiError'
description: The JSON body failed schema validation (`ValidationError`), or the request named no active organization (`ApiError`).
'401':
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
description: No valid session or API key.
'403':
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
description: Workspace access denied
'404':
content:
application/json:
schema:
$ref: '#/components/schemas/ApiError'
description: The resource does not exist, or the caller is a task-scoped credential and this endpoint is outside its allowlist.
summary: Publish a reviewed brand and portal
tags:
- brand-kit
components:
schemas:
ApiError:
additionalProperties: {}
properties:
error:
type: string
required:
- error
type: object
WorkspaceBrandKitState:
properties:
draft:
anyOf:
- properties:
colors:
properties:
accent:
anyOf:
- pattern: ^#[0-9a-fA-F]{6}$
type: string
- type: 'null'
background:
anyOf:
- pattern: ^#[0-9a-fA-F]{6}$
type: string
- type: 'null'
primary:
anyOf:
- pattern: ^#[0-9a-fA-F]{6}$
type: string
- type: 'null'
text:
anyOf:
- pattern: ^#[0-9a-fA-F]{6}$
type: string
- type: 'null'
required:
- primary
- accent
- background
- text
type: object
description:
anyOf:
- maxLength: 2000
type: string
- type: 'null'
extractedAt:
anyOf:
- format: date-time
pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
type: string
- type: 'null'
headerMode:
enum:
- logo-and-name
- logo-only
type: string
iconTone:
anyOf:
- enum:
- light
- dark
- solid
type: string
- type: 'null'
iconUrl:
anyOf:
- format: uri
maxLength: 2048
type: string
- type: 'null'
logoTone:
anyOf:
- enum:
- light
- dark
- solid
type: string
- type: 'null'
logoUrl:
anyOf:
- format: uri
maxLength: 2048
type: string
- type: 'null'
name:
maxLength: 120
minLength: 1
type: string
provenance:
additionalProperties:
enum:
- observed
- inferred
- edited
type: string
default: {}
propertyNames:
maxLength: 80
type: string
type: object
sourceUrl:
anyOf:
- format: uri
maxLength: 2048
type: string
- type: 'null'
tagline:
anyOf:
- maxLength: 240
type: string
- type: 'null'
typography:
properties:
body:
anyOf:
- maxLength: 100
pattern: ^[\p{L}\p{N} _.,'-]+$
type: string
- type: 'null'
heading:
anyOf:
- maxLength: 100
pattern: ^[\p{L}\p{N} _.,'-]+$
type: string
- type: 'null'
required:
- heading
- body
type: object
voice:
anyOf:
- maxLength: 2000
type: string
- type: 'null'
warnings:
items:
maxLength: 300
type: string
maxItems: 12
type: array
required:
- name
- tagline
- logoUrl
- colors
- typography
- voice
- description
- sourceUrl
- extractedAt
- warnings
type: object
- type: 'null'
portalEnabled:
type: boolean
published:
anyOf:
- properties:
colors:
properties:
accent:
anyOf:
- pattern: ^#[0-9a-fA-F]{6}$
type: string
- type: 'null'
background:
anyOf:
- pattern: ^#[0-9a-fA-F]{6}$
type: string
- type: 'null'
primary:
anyOf:
- pattern: ^#[0-9a-fA-F]{6}$
type: string
- type: 'null'
text:
anyOf:
- pattern: ^#[0-9a-fA-F]{6}$
type: string
- type: 'null'
required:
- primary
- accent
- background
- text
type: object
description:
anyOf:
- maxLength: 2000
type: string
- type: 'null'
extractedAt:
anyOf:
- format: date-time
pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
type: string
- type: 'null'
headerMode:
enum:
- logo-and-name
- logo-only
type: string
iconTone:
anyOf:
- enum:
- light
- dark
- solid
type: string
- type: 'null'
iconUrl:
anyOf:
- format: uri
maxLength: 2048
type: string
- type: 'null'
logoTone:
anyOf:
- enum:
- light
- dark
- solid
type: string
- type: 'null'
logoUrl:
anyOf:
- format: uri
maxLength: 2048
type: string
- type: 'null'
name:
maxLength: 120
minLength: 1
type: string
provenance:
additionalProperties:
enum:
- observed
- inferred
- edited
type: string
default: {}
propertyNames:
maxLength: 80
type: string
type: object
sourceUrl:
anyOf:
- format: uri
maxLength: 2048
type: string
- type: 'null'
tagline:
anyOf:
- maxLength: 240
type: string
- type: 'null'
typography:
properties:
body:
anyOf:
- maxLength: 100
pattern: ^[\p{L}\p{N} _.,'-]+$
type: string
- type: 'null'
heading:
anyOf:
- maxLength: 100
pattern: ^[\p{L}\p{N} _.,'-]+$
type: string
- type: 'null'
required:
- heading
- body
type: object
voice:
anyOf:
- maxLength: 2000
type: string
- type: 'null'
warnings:
items:
maxLength: 300
type: string
maxItems: 12
type: array
required:
- name
- tagline
- logoUrl
- colors
- typography
- voice
- description
- sourceUrl
- extractedAt
- warnings
type: object
- type: 'null'
publishedAt:
type:
- string
- 'null'
revision:
maximum: 9007199254740991
minimum: 0
type: integer
required:
- draft
- published
- portalEnabled
- publishedAt
- revision
type: object
PublishBrandKit:
properties:
draft:
properties:
colors:
properties:
accent:
anyOf:
- pattern: ^#[0-9a-fA-F]{6}$
type: string
- type: 'null'
background:
anyOf:
- pattern: ^#[0-9a-fA-F]{6}$
type: string
- type: 'null'
primary:
anyOf:
- pattern: ^#[0-9a-fA-F]{6}$
type: string
- type: 'null'
text:
anyOf:
- pattern: ^#[0-9a-fA-F]{6}$
type: string
- type: 'null'
required:
- primary
- accent
- background
- text
type: object
description:
anyOf:
- maxLength: 2000
type: string
- type: 'null'
extractedAt:
anyOf:
- format: date-time
pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
type: string
- type: 'null'
headerMode:
enum:
- logo-and-name
- logo-only
type: string
iconTone:
anyOf:
- enum:
- light
- dark
- solid
type: string
- type: 'null'
iconUrl:
anyOf:
- format: uri
maxLength: 2048
type: string
- type: 'null'
logoTone:
anyOf:
- enum:
- light
- dark
- solid
type: string
- type: 'null'
logoUrl:
anyOf:
- format: uri
maxLength: 2048
type: string
- type: 'null'
name:
maxLength: 120
minLength: 1
type: string
provenance:
additionalProperties:
enum:
- observed
- inferred
- edited
type: string
default: {}
propertyNames:
maxLength: 80
type: string
type: object
sourceUrl:
anyOf:
- format: uri
maxLength: 2048
type: string
- type: 'null'
tagline:
anyOf:
- maxLength: 240
type: string
- type: 'null'
typography:
properties:
body:
anyOf:
- maxLength: 100
pattern: ^[\p{L}\p{N} _.,'-]+$
type: string
- type: 'null'
heading:
anyOf:
- maxLength: 100
pattern: ^[\p{L}\p{N} _.,'-]+$
type: string
- type: 'null'
required:
- heading
- body
type: object
voice:
anyOf:
- maxLength: 2000
type: string
- type: 'null'
warnings:
items:
maxLength: 300
type: string
maxItems: 12
type: array
required:
- name
- tagline
- logoUrl
- colors
- typography
- voice
- description
- sourceUrl
- extractedAt
- warnings
type: object
portalEnabled:
type: boolean
required:
- draft
- portalEnabled
type: object
ExtractBrandKit:
properties:
url:
format: uri
maxLength: 2048
type: string
required:
- url
type: object
ValidationError:
properties:
error:
properties:
message:
type: string
name:
type: string
required:
- name
- message
type: object
success:
const: false
type: boolean
required:
- success
- error
type: object
SaveBrandKit:
properties:
draft:
properties:
colors:
properties:
accent:
anyOf:
- pattern: ^#[0-9a-fA-F]{6}$
type: string
- type: 'null'
background:
anyOf:
- pattern: ^#[0-9a-fA-F]{6}$
type: string
- type: 'null'
primary:
anyOf:
- pattern: ^#[0-9a-fA-F]{6}$
type: string
- type: 'null'
text:
anyOf:
- pattern: ^#[0-9a-fA-F]{6}$
type: string
- type: 'null'
required:
- primary
- accent
- background
- text
type: object
description:
anyOf:
- maxLength: 2000
type: string
- type: 'null'
extractedAt:
anyOf:
- format: date-time
pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d:[0-5]\d(?:\.\d+)?(?:Z))$
type: string
- type: 'null'
headerMode:
enum:
- logo-and-name
- logo-only
type: string
iconTone:
anyOf:
- enum:
- light
- dark
- solid
type: string
- type: 'null'
iconUrl:
anyOf:
- format: uri
maxLength: 2048
type: string
- type: 'null'
logoTone:
anyOf:
- enum:
- light
- dark
- solid
type: string
- type: 'null'
logoUrl:
anyOf:
- format: uri
maxLength: 2048
type: string
- type: 'null'
name:
maxLength: 120
minLength: 1
type: string
provenance:
additionalProperties:
enum:
- observed
- inferred
- edited
type: string
default: {}
propertyNames:
maxLength: 80
type: string
type: object
sourceUrl:
anyOf:
- format: uri
maxLength: 2048
type: string
- type: 'null'
tagline:
anyOf:
- maxLength: 240
type: string
- type: 'null'
typography:
properties:
body:
anyOf:
- maxLength: 100
pattern: ^[\p{L}\p{N} _.,'-]+$
type: string
- type: 'null'
heading:
anyOf:
- maxLength: 100
pattern: ^[\p{L}\p{N} _.,'-]+$
type: string
- type: 'null'
required:
- heading
- body
type: object
voice:
anyOf:
- maxLength: 2000
type: string
- type: 'null'
warnings:
items:
maxLength: 300
type: string
maxItems: 12
type: array
required:
- name
- tagline
- logoUrl
- colors
- typography
- voice
- description
- sourceUrl
- extractedAt
- warnings
type: object
required:
- draft
type: object
parameters:
OrganizationId:
description: The workspace (organization) to act in. Omitted, the session's active organization is used.
in: header
name: X-Organization-Id
required: false
schema:
type: string
example: YOUR_WORKSPACE_ID
securitySchemes:
apiKey:
description: An API key issued through `/v1/api/auth/api-key/*`. Browser clients can use their session cookie instead.
in: header
name: x-api-key
type: apiKey
sessionCookie:
description: The complete session Cookie header issued by sign-in at the selected API host. Cookie names vary by hosting region and environment; preserve the issued name and value. Browsers send these HTTP-only cookies automatically. Session-only operations require this user session and do not accept an API key.
in: header
name: Cookie
type: apiKey