GenuineAIGenuineAI
For usersFor developers
  • Overview
  • Guides
  • How-to
  • API reference
Documentation
  • Quickstart
  • Authentication
  • Errors
  • Rate limits
  • API reference
Platform
  • Platform overview
  • Solutions
  • Pricing
  • Sign in
Company
  • Status
  • Trust Center
  • Contact
  • Terms of Service
  • Privacy Policy

© 2026 GenuineAI Ventures LLC

support@genuinehq.com
Overview
Core
Media library
AI
Documents
Knowledge
    Knowledge bases
      List knowledge basesgetCreate a knowledge basepostGet a knowledge basegetDelete a knowledge basedeleteUpdate a knowledge basepatchExport recordsgetList knowledge base filesgetFork the record schemapostImport recordspostFill from a websitepostList Google FontsgetGet statisticsget
    Knowledge base records
    Knowledge base schemas
    Objects
    Object taxonomies
    Object schemas
    Object lifecycle flows
    Object sources
Creative
Website & content
Automation
Customer channels
Administration
Schemas
GenuineAI API
GenuineAI API

Knowledge bases

The sets of records agents retrieve from.


List knowledge bases

GET
https://api.genuineai.app/api/v1
/knowledge-bases

Returns the workspace's knowledge bases. Where a base is backed by a record schema, the schema's id and name are included as form_id and form_name.

List knowledge bases › query Parameters

cursor
​string · maxLength: 512 · pattern: ^[A-Za-z0-9_-]+$
ds_active
​boolean
ds_category
​array
ds_created
​array
ds_description
​string
ds_id
​array
ds_name
​string
ds_subcategory
​array
ds_type
​array
ds_updated
​array
limit
​integer
offset
​integer · min: 0
sort
​string · minLength: 1 · maxLength: 64 · pattern: ^-?[a-z0-9_]+$

List knowledge bases › Headers

X-Tenant-Id
​string · uuid · required

The workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.

List knowledge bases › Responses

Success

​KnowledgeBase[] · required
has_more
​boolean · required

Whether more rows exist past this page.

next_cursor
​string | null · required

Pass back as cursor for the next page. Null on the last page.

GET/knowledge-bases
curl https://api.genuineai.app/api/v1/knowledge-bases \ --header 'X-Tenant-Id: <string>' \ --header 'X-Api-Key: <api-key>'
Example Responses
{ "data": [ { "ds_id": "00000000-0000-0000-0000-000000000000", "ds_name": "ds_name", "ds_description": "ds_description", "ds_type": "ds_type", "ds_category": "ds_category", "ds_subcategory": "ds_subcategory", "ds_config": {}, "ds_metadata": {}, "ds_active": true, "ds_created": "2024-08-25T15:00:00Z", "ds_updated": "2024-08-25T15:00:00Z", "form_id": "00000000-0000-0000-0000-000000000000", "form_name": "form_name", "form_managed_by": "00000000-0000-0000-0000-000000000000" } ], "has_more": true, "next_cursor": "next_cursor" }
json
application/json

Create a knowledge base

POST
https://api.genuineai.app/api/v1
/knowledge-bases

Names must be unique in the workspace — they are how agents refer to a knowledge base.

Create a knowledge base › Headers

X-Tenant-Id
​string · uuid · required

The workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.

Create a knowledge base › Request Body

ds_name
​string · minLength: 1 · required
ds_description
​string
ds_type
​string · minLength: 1
ds_category
​string · enum
Enum values:
general
brand-identity
studio
ds_subcategory
​string · enum
Enum values:
messaging
visual-identity
other
ds_config
​object

Create a knowledge base › Responses

Created

A set of records agents retrieve from.
KnowledgeBase
ds_id
​string · uuid
ds_name
​string
ds_description
​string
ds_type
​string
ds_category
​string
ds_subcategory
​string
ds_config
​object
ds_metadata
​object
ds_active
​boolean
ds_created
​string · date-time
ds_updated
​string · date-time
form_id
​string · uuid

The knowledge base's record schema — see GET /knowledge-base-schemas/{id}. Null unless the base is form-backed.

