Assistant documents
GET
https://app.sulus.ai/api/v1/kb/assistant/{assistantId}
List documents linked to an assistant (for the assistant editor)
Authentication
Send a bearer token created on your dashboard's Developer page:
Authorization: Bearer <YOUR_API_KEY>
Path parameters
assistantId
string
Required
The assistant.
Validation:
the assistant's numeric internal id (digits only) or its public UUID (vapi_assistant_id)Errors
| Status | Meaning | Body |
|---|---|---|
403 |
Assistant belongs to a different organization | {"message":"This action is unauthorized."} |
401 |
Missing or invalid bearer token | |
403 |
Feature knowledge_docs not enabled for the account |
Notes
- Unlike most endpoints, an unknown or inaccessible assistant does not 404 here — it returns {"data": []}. Only a cross-organization assistant that DOES exist is rejected (403).
- Only assignments whose document's library is visible to the caller are included (workspace/ownership scoping applies here too).
curl --request GET \
--url https://app.sulus.ai/api/v1/kb/assistant/{assistantId} \
--header 'Authorization: Bearer <YOUR_API_KEY>'
import requests
url = "https://app.sulus.ai/api/v1/kb/assistant/{assistantId}"
headers = {"Authorization": "Bearer <YOUR_API_KEY>"}
response = requests.get(url, headers=headers)
print(response.json())
package main
import (
"fmt"
"io"
"net/http"
)
func main() {
url := "https://app.sulus.ai/api/v1/kb/assistant/{assistantId}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <YOUR_API_KEY>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}
Response
200
{
"data": [
{
"id": "d4e5f6a7-b8c9-0123-defa-456789012345",
"reseller_id": "f1e2d3c4-b5a6-4978-8901-234567890abc",
"assistant_id": 12,
"knowledge_article_id": "b2c3d4e5-f6a7-8901-bcde-f23456789012",
"created_at": "2026-07-30T14:50:00.000000Z",
"updated_at": "2026-07-30T14:50:00.000000Z",
"knowledge_article": {
"id": "b2c3d4e5-f6a7-8901-bcde-f23456789012",
"title": "Return Policy",
"status": "published",
"knowledge_base_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"char_count": 73,
"updated_at": "2026-07-30T14:35:19.000000Z",
"knowledge_base": {
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"name": "My Library",
"description": null,
"audience": "assistant",
"reseller_id": "f1e2d3c4-b5a6-4978-8901-234567890abc",
"owner_user_id": 42,
"created_by": 42
}
}
}
]
}
Response — GET
/assistant/{assistantId}
200
{
"data": [
{
"id": "d4e5f6a7-b8c9-0123-defa-456789012345",
"reseller_id": "f1e2d3c4-b5a6-4978-8901-234567890abc",
"assistant_id": 12,
"knowledge_article_id": "b2c3d4e5-f6a7-8901-bcde-f23456789012",
"created_at": "2026-07-30T14:50:00.000000Z",
"updated_at": "2026-07-30T14:50:00.000000Z",
"knowledge_article": {
"id": "b2c3d4e5-f6a7-8901-bcde-f23456789012",
"title": "Return Policy",
"status": "published",
"knowledge_base_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"char_count": 73,
"updated_at": "2026-07-30T14:35:19.000000Z",
"knowledge_base": {
"id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"name": "My Library",
"description": null,
"audience": "assistant",
"reseller_id": "f1e2d3c4-b5a6-4978-8901-234567890abc",
"owner_user_id": 42,
"created_by": 42
}
}
}
]
}