Download OpenAPI specification:Download
Complete API reference for the Quasiris Search Cloud — schema management, document feeding, search, and agent chat.
Pass your token in the X-QSC-Token request header:
X-QSC-Token: <your-token>
Three different tokens share that header — use the one that matches the endpoint group:
| Token | Endpoints | Source |
|---|---|---|
| Admin token | Schema (/api/v1/searchapp/*) |
QSC Admin → Security → API Tokens |
| Feeding token | Feeding and scheduling (/api/v1/data/*, /api/v1/job/*) |
QSC Admin → Security → API Tokens |
| Agent token | Agent Chat (/api/v1/agent/chat/*) |
Agent-server AUTH_TOKEN |
Search endpoints (/api/v1/search/*) require no authentication.
Most paths look like /{tenant}/{code}, but code is not the same
resource in every group:
| Endpoint group | code means |
|---|---|
| Schema, Feeding, Search, Suggest | Search app code (e.g. trendware) |
| Agent Chat | Agent configuration code (e.g. support-bot) |
Replaces the field schema of a search app. QSC syncs the search configuration accordingly. Requires admin token. After updating the schema call Schedule feeding job to re-index the data with the new field configuration.
| tenant required | string Example: demo Tenant code (e.g. |
| code required | string Example: trendware Search app code (e.g. |
required | Array of objects (SearchAppSchemaField) | ||||||||||||||||||||
Array
| |||||||||||||||||||||
{- "fields": [
- {
- "code": "name",
- "dataType": "string",
- "searchMode": "balanced",
- "weight": 3,
- "display": true,
- "facet": false,
- "sort": false,
- "suggest": true,
- "navigation": false,
- "semantic": false
}, - {
- "code": "brand",
- "dataType": "string",
- "searchMode": "balanced",
- "weight": 2,
- "display": true,
- "facet": true,
- "sort": false,
- "suggest": false,
- "navigation": false,
- "semantic": false
}, - {
- "code": "description",
- "dataType": "string",
- "searchMode": "balanced",
- "weight": 1,
- "display": true,
- "facet": false,
- "sort": false,
- "suggest": false,
- "navigation": false,
- "semantic": true
}, - {
- "code": "price",
- "dataType": "double",
- "searchMode": "off",
- "display": true,
- "facet": true,
- "sort": true
}
]
}{- "fields": [
- {
- "code": "name",
- "dataType": "string",
- "searchMode": "balanced",
- "weight": 3,
- "display": false,
- "facet": false,
- "sort": false,
- "suggest": false,
- "navigation": false,
- "semantic": false
}
]
}Schedules a feeding job for the search app. Must be called after every schema update so that QSC re-indexes the data with the new field configuration. Requires feeding token.
| tenant required | string Example: demo Tenant code (e.g. |
| code required | string Example: trendware Search app code (e.g. |
{ }Creates or updates a single document. The body must use the QSC header/payload format. Requires feeding token.
| type required | string Enum: "qsc" "reporting" Example: qsc Document format type. Use |
| tenant required | string Example: demo Tenant code (e.g. |
| code required | string Example: trendware Search app code (e.g. |
| documentId required | string Example: product-1 Unique document identifier |
required | object (DocumentHeaderUpdate) |
required | object Document fields — keys must match the schema field codes |
{- "header": {
- "id": "product-1",
- "action": "update"
}, - "payload": {
- "name": "Running Shoes Pro",
- "brand": "Acme",
- "description": "Lightweight trail running shoes with superior grip.",
- "price": 129.99
}
}{- "id": 0,
- "documentId": "product-1",
- "operation": "update",
- "state": "CREATED",
- "type": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "finishedAt": "2019-08-24T14:15:22Z"
}Marks a document for deletion from the index. Requires feeding token.
| type required | string Enum: "qsc" "reporting" Example: qsc Document format type. Use |
| tenant required | string Example: demo Tenant code (e.g. |
| code required | string Example: trendware Search app code (e.g. |
| documentId required | string Example: product-1 Unique document identifier |
{- "id": 0,
- "documentId": "product-1",
- "operation": "update",
- "state": "CREATED",
- "type": "string",
- "createdAt": "2019-08-24T14:15:22Z",
- "finishedAt": "2019-08-24T14:15:22Z"
}Returns the current indexed state of a document. Requires feeding token.
| tenant required | string Example: demo Tenant code (e.g. |
| code required | string Example: trendware Search app code (e.g. |
| documentId required | string Example: product-1 Unique document identifier |
[- {
- "name": "Running Shoes Pro",
- "brand": "Acme",
- "description": "Lightweight trail running shoes with superior grip.",
- "price": 129.99
}
]Creates or updates multiple documents in a single request using a JSON array. Each entry must contain a header (with id and action) and a payload (the document fields). Requires feeding token.
| type required | string Enum: "qsc" "reporting" Example: qsc Document format type. Use |
| tenant required | string Example: demo Tenant code (e.g. |
| code required | string Example: trendware Search app code (e.g. |
required | object (DocumentHeaderUpdate) |
required | object Document fields — keys must match the schema field codes |
[- {
- "header": {
- "id": "product-1",
- "action": "update"
}, - "payload": {
- "name": "Running Shoes Pro",
- "brand": "Acme",
- "description": "Lightweight trail running shoes.",
- "price": 129.99
}
}, - {
- "header": {
- "id": "product-2",
- "action": "update"
}, - "payload": {
- "name": "Trail Boots X",
- "brand": "Acme",
- "description": "Durable boots for rough terrain.",
- "price": 89.99
}
}, - {
- "header": {
- "id": "product-3",
- "action": "update"
}, - "payload": {
- "name": "City Sneaker",
- "brand": "Stride",
- "description": "Comfortable everyday sneaker.",
- "price": 59.99
}
}
]{- "message": "OK",
- "statusCode": 200,
- "processedValidDocs": true,
- "documents": [
- {
- "documentId": "string",
- "state": "string"
}
]
}Uploads a file of documents for bulk indexing. The file must contain a JSON array using the header/payload format. Requires feeding token.
| type required | string Enum: "qsc" "reporting" Example: qsc Document format type. Use |
| tenant required | string Example: demo Tenant code (e.g. |
| code required | string Example: trendware Search app code (e.g. |
| file | string <binary> |
{- "message": "OK",
- "statusCode": 200,
- "processedValidDocs": true,
- "documents": [
- {
- "documentId": "string",
- "state": "string"
}
]
}Begins a full-feed cycle. Send all documents via bulk or single-document endpoints, then call End full feed to swap the index. Documents not sent since Start are removed when the cycle ends. Requires feeding token.
| tenant required | string Example: demo Tenant code (e.g. |
| code required | string Example: trendware Search app code (e.g. |
{ }Finalises the full-feed cycle and swaps the index. Documents not sent since Start full feed are removed from the live index. Requires feeding token.
| tenant required | string Example: demo Tenant code (e.g. |
| code required | string Example: trendware Search app code (e.g. |
{ }Aborts the current full-feed cycle without modifying the live index. Requires feeding token.
| tenant required | string Example: demo Tenant code (e.g. |
| code required | string Example: trendware Search app code (e.g. |
Execute a search using query parameters. No authentication required.
To filter by a facet, add a query parameter in the form f.{filterId}=value (e.g. f.brand=Acme). The filter ID must match a facet configured in the schema. Multiple values can be repeated: f.brand=Acme&f.brand=Stride.
| tenant required | string Example: demo Tenant code (e.g. |
| code required | string Example: trendware Search app code (e.g. |
| q | string Example: q=running shoes Search query string |
| page | integer Default: 1 Example: page=1 Page number (1-based) |
| rows | integer Default: 10 Example: rows=10 Number of results per page |
| sort | string Example: sort=pricedesc Sort identifier configured in the search app (e.g. |
| userId | string User identifier for personalisation and tracking |
| sessionId | string Session identifier for tracking |
| requestId | string Custom request identifier echoed back in the response |
| requestOrigin | string Origin of the request (e.g. |
{- "statusCode": 200,
- "requestId": "string",
- "time": 42,
- "result": {
- "total": 42,
- "time": 15,
- "documents": [
- {
- "id": "product-1",
- "position": 1,
- "document": {
- "name": "Running Shoes Pro",
- "brand": "Acme",
- "description": "Lightweight trail running shoes with superior grip.",
- "price": 129.99
}
}
], - "facets": [
- {
- "id": "brand",
- "name": "Brand",
- "values": [
- {
- "value": "Acme",
- "count": 12
}
]
}
], - "paging": {
- "page": 1,
- "rows": 10,
- "total": 42,
- "totalPages": 5
}
}
}Execute a search using a JSON body. No authentication required.
| tenant required | string Example: demo Tenant code (e.g. |
| code required | string Example: trendware Search app code (e.g. |
| q | string Search query string |
| page | integer Default: 1 Page number (1-based) |
| rows | integer Default: 10 Number of results per page |
object (SortDTO) Sorting configuration. Only the | |
object Filters keyed by the facet ID configured in the schema. Each value is a Filter object. | |
| userId | string User identifier for personalisation and tracking |
| sessionId | string Session identifier for tracking |
| requestId | string Custom request identifier echoed back in the response |
| requestOrigin | string Origin of the request (e.g. |
{- "q": "shoes",
- "page": 1,
- "rows": 10
}{- "statusCode": 200,
- "requestId": "string",
- "time": 42,
- "result": {
- "total": 42,
- "time": 15,
- "documents": [
- {
- "id": "product-1",
- "position": 1,
- "document": {
- "name": "Running Shoes Pro",
- "brand": "Acme",
- "description": "Lightweight trail running shoes with superior grip.",
- "price": 129.99
}
}
], - "facets": [
- {
- "id": "brand",
- "name": "Brand",
- "values": [
- {
- "value": "Acme",
- "count": 12
}
]
}
], - "paging": {
- "page": 1,
- "rows": 10,
- "total": 42,
- "totalPages": 5
}
}
}Returns autocomplete suggestions for a partial query. No authentication required.
| tenant required | string Example: demo Tenant code (e.g. |
| code required | string Example: trendware Search app code (e.g. |
| q | string Example: q=running shoes Search query string |
| rows | integer Default: 10 Example: rows=10 Number of results per page |
{ }Returns autocomplete suggestions using a JSON body. No authentication required.
| tenant required | string Example: demo Tenant code (e.g. |
| code required | string Example: trendware Search app code (e.g. |
| q | string Search query string |
| page | integer Default: 1 Page number (1-based) |
| rows | integer Default: 10 Number of results per page |
object (SortDTO) Sorting configuration. Only the | |
object Filters keyed by the facet ID configured in the schema. Each value is a Filter object. | |
| userId | string User identifier for personalisation and tracking |
| sessionId | string Session identifier for tracking |
| requestId | string Custom request identifier echoed back in the response |
| requestOrigin | string Origin of the request (e.g. |
{- "q": "runn",
- "rows": 5
}{ }Send messages to a QSC Agent and receive Markdown/JSON responses. Path {code} is the agent configuration code (not a search app). Auth: agent-server AUTH_TOKEN (different from admin/feeding tokens).
Sends a user message to a QSC Agent and returns a single JSON response. Send type: init (no text required) as the first call to receive the configured welcome message and reset the session; otherwise text is required. Requires the agent-server's static token.
| tenant required | string Example: demo Tenant code of the agent configuration (e.g. |
| code required | string Example: support-bot Agent configuration code (e.g. |
| text | string The user's message. Required unless |
| type | string Value: "init" Set to |
| sessionId | string Conversation/session identifier. Omit on the first call — the server generates one and returns it in the response; send it back on subsequent calls to keep history. |
| userId | string Caller-supplied end-user identifier, forwarded for tracking. |
| id | string Client-supplied message id, echoed back in the response. |
| model | string Overrides the default LLM from the agent config for this request (must be one of the config's |
Array of objects (ChatAttachment) Images or files to send alongside the message, sent inline as base64. Only supported for |
{- "type": "init",
- "sessionId": "3f8c9e2a-1b4d-4b2e-9c3a-6e7d8f1a2b3c"
}{- "type": "markdown",
- "data": "string",
- "id": "string",
- "date": 1753088400000,
- "session_id": "string",
- "models": [
- {
- "model": "haystack:eu.anthropic.claude-opus-4-8",
- "label": "Claude Opus 4.8",
- "selected": true
}
], - "streaming": true
}Same request as Chat, but the response body is a stream of newline-delimited JSON objects rather than a single JSON document: zero or more delta lines { "data": "...", "streaming": true }, followed by exactly one final line — a full Chat response object with "streaming": false. Concatenate the data of all delta lines to get the full reply. Requires the agent-server's static token.
| tenant required | string Example: demo Tenant code of the agent configuration (e.g. |
| code required | string Example: support-bot Agent configuration code (e.g. |
| text | string The user's message. Required unless |
| type | string Value: "init" Set to |
| sessionId | string Conversation/session identifier. Omit on the first call — the server generates one and returns it in the response; send it back on subsequent calls to keep history. |
| userId | string Caller-supplied end-user identifier, forwarded for tracking. |
| id | string Client-supplied message id, echoed back in the response. |
| model | string Overrides the default LLM from the agent config for this request (must be one of the config's |
Array of objects (ChatAttachment) Images or files to send alongside the message, sent inline as base64. Only supported for |
{- "text": "What running shoes do you have under 100 euros?",
- "sessionId": "3f8c9e2a-1b4d-4b2e-9c3a-6e7d8f1a2b3c"
}{- "type": "markdown",
- "data": "string",
- "id": "string",
- "date": 1753088400000,
- "session_id": "string",
- "models": [
- {
- "model": "haystack:eu.anthropic.claude-opus-4-8",
- "label": "Claude Opus 4.8",
- "selected": true
}
], - "streaming": true
}