form_name
​string
form_managed_by
​string · uuid
POST/knowledge-bases
curl https://api.genuineai.app/api/v1/knowledge-bases \ --request POST \ --header 'Content-Type: application/json' \ --header 'X-Tenant-Id: <string>' \ --header 'X-Api-Key: <api-key>' \ --data '{ "ds_name": "ds_name", "ds_description": "ds_description", "ds_type": "ds_type", "ds_category": "general", "ds_subcategory": "", "ds_config": {} }'
Example Request Body
{ "ds_name": "ds_name", "ds_description": "ds_description", "ds_type": "ds_type", "ds_category": "general", "ds_subcategory": "", "ds_config": {} }
json
Example Responses
{ "ds_id": "00000000-0000-0000-0000-000000000000", "ds_name": "ds_name", "ds_description": "ds_description", "ds_type": "ds_type", "ds_category": "ds_category", "ds_subcategory": "ds_subcategory", "ds_config": {}, "ds_metadata": {}, "ds_active": true, "ds_created": "2024-08-25T15:00:00Z", "ds_updated": "2024-08-25T15:00:00Z", "form_id": "00000000-0000-0000-0000-000000000000", "form_name": "form_name", "form_managed_by": "00000000-0000-0000-0000-000000000000" }
json
application/json

Get a knowledge base

GET
https://api.genuineai.app/api/v1
/knowledge-bases/{id}

Returns the knowledge base with its type, its category and the form its records are shaped by.

Get a knowledge base › path Parameters

id
​string · uuid · required

Get a knowledge base › Headers

X-Tenant-Id
​string · uuid · required

The workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.

Get a knowledge base › Responses

Success

A set of records agents retrieve from.
KnowledgeBase
ds_id
​string · uuid
ds_name
​string
ds_description
​string
ds_type
​string
ds_category
​string
ds_subcategory
​string
ds_config
​object
ds_metadata
​object
ds_active
​boolean
ds_created
​string · date-time
ds_updated
​string · date-time
form_id
​string · uuid

The knowledge base's record schema — see GET /knowledge-base-schemas/{id}. Null unless the base is form-backed.

form_name
​string
form_managed_by
​string · uuid
GET/knowledge-bases/{id}
curl https://api.genuineai.app/api/v1/knowledge-bases/:id \ --header 'X-Tenant-Id: <string>' \ --header 'X-Api-Key: <api-key>'
Example Responses
{ "ds_id": "00000000-0000-0000-0000-000000000000", "ds_name": "ds_name", "ds_description": "ds_description", "ds_type": "ds_type", "ds_category": "ds_category", "ds_subcategory": "ds_subcategory", "ds_config": {}, "ds_metadata": {}, "ds_active": true, "ds_created": "2024-08-25T15:00:00Z", "ds_updated": "2024-08-25T15:00:00Z", "form_id": "00000000-0000-0000-0000-000000000000", "form_name": "form_name", "form_managed_by": "00000000-0000-0000-0000-000000000000" }
json
application/json

Delete a knowledge base

DELETE
https://api.genuineai.app/api/v1
/knowledge-bases/{id}

Agents pointing at it stop retrieving from it. Check before removing one that is in use.

Delete a knowledge base › path Parameters

id
​string · uuid · required

Delete a knowledge base › Headers

X-Tenant-Id
​string · uuid · required

The workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.

Delete a knowledge base › Responses

Success. No content.

No data returned
DELETE/knowledge-bases/{id}
curl https://api.genuineai.app/api/v1/knowledge-bases/:id \ --request DELETE \ --header 'X-Tenant-Id: <string>' \ --header 'X-Api-Key: <api-key>'
Example Responses
No example specified for this content type

Update a knowledge base

PATCH
https://api.genuineai.app/api/v1
/knowledge-bases/{id}

Applies the ds_-prefixed fields present in the body. A base's name must stay unique within the workspace.

Update a knowledge base › path Parameters

id
​string · uuid · required

Update a knowledge base › Headers

X-Tenant-Id
​string · uuid · required

The workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.

Update a knowledge base › Request Body optional

ds_name
​string · minLength: 1
ds_description
​string
ds_type
​string · minLength: 1
ds_category
​string · enum
Enum values:
general
brand-identity
studio
configuration
ds_subcategory
​string · enum
Enum values:
messaging
visual-identity
other
ds_config
​object

Update a knowledge base › Responses

Success

A set of records agents retrieve from.
KnowledgeBase
ds_id
​string · uuid
ds_name
​string
ds_description
​string
ds_type
​string
ds_category
​string
ds_subcategory
​string
ds_config
​object
ds_metadata
​object
ds_active
​boolean
ds_created
​string · date-time
ds_updated
​string · date-time
form_id
​string · uuid

The knowledge base's record schema — see GET /knowledge-base-schemas/{id}. Null unless the base is form-backed.

