Agent-readable docs index: /docs/llms.txt. Full docs in one file: /docs/llms-full.txt. Download /docs/docs.zip to grep all markdown files locally.

Import an export from Mem0, Zep, Letta, JSON Lines or Markdown

/v1/importsPOST
Parses the file text in content and appends one event per record, with idempotency keys derived from the record, so running it again changes nothing. With dryRun=true nothing is written: you get the report (what was read, what would be created, what was skipped and why, a preview). Needs a key that can write, for the dry run too. Large files: kaibo import sends them in chunks. Formats and what each one drops are in the docs.
Authorization
bearer *Bearer <token>
API key of the form kaibo_<id>.<secret>. Scopes: read, write, read_write, forget, admin.
Query Parameters
dryRun?boolean
Report only; write nothing
Default: false
Request Bodyapplication/jsonrequired
source *"mem0" | "zep" | "letta" | "jsonl" | "markdown"
content *string
Min length: 1Max length: 1048576
streamId?string
Min length: 1Max length: 128
name?string
Min length: 1Max length: 200
includeInvalid?boolean
Response
200 · Replayed: nothing new was appended
Replayed: nothing new was appended
201 · Success
dryRun *boolean
report *object
Show properties
source *"mem0" | "zep" | "letta" | "jsonl" | "markdown"
format *string
streamId *string
Min length: 1Max length: 128
read *integer
Min: 0Max: 9007199254740991
events *integer
Min: 0Max: 9007199254740991
skipped *integer
Min: 0Max: 9007199254740991
duplicates *integer
Min: 0Max: 9007199254740991
skippedSamples *object[]
Max items: 25
Show item properties
index *integer
Min: 0Max: 9007199254740991
reason *string
warnings *string[]
Max items: 25
preview *object[]
Show item properties
idempotencyKey *string
occurredAt *string (date-time) | null
text *string
firstAt *string (date-time) | null
lastAt *string (date-time) | null
appended?object
Show properties
created *integer
Min: 0Max: 9007199254740991
replayed *integer
Min: 0Max: 9007199254740991
firstSeq *integer | null
lastSeq *integer | null
headHash *string | null
jobId *stringnull
400 · Invalid request
error *object
Show properties
code *"unauthenticated" | "forbidden" | "not_found" | "invalid_request" | "conflict" | "idempotency_mismatch" | "payload_too_large" | "rate_limited" | "internal"
message *string
requestId *string
details?object
401 · Missing, malformed, revoked or expired key
error *object
Show properties
code *"unauthenticated" | "forbidden" | "not_found" | "invalid_request" | "conflict" | "idempotency_mismatch" | "payload_too_large" | "rate_limited" | "internal"
message *string
requestId *string
details?object
403 · The key lacks the required scope
error *object
Show properties
code *"unauthenticated" | "forbidden" | "not_found" | "invalid_request" | "conflict" | "idempotency_mismatch" | "payload_too_large" | "rate_limited" | "internal"
message *string
requestId *string
details?object
429 · Rate limited. See Retry-After
error *object
Show properties
code *"unauthenticated" | "forbidden" | "not_found" | "invalid_request" | "conflict" | "idempotency_mismatch" | "payload_too_large" | "rate_limited" | "internal"
message *string
requestId *string
details?object
Request example
curl -X POST "/v1/imports" \ -H "Authorization: Bearer <token>" \ -H "Content-Type: application/json" \ -d '{ "source": "mem0", "content": "string", "streamId": "string", "name": "string", "includeInvalid": true }'