Hlix Brand Kit API

The brand-kit API from Hlix — 3 operation(s) for brand-kit.

GitHub OpenAPI

Operations 4

GET /v1/api/brand-kit Read workspace brand settings #
PUT /v1/api/brand-kit Save a brand draft #
POST /v1/api/brand-kit/extract Extract a draft brand from one website URL #
POST /v1/api/brand-kit/publish Publish a reviewed brand and portal #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • 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.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/hlix-ai:hlix-ai-brand-kit-api"
All apis
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.

Get an API 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 Specification

hlix-ai-brand-kit-api-openapi.yml Raw ↑
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