Hellou AI Knowledge Base API

The Knowledge Base API from Hellou AI — 4 operation(s) for knowledge base.

GitHub OpenAPI

Operations 9

GET /api/v1/accounts/{account_id}/kb_setting Get the knowledge-base setting #
POST /api/v1/accounts/{account_id}/kb_setting Create the knowledge-base setting #
DELETE /api/v1/accounts/{account_id}/kb_setting Delete the knowledge-base setting #
GET /api/v1/accounts/{account_id}/kb_documents List knowledge-base documents #
POST /api/v1/accounts/{account_id}/kb_documents Add a knowledge-base document #
GET /api/v1/accounts/{account_id}/kb_documents/{id} Get a knowledge-base document #
PATCH /api/v1/accounts/{account_id}/kb_documents/{id} Update a knowledge-base document #
DELETE /api/v1/accounts/{account_id}/kb_documents/{id} Delete a knowledge-base document #
POST /api/v1/accounts/{account_id}/kb_documents/{id}/reingest Re-ingest a knowledge-base document #

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/hellou-ai:hellou-ai-knowledge-base-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

hellou-ai-knowledge-base-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: HellouOne Knowledge Base API
  version: 1.0.0
  description: 'The HellouOne REST API: everything the dashboard does, available to your

    own systems — CRMs, bots, BI tools and back-office automation.'
  termsOfService: https://hellou.ai/en/legal/terms/
  contact:
    name: HellouOne support
    email: support@hellou.ai
servers:
- url: https://one.hellou.ai
  description: HellouOne cloud
