Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.moorcheh.ai/llms.txt

Use this file to discover all available pages before exploring further.

Overview

Uploads one or more documents to a text namespace. Each document is embedded with the configured Ollama model and stored for semantic search. The upload runs asynchronously. Poll upload_job_status with the returned job_id.
Any extra fields on each document object (for example team, source) are stored as metadata and can be used in search filters.

Method

client.upload_namespace_documents(namespace_name: str, payload: dict) -> dict

API

POST /namespaces/{namespace_name}/documents — see Upload documents

Parameters

namespace_name
string
required
Target text namespace.
documents
array
required
Non-empty array of document objects.
documents[].id
string
required
Item id, unique within this namespace.
documents[].text
string
required
Document text to embed and store.
documents[].{metadata}
any
Optional additional keys on each document are saved as metadata (for example "team": "ai").

Example

from moorcheh import MoorchehApiClient, MoorchehApiError

client = MoorchehApiClient("http://localhost:8080")

try:
    resp = client.upload_namespace_documents("my-documents", {
        "documents": [
            {
                "id": "doc-1",
                "text": "Moorcheh on-prem retrieval test",
                "team": "ai",
            },
        ],
    })
    job_id = resp["job_id"]
except MoorchehApiError as e:
    if e.is_item_limit_exceeded:
        print(e.body)  # items, max_items, requested_new
    else:
        raise
Poll with upload_job_status.

Returns

status
string
"success" when the upload job was started.
message
string
Human-readable result description.
job_id
string
Id of the async upload job. Poll upload_job_status with this value.
namespace_name
string
Namespace the documents are being uploaded to.
total
number
Number of documents accepted into the upload job.
items
number
Current total item count on the instance. Present on 409 item limit errors in MoorchehApiError.body.
max_items
number
Global item cap for this instance. Present on 409 item limit errors.
requested_new
number
Number of new item ids in the request that would exceed the cap. Present on 409 item limit errors.
Example return value
{
  "status": "success",
  "message": "Documents upload started. Poll job status for progress.",
  "job_id": "job-a0e3d54b9d0d4616949474697308a39c",
  "namespace_name": "my-documents",
  "total": 1,
}

Errors

Non-2xx responses raise MoorchehApiError. Use e.is_item_limit_exceeded for 409 quota errors.
from moorcheh import MoorchehApiError

try:
    client.upload_namespace_documents("my-documents", {"documents": [...]})
except MoorchehApiError as e:
    print(e.status_code, e.body)
StatusCause
400Empty documents, missing id/text, or wrong namespace type
404Namespace not found
409Global item limit would be exceeded (job not started)
  • At most 100,000 items total across all namespaces
  • 409 is returned before the job starts if new ids would exceed the cap
  • Re-uploading an existing id in the same namespace updates the item and does not consume extra quota