- Core Concepts
- Assistant profiles
Core Concepts
Assistant profiles
Each assistant is your AI’s saved identity—instructions, tools, documents, memory, and embeddings—in one place.
What this is
An assistant is not a single chat. It is the profile your AI runs under: a name, default instructions, optional tools, uploaded docs (RAG), memory behavior, and embedding settings. You create an assistant once, then attach many conversation threads to it.
If you only need a quick reply with no saved setup, you can skip creating an assistant and use send_message / sendMessage—the API can create a default assistant for you. When you care about branding, memory across users, shared docs, or stable defaults, you create your own assistant and pass assistant_id on messages.
What lives on an assistant
| Idea | What it means |
|---|---|
| Who the AI is | Default instructions (system_prompt), tools, and retrieval depth (tok_k) |
| Long-term memory | Memories are scoped to the assistant—reuse assistant_id so recall works across threads |
| Documents (RAG) | Upload docs at the assistant level so every thread under that assistant can search them |
| Embeddings | Set once at creation (embedding_*). Cannot be changed later |
Key properties
| Property | Type | Description |
|---|---|---|
assistant_id | uuid | Unique identifier (returned on creation) |
name | string | Human-readable name (1–255 chars, required) |
system_prompt | string | Instructions that define the assistant’s behavior |
tools | array | Optional tools the assistant can use (function calling, etc.) |
tok_k | integer | Number of document chunks retrieved per query (1–100, default 10) |
custom_fact_extraction_prompt | string | Custom prompt for memory fact extraction. Uses default if omitted |
custom_update_memory_prompt | string | Custom prompt for memory update decisions (add/update/delete). Uses default if omitted |
embedding_provider | string | Embedding provider for RAG & memory (openai, google, cohere, etc.) |
embedding_model_name | string | Embedding model name (e.g. text-embedding-3-large) |
embedding_dims | integer | Embedding dimensions (e.g. 3072 for OpenAI large) |
created_at | datetime | Timestamp when the assistant was created |
Create an assistant
import requests
response = requests.post(
"https://app.backboard.io/api/assistants",
headers={"X-API-Key": "YOUR_API_KEY"},
json={
"name": "Technical Support",
"system_prompt": "You are a concise technical support assistant.",
"tok_k": 15,
"tools": [
{
"type": "function",
"function": {
"name": "search_kb",
"description": "Search the product knowledge base",
"parameters": {
"type": "object",
"properties": {
"query": {"type": "string", "description": "Search query"}
},
"required": ["query"]
}
}
}
]
}
)
assistant = response.json()
print(assistant["assistant_id"])
Update an assistant
All fields are optional on update. tools replaces the existing list entirely. Embedding config cannot be changed after creation.
requests.put(
f"https://app.backboard.io/api/assistants/{assistant_id}",
headers={"X-API-Key": "YOUR_API_KEY"},
json={
"system_prompt": "Updated instructions here",
"tok_k": 20,
"custom_fact_extraction_prompt": "Extract only personal preferences and technical choices."
}
)
Custom memory prompts
You can override the default fact-extraction and memory-update prompts per assistant. This is useful for controlling exactly what gets saved to memory and how updates are handled.
requests.put(
f"https://app.backboard.io/api/assistants/{assistant_id}",
headers={"X-API-Key": "YOUR_API_KEY"},
json={
"custom_fact_extraction_prompt": "Extract only technical preferences and project details.",
"custom_update_memory_prompt": "Only update memories when the user explicitly corrects previous information."
}
)
Set to an empty string to clear a custom prompt and revert to the default.
Embedding configuration
When creating an assistant, you can configure the embedding model used for document retrieval (RAG) and memory operations. Defaults to OpenAI text-embedding-3-large with 3072 dimensions.
{
"name": "My Assistant",
"embedding_provider": "openai",
"embedding_model_name": "text-embedding-3-large",
"embedding_dims": 3072
}
The embedding model cannot be changed after the assistant is created. Choose carefully based on your needs.
List & Delete
| Parameter | Type | Default | Range | Description |
|---|---|---|---|---|
skip | integer | 0 | 0–10 000 | Number of records to skip |
limit | integer | 100 | 1–200 | Maximum number of records to return |
# List all assistants (limit: 1–200, skip: 0–10 000)
assistants = requests.get(
"https://app.backboard.io/api/assistants",
headers={"X-API-Key": "YOUR_API_KEY"},
params={"skip": 0, "limit": 50}
).json()
# Delete an assistant (also deletes all threads & documents)
requests.delete(
f"https://app.backboard.io/api/assistants/{assistant_id}",
headers={"X-API-Key": "YOUR_API_KEY"}
)
Related
- Conversation threads — how chats attach to an assistant
- Create Assistant
- List Assistants
- Get Assistant
- Update Assistant
- Delete Assistant