security:
- userApiKey: []
tags:
- name: Knowledge Base
paths:
  /api/v1/accounts/{account_id}/kb_setting:
    parameters:
    - $ref: '#/components/parameters/account_id'
    get:
      tags:
      - Knowledge Base
      operationId: getKbSetting
      summary: Get the knowledge-base setting
      description: 'Returns the account''s knowledge-base setting: the database and table that ingested

        documents are written to. Answers 404 until one has been created.


        **Administrators only.**


        **Requires feature:** any of `agent_bots`, `native_bots`'
      x-required-feature: agent_bots
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/kb_setting'
        '401':
          $ref: '#/components/responses/unauthorized'
        '403':
          $ref: '#/components/responses/forbidden'
        '404':
          $ref: '#/components/responses/not_found'
    post:
      tags:
      - Knowledge Base
      operationId: createKbSetting
      summary: Create the knowledge-base setting
      description: 'Turns on the account''s knowledge base. The server picks the database and table

        (one table per account in the shared knowledge-base database) and creates the

        table; neither can be chosen through the API. An account has at most one

        setting; creating a second answers 422. The embedding model is fixed to

        `text-embedding-3-small`.


        **Administrators only.**


        **Requires feature:** any of `agent_bots`, `native_bots`'
      x-required-feature: agent_bots
      responses:
        '200':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/kb_setting'
        '401':
          $ref: '#/components/responses/unauthorized'
        '403':
          $ref: '#/components/responses/forbidden'
        '422':
          $ref: '#/components/responses/unprocessable'
    delete:
      tags:
      - Knowledge Base
      operationId: deleteKbSetting
      summary: Delete the knowledge-base setting
      description: 'Removes the setting. The knowledge-base database and its contents are left untouched.


        **Administrators only.**


        **Requires feature:** any of `agent_bots`, `native_bots`'
      x-required-feature: agent_bots
      responses:
        '200':
          description: Deleted. The response has no body.
        '401':
          $ref: '#/components/responses/unauthorized'
        '403':
          $ref: '#/components/responses/forbidden'
        '404':
          $ref: '#/components/responses/not_found'
  /api/v1/accounts/{account_id}/kb_documents:
    parameters:
    - $ref: '#/components/parameters/account_id'
    get:
      tags:
      - Knowledge Base
      operationId: listKbDocuments
      summary: List knowledge-base documents
      description: 'Lists every knowledge-base document in the account, most recently updated first.

        The text `content` is left out; fetch a single document to read it.


        **Administrators only.**


        **Requires feature:** any of `agent_bots`, `native_bots`'
      x-required-feature: agent_bots
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/kb_document'
        '401':
          $ref: '#/components/responses/unauthorized'
        '403':
          $ref: '#/components/responses/forbidden'
    post:
      tags:
      - Knowledge Base
      operationId: createKbDocument
      summary: Add a knowledge-base document
      description: 'Adds a document and queues it for ingestion; it starts as `pending`. Poll the

        document until `status` is `ready` or `failed`.


        - **Manual text** (`source_type: manual`): send `content` as JSON.

        - **Web page** (`source_type: url`): send `source_url` as JSON; the page is fetched during ingestion.

        - **File** (`source_type: file_upload`): send `multipart/form-data` with a `file`

        part (PDF, DOCX, plain text or Markdown, up to 10 MB).


        **Administrators only.**


        **Requires feature:** any of `agent_bots`, `native_bots`'
      x-required-feature: agent_bots
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/kb_document_create_payload'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/kb_document_upload_payload'
      responses:
        '200':
          description: Created and queued for ingestion
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/kb_document'
        '401':
          $ref: '#/components/responses/unauthorized'
        '403':
          $ref: '#/components/responses/forbidden'
        '422':
          $ref: '#/components/responses/unprocessable'
  /api/v1/accounts/{account_id}/kb_documents/{id}:
    parameters:
    - $ref: '#/components/parameters/account_id'
    - name: id
      in: path
      required: true
      description: ID of the document
      schema:
        type: integer
    get:
      tags:
      - Knowledge Base
      operationId: getKbDocument
      summary: Get a knowledge-base document
      description: 'Returns one document, including its text `content`.


        **Administrators only.**


        **Requires feature:** any of `agent_bots`, `native_bots`'
      x-required-feature: agent_bots
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/kb_document_detail'
        '401':
          $ref: '#/components/responses/unauthorized'
        '403':
          $ref: '#/components/responses/forbidden'
        '404':
          $ref: '#/components/responses/not_found'
    patch:
      tags:
      - Knowledge Base
      operationId: updateKbDocument
      summary: Update a knowledge-base document
      description: 'Changes a document. Changing its title, text, category, URL or file queues it

        for ingestion again. Send `multipart/form-data` to replace the file.


        **Administrators only.**


        **Requires feature:** any of `agent_bots`, `native_bots`'
      x-required-feature: agent_bots
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/kb_document_update_payload'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/kb_document_update_payload'
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/kb_document'
        '401':
          $ref: '#/components/responses/unauthorized'
        '403':
          $ref: '#/components/responses/forbidden'
        '404':
          $ref: '#/components/responses/not_found'
        '422':
          $ref: '#/components/responses/unprocessable'
    delete:
      tags:
      - Knowledge Base
      operationId: deleteKbDocument
      summary: Delete a knowledge-base document
      description: 'Deletes the document and, in the background, removes its chunks from the

        knowledge base so your bot stops finding it.


        **Administrators only.**


        **Requires feature:** any of `agent_bots`, `native_bots`'
      x-required-feature: agent_bots
      responses:
        '200':
          description: Deleted. The response has no body.
        '401':
          $ref: '#/components/responses/unauthorized'
        '403':
          $ref: '#/components/responses/forbidden'
        '404':
          $ref: '#/components/responses/not_found'
  /api/v1/accounts/{account_id}/kb_documents/{id}/reingest:
    parameters:
    - $ref: '#/components/parameters/account_id'
    - name: id
      in: path
      required: true
      description: ID of the document
      schema:
        type: integer
    post:
      tags:
      - Knowledge Base
      operationId: reingestKbDocument
      summary: Re-ingest a knowledge-base document
      description: 'Queues the document for ingestion again (for example after a `failed` attempt,

        or to re-fetch a web page). The document returns to `pending`. Answers 422 while

        the document is `processing`.


        **Administrators only.**


        **Requires feature:** any of `agent_bots`, `native_bots`'
      x-required-feature: agent_bots
      responses:
        '200':
          description: Queued
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/kb_document'
        '401':
          $ref: '#/components/responses/unauthorized'
        '403':
          $ref: '#/components/responses/forbidden'
        '404':
          $ref: '#/components/responses/not_found'
        '422':
          description: The document is already being processed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/error_message'
