Skip to main content
POST
Create or replay a portable memory candidate
Create or exactly replay one isolated, subject-scoped Praxa memory candidate with portable provenance and no first-party memory promotion.
Availability: Qualification preview. Required scope: memory:write.

Authenticate safely

Create a disposable personal workspace API key with exactly memory:write. Send it as Authorization: Bearer $PRAXA_API_KEY. A Gateway OAuth token, Supabase JWT, provider credential, or organization memory key is not interchangeable with this key. The hosted playground sends the credential from your browser session to the documented API through the configured playground proxy. Use test data, never share the key, and revoke it when the check ends.

Request fields

string
required
Stable key for one logical mutation. Reuse only with the exact same request; changed input under the same key returns a conflict.
v1
required
apiVersion request field.
mem0 | zep | graphiti | langgraph | letta | openai_agents | custom
required
providerId request field.
string
required
sourceId request field.
string
required
externalRecordId request field.
string
required
revision request field.
message | fact | summary | episode | pinned_context | document | entity | edge
required
kind request field.
string
required
subject request field.
subject
required
visibility request field.
string
required
content request field.
string
agentId request field.
string
threadId request field.
string
workspaceId request field.
string
purpose request field.
object
metadata request field.
explicit | observed | inferred | imported
required
provenance.origin request field.
number
required
provenance.confidence request field.
string
required
provenance.capturedAt request field.
string
provenance.sourceUrl request field.
array<string>
provenance.evidenceIds request field.
object
provenance.metadata request field.
string
required
occurredAt request field.
string
required
observedAt request field.
string
expiresAt request field.
array<string>
originChain request field.

Runnable request examples

What success means

A 201 response created a candidate; 200 means the same idempotent request was replayed. Neither promotes content into Praxa personal memory.

Successful response

201 — A new candidate was created.
v1
required
apiVersion response field.
boolean
required
replayed response field.
object
required
candidate response field.

Handle failures

Example problem

Verify the result

  1. Save the candidate ID and require replayed: false on first create.
  2. Query the exact subject and require lexical retrieval only.
  3. Replay the exact body/key and require the same candidate with replayed: true.

Retry, cleanup, and production use

  • Treat 401, 403, and 409 as authority or state signals, not generic retry prompts.
  • Reuse the idempotency key only for an exact retry of the same logical mutation.
  • For 429 or retryable 5xx responses, follow server retry guidance and keep a bounded attempt budget.
  • Move the request into a trusted application backend before production; never ship the Praxa key in browser or mobile code.
  • Revoke the disposable key, disable test webhooks, and erase disposable candidate data after validation.
Continue with API authentication, the failure and retry guide, and the end-to-end coverage matrix.
Last modified on August 14, 2026