Nuclia Ask & Chat (RAG) API
Generative RAG answers grounded in a Knowledge Box - the ask/chat endpoint retrieves context, builds a prompt and returns a cited answer, streamed as newline-delimited JSON / SSE, plus document summarization.
Generative RAG answers grounded in a Knowledge Box - the ask/chat endpoint retrieves context, builds a prompt and returns a cited answer, streamed as newline-delimited JSON / SSE, plus document summarization.
openapi: 3.0.1
info:
title: Nuclia RAG-as-a-Service API
description: >-
Specification of the Nuclia (Progress Agentic RAG) cloud API. Nuclia turns
unstructured data - documents, files, audio, video, web pages and
conversations - into searchable, queryable Knowledge Boxes. This document
covers the regional NucliaDB REST API (Knowledge Boxes, resources and
ingestion, search, find, ask/chat RAG answers) and the Nuclia Understanding
API (NUA / Predict) endpoints. All endpoints are served from a regional
zone host.
termsOfService: https://nuclia.com/terms-and-conditions/
contact:
name: Nuclia Support
url: https://nuclia.com
version: '1.0'
servers:
- url: https://{zone}.nuclia.cloud/api
description: >-
Regional Nuclia cloud zone host. Replace {zone} with your account region
(for example europe-1 or aws-us-east-2-1). Following the Progress rebrand
the same surface is also served from https://{region}.rag.progress.cloud/api.
variables:
zone:
default: europe-1
description: The Nuclia regional zone for your account.
paths:
/v1/kb/{kbid}:
get:
operationId: getKnowledgeBox
tags:
- Knowledge Boxes
summary: Get a Knowledge Box
description: Retrieve configuration and metadata for a Knowledge Box.
parameters:
- $ref: '#/components/parameters/Kbid'
responses:
'200':
description: Knowledge Box configuration
content:
application/json:
schema:
$ref: '#/components/schemas/KnowledgeBox'
'403':
$ref: '#/components/responses/Forbidden'
/v1/kb/{kbid}/counters:
get:
operationId: getKnowledgeBoxCounters
tags:
- Knowledge Boxes
summary: Get Knowledge Box counters
description: Return resource, paragraph, field and sentence counts for a Knowledge Box.
parameters:
- $ref: '#/components/parameters/Kbid'
responses:
'200':
description: Knowledge Box counters
content:
application/json:
schema:
$ref: '#/components/schemas/Counters'
/v1/kb/{kbid}/labelsets:
get:
operationId: getLabelSets
tags:
- Knowledge Boxes
summary: Get label sets
description: Return all label sets configured on the Knowledge Box.
parameters:
- $ref: '#/components/parameters/Kbid'
responses:
'200':
description: Label sets
content:
application/json:
schema:
type: object
/v1/kb/{kbid}/labelset/{labelset}:
put:
operationId: setLabelSet
tags:
- Knowledge Boxes
summary: Set a label set
description: Create or update a label set used to classify resources.
parameters:
- $ref: '#/components/parameters/Kbid'
- name: labelset
in: path
required: true
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/LabelSet'
responses:
'200':
description: Label set stored
'403':
$ref: '#/components/responses/Forbidden'
/v1/kb/{kbid}/resource:
post:
operationId: createResource
tags:
- Resources
summary: Create a resource
description: >-
Create a new resource in a Knowledge Box. Text, link, file and
conversation fields may be supplied inline; uploaded binaries are
processed asynchronously and indexed for search.
parameters:
- $ref: '#/components/parameters/Kbid'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateResourcePayload'
responses:
'201':
description: Resource created
content:
application/json:
schema:
$ref: '#/components/schemas/ResourceCreated'
'403':
$ref: '#/components/responses/Forbidden'
/v1/kb/{kbid}/resources:
get:
operationId: listResources
tags:
- Resources
summary: List resources
description: List resources in a Knowledge Box with pagination.
parameters:
- $ref: '#/components/parameters/Kbid'
- name: page
in: query
schema:
type: integer
default: 0
- name: size
in: query
schema:
type: integer
default: 20
responses:
'200':
description: Paginated resource list
content:
application/json:
schema:
$ref: '#/components/schemas/ResourceList'
/v1/kb/{kbid}/resource/{rid}:
get:
operationId: getResource
tags:
- Resources
summary: Get a resource
description: Retrieve a resource by its id, optionally including extracted data.
parameters:
- $ref: '#/components/parameters/Kbid'
- $ref: '#/components/parameters/Rid'
- name: show
in: query
description: Parts of the resource to return (basic, values, extracted, errors).
schema:
type: array
items:
type: string
responses:
'200':
description: Resource
content:
application/json:
schema:
$ref: '#/components/schemas/Resource'
'404':
$ref: '#/components/responses/NotFound'
patch:
operationId: modifyResource
tags:
- Resources
summary: Modify a resource
description: Update fields, metadata or labels of an existing resource.
parameters:
- $ref: '#/components/parameters/Kbid'
- $ref: '#/components/parameters/Rid'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/CreateResourcePayload'
responses:
'200':
description: Resource modified
'403':
$ref: '#/components/responses/Forbidden'
delete:
operationId: deleteResource
tags:
- Resources
summary: Delete a resource
description: Delete a resource and its indexed data from the Knowledge Box.
parameters:
- $ref: '#/components/parameters/Kbid'
- $ref: '#/components/parameters/Rid'
responses:
'204':
description: Resource deleted
'403':
$ref: '#/components/responses/Forbidden'
/v1/kb/{kbid}/resource/{rid}/file/{field}:
put:
operationId: uploadFileField
tags:
- Resources
summary: Upload a file field
description: >-
Upload a binary file into a file field of a resource. The file is sent
through Nuclia's processing pipeline (extraction, embedding, indexing).
Large files should use the TUS resumable upload endpoint.
parameters:
- $ref: '#/components/parameters/Kbid'
- $ref: '#/components/parameters/Rid'
- name: field
in: path
required: true
schema:
type: string
- name: X-Filename
in: header
schema:
type: string
requestBody:
required: true
content:
application/octet-stream:
schema:
type: string
format: binary
responses:
'201':
description: File field stored and queued for processing
'403':
$ref: '#/components/responses/Forbidden'
/v1/kb/{kbid}/upload:
post:
operationId: uploadToKnowledgeBox
tags:
- Resources
summary: Upload a binary directly to a Knowledge Box
description: >-
Upload a binary file directly to a Knowledge Box. Nuclia creates a
resource automatically and runs the file through the processing
pipeline for extraction, embedding and indexing.
parameters:
- $ref: '#/components/parameters/Kbid'
- name: X-Filename
in: header
schema:
type: string
requestBody:
required: true
content:
application/octet-stream:
schema:
type: string
format: binary
responses:
'201':
description: Resource created from upload
content:
application/json:
schema:
$ref: '#/components/schemas/ResourceCreated'
/v1/kb/{kbid}/search:
post:
operationId: search
tags:
- Search
summary: Search a Knowledge Box
description: >-
Run a hybrid search (semantic + keyword + fulltext) across a Knowledge
Box and return matching resources, paragraphs and sentences.
parameters:
- $ref: '#/components/parameters/Kbid'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/SearchRequest'
responses:
'200':
description: Search results
content:
application/json:
schema:
$ref: '#/components/schemas/SearchResults'
/v1/kb/{kbid}/find:
post:
operationId: find
tags:
- Search
summary: Find in a Knowledge Box
description: >-
Run a find query - the search variant optimized for RAG context
retrieval - returning results grouped and scored by resource and
paragraph, including optional graph search.
parameters:
- $ref: '#/components/parameters/Kbid'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/SearchRequest'
responses:
'200':
description: Find results
content:
application/json:
schema:
$ref: '#/components/schemas/FindResults'
/v1/kb/{kbid}/suggest:
get:
operationId: suggest
tags:
- Search
summary: Suggest on a Knowledge Box
description: Return autocomplete suggestions and entity matches for a partial query.
parameters:
- $ref: '#/components/parameters/Kbid'
- name: query
in: query
required: true
schema:
type: string
responses:
'200':
description: Suggestions
content:
application/json:
schema:
type: object
/v1/kb/{kbid}/ask:
post:
operationId: ask
tags:
- Ask
summary: Ask a Knowledge Box (RAG generative answer)
description: >-
Ask a natural-language question against a Knowledge Box. Nuclia retrieves
the most relevant context (semantic, keyword and graph search), builds a
prompt and returns a generative answer with the supporting resources as
citations. When the request sets `Accept: application/x-ndjson` (or the
SDK streaming flag), the answer is streamed back as newline-delimited
JSON / Server-Sent events.
parameters:
- $ref: '#/components/parameters/Kbid'
- name: X-Synchronous
in: header
description: Set to true to receive a single buffered JSON answer instead of a stream.
schema:
type: boolean
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/AskRequest'
responses:
'200':
description: >-
Generative answer. Streamed as application/x-ndjson by default, or a
single AskResponse object when X-Synchronous is true.
content:
application/json:
schema:
$ref: '#/components/schemas/AskResponse'
application/x-ndjson:
schema:
$ref: '#/components/schemas/AskResponse'
/v1/kb/{kbid}/summarize:
post:
operationId: summarize
tags:
- Ask
summary: Summarize resources
description: Generate a summary across one or more resources in the Knowledge Box.
parameters:
- $ref: '#/components/parameters/Kbid'
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/SummarizeRequest'
responses:
'200':
description: Summary
content:
application/json:
schema:
type: object
properties:
summary:
type: string
/v1/predict/chat:
post:
operationId: predictChat
tags:
- Predict
summary: Predict - generative chat
description: >-
Nuclia Understanding API generative endpoint. Send a question with
context and receive a generated answer from the configured LLM. Streams
tokens back as they are produced. Authenticated with a NUA key.
security:
- nuaKey: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/PredictChatRequest'
responses:
'200':
description: Generated answer (streamed)
content:
application/json:
schema:
type: object
/v1/predict/summarize:
post:
operationId: predictSummarize
tags:
- Predict
summary: Predict - summarize
description: Summarize supplied text using the Nuclia Understanding API.
security:
- nuaKey: []
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/SummarizeRequest'
responses:
'200':
description: Summary
content:
application/json:
schema:
type: object
/v1/predict/rephrase:
post:
operationId: predictRephrase
tags:
- Predict
summary: Predict - rephrase
description: Rephrase a user question into an optimized search query.
security:
- nuaKey: []
requestBody:
required: true
content:
application/json:
schema:
type: object
properties:
question:
type: string
responses:
'200':
description: Rephrased query
content:
application/json:
schema:
type: object
/v1/predict/tokens:
get:
operationId: predictTokens
tags:
- Predict
summary: Predict - tokenize / NER
description: >-
Tokenize input text and return named entities (NER) detected by the
Nuclia Understanding API.
security:
- nuaKey: []
parameters:
- name: text
in: query
required: true
schema:
type: string
responses:
'200':
description: Tokens and entities
content:
application/json:
schema:
$ref: '#/components/schemas/TokensResponse'
/v1/predict/sentence:
get:
operationId: predictSentence
tags:
- Predict
summary: Predict - embed sentence
description: Return the embedding vector for a sentence using the configured semantic model.
security:
- nuaKey: []
parameters:
- name: text
in: query
required: true
schema:
type: string
responses:
'200':
description: Sentence embedding
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
type: number
/v1/predict/rerank:
post:
operationId: predictRerank
tags:
- Predict
summary: Predict - rerank
description: Rerank a set of retrieved passages against a question for improved relevance.
security:
- nuaKey: []
requestBody:
required: true
content:
application/json:
schema:
type: object
responses:
'200':
description: Reranked results
content:
application/json:
schema:
type: object
/v1/predict/models:
get:
operationId: listPredictModels
tags:
- Predict
summary: Predict - list models
description: List the generative and semantic models available to the account.
security:
- nuaKey: []
responses:
'200':
description: Available models
content:
application/json:
schema:
type: object
components:
parameters:
Kbid:
name: kbid
in: path
required: true
description: Unique identifier of the Knowledge Box.
schema:
type: string
Rid:
name: rid
in: path
required: true
description: Unique identifier of the resource.
schema:
type: string
responses:
Forbidden:
description: The API key does not grant the required role for this operation.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
NotFound:
description: The requested object was not found.
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
securitySchemes:
apiKey:
type: apiKey
in: header
name: X-NUCLIA-SERVICEACCOUNT
description: >-
Knowledge Box service account API key. Pass as
`X-NUCLIA-SERVICEACCOUNT: Bearer <token>`. Reader keys allow search/find/ask,
Writer keys allow ingestion and resource modification, Manager keys allow
administration. Public search endpoints may be called without a key when the
Knowledge Box is public.
bearerAuth:
type: http
scheme: bearer
bearerFormat: JWT
description: >-
OAuth2 / account bearer token obtained from the Nuclia authentication
service, used by the dashboard and management endpoints.
nuaKey:
type: apiKey
in: header
name: X-NUCLIA-NUAKEY
description: >-
Nuclia Understanding API (NUA) key. Pass as
`X-NUCLIA-NUAKEY: Bearer <token>` to call the /v1/predict endpoints.
schemas:
Error:
type: object
properties:
detail:
type: string
KnowledgeBox:
type: object
properties:
uuid:
type: string
slug:
type: string
title:
type: string
config:
type: object
Counters:
type: object
properties:
resources:
type: integer
paragraphs:
type: integer
fields:
type: integer
sentences:
type: integer
LabelSet:
type: object
properties:
title:
type: string
color:
type: string
multiple:
type: boolean
kind:
type: array
items:
type: string
labels:
type: array
items:
type: object
properties:
title:
type: string
CreateResourcePayload:
type: object
properties:
slug:
type: string
title:
type: string
summary:
type: string
icon:
type: string
usermetadata:
type: object
properties:
classifications:
type: array
items:
type: object
properties:
labelset:
type: string
label:
type: string
texts:
type: object
additionalProperties:
type: object
properties:
body:
type: string
format:
type: string
enum:
- PLAIN
- HTML
- MARKDOWN
- RST
links:
type: object
additionalProperties:
type: object
properties:
uri:
type: string
ResourceCreated:
type: object
properties:
uuid:
type: string
seqid:
type: integer
Resource:
type: object
properties:
id:
type: string
slug:
type: string
title:
type: string
summary:
type: string
created:
type: string
format: date-time
data:
type: object
extracted:
type: object
ResourceList:
type: object
properties:
resources:
type: array
items:
$ref: '#/components/schemas/Resource'
pagination:
type: object
properties:
page:
type: integer
size:
type: integer
total:
type: integer
SearchRequest:
type: object
required:
- query
properties:
query:
type: string
description: The natural-language or keyword query.
features:
type: array
description: Search features to enable (keyword, semantic, relations, fulltext).
items:
type: string
enum:
- keyword
- semantic
- relations
- fulltext
filters:
type: array
description: Label / metadata filters to constrain results.
items:
type: string
page_number:
type: integer
page_size:
type: integer
min_score:
type: number
rephrase:
type: boolean
SearchResults:
type: object
properties:
resources:
type: object
sentences:
type: object
paragraphs:
type: object
relations:
type: object
next_page:
type: boolean
FindResults:
type: object
properties:
resources:
type: object
description: Resources keyed by id, each with scored matching paragraphs.
relations:
type: object
total:
type: integer
next_page:
type: boolean
AskRequest:
type: object
required:
- query
properties:
query:
type: string
description: The natural-language question to answer.
context:
type: array
description: Prior conversation turns for multi-turn chat.
items:
type: object
properties:
author:
type: string
enum:
- USER
- NUCLIA
text:
type: string
filters:
type: array
items:
type: string
features:
type: array
items:
type: string
enum:
- keyword
- semantic
- relations
generative_model:
type: string
description: Override the generative model used to produce the answer.
prompt:
type: string
description: Custom prompt template wrapping the retrieved context.
citations:
type: boolean
rephrase:
type: boolean
max_tokens:
type: integer
AskResponse:
type: object
properties:
answer:
type: string
description: The generated answer text. Streamed incrementally when not synchronous.
relations:
type: object
retrieval_results:
$ref: '#/components/schemas/FindResults'
citations:
type: object
description: Mapping of cited resources / paragraphs supporting the answer.
learning_id:
type: string
status:
type: string
enum:
- success
- error
- no_context
SummarizeRequest:
type: object
properties:
resources:
type: array
items:
type: string
generative_model:
type: string
summary_kind:
type: string
enum:
- simple
- extended
PredictChatRequest:
type: object
required:
- question
properties:
question:
type: string
query_context:
type: array
items:
type: string
user_id:
type: string
generative_model:
type: string
TokensResponse:
type: object
properties:
tokens:
type: array
items:
type: object
properties:
text:
type: string
ner:
type: string
start:
type: integer
end:
type: integer
time:
type: number
security:
- apiKey: []
tags:
- name: Knowledge Boxes
description: Create, configure and inspect Knowledge Boxes and their label sets.
- name: Resources
description: Ingest and manage resources - files, text, links and conversations.
- name: Search
description: Hybrid search, find (RAG retrieval) and suggest over a Knowledge Box.
- name: Ask
description: Generative RAG answers, chat and summarization grounded in a Knowledge Box.
- name: Predict
description: Nuclia Understanding API (NUA) - generation, summarize, rephrase, rerank, embeddings and tokenization.