API reference
Minds
Owned Minds and their dedicated, persisted memory.
- Operations
- 21
- Base path
https://os.one.ml/api/v1/minds- Scopes
- Authorized by the service; see each operation
- API keys
- 8 need a signed-in session · 13 refused to API keys
- SDK
genesis.call('minds_listMindAttachments', …)· helpers undergenesis.minds- MCP
- 21 tools
Operations
{mind id}
List canonical Mind attachments including tombstones
GET/v1/minds/{mind_id}/attachments
Original selected pf_console human bearer only, verified online with current organization/project/workspace/Sandbox context. No agent credential fallback, caller tenant headers, credential issuance, context fingerprint or automatic retry. Independently default-off owner-management admission; all bodies use camelCase.
Parameters
mind_idpath · string (uuid)required
Responses
- 200Canonical IAM metadata, including any retained revocation tombstone.
Response fields
attachmentsobject[]requiredattachments[].[].idstringrequiredpattern ^mat_[0-7][0-9A-HJKMNP-TV-Z]{25}$
attachments[].[].versionintegerrequiredmin 1 · max 9007199254740991
attachments[].[].organizationIdstringrequiredattachments[].[].projectIdstringrequiredattachments[].[].mindIdstring (uuid)requiredpattern ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$
attachments[].[].subjectobject | objectrequiredattachments[].[].permissions["minds.agent_data.read"] | ["minds.agent_data.read","minds.agent_data.write"]requiredattachments[].[].sharedNamespacestring | nullrequiredServer-derived group:<agp ID> for group subjects; null for an individual agent.
attachments[].[].expiresAtintegerrequiredmin 1 · max 9007199254740991
attachments[].[].revokedAtinteger | nullrequired
- 4xx 5xxThe error envelope.
curl "https://os.one.ml/api/v1/minds/$MIND_ID/attachments" \
-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('minds_listMindAttachments', {
mind_id: '<mind_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "minds_listMindAttachments",
"arguments": {
"mind_id": "<mind_id>"
}
}
}Attach an existing agent or group to a Mind
POST/v1/minds/{mind_id}/attachments
Original selected pf_console human bearer only, verified online with current organization/project/workspace/Sandbox context. No agent credential fallback, caller tenant headers, credential issuance, context fingerprint or automatic retry. Independently default-off owner-management admission; all bodies use camelCase.
Parameters
mind_idpath · string (uuid)required
Request body application/json
operationIdstring (uuid)requiredpattern ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$
expectedVersionintegerrequiredmin 0 · max 9007199254740990
subjectobject | objectrequiredpermissions["minds.agent_data.read"] | ["minds.agent_data.read","minds.agent_data.write"]requiredexpiresAtintegerrequiredExplicit Unix milliseconds, future and at most30days from current server time. min 1 · max 9007199254740991
Responses
- 200Canonical IAM metadata, including any retained revocation tombstone.
Response fields
idstringrequiredpattern ^mat_[0-7][0-9A-HJKMNP-TV-Z]{25}$
versionintegerrequiredmin 1 · max 9007199254740991
organizationIdstringrequiredprojectIdstringrequiredmindIdstring (uuid)requiredpattern ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$
subjectobject | objectrequiredpermissions["minds.agent_data.read"] | ["minds.agent_data.read","minds.agent_data.write"]requiredsharedNamespacestring | nullrequiredServer-derived group:<agp ID> for group subjects; null for an individual agent.
expiresAtintegerrequiredmin 1 · max 9007199254740991
revokedAtinteger | nullrequired
- 4xx 5xxThe error envelope.
curl -X POST "https://os.one.ml/api/v1/minds/$MIND_ID/attachments" \
-H "Authorization: Bearer $GENESIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"operationId": "00000000-0000-4000-8000-000000000000",
"expectedVersion": 0,
"subject": {
"kind": "agent",
"agentId": "string"
},
"permissions": [
"minds.agent_data.read"
],
"expiresAt": 1
}'import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('minds_attachMind', {
mind_id: '<mind_id>',
body: {
operationId: '00000000-0000-4000-8000-000000000000',
expectedVersion: 0,
subject: {
kind: 'agent',
agentId: 'string',
},
permissions: [
'minds.agent_data.read',
],
expiresAt: 1,
},
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "minds_attachMind",
"arguments": {
"mind_id": "<mind_id>",
"body": {
"operationId": "00000000-0000-4000-8000-000000000000",
"expectedVersion": 0,
"subject": {
"kind": "agent",
"agentId": "string"
},
"permissions": [
"minds.agent_data.read"
],
"expiresAt": 1
}
}
}
}Detach a canonical Mind attachment and retain its revision
DELETE/v1/minds/{mind_id}/attachments/{attachment_id}
Original selected pf_console human bearer only, verified online with current organization/project/workspace/Sandbox context. No agent credential fallback, caller tenant headers, credential issuance, context fingerprint or automatic retry. Independently default-off owner-management admission; all bodies use camelCase.
Parameters
mind_idpath · string (uuid)requiredattachment_idpath · stringrequired
Request body application/json
operationIdstring (uuid)requiredpattern ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$
expectedVersionintegerrequiredmin 0 · max 9007199254740990
Responses
- 200Canonical IAM metadata, including any retained revocation tombstone.
Response fields
idstringrequiredpattern ^mat_[0-7][0-9A-HJKMNP-TV-Z]{25}$
versionintegerrequiredmin 1 · max 9007199254740991
organizationIdstringrequiredprojectIdstringrequiredmindIdstring (uuid)requiredpattern ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$
subjectobject | objectrequiredpermissions["minds.agent_data.read"] | ["minds.agent_data.read","minds.agent_data.write"]requiredsharedNamespacestring | nullrequiredServer-derived group:<agp ID> for group subjects; null for an individual agent.
expiresAtintegerrequiredmin 1 · max 9007199254740991
revokedAtinteger | nullrequired
- 4xx 5xxThe error envelope.
curl -X DELETE "https://os.one.ml/api/v1/minds/$MIND_ID/attachments/$ATTACHMENT_ID" \
-H "Authorization: Bearer $GENESIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"operationId": "00000000-0000-4000-8000-000000000000",
"expectedVersion": 0
}'import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('minds_detachMind', {
mind_id: '<mind_id>',
attachment_id: '<attachment_id>',
body: {
operationId: '00000000-0000-4000-8000-000000000000',
expectedVersion: 0,
},
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "minds_detachMind",
"arguments": {
"mind_id": "<mind_id>",
"attachment_id": "<attachment_id>",
"body": {
"operationId": "00000000-0000-4000-8000-000000000000",
"expectedVersion": 0
}
}
}
}Agent groups
List canonical owner agent groups
GET/v1/minds/agent-groups
Original selected pf_console human bearer only, verified online with current organization/project/workspace/Sandbox context. No agent credential fallback, caller tenant headers, credential issuance, context fingerprint or automatic retry. Independently default-off owner-management admission; all bodies use camelCase.
Responses
- 200Canonical IAM metadata, including any retained revocation tombstone.
Response fields
groupsobject[]requiredgroups[].[].idstringrequiredpattern ^agp_[0-7][0-9A-HJKMNP-TV-Z]{25}$
groups[].[].organizationIdstringrequiredgroups[].[].ownerIdstringrequiredgroups[].[].organizationGenerationintegerrequiredmin 1 · max 9007199254740991
groups[].[].namestringrequiredNon-whitespace label, at most128 UTF-8 bytes; original bytes retained. min length 1 · max length 128
groups[].[].versionintegerrequiredmin 1 · max 9007199254740991
groups[].[].revokedAtinteger | nullrequired
- 4xx 5xxThe error envelope.
curl "https://os.one.ml/api/v1/minds/agent-groups" \
-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('minds_listAgentGroups'){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "minds_listAgentGroups",
"arguments": {}
}
}Create a canonical owner agent group
POST/v1/minds/agent-groups
Original selected pf_console human bearer only, verified online with current organization/project/workspace/Sandbox context. No agent credential fallback, caller tenant headers, credential issuance, context fingerprint or automatic retry. Independently default-off owner-management admission; all bodies use camelCase.
Request body application/json
operationIdstring (uuid)requiredpattern ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$
namestringrequiredNon-whitespace and at most128 UTF-8 bytes. min length 1 · max length 128
Responses
- 200Canonical IAM metadata, including any retained revocation tombstone.
Response fields
idstringrequiredpattern ^agp_[0-7][0-9A-HJKMNP-TV-Z]{25}$
organizationIdstringrequiredownerIdstringrequiredorganizationGenerationintegerrequiredmin 1 · max 9007199254740991
namestringrequiredNon-whitespace label, at most128 UTF-8 bytes; original bytes retained. min length 1 · max length 128
versionintegerrequiredmin 1 · max 9007199254740991
revokedAtinteger | nullrequired
- 4xx 5xxThe error envelope.
curl -X POST "https://os.one.ml/api/v1/minds/agent-groups" \
-H "Authorization: Bearer $GENESIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"operationId": "00000000-0000-4000-8000-000000000000",
"name": "string"
}'import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('minds_createAgentGroup', {
body: {
operationId: '00000000-0000-4000-8000-000000000000',
name: 'string',
},
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "minds_createAgentGroup",
"arguments": {
"body": {
"operationId": "00000000-0000-4000-8000-000000000000",
"name": "string"
}
}
}
}Members
List canonical group members including tombstones
GET/v1/minds/agent-groups/{group_id}/members
Original selected pf_console human bearer only, verified online with current organization/project/workspace/Sandbox context. No agent credential fallback, caller tenant headers, credential issuance, context fingerprint or automatic retry. Independently default-off owner-management admission; all bodies use camelCase.
Parameters
group_idpath · stringrequired
Responses
- 200Canonical IAM metadata, including any retained revocation tombstone.
Response fields
membersobject[]requiredmembers[].[].groupIdstringrequiredpattern ^agp_[0-7][0-9A-HJKMNP-TV-Z]{25}$
members[].[].agentIdstringrequiredpattern ^a_[0-7][0-9A-HJKMNP-TV-Z]{25}$
members[].[].agentDidstringrequiredpattern ^did:[A-Za-z0-9:._%-]{1,512}$
members[].[].agentCreatedAtintegerrequiredmin 1 · max 9007199254740991
members[].[].versionintegerrequiredmin 1 · max 9007199254740991
members[].[].revokedAtinteger | nullrequired
- 4xx 5xxThe error envelope.
curl "https://os.one.ml/api/v1/minds/agent-groups/$GROUP_ID/members" \
-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('minds_listAgentGroupMembers', {
group_id: '<group_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "minds_listAgentGroupMembers",
"arguments": {
"group_id": "<group_id>"
}
}
}Add a canonical agent to a group with an explicit revision
POST/v1/minds/agent-groups/{group_id}/members
Original selected pf_console human bearer only, verified online with current organization/project/workspace/Sandbox context. No agent credential fallback, caller tenant headers, credential issuance, context fingerprint or automatic retry. Independently default-off owner-management admission; all bodies use camelCase.
Parameters
group_idpath · stringrequired
Request body application/json
operationIdstring (uuid)requiredpattern ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$
expectedVersionintegerrequiredmin 0 · max 9007199254740990
agentIdstringrequiredpattern ^a_[0-7][0-9A-HJKMNP-TV-Z]{25}$
Responses
- 200Canonical IAM metadata, including any retained revocation tombstone.
Response fields
groupIdstringrequiredpattern ^agp_[0-7][0-9A-HJKMNP-TV-Z]{25}$
agentIdstringrequiredpattern ^a_[0-7][0-9A-HJKMNP-TV-Z]{25}$
agentDidstringrequiredpattern ^did:[A-Za-z0-9:._%-]{1,512}$
agentCreatedAtintegerrequiredmin 1 · max 9007199254740991
versionintegerrequiredmin 1 · max 9007199254740991
revokedAtinteger | nullrequired
- 4xx 5xxThe error envelope.
curl -X POST "https://os.one.ml/api/v1/minds/agent-groups/$GROUP_ID/members" \
-H "Authorization: Bearer $GENESIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"operationId": "00000000-0000-4000-8000-000000000000",
"expectedVersion": 0,
"agentId": "string"
}'import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('minds_addAgentGroupMember', {
group_id: '<group_id>',
body: {
operationId: '00000000-0000-4000-8000-000000000000',
expectedVersion: 0,
agentId: 'string',
},
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "minds_addAgentGroupMember",
"arguments": {
"group_id": "<group_id>",
"body": {
"operationId": "00000000-0000-4000-8000-000000000000",
"expectedVersion": 0,
"agentId": "string"
}
}
}
}Remove a group member and retain its revision
DELETE/v1/minds/agent-groups/{group_id}/members/{agent_id}
Original selected pf_console human bearer only, verified online with current organization/project/workspace/Sandbox context. No agent credential fallback, caller tenant headers, credential issuance, context fingerprint or automatic retry. Independently default-off owner-management admission; all bodies use camelCase.
Parameters
group_idpath · stringrequiredagent_idpath · stringrequired
Request body application/json
operationIdstring (uuid)requiredpattern ^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$
expectedVersionintegerrequiredmin 0 · max 9007199254740990
Responses
- 200Canonical IAM metadata, including any retained revocation tombstone.
Response fields
groupIdstringrequiredpattern ^agp_[0-7][0-9A-HJKMNP-TV-Z]{25}$
agentIdstringrequiredpattern ^a_[0-7][0-9A-HJKMNP-TV-Z]{25}$
agentDidstringrequiredpattern ^did:[A-Za-z0-9:._%-]{1,512}$
agentCreatedAtintegerrequiredmin 1 · max 9007199254740991
versionintegerrequiredmin 1 · max 9007199254740991
revokedAtinteger | nullrequired
- 4xx 5xxThe error envelope.
curl -X DELETE "https://os.one.ml/api/v1/minds/agent-groups/$GROUP_ID/members/$AGENT_ID" \
-H "Authorization: Bearer $GENESIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"operationId": "00000000-0000-4000-8000-000000000000",
"expectedVersion": 0
}'import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('minds_removeAgentGroupMember', {
group_id: '<group_id>',
agent_id: '<agent_id>',
body: {
operationId: '00000000-0000-4000-8000-000000000000',
expectedVersion: 0,
},
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "minds_removeAgentGroupMember",
"arguments": {
"group_id": "<group_id>",
"agent_id": "<agent_id>",
"body": {
"operationId": "00000000-0000-4000-8000-000000000000",
"expectedVersion": 0
}
}
}
}Agent
Insert memory using an existing agent credential
POST/v1/minds/agent/memory/episodic
Uses an existing mak_acr credential or Auth agent token, independently of the human Console selection. Requires explicit mind and optional authorized canonical group. No attachment, key creation, token exchange, human delegation or automatic retry. Producer admission is default off (MINDS_AGENT_MEMORY_ENABLED).
Parameters
mindquery · string (uuid)requiredgroupquery · stringdpopheader · stringCaller-signed proof for the controller capability endpoint: POST for insert, GET for read/search, canonical htu excluding query. Required only by sender-constrained agent tokens. No automatic nonce retry.
Request body application/json
eventobjectrequiredevent.idstring (uuid)requiredCaller event UUID; insertion returns a distinct storage UUID used by get. pattern ^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$
event.contentstringrequiredNon-whitespace content; maximum 16,000 UTF-8 bytes. min length 1 · max length 16000
event.timestampstring (date-time)requiredmax length 128
event.event_type"Conversation" | "Command" | "Query" | "Document" | "Error" | "Success" | "Learning" | "Decision" | "Action" | "Context" | "Knowledge"event.summarystring | nullNullable summary; maximum 2,000 UTF-8 bytes. max length 2000
event.tagsstring[]
Responses
- 200Actual persisted agent-memory result.
Response fields
idstring (uuid)requiredPersisted storage UUID; distinct from the caller event UUID. pattern ^[0-9a-f-]{36}$
- 401Existing credential rejected or DPOP_NONCE_REQUIRED. Sign a fresh proof explicitly; this call is never automatically repeated.
- 4xx 5xxThe error envelope.
curl -X POST "https://os.one.ml/api/v1/minds/agent/memory/episodic?mind=$MIND" \
-H "Authorization: Bearer $GENESIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"event": {
"id": "00000000-0000-4000-8000-000000000000",
"content": "string",
"timestamp": "2026-10-20T00:00:00Z"
}
}'import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('minds_agentInsertEpisodicMemory', {
mind: '<mind>',
body: {
event: {
id: '00000000-0000-4000-8000-000000000000',
content: 'string',
timestamp: '2026-10-20T00:00:00Z',
},
},
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "minds_agentInsertEpisodicMemory",
"arguments": {
"mind": "<mind>",
"body": {
"event": {
"id": "00000000-0000-4000-8000-000000000000",
"content": "string",
"timestamp": "2026-10-20T00:00:00Z"
}
}
}
}
}Read persisted agent memory by storage UUID
GET/v1/minds/agent/memory/episodic/{storage_id}
Uses an existing mak_acr credential or Auth agent token, independently of the human Console selection. Requires explicit mind and optional authorized canonical group. No attachment, key creation, token exchange, human delegation or automatic retry. Producer admission is default off (MINDS_AGENT_MEMORY_ENABLED).
Parameters
storage_idpath · string (uuid)requiredmindquery · string (uuid)requiredgroupquery · stringdpopheader · stringCaller-signed proof for the controller capability endpoint: POST for insert, GET for read/search, canonical htu excluding query. Required only by sender-constrained agent tokens. No automatic nonce retry.
Responses
- 200Actual persisted agent-memory result.
Response fields
itemobject | nullrequired
- 401Existing credential rejected or DPOP_NONCE_REQUIRED. Sign a fresh proof explicitly; this call is never automatically repeated.
- 4xx 5xxThe error envelope.
curl "https://os.one.ml/api/v1/minds/agent/memory/episodic/$STORAGE_ID?mind=$MIND" \
-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('minds_agentGetEpisodicMemory', {
storage_id: '<storage_id>',
mind: '<mind>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "minds_agentGetEpisodicMemory",
"arguments": {
"storage_id": "<storage_id>",
"mind": "<mind>"
}
}
}Search private or explicitly authorized group memory
POST/v1/minds/agent/search
Uses an existing mak_acr credential or Auth agent token, independently of the human Console selection. Requires explicit mind and optional authorized canonical group. No attachment, key creation, token exchange, human delegation or automatic retry. Producer admission is default off (MINDS_AGENT_MEMORY_ENABLED).
Parameters
mindquery · string (uuid)requiredgroupquery · stringdpopheader · stringCaller-signed proof for the controller capability endpoint: POST for insert, GET for read/search, canonical htu excluding query. Required only by sender-constrained agent tokens. No automatic nonce retry.
Request body application/json
textstringrequiredNon-whitespace search text; maximum 1,000 UTF-8 bytes. min length 1 · max length 1000
limitintegermin 1 · max 100 · default 20
Responses
- 200Actual persisted agent-memory result.
Response fields
idstring (uuid)requiredCaller event UUID; insertion returns a distinct storage UUID used by get. pattern ^[0-9a-f-]{36}$
contentstringrequiredmin length 1 · max length 16000
timestampstring (date-time)requiredevent_type"Conversation" | "Command" | "Query" | "Document" | "Error" | "Success" | "Learning" | "Decision" | "Action" | "Context" | "Knowledge"requiredsummarystring | nullmax length 2000
tagsstring[]required
- 401Existing credential rejected or DPOP_NONCE_REQUIRED. Sign a fresh proof explicitly; this call is never automatically repeated.
- 4xx 5xxThe error envelope.
curl -X POST "https://os.one.ml/api/v1/minds/agent/search?mind=$MIND" \
-H "Authorization: Bearer $GENESIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"text": "string"
}'import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('minds_agentSearchMemory', {
mind: '<mind>',
body: {
text: 'string',
},
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "minds_agentSearchMemory",
"arguments": {
"mind": "<mind>",
"body": {
"text": "string"
}
}
}
}Memory
Persist an episodic event in an explicit ready Mind; never automatically replay
POST/v1/minds/memory/episodic
Requires an original human One account session with a verified pf_console Sandbox selection. API keys and M2M credentials have no Minds producer and are refused. No caller tenant fields.
Parameters
mindquery · string (uuid)required
Request body application/json
eventobjectrequiredevent.idstring (uuid)requiredCaller event UUID; insertion returns a distinct storage UUID used by get. pattern ^[0-9a-f-]{36}$
event.contentstringrequiredmin length 1 · max length 16000
event.timestampstring (date-time)requiredevent.event_type"Conversation" | "Command" | "Query" | "Document" | "Error" | "Success" | "Learning" | "Decision" | "Action" | "Context" | "Knowledge"event.summarystring | nullmax length 2000
event.tagsstring[]
Responses
- 200Actual persisted service response; creation 202 is provisioning, not Ready.
Response fields
idstring (uuid)requiredPersisted storage UUID; distinct from the caller event UUID. pattern ^[0-9a-f-]{36}$
- 4xx 5xxThe error envelope.
curl -X POST "https://os.one.ml/api/v1/minds/memory/episodic?mind=$MIND" \
-H "Authorization: Bearer $GENESIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"event": {
"id": "00000000-0000-4000-8000-000000000000",
"content": "string",
"timestamp": "2026-10-20T00:00:00Z"
}
}'import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('minds_insertEpisodicMemory', {
mind: '<mind>',
body: {
event: {
id: '00000000-0000-4000-8000-000000000000',
content: 'string',
timestamp: '2026-10-20T00:00:00Z',
},
},
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "minds_insertEpisodicMemory",
"arguments": {
"mind": "<mind>",
"body": {
"event": {
"id": "00000000-0000-4000-8000-000000000000",
"content": "string",
"timestamp": "2026-10-20T00:00:00Z"
}
}
}
}
}Read a persisted memory by storage UUID in an explicit ready Mind
GET/v1/minds/memory/episodic/{storage_id}
Requires an original human One account session with a verified pf_console Sandbox selection. API keys and M2M credentials have no Minds producer and are refused. No caller tenant fields.
Parameters
storage_idpath · string (uuid)requiredmindquery · string (uuid)required
Responses
- 200Actual persisted service response; creation 202 is provisioning, not Ready.
Response fields
itemobject | nullrequired
- 4xx 5xxThe error envelope.
curl "https://os.one.ml/api/v1/minds/memory/episodic/$STORAGE_ID?mind=$MIND" \
-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('minds_getEpisodicMemory', {
storage_id: '<storage_id>',
mind: '<mind>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "minds_getEpisodicMemory",
"arguments": {
"storage_id": "<storage_id>",
"mind": "<mind>"
}
}
}Update content of the same stored episodic event
PUT/v1/minds/memory/episodic/{storage_id}
Original human Console Sandbox authorization only. Requires the existing logical event_id and preserves all other stored metadata. No delete/recreate, automatic retry or atomic compare-and-swap guarantee. Reconcile an unknown result with get.
Parameters
storage_idpath · string (uuid)requiredmindquery · string (uuid)required
Request body application/json
event_idstring (uuid)requiredmin length 36 · max length 36
contentstringrequiredmin length 1 · max length 16000
Responses
- 200The existing event content was updated.
Response fields
oktruerequired
- 4xx 5xxThe error envelope.
curl -X PUT "https://os.one.ml/api/v1/minds/memory/episodic/$STORAGE_ID?mind=$MIND" \
-H "Authorization: Bearer $GENESIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"event_id": "00000000-0000-4000-8000-000000000000",
"content": "string"
}'import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('minds_updateEpisodicMemory', {
storage_id: '<storage_id>',
mind: '<mind>',
body: {
event_id: '00000000-0000-4000-8000-000000000000',
content: 'string',
},
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "minds_updateEpisodicMemory",
"arguments": {
"storage_id": "<storage_id>",
"mind": "<mind>",
"body": {
"event_id": "00000000-0000-4000-8000-000000000000",
"content": "string"
}
}
}
}Search
Search actual episodic memory in an explicit ready Mind
POST/v1/minds/search
Requires an original human One account session with a verified pf_console Sandbox selection. API keys and M2M credentials have no Minds producer and are refused. No caller tenant fields.
Parameters
mindquery · string (uuid)required
Request body application/json
textstringrequiredmin length 1 · max length 1000
limitintegermin 1 · max 100 · default 20
Responses
- 200Actual persisted service response; creation 202 is provisioning, not Ready.
Response fields
idstring (uuid)requiredCaller event UUID; insertion returns a distinct storage UUID used by get. pattern ^[0-9a-f-]{36}$
contentstringrequiredmin length 1 · max length 16000
timestampstring (date-time)requiredevent_type"Conversation" | "Command" | "Query" | "Document" | "Error" | "Success" | "Learning" | "Decision" | "Action" | "Context" | "Knowledge"requiredsummarystring | nullmax length 2000
tagsstring[]required
- 4xx 5xxThe error envelope.
curl -X POST "https://os.one.ml/api/v1/minds/search?mind=$MIND" \
-H "Authorization: Bearer $GENESIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"text": "string"
}'import { Genesis } from '@lifesi/genesis'
const genesis = new Genesis({ apiKey: process.env.GENESIS_API_KEY })
const result = await genesis.call('minds_searchMemory', {
mind: '<mind>',
body: {
text: 'string',
},
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "minds_searchMemory",
"arguments": {
"mind": "<mind>",
"body": {
"text": "string"
}
}
}
}Services
List owned Minds and the verified creation-context fingerprint
GET/v1/minds/services
Requires an original human One account session with a verified pf_console Sandbox selection. API keys and M2M credentials have no Minds producer and are refused. No caller tenant fields.
Parameters
afterquery · string (uuid)limitquery · integer
Responses
- 200Actual persisted service response; creation 202 is provisioning, not Ready.
Response fields
schema_version"minds.controller.v1"requireditemsobject[]requireditems[].[].schema_version"minds.controller.v1"requireditems[].[].mind_idstring (uuid)requiredpattern ^[0-9a-f-]{36}$
items[].[].organization_idstringrequireditems[].[].project_idstringrequireditems[].[].namestringrequireditems[].[].regionstringrequireditems[].[].plan"free" | "pro"requireditems[].[].capacityobjectrequireditems[].[].capacity.profile_idstringrequireditems[].[].capacity.cpusintegerrequiredmin 1
items[].[].capacity.memory_mbintegerrequiredmin 1
items[].[].capacity.volume_size_gbintegerrequiredmin 1
items[].[].observed_capacityobject | nullrequireditems[].[].servicesstring[]requireditems[].[].volume_idstring (uuid)requiredpattern ^[0-9a-f-]{36}$
items[].[].base_urlstring (uri)requireditems[].[].desired_state"running" | "stopped" | "deleted"requireditems[].[].observed_state"pending" | "running" | "stopped" | "deleted" | "failed" | "uncertain"requireditems[].[].desired_generationintegerrequiredmin 1
items[].[].observed_generationintegerrequiredmin 0
items[].[].status"ready" | "provisioning" | "stopped" | "deleted" | "failed" | "uncertain"requireditems[].[].capacity_appliedbooleanrequireditems[].[].operation_idstring (uuid) | nullrequireditems[].[].error_codestring | nullrequireditems[].[].created_atstring (date-time)requireditems[].[].updated_atstring (date-time)requirednext_cursorstring (uuid) | nullrequiredcontext_sha256stringrequiredInformational fingerprint of the verified human full selection. Required assertion when creating; grants no authority. pattern ^[a-f0-9]{64}$
- 4xx 5xxThe error envelope.
curl "https://os.one.ml/api/v1/minds/services" \
-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('minds_listMinds'){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "minds_listMinds",
"arguments": {}
}
}Create one capped Sandbox Mind; retain the same operation key after uncertainty
POST/v1/minds/services
Requires an original human One account session with a verified pf_console Sandbox selection. API keys and M2M credentials have no Minds producer and are refused. No caller tenant fields.
Parameters
idempotency-keyheader · string (uuid)requiredx-genesis-minds-creation-contextheader · stringrequired
Request body application/json
namestringrequiredMind on existing Sandbox placement; capacity and tenant are server owned. max length 80 · pattern ^Sandbox(?: .+)?$
plan"free" | "pro"Optional explicit plan. Omitted/free selects F1; pro defaults to D1. Server-side funding and admission still apply.
profile_id"F1" | "D1" | "D2"Optional fixed native profile. Pro accepts F1, D1 or D2 and defaults to D1. Omitted/free plan accepts only F1. P1 is unavailable; arbitrary capacity is never accepted.
Responses
- 202Actual persisted service response; creation 202 is provisioning, not Ready.
Response fields
schema_version"minds.controller.v1"requiredmind_idstring (uuid)requiredpattern ^[0-9a-f-]{36}$
organization_idstringrequiredproject_idstringrequirednamestringrequiredregionstringrequiredplan"free" | "pro"requiredcapacityobjectrequiredcapacity.profile_idstringrequiredcapacity.cpusintegerrequiredmin 1
capacity.memory_mbintegerrequiredmin 1
capacity.volume_size_gbintegerrequiredmin 1
observed_capacityobject | nullrequiredservicesstring[]requiredvolume_idstring (uuid)requiredpattern ^[0-9a-f-]{36}$
base_urlstring (uri)requireddesired_state"running" | "stopped" | "deleted"requiredobserved_state"pending" | "running" | "stopped" | "deleted" | "failed" | "uncertain"requireddesired_generationintegerrequiredmin 1
observed_generationintegerrequiredmin 0
status"ready" | "provisioning" | "stopped" | "deleted" | "failed" | "uncertain"requiredcapacity_appliedbooleanrequiredoperation_idstring (uuid) | nullrequirederror_codestring | nullrequiredcreated_atstring (date-time)requiredupdated_atstring (date-time)required
- 4xx 5xxThe error envelope.
curl -X POST "https://os.one.ml/api/v1/minds/services" \
-H "Authorization: Bearer $GENESIS_API_KEY" \
-H "Idempotency-Key: $IDEMPOTENCY_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "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('minds_createMind', {
body: {
name: 'string',
},
}, {
headers: { 'Idempotency-Key': idempotencyKey }, // one key per change, reused on every retry
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "minds_createMind",
"arguments": {
"body": {
"name": "string"
},
"idempotency_key": "<a stable key per change>"
}
}
}Read one Mind owned by the verified organization and project
GET/v1/minds/services/{mind_id}
Requires an original human One account session with a verified pf_console Sandbox selection. API keys and M2M credentials have no Minds producer and are refused. No caller tenant fields.
Parameters
mind_idpath · string (uuid)required
Responses
- 200Actual persisted service response; creation 202 is provisioning, not Ready.
Response fields
schema_version"minds.controller.v1"requiredmind_idstring (uuid)requiredpattern ^[0-9a-f-]{36}$
organization_idstringrequiredproject_idstringrequirednamestringrequiredregionstringrequiredplan"free" | "pro"requiredcapacityobjectrequiredcapacity.profile_idstringrequiredcapacity.cpusintegerrequiredmin 1
capacity.memory_mbintegerrequiredmin 1
capacity.volume_size_gbintegerrequiredmin 1
observed_capacityobject | nullrequiredservicesstring[]requiredvolume_idstring (uuid)requiredpattern ^[0-9a-f-]{36}$
base_urlstring (uri)requireddesired_state"running" | "stopped" | "deleted"requiredobserved_state"pending" | "running" | "stopped" | "deleted" | "failed" | "uncertain"requireddesired_generationintegerrequiredmin 1
observed_generationintegerrequiredmin 0
status"ready" | "provisioning" | "stopped" | "deleted" | "failed" | "uncertain"requiredcapacity_appliedbooleanrequiredoperation_idstring (uuid) | nullrequirederror_codestring | nullrequiredcreated_atstring (date-time)requiredupdated_atstring (date-time)required
- 4xx 5xxThe error envelope.
curl "https://os.one.ml/api/v1/minds/services/$MIND_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('minds_getMind', {
mind_id: '<mind_id>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "minds_getMind",
"arguments": {
"mind_id": "<mind_id>"
}
}
}Resume
Resume an owned Mind on its retained volume without an automatic retry
POST/v1/minds/services/{mind_id}/resume
Requires the original human Console Sandbox selection and existing Minds update permission. Retain the same key and original expected_generation after uncertainty. The controller resolves durable replay before checking generation; no capacity or tenant fields are accepted.
Parameters
mind_idpath · string (uuid)requiredidempotency-keyheader · string (uuid)required
Request body application/json
expected_generationintegerrequiredOriginal desired_generation from a fresh owned read; keep unchanged with the idempotency key if outcome is unknown. min 1 · max 9007199254740990
wake_reason"manual" | "scheduled_job" | "webhook" | "memory_consolidation" | "activity"Optional reason for this resume intent. Preserve it with the original generation and idempotency key after uncertainty; no automatic replay.
Responses
- 202Resume accepted on the retained Mind; poll its owned read until ready.
Response fields
schema_version"minds.controller.v1"requiredmind_idstring (uuid)requiredpattern ^[0-9a-f-]{36}$
organization_idstringrequiredproject_idstringrequirednamestringrequiredregionstringrequiredplan"free" | "pro"requiredcapacityobjectrequiredcapacity.profile_idstringrequiredcapacity.cpusintegerrequiredmin 1
capacity.memory_mbintegerrequiredmin 1
capacity.volume_size_gbintegerrequiredmin 1
observed_capacityobject | nullrequiredservicesstring[]requiredvolume_idstring (uuid)requiredpattern ^[0-9a-f-]{36}$
base_urlstring (uri)requireddesired_state"running" | "stopped" | "deleted"requiredobserved_state"pending" | "running" | "stopped" | "deleted" | "failed" | "uncertain"requireddesired_generationintegerrequiredmin 1
observed_generationintegerrequiredmin 0
status"ready" | "provisioning" | "stopped" | "deleted" | "failed" | "uncertain"requiredcapacity_appliedbooleanrequiredoperation_idstring (uuid) | nullrequirederror_codestring | nullrequiredcreated_atstring (date-time)requiredupdated_atstring (date-time)required
- 4xx 5xxThe error envelope.
curl -X POST "https://os.one.ml/api/v1/minds/services/$MIND_ID/resume" \
-H "Authorization: Bearer $GENESIS_API_KEY" \
-H "Idempotency-Key: $IDEMPOTENCY_KEY" \
-H "Content-Type: application/json" \
-d '{
"expected_generation": 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('minds_resumeMind', {
mind_id: '<mind_id>',
body: {
expected_generation: 1,
},
}, {
headers: { 'Idempotency-Key': idempotencyKey }, // one key per change, reused on every retry
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "minds_resumeMind",
"arguments": {
"mind_id": "<mind_id>",
"body": {
"expected_generation": 1
},
"idempotency_key": "<a stable key per change>"
}
}
}Stop
Stop an owned Mind while retaining its volume without an automatic retry
POST/v1/minds/services/{mind_id}/stop
Requires the original human Console Sandbox selection and existing Minds update permission. Retain the same key and original expected_generation after uncertainty. The controller resolves durable replay before checking generation. No wake reason, capacity or tenant fields are accepted.
Parameters
mind_idpath · string (uuid)requiredidempotency-keyheader · string (uuid)required
Request body application/json
expected_generationintegerrequiredOriginal desired_generation from a fresh owned read; keep unchanged with the idempotency key if outcome is unknown. min 1 · max 9007199254740990
Responses
- 202Stop accepted on the retained Mind; poll its owned read until stopped.
Response fields
schema_version"minds.controller.v1"requiredmind_idstring (uuid)requiredpattern ^[0-9a-f-]{36}$
organization_idstringrequiredproject_idstringrequirednamestringrequiredregionstringrequiredplan"free" | "pro"requiredcapacityobjectrequiredcapacity.profile_idstringrequiredcapacity.cpusintegerrequiredmin 1
capacity.memory_mbintegerrequiredmin 1
capacity.volume_size_gbintegerrequiredmin 1
observed_capacityobject | nullrequiredservicesstring[]requiredvolume_idstring (uuid)requiredpattern ^[0-9a-f-]{36}$
base_urlstring (uri)requireddesired_state"running" | "stopped" | "deleted"requiredobserved_state"pending" | "running" | "stopped" | "deleted" | "failed" | "uncertain"requireddesired_generationintegerrequiredmin 1
observed_generationintegerrequiredmin 0
status"ready" | "provisioning" | "stopped" | "deleted" | "failed" | "uncertain"requiredcapacity_appliedbooleanrequiredoperation_idstring (uuid) | nullrequirederror_codestring | nullrequiredcreated_atstring (date-time)requiredupdated_atstring (date-time)required
- 4xx 5xxThe error envelope.
curl -X POST "https://os.one.ml/api/v1/minds/services/$MIND_ID/stop" \
-H "Authorization: Bearer $GENESIS_API_KEY" \
-H "Idempotency-Key: $IDEMPOTENCY_KEY" \
-H "Content-Type: application/json" \
-d '{
"expected_generation": 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('minds_stopMind', {
mind_id: '<mind_id>',
body: {
expected_generation: 1,
},
}, {
headers: { 'Idempotency-Key': idempotencyKey }, // one key per change, reused on every retry
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "minds_stopMind",
"arguments": {
"mind_id": "<mind_id>",
"body": {
"expected_generation": 1
},
"idempotency_key": "<a stable key per change>"
}
}
}Usage
Read native operational usage for the selected project
GET/v1/minds/usage
Requires the original human Console Sandbox selection and Minds read permission. Explicit RFC3339 from/to window must be positive and at most 93 days. Account totals and financial fields are excluded; unreported telemetry is not zero.
Parameters
fromquery · string (date-time)requiredtoquery · string (date-time)required
Responses
- 200Selected-project allocations and reported host telemetry with explicit completeness.
Response fields
schema_version"minds.controller.v1"requiredorganization_idstringrequiredproject_idstringrequiredfromstring (date-time)requiredmax length 40
tostring (date-time)requiredmax length 40
measured_atstring (date-time)requiredmax length 40
basis"host_confirmed_intervals"requiredmindsobject[]requiredminds[].[].mind_idstring (uuid)requiredminds[].[].namestringrequiredminds[].[].profile_idstring | nullrequiredminds[].[].desired_state"running" | "stopped" | "deleted"requiredminds[].[].observed_state"pending" | "running" | "stopped" | "deleted" | "failed" | "uncertain"requiredminds[].[].stop_reasonstring | nullrequiredminds[].[].last_activity_atstring | null (date-time)requiredminds[].[].compute_secondsnumberrequiredmin 0
minds[].[].vcpu_secondsnumberrequiredmin 0
minds[].[].memory_mb_secondsnumberrequiredmin 0
minds[].[].storage_gb_secondsnumberrequiredmin 0
minds[].[].measuredobject | objectrequiredminds[].[].metering_computebooleanrequiredminds[].[].completebooleanrequiredminds[].[].incomplete_reason"host_state_uncertain" | "compute_unconfirmed_after_failure" | "running_without_ledger_interval" | "ledger_open_after_stop" | "host_not_reporting" | nullrequired
- 4xx 5xxThe error envelope.
curl "https://os.one.ml/api/v1/minds/usage?from=$FROM&to=$TO" \
-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('minds_getUsage', {
from: '<from>',
to: '<to>',
}){
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "minds_getUsage",
"arguments": {
"from": "<from>",
"to": "<to>"
}
}
}One Superintelligence, Inc. · Built from Genesis 0.1.12 and the live gateway on 2026-10-20. Support