Project and Agent API
The engine exposes its REST API under the /api path prefix (default port 9010).
All endpoints return JSON and accept an optional JWT bearer token for identity-aware responses.
The endpoints on this page are the entry point of every client integration: they resolve which project the user is entering, how it is branded, whether sign-in is required and which agents may be run.
Authentication
Pass a JWT bearer token as a standard HTTP header or as a query parameter:
Authorization: Bearer <token>
or
/api/v2/project/my-project?authorization=<token>
Unauthenticated requests are permitted; the response omits user-specific data (starred agents) and may be restricted when a project requires identity (isIdentityRequired: true).
The process for getting a project with required identity is:
-
Get project without authentication, receive limited set of properties.
-
Prompt login according to received identity providers.
-
Get project again with authentication, receive full project.
The complete authorization model — identity provider matching, external roles and agent state visibility — is specified in Consumer Security.
V2 Project Endpoints
The v2 project endpoints unify ID and ref lookup, support Preview-state agents for backoffice users, and include per-user agent groups (starred, recent).
GET /api/v2/project/{idOrRef}
Retrieve a project by its UUID or its ref slug.
Path Parameters
| Parameter | Type | Description |
|---|---|---|
|
String |
Either a UUID (e.g. |
Query Parameters
| Parameter | Required | Type | Description |
|---|---|---|---|
|
No |
String |
JWT bearer token, for clients that cannot set the |
Response
Returns a Project object (see Project Object).
Behaviour varies by authentication state:
| Condition | Effect on response |
|---|---|
Not authenticated, |
Returns full project with published agents. |
Not authenticated, |
Returns project metadata only; |
Authenticated, no backoffice ACL |
Returns project with published agents; includes |
Authenticated, has backoffice ACL for the project |
Returns project with published and preview agents; includes |
GET /api/v2/project?agentKey={agentKey}
Retrieve a project by the key of one of its agents. Required for when Client gets an agent link, as it still needs the whole project of the agent.
Query Parameters
| Parameter | Required | Type | Description |
|---|---|---|---|
|
Yes |
String |
Agent identifier. Supported formats:
When a revision suffix is absent the endpoint resolves the latest Published revision. |
agentRef and agentId are accepted as aliases of agentKey and are resolved identically.
Exactly one of the three must be present, otherwise the endpoint responds with 400 Bad Request.
Response
Identical to the response of GET /api/v2/project/{idOrRef} for the project that owns the resolved agent.
See Project Object and the behaviour table in the previous section.
Agent Endpoints
GET /api/agent?grouping={grouping}
List agents for the current identity, grouped by a predefined criterion.
| Parameter | Required | Type | Description |
|---|---|---|---|
|
Yes |
String |
One of |
|
No |
String |
Restricts the result to a single project. Without it, agents across all accessible projects are returned. |
The request locale (Accept-Language) is taken into account when resolving localized agent
properties. Unauthenticated requests receive the grouping evaluated without a user identity.
Returns an array of Agent objects (see Agent Object).
Response Objects
Project Object
| Field | Type | Description |
|---|---|---|
|
UUID string |
Unique project identifier. |
|
String |
Human-readable ref used to identify the project in URLs and API calls. |
|
String |
Display name of the project. |
|
String |
Short description of the project. |
|
String |
Name of the tenant that owns this project. |
|
String | null |
URL of the tenant’s logo image. |
|
String | null |
URL of the project’s logo image. |
|
String | null |
Terms of service text shown to users before they start a session. |
|
String | null |
Primary brand colour in CSS hex format (e.g. |
|
String | null |
Secondary brand colour in CSS hex format. |
|
String | null |
Ref of the agent that is highlighted as the project’s primary agent. |
|
String | null |
Ref of the identity provider that authenticated the current request, when any. |
|
Array |
List of identity provider configurations (see IdentityProvider Object). Empty array when the project does not require identity. |
|
Boolean |
Whether users must authenticate before accessing the project and its agents. |
|
Boolean |
Whether access to the project’s agents additionally requires a matching external role. See Consumer Security. |
|
Boolean | null |
Whether the tenant’s billing subscription is currently active. |
|
Array |
Flat list of in-app navigation targets the agents of this project may direct the user to, nested
through |
|
Array | null |
List of agents belonging to this project (see Agent Object).
|
|
Object | null |
Named agent groupings for the authenticated user (see Group Object).
Keys are group names ( |
|
Array | null |
ACL roles the authenticated user holds on this project or its tenant. |
Group Object
| Field | Type | Description |
|---|---|---|
|
String |
Group name. One of: |
|
Array of strings |
Ordered list of agent refs belonging to this group for the authenticated user. |
Agent Object
| Field | Type | Description |
|---|---|---|
|
UUID string |
Unique agent identifier. |
|
String |
Human-readable ref used to identify the agent. |
|
String |
Agent key ( |
|
String |
Display name of the agent. |
|
String |
Short title or role label. |
|
String |
Longer description of the agent’s purpose and capabilities. |
|
String |
Publication state. One of: |
|
String | null |
Perceived gender of the agent’s persona. One of: |
|
Array of strings |
BCP 47 locale codes the agent supports (e.g. |
|
Integer |
Current revision number of the agent. |
|
String | null |
Description of changes in the current revision. |
|
String | null |
URL of the agent’s thumbnail image. When absent, render the agent’s visual through
|
|
Object |
Visual rendering configuration for 3D/avatar clients: |
|
String |
Facial animation data delivered with speech items. One of |
|
Object |
What the agent accepts as input: |
|
UUID string |
UUID of the project this agent belongs to. |
|
Object | null |
The owning project, included when an agent is requested outside of a project response. |
|
Boolean |
Whether the agent is enabled and operational. |
|
Boolean |
Whether the authenticated user has starred this agent. Always |
|
Boolean |
Whether server-side speech post-processing (facial animation data generation) is active for this agent. |
|
Boolean |
Whether the agent can end a session itself, i.e. whether the client should expect |
|
Boolean | null |
Whether conversations with this agent produce evaluation results intended to be shown to the user. See Evaluation API. |
|
Integer |
Silence timeout in milliseconds. Currently always |
|
Boolean |
When |
|
Boolean |
Whether the agent has persistent per-user memory enabled. |
|
Object |
Emotional expression set used by the agent’s visual layer: |
|
Object | null |
Speech recognition hints for this agent, when configured. |
|
UUID string |
Realtime (speech-to-speech) configuration the agent runs with. All-zero UUID when the deployment default applies. |
|
Integer |
Sort order within its grouping or project. |
|
Timestamp | null |
When the agent revision was last modified. |
|
UUID string | null |
User who last modified the agent revision. |
Complete Response Example
An authenticated request to a project that requires identity, answered for a user who holds an
Editor ACL role — so the response contains a Published and a Draft agent, both agent
groups, the identity providers and the user’s roles. Optional fields are shown populated; a field
that is not set is either null or absent.
{
"id": "8e29b3d1-6a4f-4c2e-9d70-1f2a3b4c5d6e",
"ref": "acme",
"name": "ACME Customer Care",
"description": "Support and sales agents for ACME customers.",
"tenantName": "ACME Inc.",
"tenantLogo": "https://cdn.example.com/acme/tenant-logo.png",
"logo": "https://cdn.example.com/acme/project-logo.png",
"terms": "By continuing you agree to the processing of your conversation for quality purposes.",
"primaryColor": "#0057B7",
"secondaryColor": "#FFD700",
"featuredAgentRef": "acme-support",
"idpRef": "acme-entra",
"identityProviders": [
{ "ref": "acme-entra", "name": "Microsoft", "logo": "https://cdn.example.com/idp/ms.svg" },
{ "ref": "acme-google", "name": "Google", "logo": null }
],
"isIdentityRequired": true,
"isUsingExternalRoles": false,
"isBillingActive": true,
"navigationSpecifications": [
{
"type": "route",
"ref": "accountAssistant",
"parentRef": null,
"image": null,
"name": "Account assistant",
"description": "Starts a conversation with the account assistant.",
"order": 1,
"disabledMessage": null,
"route": "/a/accountAssistant"
}
],
"userRoles": ["Editor"],
"groups": {
"Starred": { "name": "Starred", "agentRefs": ["acme-support"] },
"Recent": { "name": "Recent", "agentRefs": ["acme-support", "acme-sales"] }
},
"agents": [
{
"id": "661f9511-f30c-52e5-b827-557766551111",
"ref": "acme-support",
"key": "acme-support.5",
"name": "Ada",
"title": "Support specialist",
"description": "Helps with orders, returns and appointments.",
"state": "Published",
"gender": "Female",
"locales": ["en-US", "cs-CZ"],
"revision": 5,
"changeNote": "Reworded the greeting.",
"thumbnail": "https://cdn.example.com/acme/ada.png",
"visualProperties": {
"avatarRef": "ada",
"environmentRef": "office",
"cameraPreset": "Dynamic"
},
"animationDataType": "BlendShapes",
"inputModalities": {
"image": true, "video": false, "audio": true, "file": false, "url": true,
"audioSampleRate": 24000
},
"projectId": "8e29b3d1-6a4f-4c2e-9d70-1f2a3b4c5d6e",
"project": null,
"isEnabled": true,
"isStarred": true,
"isSpeechProcessingEnabled": true,
"hasSessionEndSupport": true,
"hasUserFacingEvaluations": true,
"silenceTimeout": 0,
"anonymousMode": false,
"hasMemory": true,
"emotionalSet": {
"happiness": 0.6, "sadness": 0.0, "fear": 0.0, "disgust": 0.0,
"anger": 0.0, "surprise": 0.1, "other": 0.0,
"lastUpdated": "2026-09-01T09:14:22.031Z"
},
"sttProperties": {
"terms": ["ACME", "Novak"],
"textPrompt": null,
"generalContext": [ { "key": "brand", "value": "ACME" } ],
"finalTranscriptDelay": 200
},
"realtimeConfigurationId": "d4c3b2a1-9f8e-4d7c-8b6a-5f4e3d2c1b0a",
"order": 1,
"lastModified": "2026-09-01T09:14:22.031Z",
"lastModifiedBy": "5c8a0f12-7d34-4e56-9a1b-2c3d4e5f6a7b"
},
{
"id": "772a0622-041d-63f6-c938-668877662222",
"ref": "acme-sales",
"key": "acme-sales",
"name": "Ben",
"title": "Sales assistant",
"description": "Explains plans and pricing.",
"state": "Draft",
"gender": "Male",
"locales": ["en-US"],
"revision": 2,
"changeNote": null,
"thumbnail": null,
"visualProperties": {
"avatarRef": "orb",
"environmentRef": null,
"cameraPreset": null
},
"animationDataType": "None",
"inputModalities": {
"image": false, "video": false, "audio": true, "file": false, "url": false,
"audioSampleRate": 24000
},
"projectId": "8e29b3d1-6a4f-4c2e-9d70-1f2a3b4c5d6e",
"project": null,
"isEnabled": true,
"isStarred": false,
"isSpeechProcessingEnabled": false,
"hasSessionEndSupport": false,
"hasUserFacingEvaluations": false,
"silenceTimeout": 0,
"anonymousMode": true,
"hasMemory": false,
"emotionalSet": {
"happiness": 0.0, "sadness": 0.0, "fear": 0.0, "disgust": 0.0,
"anger": 0.0, "surprise": 0.0, "other": 0.0,
"lastUpdated": "2026-08-20T11:02:00.000Z"
},
"sttProperties": null,
"realtimeConfigurationId": "00000000-0000-0000-0000-000000000000",
"order": 2,
"lastModified": null,
"lastModifiedBy": null
}
]
}
An unauthenticated request to the same project returns everything above except agents,
groups and userRoles, which are null.
IdentityProvider Object
Returned inside Project.identityProviders when the project has identity required.
| Field | Type | Description |
|---|---|---|
|
String |
Unique ref of this identity provider. |
|
String |
Display name shown on the sign-in button (e.g. |
|
String | null |
URL of the identity provider’s logo image. |