API reference
Lanes
Agent context, cache, ledger and routing, with policies, promotions and receipts. Sandbox.
- Operations
- 24
- Base path
https://os.one.ml/api/v1/lanes- Scopes
lanes:readlanes:write- API keys
- 24 refused to API keys
- SDK
genesis.call('lanes_cacheLookup', …)· helpers undergenesis.lanes- MCP
- 15 tools; the other 9 through
genesis_call
Operations
| Operation | Endpoint | API key |
|---|---|---|
| Look up a cache entry (read) | POST/cache/lookup | API keys refused |
| Snapshot the cache (read) | POST/cache/snapshots | API keys refused |
| Restore the cache from a snapshot | POST/cache/snapshots/restore | API keys refused |
| Write a cache entry | POST/cache/write | API keys refused |
| Build a frame, route it and answer | POST/context/answer | API keys refused |
| Build a context frame for an agent task | POST/context/frames | API keys refused |
| Snapshot context records (read) | POST/context/records/snapshots | API keys refused |
| Restore context records from a snapshot | POST/context/records/snapshots/restore | API keys refused |
| Delete everything Lanes holds for your selection | POST/deletions/tenant | API keys refused |
| Export everything Lanes holds for your selection (read) | POST/exports/tenant | API keys refused |
| Check a Foundry route against the frame's limits | POST/foundry/routes/enforce | API keys refused |
| Get a context record | GET/lanes/records/{recordId} | API keys refused |
| Preview the context frame and route for a query (read) | POST/lanes/retrieve | API keys refused |
| Write a context record | POST/lanes/write | API keys refused |
| Read the ledger entries for a frame | GET/ledger/frames/{frameId} | API keys refused |
| Snapshot the ledger (read) | POST/ledger/snapshots | API keys refused |
| Restore the ledger from a snapshot | POST/ledger/snapshots/restore | API keys refused |
| Read the receipt for an earlier write | GET/operations/{operationId} | API keys refused |
| Read meter, audit, evidence and probe records | GET/operations/records | API keys refused |
| Evaluate data-use policy for an action | POST/policy/evaluate | API keys refused |
| Approve or reject a promotion candidate | POST/promotions/{promotionId}/review | API keys refused |
| List promotion candidates | GET/promotions/candidates | API keys refused |
| Propose a record for promotion | POST/promotions/candidates | API keys refused |
| Restore records, cache and ledger from a recovery bundle | POST/recovery/restore | API keys refused |
Cache
Look up a cache entry (read)
POST/v1/lanes/cache/lookup
Parameters
Idempotency-Keyheader · stringrequiredStable key; reuse it to replay the original result, never act twice
Request body application/json
cacheKeystringrequiredcacheClassstringrequiredrequestedBystringrequired
Responses
- 200Lookup result
Response fields
cacheKeystringcacheClassstringstatusstringhitobject | nullpolicyDecisionIdsstring[]
- 4xx 5xxThe error envelope.
curl -X POST "https://os.one.ml/api/v1/lanes/cache/lookup" \
-H "Authorization: Bearer $GENESIS_API_KEY" \
-H "Idempotency-Key: $IDEMPOTENCY_KEY" \
-H "Content-Type: application/json" \
-d '{
"cacheKey": "string",
"cacheClass": "string",
"requestedBy": "string"
}'import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const idempotencyKey = '<a stable key per change>'
const result = await genesis.call('lanes_cacheLookup', {
body: {
cacheKey: 'string',
cacheClass: 'string',
requestedBy: 'string',
},
}, {
headers: { 'Idempotency-Key': idempotencyKey }, // one key per change, reused on every retry
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "lanes_cacheLookup",
"arguments": {
"body": {
"cacheKey": "string",
"cacheClass": "string",
"requestedBy": "string"
},
"idempotency_key": "<a stable key per change>"
}
}
}Snapshot the cache (read)
POST/v1/lanes/cache/snapshots
Parameters
Idempotency-Keyheader · stringrequiredStable key; reuse it to replay the original result, never act twice
Request body application/json
exportedBystringrequired
Responses
- 201Cache snapshot
Response fields
scopeobjectexportedBystringevidenceRefstring
- 4xx 5xxThe error envelope.
curl -X POST "https://os.one.ml/api/v1/lanes/cache/snapshots" \
-H "Authorization: Bearer $GENESIS_API_KEY" \
-H "Idempotency-Key: $IDEMPOTENCY_KEY" \
-H "Content-Type: application/json" \
-d '{
"exportedBy": "string"
}'import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const idempotencyKey = '<a stable key per change>'
const result = await genesis.call('lanes_snapshotCache', {
body: {
exportedBy: 'string',
},
}, {
headers: { 'Idempotency-Key': idempotencyKey }, // one key per change, reused on every retry
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "genesis_call",
"arguments": {
"operation": "lanes_snapshotCache",
"arguments": {
"body": {
"exportedBy": "string"
},
"idempotency_key": "<a stable key per change>"
}
}
}
}Restore the cache from a snapshot
POST/v1/lanes/cache/snapshots/restore
Parameters
Idempotency-Keyheader · stringrequiredStable key; reuse it to replay the original result, never act twice
Request body application/json
scopeobjectexportedBystringevidenceRefstring
Responses
- 202Restore accepted
- 4xx 5xxThe error envelope.
curl -X POST "https://os.one.ml/api/v1/lanes/cache/snapshots/restore" \
-H "Authorization: Bearer $GENESIS_API_KEY" \
-H "Idempotency-Key: $IDEMPOTENCY_KEY" \
-H "Content-Type: application/json" \
-d '{}'import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const idempotencyKey = '<a stable key per change>'
const result = await genesis.call('lanes_restoreCache', {
body: {},
}, {
headers: { 'Idempotency-Key': idempotencyKey }, // one key per change, reused on every retry
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "genesis_call",
"arguments": {
"operation": "lanes_restoreCache",
"arguments": {
"body": {},
"idempotency_key": "<a stable key per change>"
}
}
}
}Write a cache entry
POST/v1/lanes/cache/write
Parameters
Idempotency-Keyheader · stringrequiredStable key; reuse it to replay the original result, never act twice
Request body application/json
cacheKeystringrequiredcacheClassstringrequiredvalueRefstringrequiredsummarystringrequiredlabelsstring[]requiredsourceRecordIdsstring[]requiredwrittenBystringrequired
Responses
- 201Cache artifact
Response fields
idstringscopeobjectcacheKeystringcacheClassstringvalueRefstringsummarystringlabelsstring[]sourceRecordIdsstring[]statusstringevidenceRefstringpolicyDecisionIdsstring[]
- 4xx 5xxThe error envelope.
curl -X POST "https://os.one.ml/api/v1/lanes/cache/write" \
-H "Authorization: Bearer $GENESIS_API_KEY" \
-H "Idempotency-Key: $IDEMPOTENCY_KEY" \
-H "Content-Type: application/json" \
-d '{
"cacheKey": "string",
"cacheClass": "string",
"valueRef": "string",
"summary": "string",
"labels": [],
"sourceRecordIds": [],
"writtenBy": "string"
}'import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const idempotencyKey = '<a stable key per change>'
const result = await genesis.call('lanes_cacheWrite', {
body: {
cacheKey: 'string',
cacheClass: 'string',
valueRef: 'string',
summary: 'string',
labels: [],
sourceRecordIds: [],
writtenBy: 'string',
},
}, {
headers: { 'Idempotency-Key': idempotencyKey }, // one key per change, reused on every retry
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "lanes_cacheWrite",
"arguments": {
"body": {
"cacheKey": "string",
"cacheClass": "string",
"valueRef": "string",
"summary": "string",
"labels": [],
"sourceRecordIds": [],
"writtenBy": "string"
},
"idempotency_key": "<a stable key per change>"
}
}
}Context
Build a frame, route it and answer
POST/v1/lanes/context/answer
Parameters
Idempotency-Keyheader · stringrequiredStable key; reuse it to replay the original result, never act twice
Request body application/json
agentIdstringrequiredtaskIdstringrequiredquerystringrequiredallowRawContextbooleanrequiredtokenBudgetintegerrequired
Responses
- 200Answer with its frame, route and cache decision
Response fields
frameobjectframe.idstringframe.frameIdstringframe.scopeobjectframe.agentIdstringframe.taskIdstringframe.querystringframe.tokenBudgetintegerframe.itemsobject[]frame.items[].[].recordIdstringframe.items[].[].contentRefstringframe.items[].[].summarystringframe.items[].[].visibilitystringframe.exclusionsobject[]frame.exclusions[].[].recordIdstringframe.exclusions[].[].kindstringframe.exclusions[].[].reasonstringrouteDecisionobjectrouteobjectroute.decisionstringroute.foundryobject | nullroute.reasonstringroute.confidenceBasisPointsintegerroute.estimatedSavingsobject | nullcacheobjectansweranypolicyDecisionIdsstring[]
- 4xx 5xxThe error envelope.
curl -X POST "https://os.one.ml/api/v1/lanes/context/answer" \
-H "Authorization: Bearer $GENESIS_API_KEY" \
-H "Idempotency-Key: $IDEMPOTENCY_KEY" \
-H "Content-Type: application/json" \
-d '{
"agentId": "string",
"taskId": "string",
"query": "string",
"allowRawContext": true,
"tokenBudget": 1
}'import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const idempotencyKey = '<a stable key per change>'
const result = await genesis.call('lanes_answer', {
body: {
agentId: 'string',
taskId: 'string',
query: 'string',
allowRawContext: true,
tokenBudget: 1,
},
}, {
headers: { 'Idempotency-Key': idempotencyKey }, // one key per change, reused on every retry
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "lanes_answer",
"arguments": {
"body": {
"agentId": "string",
"taskId": "string",
"query": "string",
"allowRawContext": true,
"tokenBudget": 1
},
"idempotency_key": "<a stable key per change>"
}
}
}Build a context frame for an agent task
POST/v1/lanes/context/frames
Parameters
Idempotency-Keyheader · stringrequiredStable key; reuse it to replay the original result, never act twice
Request body application/json
agentIdstringrequiredtaskIdstringrequiredquerystringrequiredallowRawContextbooleanrequiredtokenBudgetintegerrequired
Responses
- 201Frame and route
Response fields
frameobjectframe.idstringframe.frameIdstringframe.scopeobjectframe.agentIdstringframe.taskIdstringframe.querystringframe.tokenBudgetintegerframe.itemsobject[]frame.items[].[].recordIdstringframe.items[].[].contentRefstringframe.items[].[].summarystringframe.items[].[].visibilitystringframe.exclusionsobject[]frame.exclusions[].[].recordIdstringframe.exclusions[].[].kindstringframe.exclusions[].[].reasonstringrouteobjectroute.decisionstringroute.foundryobject | nullroute.reasonstringroute.confidenceBasisPointsintegerroute.estimatedSavingsobject | null
- 4xx 5xxThe error envelope.
curl -X POST "https://os.one.ml/api/v1/lanes/context/frames" \
-H "Authorization: Bearer $GENESIS_API_KEY" \
-H "Idempotency-Key: $IDEMPOTENCY_KEY" \
-H "Content-Type: application/json" \
-d '{
"agentId": "string",
"taskId": "string",
"query": "string",
"allowRawContext": true,
"tokenBudget": 1
}'import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const idempotencyKey = '<a stable key per change>'
const result = await genesis.call('lanes_createFrame', {
body: {
agentId: 'string',
taskId: 'string',
query: 'string',
allowRawContext: true,
tokenBudget: 1,
},
}, {
headers: { 'Idempotency-Key': idempotencyKey }, // one key per change, reused on every retry
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "lanes_createFrame",
"arguments": {
"body": {
"agentId": "string",
"taskId": "string",
"query": "string",
"allowRawContext": true,
"tokenBudget": 1
},
"idempotency_key": "<a stable key per change>"
}
}
}Snapshot context records (read)
POST/v1/lanes/context/records/snapshots
Parameters
Idempotency-Keyheader · stringrequiredStable key; reuse it to replay the original result, never act twice
Request body application/json
exportedBystringrequired
Responses
- 201Records snapshot
Response fields
scopeobjectexportedBystringevidenceRefstring
- 4xx 5xxThe error envelope.
curl -X POST "https://os.one.ml/api/v1/lanes/context/records/snapshots" \
-H "Authorization: Bearer $GENESIS_API_KEY" \
-H "Idempotency-Key: $IDEMPOTENCY_KEY" \
-H "Content-Type: application/json" \
-d '{
"exportedBy": "string"
}'import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const idempotencyKey = '<a stable key per change>'
const result = await genesis.call('lanes_snapshotRecords', {
body: {
exportedBy: 'string',
},
}, {
headers: { 'Idempotency-Key': idempotencyKey }, // one key per change, reused on every retry
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "genesis_call",
"arguments": {
"operation": "lanes_snapshotRecords",
"arguments": {
"body": {
"exportedBy": "string"
},
"idempotency_key": "<a stable key per change>"
}
}
}
}Restore context records from a snapshot
POST/v1/lanes/context/records/snapshots/restore
Parameters
Idempotency-Keyheader · stringrequiredStable key; reuse it to replay the original result, never act twice
Request body application/json
scopeobjectexportedBystringevidenceRefstring
Responses
- 202Restore accepted
- 4xx 5xxThe error envelope.
curl -X POST "https://os.one.ml/api/v1/lanes/context/records/snapshots/restore" \
-H "Authorization: Bearer $GENESIS_API_KEY" \
-H "Idempotency-Key: $IDEMPOTENCY_KEY" \
-H "Content-Type: application/json" \
-d '{}'import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const idempotencyKey = '<a stable key per change>'
const result = await genesis.call('lanes_restoreRecords', {
body: {},
}, {
headers: { 'Idempotency-Key': idempotencyKey }, // one key per change, reused on every retry
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "genesis_call",
"arguments": {
"operation": "lanes_restoreRecords",
"arguments": {
"body": {},
"idempotency_key": "<a stable key per change>"
}
}
}
}Deletions
Delete everything Lanes holds for your selection
POST/v1/lanes/deletions/tenant
Parameters
Idempotency-Keyheader · stringrequiredStable key; reuse it to replay the original result, never act twice
Request body application/json
requestedBystringrequiredreasonstringrequiredlegalHoldbooleanrequired
Responses
- 202Deletion report
Response fields
A JSON object.
- 4xx 5xxThe error envelope.
curl -X POST "https://os.one.ml/api/v1/lanes/deletions/tenant" \
-H "Authorization: Bearer $GENESIS_API_KEY" \
-H "Idempotency-Key: $IDEMPOTENCY_KEY" \
-H "Content-Type: application/json" \
-d '{
"requestedBy": "string",
"reason": "string",
"legalHold": true
}'import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const idempotencyKey = '<a stable key per change>'
const result = await genesis.call('lanes_deleteTenant', {
body: {
requestedBy: 'string',
reason: 'string',
legalHold: true,
},
}, {
headers: { 'Idempotency-Key': idempotencyKey }, // one key per change, reused on every retry
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "genesis_call",
"arguments": {
"operation": "lanes_deleteTenant",
"arguments": {
"body": {
"requestedBy": "string",
"reason": "string",
"legalHold": true
},
"idempotency_key": "<a stable key per change>"
}
}
}
}Exports
Export everything Lanes holds for your selection (read)
POST/v1/lanes/exports/tenant
Parameters
Idempotency-Keyheader · stringrequiredStable key; reuse it to replay the original result, never act twice
Request body application/json
requestedBystringrequiredincludeLedgerbooleanrequiredincludeOperationalRecordsbooleanrequired
Responses
- 200Tenant export
Response fields
A JSON object.
- 4xx 5xxThe error envelope.
curl -X POST "https://os.one.ml/api/v1/lanes/exports/tenant" \
-H "Authorization: Bearer $GENESIS_API_KEY" \
-H "Idempotency-Key: $IDEMPOTENCY_KEY" \
-H "Content-Type: application/json" \
-d '{
"requestedBy": "string",
"includeLedger": true,
"includeOperationalRecords": true
}'import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const idempotencyKey = '<a stable key per change>'
const result = await genesis.call('lanes_exportTenant', {
body: {
requestedBy: 'string',
includeLedger: true,
includeOperationalRecords: true,
},
}, {
headers: { 'Idempotency-Key': idempotencyKey }, // one key per change, reused on every retry
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "genesis_call",
"arguments": {
"operation": "lanes_exportTenant",
"arguments": {
"body": {
"requestedBy": "string",
"includeLedger": true,
"includeOperationalRecords": true
},
"idempotency_key": "<a stable key per change>"
}
}
}
}Foundry
Check a Foundry route against the frame's limits
POST/v1/lanes/foundry/routes/enforce
Parameters
Idempotency-Keyheader · stringrequiredStable key; reuse it to replay the original result, never act twice
Request body application/json
routeAliasstringrequiredmodelClassstringrequireddataUseTermsstring[]requiredtokenBudgetintegerrequiredinputTokensintegerrequired
Responses
- 200Enforcement result
Response fields
allowedbooleanrouteAliasstringmodelClassstringinputTokensintegermaxInputTokensintegerreasonsstring[]
- 4xx 5xxThe error envelope.
curl -X POST "https://os.one.ml/api/v1/lanes/foundry/routes/enforce" \
-H "Authorization: Bearer $GENESIS_API_KEY" \
-H "Idempotency-Key: $IDEMPOTENCY_KEY" \
-H "Content-Type: application/json" \
-d '{
"routeAlias": "string",
"modelClass": "string",
"dataUseTerms": [],
"tokenBudget": 1,
"inputTokens": 1
}'import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const idempotencyKey = '<a stable key per change>'
const result = await genesis.call('lanes_enforceFoundryRoute', {
body: {
routeAlias: 'string',
modelClass: 'string',
dataUseTerms: [],
tokenBudget: 1,
inputTokens: 1,
},
}, {
headers: { 'Idempotency-Key': idempotencyKey }, // one key per change, reused on every retry
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "lanes_enforceFoundryRoute",
"arguments": {
"body": {
"routeAlias": "string",
"modelClass": "string",
"dataUseTerms": [],
"tokenBudget": 1,
"inputTokens": 1
},
"idempotency_key": "<a stable key per change>"
}
}
}Lanes
Get a context record
GET/v1/lanes/lanes/records/{recordId}
Parameters
recordIdpath · stringrequired
Responses
- 200Context record
Response fields
idstringscopeobjectsubjectstringcontentRefstringsummarystringvisibility"Tenant" | "CollectiveCard" | "Public"labelsstring[]
- 404Not found in your selection
- 4xx 5xxThe error envelope.
curl "https://os.one.ml/api/v1/lanes/lanes/records/$RECORD_ID" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('lanes_getRecord', {
recordId: '<recordId>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "lanes_getRecord",
"arguments": {
"recordId": "<recordId>"
}
}
}Preview the context frame and route for a query (read)
POST/v1/lanes/lanes/retrieve
Parameters
Idempotency-Keyheader · stringrequiredStable key; reuse it to replay the original result, never act twice
Request body application/json
Type: object | object
Responses
- 200Frame and route
Response fields
frameobjectframe.idstringframe.frameIdstringframe.scopeobjectframe.agentIdstringframe.taskIdstringframe.querystringframe.tokenBudgetintegerframe.itemsobject[]frame.items[].[].recordIdstringframe.items[].[].contentRefstringframe.items[].[].summarystringframe.items[].[].visibilitystringframe.exclusionsobject[]frame.exclusions[].[].recordIdstringframe.exclusions[].[].kindstringframe.exclusions[].[].reasonstringrouteobjectroute.decisionstringroute.foundryobject | nullroute.reasonstringroute.confidenceBasisPointsintegerroute.estimatedSavingsobject | null
- 4xx 5xxThe error envelope.
curl -X POST "https://os.one.ml/api/v1/lanes/lanes/retrieve" \
-H "Authorization: Bearer $GENESIS_API_KEY" \
-H "Idempotency-Key: $IDEMPOTENCY_KEY" \
-H "Content-Type: application/json" \
-d '{
"agentId": "string",
"taskId": "string",
"query": "string",
"allowRawContext": true,
"tokenBudget": 1
}'import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const idempotencyKey = '<a stable key per change>'
const result = await genesis.call('lanes_retrieve', {
body: {
agentId: 'string',
taskId: 'string',
query: 'string',
allowRawContext: true,
tokenBudget: 1,
},
}, {
headers: { 'Idempotency-Key': idempotencyKey }, // one key per change, reused on every retry
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "lanes_retrieve",
"arguments": {
"body": {
"agentId": "string",
"taskId": "string",
"query": "string",
"allowRawContext": true,
"tokenBudget": 1
},
"idempotency_key": "<a stable key per change>"
}
}
}Write a context record
POST/v1/lanes/lanes/write
Parameters
Idempotency-Keyheader · stringrequiredStable key; reuse it to replay the original result, never act twice
Request body application/json
subjectstringrequiredcontentRefstringrequiredsummarystringrequiredvisibility"Tenant" | "CollectiveCard" | "Public"requiredlabelsstring[]requiredproposedDataClassstring
Responses
- 201Record written
Response fields
idstringscopeobjectsubjectstringcontentRefstringsummarystringvisibility"Tenant" | "CollectiveCard" | "Public"labelsstring[]
- 409Idempotency-Key reused with a different payload
- 4xx 5xxThe error envelope.
curl -X POST "https://os.one.ml/api/v1/lanes/lanes/write" \
-H "Authorization: Bearer $GENESIS_API_KEY" \
-H "Idempotency-Key: $IDEMPOTENCY_KEY" \
-H "Content-Type: application/json" \
-d '{
"subject": "string",
"contentRef": "string",
"summary": "string",
"visibility": "Tenant",
"labels": []
}'import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const idempotencyKey = '<a stable key per change>'
const result = await genesis.call('lanes_writeRecord', {
body: {
subject: 'string',
contentRef: 'string',
summary: 'string',
visibility: 'Tenant',
labels: [],
},
}, {
headers: { 'Idempotency-Key': idempotencyKey }, // one key per change, reused on every retry
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "lanes_writeRecord",
"arguments": {
"body": {
"subject": "string",
"contentRef": "string",
"summary": "string",
"visibility": "Tenant",
"labels": []
},
"idempotency_key": "<a stable key per change>"
}
}
}Ledger
Read the ledger entries for a frame
GET/v1/lanes/ledger/frames/{frameId}
Parameters
frameIdpath · stringrequired
Responses
- 200Ledger entries
Response fields
sequenceintegerframeIdstringkindstringdetailany
- 4xx 5xxThe error envelope.
curl "https://os.one.ml/api/v1/lanes/ledger/frames/$FRAME_ID" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('lanes_getLedgerFrame', {
frameId: '<frameId>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "lanes_getLedgerFrame",
"arguments": {
"frameId": "<frameId>"
}
}
}Snapshot the ledger (read)
POST/v1/lanes/ledger/snapshots
Parameters
Idempotency-Keyheader · stringrequiredStable key; reuse it to replay the original result, never act twice
Request body application/json
exportedBystringrequired
Responses
- 201Ledger snapshot
Response fields
scopeobjectexportedBystringevidenceRefstring
- 4xx 5xxThe error envelope.
curl -X POST "https://os.one.ml/api/v1/lanes/ledger/snapshots" \
-H "Authorization: Bearer $GENESIS_API_KEY" \
-H "Idempotency-Key: $IDEMPOTENCY_KEY" \
-H "Content-Type: application/json" \
-d '{
"exportedBy": "string"
}'import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const idempotencyKey = '<a stable key per change>'
const result = await genesis.call('lanes_snapshotLedger', {
body: {
exportedBy: 'string',
},
}, {
headers: { 'Idempotency-Key': idempotencyKey }, // one key per change, reused on every retry
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "genesis_call",
"arguments": {
"operation": "lanes_snapshotLedger",
"arguments": {
"body": {
"exportedBy": "string"
},
"idempotency_key": "<a stable key per change>"
}
}
}
}Restore the ledger from a snapshot
POST/v1/lanes/ledger/snapshots/restore
Parameters
Idempotency-Keyheader · stringrequiredStable key; reuse it to replay the original result, never act twice
Request body application/json
scopeobjectexportedBystringevidenceRefstring
Responses
- 202Restore accepted
- 4xx 5xxThe error envelope.
curl -X POST "https://os.one.ml/api/v1/lanes/ledger/snapshots/restore" \
-H "Authorization: Bearer $GENESIS_API_KEY" \
-H "Idempotency-Key: $IDEMPOTENCY_KEY" \
-H "Content-Type: application/json" \
-d '{}'import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const idempotencyKey = '<a stable key per change>'
const result = await genesis.call('lanes_restoreLedger', {
body: {},
}, {
headers: { 'Idempotency-Key': idempotencyKey }, // one key per change, reused on every retry
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "genesis_call",
"arguments": {
"operation": "lanes_restoreLedger",
"arguments": {
"body": {},
"idempotency_key": "<a stable key per change>"
}
}
}
}Operations
Read the receipt for an earlier write
GET/v1/lanes/operations/{operationId}
Parameters
operationIdpath · stringrequired
Responses
- 200Operation receipt
Response fields
operationIdstringstatestringresponseStatusinteger
- 404Not found in your selection
- 4xx 5xxThe error envelope.
curl "https://os.one.ml/api/v1/lanes/operations/$OPERATION_ID" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('lanes_getOperation', {
operationId: '<operationId>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "lanes_getOperation",
"arguments": {
"operationId": "<operationId>"
}
}
}Read meter, audit, evidence and probe records
GET/v1/lanes/operations/records
Responses
- 200Operational records
Response fields
meterRecordsobject[]auditRecordsobject[]evidenceRecordsobject[]probeEventsobject[]
- 4xx 5xxThe error envelope.
curl "https://os.one.ml/api/v1/lanes/operations/records" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('lanes_listOperationalRecords'){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "lanes_listOperationalRecords",
"arguments": {}
}
}Policy
Evaluate data-use policy for an action
POST/v1/lanes/policy/evaluate
Parameters
Idempotency-Keyheader · stringrequiredStable key; reuse it to replay the original result, never act twice
Request body application/json
actorIdstringrequiredactionstringrequireddataClassstringrequiredallowRawContextbooleanrequiredmodelClassstringrequired
Responses
- 200Policy decision
Response fields
decisionIdstringallowedbooleandecision"allow" | "deny"reasonstringrequiresRedactionbooleanauditLevelstringreasonsstring[]denialReasonsstring[]explanationobject
- 4xx 5xxThe error envelope.
curl -X POST "https://os.one.ml/api/v1/lanes/policy/evaluate" \
-H "Authorization: Bearer $GENESIS_API_KEY" \
-H "Idempotency-Key: $IDEMPOTENCY_KEY" \
-H "Content-Type: application/json" \
-d '{
"actorId": "string",
"action": "string",
"dataClass": "string",
"allowRawContext": true,
"modelClass": "string"
}'import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const idempotencyKey = '<a stable key per change>'
const result = await genesis.call('lanes_evaluatePolicy', {
body: {
actorId: 'string',
action: 'string',
dataClass: 'string',
allowRawContext: true,
modelClass: 'string',
},
}, {
headers: { 'Idempotency-Key': idempotencyKey }, // one key per change, reused on every retry
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "lanes_evaluatePolicy",
"arguments": {
"body": {
"actorId": "string",
"action": "string",
"dataClass": "string",
"allowRawContext": true,
"modelClass": "string"
},
"idempotency_key": "<a stable key per change>"
}
}
}Review
Approve or reject a promotion candidate
POST/v1/lanes/promotions/{promotionId}/review
Parameters
promotionIdpath · stringrequiredIdempotency-Keyheader · stringrequiredStable key; reuse it to replay the original result, never act twice
Request body application/json
promotionIdstringrequiredMust equal the path promotionId
reviewedBystringrequiredapprovebooleanrequiredreasonstringrequired
Responses
- 200Reviewed candidate
Response fields
A JSON object.
- 4xx 5xxThe error envelope.
curl -X POST "https://os.one.ml/api/v1/lanes/promotions/$PROMOTION_ID/review" \
-H "Authorization: Bearer $GENESIS_API_KEY" \
-H "Idempotency-Key: $IDEMPOTENCY_KEY" \
-H "Content-Type: application/json" \
-d '{
"promotionId": "string",
"reviewedBy": "string",
"approve": true,
"reason": "string"
}'import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const idempotencyKey = '<a stable key per change>'
const result = await genesis.call('lanes_reviewPromotion', {
promotionId: '<promotionId>',
body: {
promotionId: 'string',
reviewedBy: 'string',
approve: true,
reason: 'string',
},
}, {
headers: { 'Idempotency-Key': idempotencyKey }, // one key per change, reused on every retry
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "lanes_reviewPromotion",
"arguments": {
"promotionId": "<promotionId>",
"body": {
"promotionId": "string",
"reviewedBy": "string",
"approve": true,
"reason": "string"
},
"idempotency_key": "<a stable key per change>"
}
}
}Promotions
List promotion candidates
GET/v1/lanes/promotions/candidates
Responses
- 200Promotion candidates
Response fields
Type:
object[] - 4xx 5xxThe error envelope.
curl "https://os.one.ml/api/v1/lanes/promotions/candidates" \
-H "Authorization: Bearer $GENESIS_API_KEY"import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('lanes_listPromotionCandidates'){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "lanes_listPromotionCandidates",
"arguments": {}
}
}Propose a record for promotion
POST/v1/lanes/promotions/candidates
Parameters
Idempotency-Keyheader · stringrequiredStable key; reuse it to replay the original result, never act twice
Request body application/json
sourceRecordIdstringrequiredproposedBystringrequiredsanitizedContentRefstringsanitizedSummarystringlabelsstring[]
Responses
- 202Candidate proposed
Response fields
A JSON object.
- 4xx 5xxThe error envelope.
curl -X POST "https://os.one.ml/api/v1/lanes/promotions/candidates" \
-H "Authorization: Bearer $GENESIS_API_KEY" \
-H "Idempotency-Key: $IDEMPOTENCY_KEY" \
-H "Content-Type: application/json" \
-d '{
"sourceRecordId": "string",
"proposedBy": "string"
}'import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const idempotencyKey = '<a stable key per change>'
const result = await genesis.call('lanes_proposePromotion', {
body: {
sourceRecordId: 'string',
proposedBy: 'string',
},
}, {
headers: { 'Idempotency-Key': idempotencyKey }, // one key per change, reused on every retry
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "lanes_proposePromotion",
"arguments": {
"body": {
"sourceRecordId": "string",
"proposedBy": "string"
},
"idempotency_key": "<a stable key per change>"
}
}
}Recovery
Restore records, cache and ledger from a recovery bundle
POST/v1/lanes/recovery/restore
Parameters
Idempotency-Keyheader · stringrequiredStable key; reuse it to replay the original result, never act twice
Request body application/json
A JSON object; see the description above.
Responses
- 202Restore report
Response fields
scopeobjectcontextRecordsRestoredintegercacheArtifactsRestoredintegerframesRestoredintegerledgerEntriesRestoredintegerstageOrderstring[]
- 4xx 5xxThe error envelope.
curl -X POST "https://os.one.ml/api/v1/lanes/recovery/restore" \
-H "Authorization: Bearer $GENESIS_API_KEY" \
-H "Idempotency-Key: $IDEMPOTENCY_KEY" \
-H "Content-Type: application/json" \
-d '{}'import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const idempotencyKey = '<a stable key per change>'
const result = await genesis.call('lanes_recoveryRestore', {
body: {},
}, {
headers: { 'Idempotency-Key': idempotencyKey }, // one key per change, reused on every retry
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "genesis_call",
"arguments": {
"operation": "lanes_recoveryRestore",
"arguments": {
"body": {},
"idempotency_key": "<a stable key per change>"
}
}
}
}One Superintelligence, Inc. · Built from Genesis 0.1.12 and the live gateway on 2026-10-20. Support