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
    Agents
      List agentsgetCreate an agentpostGet an agentgetDelete an agentdeleteUpdate an agentpatchSet knowledge basespatchList agent historygetRevert to a versionpostPreview the promptget
    Threads
    Messages
    Spaces
    Prompts
    Prompt categories
    Wildcards
    Memories
    Assist
Documents
Knowledge
Creative
Website & content
Automation
Customer channels
Administration
Schemas
GenuineAI API
GenuineAI API

Agents

The AI agents a workspace runs — their prompt, model, tools and knowledge.


List agents

GET
https://api.genuineai.app/api/v1
/agents

Returns the agents available to the workspace, including ones published by the platform. An agent the workspace does not own is listed without its prompt or model settings.

List agents › query Parameters

agent_active
​boolean
agent_audience
​string
agent_description
​string
agent_ds
​array
agent_id
​string · uuid
agent_managed_by
​string · uuid
agent_model
​string
agent_name
​string
agent_tenant_enabled
​boolean
cursor
​string · maxLength: 512 · pattern: ^[A-Za-z0-9_-]+$
limit
​integer
offset
​integer · min: 0
sort
​string · minLength: 1 · maxLength: 64 · pattern: ^-?[a-z0-9_]+$

List agents › 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 agents › Responses

Success

​Agent[] · 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/agents
curl https://api.genuineai.app/api/v1/agents \ --header 'X-Tenant-Id: <string>' \ --header 'X-Api-Key: <api-key>'
Example Responses
{ "data": [ { "agent_id": "00000000-0000-0000-0000-000000000000", "agent_name": "agent_name", "agent_description": "agent_description", "agent_icon": "agent_icon", "agent_model": "agent_model", "agent_temperature": 0, "agent_top_p": "agent_top_p", "agent_audience": "agent_audience", "agent_ds": "agent_ds", "agent_system_prompt": "agent_system_prompt", "agent_config": {}, "agent_tools": "agent_tools", "agent_conns": "agent_conns", "agent_metadata": {}, "agent_managed_by": "agent_managed_by", "agent_active": true, "agent_created": "2024-08-25T15:00:00Z", "agent_updated": "2024-08-25T15:00:00Z", "agent_tenant_id": "00000000-0000-0000-0000-000000000000", "agent_tenant_enabled": true, "agent_tenant_ds": "agent_tenant_ds", "agent_tenant_instructions": "agent_tenant_instructions", "agent_tenant_metadata": {} } ], "has_more": true, "next_cursor": "next_cursor" }
json
application/json

Create an agent

POST
https://api.genuineai.app/api/v1
/agents

agent_model is restricted: a workspace may use the platform's own genai- models, and foundation models only where they have been enabled for it.

Knowledge bases may be set at creation: agent_ds names the agent's default set in kebab-case, agent_tenant_ds is this workspace's selection of knowledge-base ids. Either can be changed later through the knowledge-bases endpoint.

Create an agent › 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 an agent › Request Body

agent_name
​string · minLength: 1 · required
agent_description
​string · minLength: 1 · required
agent_model
​string · required
agent_top_p
​string · pattern: ^-?[0-9]+(\.[0-9]+)?… · required
agent_temperature
​string · pattern: ^-?[0-9]+(\.[0-9]+)?… · required
agent_active
​boolean
agent_tools
​string[]
agent_audience
​string · enum
Enum values:
internal
public
agent_ds
​string[]
agent_tenant_ds
​string[]

Create an agent › Responses

Created

