Reference
Changelog
Changes to the REST API and the MCP connector that a developer can notice, newest first. Additions are backwards compatible unless an entry says otherwise.
8 October 2026
- Search scope.
POST /api/v1/search/querytakesscope:mine,marketplace,allorlisting:<id>. Each result hasoriginandlisting_id, and the response hasscopeandlistings, the marketplace passages grouped by listing. Without a scope, existing keys still searchall. See Search scope. - Default scope.
GETandPUT /api/v1/search/scopeshow and set what your organisation uses TRIVDA for; aknowledge_bankorganisation searches only its own data by default. An API key created withdefault_scope:<scope>in its scopes has its own default. - Listings.
GET /api/v1/search/listingslists the listings a scope covers. - MCP.
searchtakesscopeand returns each passage's licence duties, attribution, provenance id, source and origin, and the search'scost. New free toolslist_collectionsandget_balance. See MCP tools.
7 October 2026
- SDKs and a command line.
pip install trivda(Python, with thetrivdaCLI) andnpm install trivda(TypeScript), with one method per operation, typed licence and provenance, safe retries and cost headers. See SDKs and CLI. - Sandbox keys.
POST /api/v1/api-keystakes"sandbox": trueand returns ansk_test_key that gets synthetic results from every public route, marked withX-Sandbox: trueand"sandbox": true, and is never charged. Key lists showsandbox. - Which key am I using.
GET /api/v1/api-keys/currentreturns the credential's organisation, key prefix, name, scopes and whether it is a sandbox key. - Paged dataset list.
GET /api/v1/datasetstakeslimit(default 500, at most 1,000) andcursor, and returnsnext_cursorwhen there is another page. A client that ignores them still gets its whole list today. - Upload status.
GET /api/v1/uploads/{upload_id}says whether an upload isrunning,done,failedorcancelled, so a client whose upload request timed out can wait for it instead of sending the file again. - Marketplace search now filters by each passage's published flag instead of listing every offered dataset; results are unchanged, and a withdrawn dataset leaves search at once.
- Developer docs published at
/docs/, with openapi.json, llms.txt and llms-full.txt. - Cost headers.
POST /api/v1/search/queryreturnsX-Query-Cost,X-Tokens-UsedandX-Credits-Remaining, andIdempotent-Replayed: trueon a replay. A replay'sbillingnow includesbalance_credits. - Readable operation ids in the OpenAPI spec (
search,get_pricing,list_api_keys, ...), for generated clients. - Connector sign-in. OAuth access tokens last 1 hour, with single-use rotating refresh tokens; only known assistants' redirect addresses are accepted; tokens stop working when you leave the organisation.
- MCP
fetchis charged like a one-passage search, except for a passage your organisation was served in the last 7 days, which stays free. - Scopes. A scoped key can only create keys within its own scopes.
6 October 2026
- One price. Searches are charged €1 per 1,000 BGE-M3 tokens in the passages returned, from the public
GET /api/v1/pricing. - No charge for no results. A search that returns nothing costs nothing and uses no free search.
Idempotency-Keyon search: a retry within 24 hours is answered from the first response and not charged again.- Cost check before the search. A search the wallet cannot cover is refused with 402 before it runs.
- Partner statements and billing details:
/api/v1/statementsand/api/v1/billing/profile. - Deleting your own data:
POST /api/v1/datasets/{id}/erasetakesreason=owner_removedand also deletes stored originals and cached results.
Coming
- Collections and listings as the unit you publish and buy (see Data model).
- API keys with expiry, a monthly spending cap and usage per key.
- Python and TypeScript SDKs generated from the OpenAPI spec.
- Sandbox keys that return clearly marked synthetic results.