API Reference
Complete reference for Elisiom's REST API endpoints.
Complete reference for Elisiom's REST API endpoints. The current public API is built around two operations:
- indexing documents into a workspace search index
- asking questions against those indexed documents
All API requests require authentication via API key.
Authentication
Send your API key in one of these headers:
x-api-keyAuthorization: Bearer <your_api_key>
curl -X GET "https://dynamic-butterfly-742.eu-west-1.convex.site//v1/info?question=What%20does%20this%20workspace%20contain%3F" \
-H "x-api-key: your_api_key_here"
Base URL
Base URL from the app environment:
https://dynamic-butterfly-742.eu-west-1.convex.site/
Endpoints
GET /v1/info
Ask a question against the current workspace index. This endpoint:
- verifies the API key
- counts against the workspace monthly request limit
- searches the workspace index
- generates an answer from the matched documents
Headers
| Parameter | Type | Required | Description |
|---|---|---|---|
x-api-key | string | Yes | A valid workspace API key |
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
question | string | Yes | Natural-language question to answer |
limit | number | No | Number of search matches to use. Clamped internally. |
Responses
{
"answer": "The workspace contains onboarding documents, deployment notes, and pricing information.",
"matches": [
{
"id": "doc_01",
"score": 0.92,
"content": {
"text": "Pricing updated on April 3, 2026..."
},
"metadata": {
"source": "pricing.md"
}
}
],
"index": "k57c9v8kz7r1x..."
}{
"error": "Missing required parameters: question"
}{
"error": "Invalid API key"
}{
"error": "Request limit exceeded. Please upgrade your plan or wait for the monthly reset.",
"currentUsage": 100,
"limit": 100,
"resetPeriod": "monthly"
}{
"error": "Internal server error",
"message": "Workspace search is not configured."
}POST /v1/insert
Insert one or more documents into the current workspace index.
This endpoint:
- verifies the API key
- counts against the workspace monthly request limit
- checks the remaining document quota for the workspace
- uploads documents to Upstash Search in chunks
Only array-based inserts are supported.
Headers
| Parameter | Type | Required | Description |
|---|---|---|---|
x-api-key | string | Yes | A valid workspace API key |
Content-Type | string | Yes | Must be application/json |
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
documents | array | Yes | Array of documents to insert |
documents[].document | any | Yes | Raw document content. Strings and objects are both accepted. |
documents[].metadata | any | No | Arbitrary metadata stored with the document |
documents[].id | string | No | Optional document ID. A UUID is generated if omitted. |
{
"documents": [
{
"id": "pricing-2026-04-03",
"document": {
"text": "Pricing updated on April 3, 2026."
},
"metadata": {
"source": "pricing.md",
"section": "plan-table"
}
},
{
"document": "Workspace onboarding checklist",
"metadata": {
"source": "onboarding.md"
}
}
]
}Responses
{
"success": true,
"insertedCount": 2,
"documentIds": [
"pricing-2026-04-03",
"1f34c6c5-4d91-4b54-b2b9-cf5c39d2c7f7"
],
"index": "k57c9v8kz7r1x...",
"currentDocuments": 24,
"remainingDocuments": 226,
"limit": 250
}{
"error": "Missing required field: documents"
}{
"error": "Missing required field: documents[].document"
}{
"error": "Document limit exceeded.",
"requested": 300,
"currentDocuments": 50,
"remainingDocuments": 200,
"limit": 250
}{
"error": "Request limit exceeded. Please upgrade your plan or wait for the monthly reset.",
"currentUsage": 100,
"limit": 100,
"resetPeriod": "monthly"
}Limits
Limits are enforced per workspace.
| Plan | Requests / month | Documents / workspace |
|---|---|---|
| Free | 100 | 250 |
| Hobby | 2,000 | 5,000 |
| Pro | 5,000 | 15,000 |
| Growth | 12,000 | 40,000 |
| Scale | 30,000 | 100,000 |
/v1/info and /v1/insert both count against the monthly request limit.
Error Handling
All API errors return JSON with an error field.
| Status Code | Description |
|---|---|
200 | Success |
201 | Insert created |
400 | Missing or invalid input |
401 | Invalid or missing API key |
409 | Document quota conflict |
429 | Monthly request limit exceeded |
500 | Internal server error |
Notes
- API keys are workspace-scoped through Unkey identities.
- Search results are generated from the indexed documents already stored for the workspace.
- If search returns no useful matches, the answer endpoint may respond that it could not find relevant indexed documents.