Edges & Graph
Bucket edges represent relationships between nodes inside a bucket, such as supersedes, references, or part_of. Schift derives them while your content is ingested. There is no public API for adding, listing, or deleting an individual edge.
Removed 2026-08-24. The v1 routes
POST,GET, andDELETE /v1/buckets/{bucket_id}/edgeswere documented here as deprecated but retained for internal callers. They were never registered on any API surface, so they always returned404. They have now been deleted rather than left as documentation for something you could not call.
How edges get created
Section titled “How edges get created”Edges are produced by the ingestion pipeline from the structure of what you upload: document hierarchy, cross-references, and supersession signals. Nothing needs to be posted. The relation types are fixed, and custom relation types are not supported.
Querying the graph
Section titled “Querying the graph”curl "${API_BASE_URL:-https://api.schift.io}/v1/buckets/550e8400-e29b-41d4-a716-446655440000/graph?query=Which%20policy%20supersedes%20the%20old%20refund%20rule%3F&top_k=10" \ -H "Authorization: Bearer $SCHIFT_API_KEY"Returns a subgraph centered on the semantic search results for the query.
The SDKs expose the same endpoint:
const graph = await client.bucketGraph("my-bucket", "contract terms", 10);graph = client.buckets.graph("bucket-id", query="contract terms", top_k=10)For user-facing retrieval, use v2 bucket search
Section titled “For user-facing retrieval, use v2 bucket search”curl -X POST ${API_BASE_URL:-https://api.schift.io}/v2/buckets/550e8400-e29b-41d4-a716-446655440000/search \ -H "Authorization: Bearer $SCHIFT_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "query": "Which policy supersedes the old refund rule?", "top_k": 8, "options": { "rerank": {"enabled": true} } }'