form_name
​string
form_managed_by
​string · uuid
PATCH/knowledge-bases/{id}
curl https://api.genuineai.app/api/v1/knowledge-bases/:id \ --request PATCH \ --header 'Content-Type: application/json' \ --header 'X-Tenant-Id: <string>' \ --header 'X-Api-Key: <api-key>' \ --data '{ "ds_name": "ds_name", "ds_description": "ds_description", "ds_type": "ds_type", "ds_category": "general", "ds_subcategory": "", "ds_config": {} }'
Example Request Body
{ "ds_name": "ds_name", "ds_description": "ds_description", "ds_type": "ds_type", "ds_category": "general", "ds_subcategory": "", "ds_config": {} }
json
Example Responses
{ "ds_id": "00000000-0000-0000-0000-000000000000", "ds_name": "ds_name", "ds_description": "ds_description", "ds_type": "ds_type", "ds_category": "ds_category", "ds_subcategory": "ds_subcategory", "ds_config": {}, "ds_metadata": {}, "ds_active": true, "ds_created": "2024-08-25T15:00:00Z", "ds_updated": "2024-08-25T15:00:00Z", "form_id": "00000000-0000-0000-0000-000000000000", "form_name": "form_name", "form_managed_by": "00000000-0000-0000-0000-000000000000" }
json
application/json

Export records

GET
https://api.genuineai.app/api/v1
/knowledge-bases/{id}/export

Returns every record in the base as a file, for moving it elsewhere or keeping a copy.

Export records › path Parameters

id
​string · uuid · required

Export records › Headers

X-Tenant-Id
​string · uuid · required

The workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.

Export records › Responses

Success

No data returned
GET/knowledge-bases/{id}/export
curl https://api.genuineai.app/api/v1/knowledge-bases/:id/export \ --header 'X-Tenant-Id: <string>' \ --header 'X-Api-Key: <api-key>'
Example Responses
No example specified for this content type

List knowledge base files

GET
https://api.genuineai.app/api/v1
/knowledge-bases/{id}/files

The documents this knowledge base indexes. Reading them is reading the knowledge base, so its own access rules apply on top of each file's.

Requires any one of media:view, document:view, knowledge-base:view, thread:view, design:view, prompt:view or presentation:view.

List knowledge base files › path Parameters

id
​string · uuid · required

List knowledge base files › query Parameters

cursor
​string · maxLength: 512 · pattern: ^[A-Za-z0-9_-]+$
file_added_by
​string · uuid
file_created
​array
file_hash
​string
file_id
​string · uuid
file_name
​string
file_provider_id
​string
​object · style: deepObject · explode: true
file_status
​string
file_type
​string
file_updated
​array
limit
​integer
offset
​integer · min: 0
repo_id
​string · uuid
repo_type
​string · enum
Enum values:
media
generated
docs
ds
thread
design
prompt
ppt
sort
​string · minLength: 1 · maxLength: 64 · pattern: ^-?[a-z0-9_]+$

List knowledge base files › Headers

X-Tenant-Id
​string · uuid · required

The workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.

List knowledge base files › Responses

Success

​File[] · required
has_more
​boolean · required

Whether more rows exist past this page.

next_cursor
​string | null · required

Pass back as cursor for the next page. Null on the last page.

GET/knowledge-bases/{id}/files
curl https://api.genuineai.app/api/v1/knowledge-bases/:id/files \ --header 'X-Tenant-Id: <string>' \ --header 'X-Api-Key: <api-key>'
Example Responses
{ "data": [ { "file_repo": { "library": [ "media" ], "ds": "00000000-0000-0000-0000-000000000000", "thread": "00000000-0000-0000-0000-000000000000", "design": "00000000-0000-0000-0000-000000000000", "prompt": "00000000-0000-0000-0000-000000000000", "ppt": "00000000-0000-0000-0000-000000000000", "ppt_template": "00000000-0000-0000-0000-000000000000", "form": "00000000-0000-0000-0000-000000000000", "submission": "00000000-0000-0000-0000-000000000000", "field": "field", "infographic": "00000000-0000-0000-0000-000000000000", "sitemap": "00000000-0000-0000-0000-000000000000", "node": "00000000-0000-0000-0000-000000000000", "wf_instance": "00000000-0000-0000-0000-000000000000", "wf_name": "wf_name" }, "file_id": "00000000-0000-0000-0000-000000000000", "file_name": "file_name", "file_type": "file_type", "file_size": 0, "file_created": "2024-08-25T15:00:00Z", "file_updated": "2024-08-25T15:00:00Z", "file_metadata": {}, "file_provider_id": "00000000-0000-0000-0000-000000000000", "file_bucket": "file_bucket", "file_folder": "file_folder", "file_hash": "file_hash", "file_status": "file_status", "file_added_by": "file_added_by", "file_replicas": "file_replicas", "file_summary": "file_summary", "file_pref": {} } ], "has_more": true, "next_cursor": "next_cursor" }
json
application/json

