Import a public web page into a knowledge base
Fetches and indexes a URL rather than a file. Must be reachable from the open internet; private and link-local addresses are refused, and refused again after DNS resolution.
Requires the write scope. A key with less gets 403 insufficient_scope.
Authorization: Bearer tone_live_… or tone_test_…. The prefix IS the environment: a test key reaches only the sandbox, and no request field bridges the two.
In: header
Path Parameters
The knowledge base's id.
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/v1/knowledge-bases/string/documents/url" \ -H "Content-Type: application/json" \ -d '{ "url": "https://example.com/help/returns" }'{ "data": { "byteSize": 0, "charCount": 0, "createdAt": "2026-08-25T09:14:22Z", "error": null, "filename": "returns-policy.pdf", "id": "9f1c2d84-4e3a-4f6c-b902-7d1e8a33c451", "kind": "pdf", "mimeType": "application/pdf", "status": "awaiting_upload", "updatedAt": "2026-08-25T09:14:22Z" }}Sarvam models, languages and voices available to an agent
The legal values for an agent speech stack, fetched from the provider rather than hardcoded — so this changes without a deploy and every list here is an OPEN set. 🔴 A voice belongs to a specific model version: the (ttsModel, ttsVoice) pair is the constraint, not the voice name, and each speaker names the model it belongs to. A retired voice is marked deprecated rather than removed, so an agent already using one keeps working.
Confirm an upload finished and queue it for indexing
Phase two. Nothing is trusted until here: the object is re-read and its real size and type checked against what you declared. Indexing is asynchronous — wait for knowledge.build.completed rather than polling.