Agent memory API: add facts, documents and conversations to a namespace
Give your agent a memory. Send text, a URL, a conversation or plain facts; learner-1 extracts what matters, links it to what it already knows and updates facts that changed. Scope it with a namespace ("lead:acme", "campaign:q4", a user id) so each subject keeps its own memory inside your workspace.
Coming soon. No real adapter serves this capability yet. The sandbox returns clearly labeled mock data against the final schema, so you can integrate now and switch on real routing when the first provider goes live.
| Provider | Status |
|---|---|
Supermemory |
adapter next |
Unit: per_add · unmatched results billed: no
Priced by size: $0.00875 per 1,000 tokens of text, $0.0175 per 1,000 for PDFs, images and media, floor $0.002. A URL is quoted as about 3,000 tokens. Facts add $0.000175 each; instant processing adds $0.000175. Supermemory only meters new content, so re-adding the same custom_id costs nothing upstream. If the provider's actual cost overruns the estimate, the run bills the overrun at the same per-call rate, capped by the hold.
The exact quote is returned by /v1/inspect before every call and held with headroom on execution. The quote is the price floor: if the provider's actual cost overruns it, the run bills the overrun at the same rate, never above the hold. The unused part of every hold is released.
curl https://api.jell.run/v1/run \ -H "Authorization: Bearer $JELL_API_KEY" \ -d '{ "capability": "memory.add", "input": { }, "routing": {"provider": "auto"} }'
{
"properties": {
"content": {
"description": "Text to remember, or a URL to fetch (page, PDF, image, video). One of content, messages or facts.",
"type": "string"
},
"conversation_id": {
"description": "With messages: your id for the thread, so later calls extend it instead of duplicating it",
"type": "string"
},
"custom_id": {
"description": "Your id for this content; re-adding the same custom_id updates it instead of billing again",
"type": "string"
},
"document_date": {
"description": "When the content is from (YYYY-MM-DD or ISO 8601), for backfills",
"type": "string"
},
"facts": {
"description": "Statements to store as-is, searchable at once: [\"Acme runs on HubSpot\", \"Maria owns the SDR budget\"]",
"items": {
"type": "string"
},
"type": "array"
},
"instant": {
"default": false,
"description": "Process this content right away instead of batching it with related content",
"type": "boolean"
},
"messages": {
"description": "A conversation: [{\"role\": \"user\"|\"assistant\"|\"system\"|\"tool\", \"content\": \"...\"}]. Send the same conversation_id again to extend it.",
"items": {
"type": "object"
},
"type": "array"
},
"metadata": {
"description": "Flat key-value tags (strings, numbers, booleans) attached to the memories",
"type": "object"
},
"namespace": {
"description": "Memory scope inside your workspace, e.g. \"lead:acme\" or \"campaign:q4\"; omit for the workspace-wide memory",
"type": "string"
},
"static": {
"default": false,
"description": "With facts: mark them permanent traits (name, role, company)",
"type": "boolean"
}
},
"type": "object"
}
mode · document_id · status · memories · conversation_id · next_step