An AI agent: the prompt it answers from, the model it runs on, and the tools and knowledge it may reach for.
Agent
agent_id
​string · uuid
agent_name
​string
agent_description
​string
agent_icon
​string
agent_model
​string
agent_temperature
​number
agent_top_p
​string
agent_audience
​string
agent_ds
​string
agent_system_prompt
​string
agent_config
​object
agent_tools
​string
agent_conns
​string
agent_metadata
​object
agent_managed_by
​string
agent_active
​boolean
agent_created
​string · date-time
agent_updated
​string · date-time
agent_tenant_id
​string · uuid
agent_tenant_enabled
​boolean
agent_tenant_ds
​string
agent_tenant_instructions
​string
agent_tenant_metadata
​object
POST/agents
curl https://api.genuineai.app/api/v1/agents \ --request POST \ --header 'Content-Type: application/json' \ --header 'X-Tenant-Id: <string>' \ --header 'X-Api-Key: <api-key>' \ --data '{ "agent_name": "agent_name", "agent_description": "agent_description", "agent_model": "agent_model", "agent_top_p": "agent_top_p", "agent_temperature": "agent_temperature", "agent_active": true, "agent_tools": [ "string" ], "agent_audience": "internal", "agent_ds": [ "string" ], "agent_tenant_ds": [ "00000000-0000-0000-0000-000000000000" ] }'
Example Request Body
{ "agent_name": "agent_name", "agent_description": "agent_description", "agent_model": "agent_model", "agent_top_p": "agent_top_p", "agent_temperature": "agent_temperature", "agent_active": true, "agent_tools": [ "string" ], "agent_audience": "internal", "agent_ds": [ "string" ], "agent_tenant_ds": [ "00000000-0000-0000-0000-000000000000" ] }
json
Example Responses
{ "agent_id": "00000000-0000-0000-0000-000000000000", "agent_name": "agent_name", "agent_description": "agent_description", "agent_icon": "agent_icon", "agent_model": "agent_model", "agent_temperature": 0, "agent_top_p": "agent_top_p", "agent_audience": "agent_audience", "agent_ds": "agent_ds", "agent_system_prompt": "agent_system_prompt", "agent_config": {}, "agent_tools": "agent_tools", "agent_conns": "agent_conns", "agent_metadata": {}, "agent_managed_by": "agent_managed_by", "agent_active": true, "agent_created": "2024-08-25T15:00:00Z", "agent_updated": "2024-08-25T15:00:00Z", "agent_tenant_id": "00000000-0000-0000-0000-000000000000", "agent_tenant_enabled": true, "agent_tenant_ds": "agent_tenant_ds", "agent_tenant_instructions": "agent_tenant_instructions", "agent_tenant_metadata": {} }
json
application/json

Get an agent

GET
https://api.genuineai.app/api/v1
/agents/{id}

An agent the workspace does not own — one published by the platform — comes back without its prompt or model settings.

Get an agent › path Parameters

id
​string · uuid · required

Get an agent › 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 an agent › Responses

Success

An AI agent: the prompt it answers from, the model it runs on, and the tools and knowledge it may reach for.
Agent
agent_id
​string · uuid
agent_name
​string
agent_description
​string
agent_icon
​string
agent_model
​string
agent_temperature
​number
agent_top_p
​string
agent_audience
​string
agent_ds
​string
agent_system_prompt
​string
agent_config
​object
agent_tools
​string
agent_conns
​string
agent_metadata
​object
agent_managed_by
​string
agent_active
​boolean
agent_created
​string · date-time
agent_updated
​string · date-time
agent_tenant_id
​string · uuid
agent_tenant_enabled
​boolean
agent_tenant_ds
​string
agent_tenant_instructions
​string
agent_tenant_metadata
​object
GET/agents/{id}
curl https://api.genuineai.app/api/v1/agents/:id \ --header 'X-Tenant-Id: <string>' \ --header 'X-Api-Key: <api-key>'
Example Responses
{ "agent_id": "00000000-0000-0000-0000-000000000000", "agent_name": "agent_name", "agent_description": "agent_description", "agent_icon": "agent_icon", "agent_model": "agent_model", "agent_temperature": 0, "agent_top_p": "agent_top_p", "agent_audience": "agent_audience", "agent_ds": "agent_ds", "agent_system_prompt": "agent_system_prompt", "agent_config": {}, "agent_tools": "agent_tools", "agent_conns": "agent_conns", "agent_metadata": {}, "agent_managed_by": "agent_managed_by", "agent_active": true, "agent_created": "2024-08-25T15:00:00Z", "agent_updated": "2024-08-25T15:00:00Z", "agent_tenant_id": "00000000-0000-0000-0000-000000000000", "agent_tenant_enabled": true, "agent_tenant_ds": "agent_tenant_ds", "agent_tenant_instructions": "agent_tenant_instructions", "agent_tenant_metadata": {} }
json
application/json

Delete an agent

DELETE
https://api.genuineai.app/api/v1
/agents/{id}

Soft delete: the agent stops being listed and stops answering, and is not erased.

Delete an agent › path Parameters

id
​string · uuid · required

Delete an agent › 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 an agent › Responses

Success. No content.

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

Update an agent

PATCH
https://api.genuineai.app/api/v1
/agents/{id}

Only the fields present in the body change. The same model restriction as create applies.

Update an agent › path Parameters

id
​string · uuid · required

Update an agent › 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 an agent › Request Body optional

