Skip to main content
POST https://api.humalike.com/v1/social-memory/actions/ingest
Append one or more messages to a scope. This is a plain write — it stores the messages and runs no analysis, so it is cheap to call as the conversation happens and never consumes credits. Call it whenever a new turn lands in the group. The action is idempotent: a retried ingest (caller retry policy, lost response) must not append the transcript twice. Opt in by sending an Idempotency-Key header.

Authorization

Authorization
string
required
Your bearer token: Bearer <token>. See Authentication.

Idempotency

Idempotency-Key
string
A caller-chosen unique key for this write. A second request with the same key replays the recorded response instead of re-running the write, so a network retry never appends the same messages twice.

Request body

scope_id
string
required
Which scope to append to. 1–255 characters. See Scopes.
transcript
Message[]
required
The messages to append, in conversation order. Must contain at least one message.
Request
{
  "scope_id": "team-chat-1",
  "transcript": [
    {"speaker": "alice", "text": "I cannot touch peanuts"},
    {"speaker": "bob", "text": "noted, no thai food then"}
  ]
}

Response

ingested
integer
The number of messages appended to the scope (matches the length of the request transcript).
200 OK
{
  "ingested": 2
}

Errors

ingest only validates and stores the request — it runs no analysis and is not billable, so it does not return 400 VALIDATION_ERROR for a failed analysis, 402 PAYMENT_REQUIRED, or 502 UPSTREAM_ERROR.
StatusCodeWhen
401UNAUTHORIZEDThe bearer token is missing, invalid, or expired.
403forbiddenThe token is valid but not allowed here.
422VALIDATION_ERRORscope_id is missing or too long, or transcript is empty.
See Errors for the full envelope shape.

Example

curl https://api.humalike.com/v1/social-memory/actions/ingest \
  -H "Authorization: Bearer $HUMALIKE_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
    "scope_id": "team-chat-1",
    "transcript": [
      {"speaker": "alice", "text": "I cannot touch peanuts"},
      {"speaker": "bob", "text": "noted, no thai food then"}
    ]
  }'