Fork the record schema

POST
https://api.genuineai.app/api/v1
/knowledge-bases/{id}/fork-form

A knowledge base built from a standard template shares that template. This copies it into one the workspace owns and re-points the knowledge base and its existing records at the copy — so the shape can be changed without affecting anyone else, and without a later template update overwriting the changes. A few templates are fixed: where a knowledge base is presented on a screen built for its fields, the copy is refused.

Requires both knowledge-base:edit and knowledge-base:schema:edit.

Fork the record schema › path Parameters

id
​string · uuid · required

Fork the record schema › Headers

X-Tenant-Id
​string · uuid · required

The workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.

Fork the record schema › Responses

Success

No data returned
POST/knowledge-bases/{id}/fork-form
curl https://api.genuineai.app/api/v1/knowledge-bases/:id/fork-form \ --request POST \ --header 'X-Tenant-Id: <string>' \ --header 'X-Api-Key: <api-key>'
Example Responses
No example specified for this content type

Import records

POST
https://api.genuineai.app/api/v1
/knowledge-bases/{id}/import

Bulk load. The payload is size-capped — split a large import rather than sending it in one call.

Import records › path Parameters

id
​string · uuid · required

Import records › Headers

X-Tenant-Id
​string · uuid · required

The workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.

Import records › Request Body

​array · required
sourceUrl
​string

Import records › Responses

Success

No data returned
POST/knowledge-bases/{id}/import
curl https://api.genuineai.app/api/v1/knowledge-bases/:id/import \ --request POST \ --header 'Content-Type: application/json' \ --header 'X-Tenant-Id: <string>' \ --header 'X-Api-Key: <api-key>' \ --data '{ "items": [ {} ], "sourceUrl": "sourceUrl" }'
Example Request Body
{ "items": [ {} ], "sourceUrl": "sourceUrl" }
json
Example Responses
No example specified for this content type

Fill from a website

POST
https://api.genuineai.app/api/v1
/knowledge-bases/{id}/init-knowledge

Crawls a URL and turns what it finds into records. Runs in the background — this returning does not mean the crawl has finished.

Fill from a website › path Parameters

id
​string · uuid · required

Fill from a website › Headers

X-Tenant-Id
​string · uuid · required

The workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.

Fill from a website › Request Body

url
​string · uri · required
preview
​boolean

Fill from a website › Responses

Success

No data returned
POST/knowledge-bases/{id}/init-knowledge
curl https://api.genuineai.app/api/v1/knowledge-bases/:id/init-knowledge \ --request POST \ --header 'Content-Type: application/json' \ --header 'X-Tenant-Id: <string>' \ --header 'X-Api-Key: <api-key>' \ --data '{ "url": "https://www.example.com/path/to/resource", "preview": true }'
Example Request Body
{ "url": "https://www.example.com/path/to/resource", "preview": true }
json
Example Responses
No example specified for this content type

List Google Fonts

GET
https://api.genuineai.app/api/v1
/knowledge-bases/google-fonts

A static catalog of {family, category}, used when picking type in the design tools. Exposes no workspace data.

List Google Fonts › Headers

X-Tenant-Id
​string · uuid · required

The workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.

List Google Fonts › Responses

Success

No data returned
GET/knowledge-bases/google-fonts
curl https://api.genuineai.app/api/v1/knowledge-bases/google-fonts \ --header 'X-Tenant-Id: <string>' \ --header 'X-Api-Key: <api-key>'
Example Responses
No example specified for this content type

Get statistics

GET
https://api.genuineai.app/api/v1
/knowledge-bases/stats

Counts of bases and records, for a dashboard rather than a listing.

Get statistics › Headers

X-Tenant-Id
​string · uuid · required

The workspace this request acts in. Every row the API returns is isolated to it at the database layer by row-level security.

Get statistics › Responses

Success

No data returned
GET/knowledge-bases/stats
curl https://api.genuineai.app/api/v1/knowledge-bases/stats \ --header 'X-Tenant-Id: <string>' \ --header 'X-Api-Key: <api-key>'
Example Responses
No example specified for this content type

Document relationsKnowledge base records