agent_name
​string · minLength: 1
agent_description
​string · minLength: 1
agent_model
​string
agent_top_p
​string · pattern: ^-?[0-9]+(\.[0-9]+)?…
agent_temperature
​string · pattern: ^-?[0-9]+(\.[0-9]+)?…
agent_active
​boolean
agent_tools
​string[]
agent_audience
​string · enum
Enum values:
internal
public
agent_tenant_instructions
​string · maxLength: 20000

Update an agent › Responses

Success

An AI agent: the prompt it answers from, the model it runs on, and the tools and knowledge it may reach for.
Agent
agent_id
​string · uuid
agent_name
​string
agent_description
​string
agent_icon
​string
agent_model
​string
agent_temperature
​number
agent_top_p
​string
agent_audience
​string
agent_ds
​string
agent_system_prompt
​string
agent_config
​object
agent_tools
​string
agent_conns
​string
agent_metadata
​object
agent_managed_by
​string
agent_active
​boolean
agent_created
​string · date-time
agent_updated
​string · date-time
agent_tenant_id
​string · uuid
agent_tenant_enabled
​boolean
agent_tenant_ds
​string
agent_tenant_instructions
​string
agent_tenant_metadata
​object
PATCH/agents/{id}
curl https://api.genuineai.app/api/v1/agents/:id \ --request PATCH \ --header 'Content-Type: application/json' \ --header 'X-Tenant-Id: <string>' \ --header 'X-Api-Key: <api-key>' \ --data '{ "agent_name": "agent_name", "agent_description": "agent_description", "agent_model": "agent_model", "agent_top_p": "agent_top_p", "agent_temperature": "agent_temperature", "agent_active": true, "agent_tools": [ "string" ], "agent_audience": "internal", "agent_tenant_instructions": "agent_tenant_instructions" }'
Example Request Body
{ "agent_name": "agent_name", "agent_description": "agent_description", "agent_model": "agent_model", "agent_top_p": "agent_top_p", "agent_temperature": "agent_temperature", "agent_active": true, "agent_tools": [ "string" ], "agent_audience": "internal", "agent_tenant_instructions": "agent_tenant_instructions" }
json
Example Responses
{ "agent_id": "00000000-0000-0000-0000-000000000000", "agent_name": "agent_name", "agent_description": "agent_description", "agent_icon": "agent_icon", "agent_model": "agent_model", "agent_temperature": 0, "agent_top_p": "agent_top_p", "agent_audience": "agent_audience", "agent_ds": "agent_ds", "agent_system_prompt": "agent_system_prompt", "agent_config": {}, "agent_tools": "agent_tools", "agent_conns": "agent_conns", "agent_metadata": {}, "agent_managed_by": "agent_managed_by", "agent_active": true, "agent_created": "2024-08-25T15:00:00Z", "agent_updated": "2024-08-25T15:00:00Z", "agent_tenant_id": "00000000-0000-0000-0000-000000000000", "agent_tenant_enabled": true, "agent_tenant_ds": "agent_tenant_ds", "agent_tenant_instructions": "agent_tenant_instructions", "agent_tenant_metadata": {} }
json
application/json

Set knowledge bases

PATCH
https://api.genuineai.app/api/v1
/agents/{id}/ds

Two separate things, which is why they are two fields. agent_ds is the agent's own default set, named in kebab-case, and can only be changed on an agent this workspace manages. agent_tenant_ds is this workspace's selection of knowledge-base ids layered on top of that default — send null to drop the override and fall back to the agent's own set.

Set knowledge bases › path Parameters

id
​string · uuid · required

Set 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.

Set knowledge bases › Request Body optional

agent_ds
​string[]
agent_tenant_ds
​string[]

Set knowledge bases › Responses

Success