components:
  schemas:
    kb_document_detail:
      description: A knowledge-base document including its text content.
      allOf:
      - $ref: '#/components/schemas/kb_document'
      - type: object
        properties:
          content:
            type:
            - string
            - 'null'
            description: The document text, for a `manual` document.
        required:
        - content
    kb_document:
      type: object
      description: A knowledge-base document and the state of its ingestion.
      properties:
        id:
          type: integer
          description: ID of the document.
        title:
          type: string
        category:
          type: string
          enum:
          - faq
          - document
          - policy
          - other
        source_type:
          type: string
          enum:
          - manual
          - file_upload
          - url
          description: '`manual`: text typed into `content`. `file_upload`: an attached PDF, DOCX,

            plain-text or Markdown file. `url`: a web page fetched from `source_url`.

            '
        status:
          type: string
          enum:
          - pending
          - processing
          - ready
          - failed
          description: 'Ingestion state. A document is `pending` when created or changed, `processing`

            while it is being split and embedded, then `ready` or `failed`

            (see `error_message`).

            '
        error_message:
          type:
          - string
          - 'null'
          description: Why the last ingestion failed, when it did.
        chunk_count:
          type: integer
          description: Number of searchable chunks the document was split into.
        source_url:
          type:
          - string
          - 'null'
          description: The page fetched for a `url` document.
        last_synced_at:
          type:
          - string
          - 'null'
          format: date-time
          description: When the document was last ingested successfully.
        created_at:
          type: string
          format: date-time
        updated_at:
          type: string
          format: date-time
        file:
          description: The attached file, for a `file_upload` document; otherwise `null`.
          oneOf:
          - type: 'null'
          - type: object
            properties:
              filename:
                type: string
              byte_size:
                type: integer
              content_type:
                type:
                - string
                - 'null'
            required:
            - filename
            - byte_size
            - content_type
      required:
      - id
      - title
      - category
      - source_type
      - status
      - error_message
      - chunk_count
      - source_url
      - last_synced_at
      - created_at
      - updated_at
      - file
    kb_document_create_payload:
      type: object
      description: 'Which fields are required depends on `source_type`: `content` for `manual`,

        `source_url` for `url`, and `file` for `file_upload` (send that one as

        `multipart/form-data`).

        '
      properties:
        title:
          type: string
          description: Display title of the document.
        category:
          type: string
          enum:
          - faq
          - document
          - policy
          - other
          default: faq
        source_type:
          type: string
          enum:
          - manual
          - file_upload
          - url
          default: manual
        content:
          type: string
          maxLength: 200000
          description: 'Document text. Required when `source_type` is `manual`. At most 200,000

            characters; longer text gets `422`. Text read from a file or a web page

            has the same limit: over it, ingestion ends `failed`.

            '
        source_url:
          type: string
          format: uri
          description: An `http` or `https` URL to fetch. Required when `source_type` is `url`.
      required:
      - title
    kb_document_upload_payload:
      description: 'Same fields as the JSON body, plus the file. Required for a `file_upload`

        document.

        '
      allOf:
      - $ref: '#/components/schemas/kb_document_create_payload'
      - type: object
        properties:
          file:
            type: string
            format: binary
            description: 'PDF, DOCX, plain text or Markdown (`application/pdf`,

              `application/vnd.openxmlformats-officedocument.wordprocessingml.document`,

              `text/plain`, `text/markdown`), up to 10 MB.

              '
    kb_document_update_payload:
      type: object
      description: 'Send only the fields to change. Changing `title`, `content`, `category`,

        `source_url` or the file queues the document for ingestion again. To replace the

        file, send the request as `multipart/form-data` with a `file` part.

        '
      properties:
        title:
          type: string
        category:
          type: string
          enum:
          - faq
          - document
          - policy
          - other
        source_type:
          type: string
          enum:
          - manual
          - file_upload
          - url
        content:
          type: string
          maxLength: 200000
          description: Document text. At most 200,000 characters; longer text gets `422`.
        source_url:
          type: string
          format: uri
        file:
          type: string
          format: binary
          description: Replacement file (multipart only). Same types and size limit as on create.
    error_message:
      type: object
      description: An error with a human-readable message.
      properties:
        error:
          type: string
          description: What went wrong.
        reason:
          type: string
          description: Machine-readable cause, when there is one (for example `feature_disabled`).
      required:
      - error
    kb_setting:
      type: object
      description: 'Where this account''s knowledge base lives: the vector database and table that

        ingested documents are written to and that your bot searches.

        '
      properties:
        id:
          type: integer
          description: ID of the setting.
        database_name:
          type: string
          description: Name of the knowledge-base database.
          example: hellouchat_kb
        table_name:
          type: string
          description: Name of the vector table inside that database.
          example: acct_1_kb_vectors
        embedding_model:
          type: string
          enum:
          - text-embedding-3-small
          description: Embedding model used for ingestion. Fixed; it cannot be changed through the API.
      required:
      - id
      - database_name
      - table_name
      - embedding_model
    validation_error:
      type: object
      description: Validation failure for a record.
      properties:
        message:
          type: string
          description: Every validation message, joined with commas.
        attributes:
          type: array
          description: The attributes that failed validation.
          items:
            type: string
      required:
      - message
  responses:
    unauthorized:
      description: Missing or invalid `api_access_token`, or a bot token on an endpoint bots cannot use.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/error_message'
    forbidden:
      description: 'Not allowed: the user''s role does not permit it, the feature is not enabled

        for the account (`reason: feature_disabled`), or the account is read-only.

        '
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/error_message'
    not_found:
      description: The resource does not exist in this account.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/error_message'
    unprocessable:
      description: The request was understood but the data is invalid.
      content:
        application/json:
          schema:
            anyOf:
            - $ref: '#/components/schemas/validation_error'
            - $ref: '#/components/schemas/error_message'
  parameters:
    account_id:
      in: path
      name: account_id
      required: true
      description: The numeric ID of the account
      schema:
        type: integer
  securitySchemes:
    userApiKey:
      type: apiKey
      in: header
      name: api_access_token
      description: 'A user''s access token, from **Profile settings → Access token** in the dashboard.

        Requests act with that user''s role: administrators reach everything in their

        account, agents only what their role and visibility settings allow.

        '
    agentBotApiKey:
      type: apiKey
      in: header
      name: api_access_token
      description: 'An agent bot''s access token, shown to administrators on the bot''s settings page.

        Bot tokens reach a limited set of conversation and message endpoints.

        '
    platformAppApiKey:
      type: apiKey
      in: header
      name: api_access_token
      description: 'A platform app token, issued by the installation operator. Used to provision

        accounts, users, account memberships and agent bots.

        '
    connectorInvokeToken:
      type: http
      scheme: bearer
      description: 'A connector''s invoke token (`hci_…`), sent as `Authorization: Bearer <token>`.

        Each connector install has its own; it is rotated whenever the connector is

        reconnected or disconnected, so a stale copy stops working.

        '
