Nuclia Resources & Ingestion API
Create, list, read, modify and delete resources, and upload binaries (including TUS resumable uploads and direct Knowledge Box upload) into Nuclia's extraction, embedding and indexing pipeline.
Create, list, read, modify and delete resources, and upload binaries (including TUS resumable uploads and direct Knowledge Box upload) into Nuclia's extraction, embedding and indexing pipeline.
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.