Skip to main content
POST
/
context
Append context
curl --request POST \
  --url https://api.jeantechnologies.com/v1/context \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "user_id": "u_alice",
  "domain": "dating",
  "content": "Just got back from a week of hiking in the Catskills. Loved it. Already planning the next trip.",
  "source": "chat",
  "occurred_at": "2023-11-07T05:31:56Z"
}
'
{
  "user_id": "u_alice",
  "domain": "dating",
  "context_id": "ctx_a8c2",
  "fields_updated": [
    "interests",
    "values_text"
  ],
  "embeddings_refreshed": true
}

Documentation Index

Fetch the complete documentation index at: https://docs.jeanmemory.com/llms.txt

Use this file to discover all available pages before exploring further.

Use this when a user already exists and you want to enrich them incrementally. The platform extracts against your domain schema, merges into the existing representation, and refreshes embeddings if any soft fields changed. Typical sources:
  • Chat messages between users
  • Voice or video call transcripts
  • Behavior events (likes, skips, time-on-profile)
  • New uploads (additional photos, updated resume)
curl https://api.jeantechnologies.com/v1/context \
  -H "Authorization: Bearer $JEAN_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "user_id": "u_alice",
    "domain": "dating",
    "source": "chat",
    "content": "Just got back from a week of hiking in the Catskills. Loved it. Already planning the next trip."
  }'

Example response

{
  "user_id": "u_alice",
  "domain": "dating",
  "context_id": "ctx_a8c2",
  "fields_updated": ["interests", "values_text"],
  "embeddings_refreshed": true
}
fields_updated tells you which columns actually changed (so you can avoid downstream cache invalidation when nothing moved). embeddings_refreshed is true when at least one soft field changed and the dense vector was re-computed.
Send context as it arrives. The platform deduplicates near-identical content and rate-limits embedding refreshes per user, so high-throughput sources (a chat feed) won’t burn your quota.

When to use which endpoint

SituationUse
First time you’ve ever seen this userPOST /users
Full re-import or bulk backfillPOST /users
New chat message / event / transcript chunkPOST /context
User updated a profile field through your UIPOST /users (replaces the row)
Periodic behavior batch (e.g. nightly job)POST /context per row

Authorizations

Authorization
string
header
required

API key issued by Jean Technologies. Contact the team for access.

Body

application/json
user_id
string
required
Example:

"u_alice"

domain
string
required
Example:

"dating"

content
string
required

The new piece of context to merge into the user's representation.

Example:

"Just got back from a week of hiking in the Catskills. Loved it. Already planning the next trip."

source
enum<string>

Where this context came from. Free-form tag stored alongside the extracted fields for provenance.

Available options:
chat,
voice_transcript,
behavior,
upload,
connector,
manual
Example:

"chat"

occurred_at
string<date-time>

Optional timestamp the event actually occurred (defaults to server receive time).

Response

Context merged

user_id
string
Example:

"u_alice"

domain
string
Example:

"dating"

context_id
string
Example:

"ctx_a8c2"

fields_updated
string[]
Example:
["interests", "values_text"]
embeddings_refreshed
boolean
Example:

true