x-tagGroups:
- name: Guides
  tags:
  - Introduction
  - Authentication
  - Errors
  - Pagination
  - Rate limits
  - Webhook events
- name: Webhook payloads
  tags:
  - Event payloads
- name: Platform
  tags:
  - Accounts
  - Account Users
  - AgentBots
  - Users
- name: Application
  tags:
  - Account AgentBots
  - Agents
  - Automation Rule
  - Campaigns
  - Canned Responses
  - Contacts
  - Contact Labels
  - Conversation Assignment
  - Conversation Labels
  - Conversations
  - Custom Attributes
  - Custom Filters
  - Help Center
  - Inboxes
  - Integrations
  - Macros
  - Messages
  - Profile
  - Reports
  - Security Settings
  - Teams
  - Webhooks
- name: Business tools
  tags:
  - AI Classifications
  - Assignment Settings
  - Calls
  - AI Phone Lines
  - Connectors
  - ElevenLabs Integration
  - Facebook Marketing
  - HellouAI Integration
  - Knowledge Base
  - Marketing Consent
  - Plan Upgrades
  - Voice Campaigns
  - WhatsApp Campaigns
  - WhatsApp Flows
  - WhatsApp Templates
- name: Client
  tags:
  - Inbox API
  - Contacts API
  - Conversations API
  - Messages API
- name: Others
  tags:
  - CSAT Survey Page