Skip to main content
The complete path from an empty account to a query result, using nothing but curl. Two tokens are involved, and they are not interchangeable: Set the platform token once:
The hosted beta currently runs keyword full-text search. Vector ranking and the hybrid flow are coming; see Search for the current status.

1. Create a world

The response carries the world’s permanent ID. Worlds API mints it as a w_<ULID>, and it never changes:
Save it — every later call names this world:

2. Mint a world token

World tokens are what the data plane authenticates. Mint one scoped to the world you just created:
The secret wzw_ value lives at token.token and is shown exactly once, at creation. Copy it now; it is not retrievable later (revoke and re-mint instead):

3. Import data

Worlds ingests RDF in Turtle, TriG, N-Triples, N-Quads, JSON-LD, or plain text chunks. Import a small Turtle graph:
The import response reports how many quads landed and how many search chunks they produced. If either count is 0, the payload did not parse — the format must match contentType exactly.
Results come back best-first with the matched quad and a relevance score:
mode tells you which search path actually ran (keyword in the hosted beta, hybrid when embeddings are configured). Search resolves the entity; SPARQL answers structured questions about it.

5. Run your first SPARQL query

The subject from search (or any IRI you know) drives a SPARQL 1.1 query:
That is the full loop: a world holds the graph, a world token opens it, import fills it, search finds the entity, SPARQL answers the structured question.

Paging large exports

GET /worlds/{worldId}/export returns at most limit quads per call (default 1000 for JSON). When more data remains, the response carries the next offset in an X-Next-Offset header (and a nextOffset field in JSON bodies). Pass it back as offset until the header stops appearing:
The same limit/offset/X-Next-Offset contract is what the TypeScript client exposes on exportWorld.