Reference

API reference

One base URL, one header, JSON in and out. The interactive Swagger UI shows every request and response schema and lets you try calls with your own key, and the raw OpenAPI schema can generate a client in any language.

Basics

Endpoints

The scope column is the minimum scope the key must hold.

Identity and system

Method and pathScopePurpose
GET /healthnoneDependency health. Returns 200 when the API, database, queue and index are up.
GET /mesearchWorkspace, scopes, plan and this month's usage for the calling key or session.
GET /capabilitiessearchWhat this deployment allows: connectors, whether the crawler may render JavaScript, the page size limit.
GET /embedding-profilesearchThe embedding model, dimension, chunk size and index the deployment uses.
GET /openai-tools.jsonsearchFunction-calling tool definitions. See Search for agents.

Search

Method and pathScopePurpose
POST /searchsearchSearch a collection with full-text and vector ranking combined. Body: collection_id, query (1 to 2,000 characters), top_k (1 to 50, default 10), collapse_documents (default true, one hit per document).
POST /retrievesearchFull passages for LLM prompts, grouped by document with citation numbers and a token estimate. Body documented in Search for agents.

Collections

Method and pathScopePurpose
GET /collectionssearchList collections with their document and source counts.
POST /collectionsingestCreate. Body: name, optional description, data_source_ids.
GET /collections/IDsearchRead one.
PATCH /collections/IDingestRename, describe, or change included sources.
DELETE /collections/IDingestRemove the collection. Sources and documents are kept.
PUT /collections/ID/data-sources/SOURCE_IDingestAttach a source.
DELETE /collections/ID/data-sources/SOURCE_IDingestDetach a source. Its documents stay indexed for other collections.

Data sources and documents

Method and pathScopePurpose
GET /data-sourcessearchList sources. Filter with ?collection_id=.
POST /data-sourcesingestCreate. Body: name, source_type (upload or website), optional configuration, collection_ids.
GET /data-sources/IDsearchRead one, with document and indexed counts and the saved sync settings.
DELETE /data-sources/IDingestRemove the source and every document in it.
POST /data-sources/ID/reindexingestRe-embed stored content with the current embedding model. POST /reindex does the whole workspace.
GET /documentssearchThe 200 most recent documents. Filter with ?data_source_id= or ?collection_id=.
POST /documents/uploadingestMultipart upload: data_source_id and one or more files. See File uploads.
GET /documents/IDsearchDocument metadata and status.
GET /documents/ID/chunkssearchThe indexed chunks of a document, in order. ?limit= caps the count.
DELETE /documents/IDingestRemove a document, its file and its index entries.

Crawling

Method and pathScopePurpose
POST /crawl/checkingestInspect a URL without indexing: policy, reachability, robots.txt, sitemap size, llms.txt, JavaScript-only pages.
POST /crawlingestStart a crawl. Body documented in Website sources. Returns 202 with the job.
GET /crawlsearchList crawl jobs.
GET /crawl/IDsearchJob status, pages crawled, limit and error.
POST /crawl/ID/cancelingestStop a running crawl. Pages already indexed stay.
POST /crawl/ID/retryingestResume an interrupted or failed crawl with its remaining page budget.

Benchmarks

A benchmark suite is a set of questions for a collection, each with the documents that should come back. Running it scores retrieval so you can see whether a new source or setting made results better or worse.

Method and pathScopePurpose
POST /benchmarksingestCreate a suite. Body: name, collection_id, top_k, and 1 to 500 cases. Case shape in Swagger.
GET /benchmarkssearchList suites with their latest scores.
GET /benchmarks/IDsearchOne suite with its cases and runs.
POST /benchmarks/ID/runingestRun every case against the collection now.
DELETE /benchmarks/IDingestRemove a suite.
GET /industry-benchmarkssearchReady-made public question sets you can copy into a suite.

API keys

Method and pathScopePurpose
GET /api-keysadminList keys: id, name, scopes, expiry, last use. Never the secret.
POST /api-keysadminCreate. Body: name, scopes, optional expires_in_days. The secret is returned once.
DELETE /api-keys/IDadminRevoke immediately.

Limits

Errors

Errors are JSON with a detail string that says what to change. Validation failures are 422 and name the field.

StatusWhen
400A crawl URL the policy refuses, or an option this deployment does not allow.
401Missing, revoked or expired key.
403Key lacks the scope, or email not yet verified for ingest calls.
404Not in your workspace.
413File over 50 MB.
415Unsupported file type.
422Invalid body or field value.
429Plan limit reached.
503The job queue was unavailable and the crawl did not start. Retry.