An AI agent: the prompt it answers from, the model it runs on, and the tools and knowledge it may reach for.
Agent
agent_id
​string · uuid
agent_name
​string
agent_description
​string
agent_icon
​string
agent_model
​string
agent_temperature
​number
agent_top_p
​string
agent_audience
​string
agent_ds
​string
agent_system_prompt
​string
agent_config
​object
agent_tools
​string
agent_conns
​string
agent_metadata
​object
agent_managed_by
​string
agent_active
​boolean
agent_created
​string · date-time
agent_updated
​string · date-time
agent_tenant_id
​string · uuid
agent_tenant_enabled
​boolean
agent_tenant_ds
​string
agent_tenant_instructions
​string
agent_tenant_metadata
​object
PATCH/agents/{id}/ds
curl https://api.genuineai.app/api/v1/agents/:id/ds \ --request PATCH \ --header 'Content-Type: application/json' \ --header 'X-Tenant-Id: <string>' \ --header 'X-Api-Key: <api-key>' \ --data '{ "agent_ds": [ "string" ], "agent_tenant_ds": [ "00000000-0000-0000-0000-000000000000" ] }'
Example Request Body
{ "agent_ds": [ "string" ], "agent_tenant_ds": [ "00000000-0000-0000-0000-000000000000" ] }
json
Example Responses
{ "agent_id": "00000000-0000-0000-0000-000000000000", "agent_name": "agent_name", "agent_description": "agent_description", "agent_icon": "agent_icon", "agent_model": "agent_model", "agent_temperature": 0, "agent_top_p": "agent_top_p", "agent_audience": "agent_audience", "agent_ds": "agent_ds", "agent_system_prompt": "agent_system_prompt", "agent_config": {}, "agent_tools": "agent_tools", "agent_conns": "agent_conns", "agent_metadata": {}, "agent_managed_by": "agent_managed_by", "agent_active": true, "agent_created": "2024-08-25T15:00:00Z", "agent_updated": "2024-08-25T15:00:00Z", "agent_tenant_id": "00000000-0000-0000-0000-000000000000", "agent_tenant_enabled": true, "agent_tenant_ds": "agent_tenant_ds", "agent_tenant_instructions": "agent_tenant_instructions", "agent_tenant_metadata": {} }
json
application/json

List agent history

GET
https://api.genuineai.app/api/v1
/agents/{id}/history

Every recorded change, newest first, each as a per-field {from, to} changeset.

Agents are audited under the workspace that manages them, so for a platform-published agent this returns only the calling workspace's own overrides — its knowledge-base selection and extra instructions — and not the edit history of the underlying agent.

List agent history › path Parameters

id
​string · uuid · required

List agent history › 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 agent history › Responses

Success

​object[]
history_id
​string · uuid
history_timestamp
​string · date-time
history_user
​string | null · uuid
history_op
​string

The kind of change — insert, update or delete.

​object

One entry per field that changed, keyed by column name.

history_ref
​object

What the writer noted about the change rather than the columns: the action that made it, or the reason it was made.

GET/agents/{id}/history
curl https://api.genuineai.app/api/v1/agents/:id/history \ --header 'X-Tenant-Id: <string>' \ --header 'X-Api-Key: <api-key>'
Example Responses
[ { "history_id": "00000000-0000-0000-0000-000000000000", "history_timestamp": "2024-08-25T15:00:00Z", "history_user": "00000000-0000-0000-0000-000000000000", "history_op": "history_op", "history_changeset": { "key": { "from": {}, "to": {} } }, "history_ref": {} } ]
json
application/json

Revert to a version

POST
https://api.genuineai.app/api/v1
/agents/{id}/history/{history_id}/revert

Puts the agent back to the state a history entry recorded, and audits the restore itself so it can be undone in turn. Only the fields the history view shows are written.

A restore can write less than the version held, and skipped says what it left alone and why: a field whose stored value was last written outside the app has no audited value to restore over, and one the workspace may no longer set — a model it is no longer licensed for, a public audience without the chat-widget module — is refused rather than applied.

For a platform-published agent this restores only the calling workspace's own overrides, the same fields its history returns.

Revert to a version › path Parameters

history_id
​string · uuid · required
id
​string · uuid · required

Revert to a version › 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.

Revert to a version › Responses

Success

restored
​string[]

Columns written back, by name.

​object[]

Columns the version carried that were deliberately not written.

POST/agents/{id}/history/{history_id}/revert
curl https://api.genuineai.app/api/v1/agents/:id/history/:history_id/revert \ --request POST \ --header 'X-Tenant-Id: <string>' \ --header 'X-Api-Key: <api-key>'
Example Responses
{ "restored": [ "string" ], "skipped": [ { "field": "field", "reason": "unrecorded", "detail": "detail" } ] }
json
application/json

Preview the prompt

GET
https://api.genuineai.app/api/v1
/agents/{id}/preview-system-prompt

Returns what the agent would actually be sent: its prompt with the workspace's extra instructions and knowledge-base section appended.

For a platform-published agent the base prompt is withheld — the response is only the parts this workspace contributed.

Preview the prompt › path Parameters

id
​string · uuid · required

Preview the prompt › 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.

Preview the prompt › Responses

Success

systemPrompt
​string
GET/agents/{id}/preview-system-prompt
curl https://api.genuineai.app/api/v1/agents/:id/preview-system-prompt \ --header 'X-Tenant-Id: <string>' \ --header 'X-Api-Key: <api-key>'
Example Responses
{ "systemPrompt": "systemPrompt" }
json
application/json

Distribution controlThreads