Open appvitae.ai

AI Assistant

The AI Assistant answers questions about your work and carries out tasks in the modules your workspace uses. Talk to it through threaded conversations with streaming responses. The API paths keep the agent name.

Assistant status

Check if the assistant is available and view current capacity:

GET /v1/agent/status
Authorization: Bearer <token>

Assistant dashboard

View the assistant’s current workload and pipeline overview:

GET /v1/agent/dashboard
Authorization: Bearer <token>

Threads

Conversations with the assistant are organized into threads. Each thread has a history of messages and actions.

Create a thread

POST /v1/agent/threads
Authorization: Bearer <token>
Content-Type: application/json
 
{
  "prompt": "Summarise what needs my attention this week"
}

List threads

GET /v1/agent/threads
Authorization: Bearer <token>

List archived threads

GET /v1/agent/threads/archived
Authorization: Bearer <token>

Get a thread

GET /v1/agent/threads/:id
Authorization: Bearer <token>

Pin or archive a thread

PATCH /v1/agent/threads/:id/pin
Authorization: Bearer <token>
Content-Type: application/json
 
{ "pinned": true }
PATCH /v1/agent/threads/:id/archive
Authorization: Bearer <token>
Content-Type: application/json
 
{ "archived": true }

Chat (streaming)

Send a message to the assistant and receive a streaming response via SSE:

POST /v1/agent/chat
Authorization: Bearer <token>
Content-Type: application/json
 
{
  "threadId": "thread_01abc...",
  "message": "What are my open tasks for this week?"
}

The response streams via text/event-stream. Each event contains a chunk of the assistant’s response, tool calls, or status updates.

Model tiers

Each answer runs on one of three tiers: fast, balanced or smart. A stronger tier gives better answers to hard questions and uses more credits. An answer bills twice what its AI work cost, in whole credits, never less than one; the tools it calls are included in that one charge. List the tiers, their credit rates and which ones your organization allows:

GET /v1/agent/models
Authorization: Bearer <token>

Pass "tier": "smart" in the chat body to pick one. The thread remembers it, so later messages in that thread use the same tier. Without a tier, a thread uses its stored tier, then your own default, then your organization’s default, then fast. A tier above the highest one your organization allows streams an error event with code tier_not_allowed.

Ask about how many credits a message would cost before you send it:

POST /v1/agent/chat/estimate
Authorization: Bearer <token>
Content-Type: application/json
 
{ "threadId": "thread_01abc...", "message": "Draft a follow-up email to this contact", "tier": "balanced" }

The complete event reports the model, the tier and the billedAiCredits for the answer.

Approvals

Some assistant actions require human approval before execution. Resolve pending approvals:

POST /v1/agent/approvals/:id/resolve
Authorization: Bearer <token>
Content-Type: application/json
 
{ "approved": true }

Pipeline board

View the assistant’s pipeline board filtered by stage:

GET /v1/agent/pipeline/board/:stage
Authorization: Bearer <token>