health_score plus summary. Every claim cites the message ids that support it.
Use this when you want to know how your agent is landing with the people it
talks to — not a sentiment number, but a per-user reception with evidence, and
actionable findings the agent’s owner can apply.
When to call it
analyze reviews a conversation. It is never a step inside one — nothing about
it belongs in the reply path, and nobody is waiting on the result.
The question is not when a conversation ends, because plenty never do. It is how
often you want a report. That gives you two triggers:
- The conversation ends (a support chat, a ticket): the ending is your trigger. Call it once, when the conversation closes.
- The conversation never ends (a Discord community, a Slack channel, a group chat): there is nothing to wait for, so you choose a timer.
- Has enough new conversation accumulated to be worth reviewing? A thread that moved by a handful of messages will produce the report you already have.
- How quickly can you act on the findings? A report improves your agent only when something changes because of it. If you can act within the hour, run it hourly — a fresher report means a better-behaved agent sooner.
Authorization
string
required
Your bearer token:
Bearer <token>. See Authentication.Request body
object
required
The conversation to analyze.
Message[]
required
The messages to analyze, in order. Must contain at least one message.
string
Optional label for where the transcript came from (for example, a chat name).
string
required
Which speaker in the transcript is the agent under observation. Required and
never inferred — the caller is the agent’s owner and always knows which
speaker is the agent.
string
Optional question to weight the report toward, for example
"why did retention drop this week?".string
required
A stable identifier for the message, unique within the transcript. The report
cites these ids as evidence, so they must be present and unique.
string
required
Who sent the message (a display name or stable id).
string
required
The message text.
string
The speaker’s stable identity in your system. Display names collide — two
different users can both be
"alex" — so when present, user_id (not the
name) is who the speaker is. Same-named speakers with different user_ids
are reported as different people, and each per_user entry echoes its
user_id back.string
Optional channel or room the message was sent in.
string
Optional timestamp for the message.
string
Optional
id of the message this one replies to.Request
Response
number
Overall reception in
[0, 1]: 0.0 users are leaving, 1.0 thriving.string
Two to three sentences the agent’s owner can read standalone.
Interaction[]
The conversation segmented into contiguous slices, each with a single social
character:
transactional, bonding, venting, banter, friction, or
hostile. Each interaction carries a short topic, the non-agent
participants (with each participant’s own stance), and the message_ids
it spans.InteractionTypeCount[]
Counts per interaction type, in canonical order with zeros included
(
transactional, bonding, venting, banter, friction, hostile).
Derived deterministically from the segmentation above.UserReception[]
One entry per non-agent speaker. Each entry includes:
nameand (when the transcript supplied one)user_idreception—engaged,neutral,bored,annoyed, orchurn_riskfrustration— a score in[0, 1]anchored to behavioral rubric:0.2mild friction once,0.5repeated complaint still cooperating,0.8explicit anger or giving up,1.0hostile or quittingtrend—improving,stable, ordecliningacross the transcriptbehaviors— 1–3 short observable phrases the cited messages showevidence— message ids supporting this readconfidence—[0, 1]interaction_count,dominant_type, anddistribution[]— computed arithmetic across this user’s stanceskey_moments[]— the pivotal exchanges in this user’s relationship with the agent; each carrieslabel,type,message_ids, and anagent_critiqueline set only when the agent mishandled the moment
Finding[]
The agent’s social mistakes, each with:
issue,severity(low/medium/high),affected_users,evidencerecommendation— a specific fix the owner can apply as writtenbefore_message_idandrewritten_reply— the single agent message that best shows the mistake, plus that same message rewritten in the agent’s voice with the recommendation appliedsuggested_componentandhow_it_helps— the Humalike component that would resolve the finding (when one would), and a 2–3 sentence explanation of the concrete output it would have produced. Both are additive; the finding reads complete without them.confidence—[0, 1]
200 OK
Errors
A billable request is priced and checked against your credit balance before
it is processed: an uncovered request is rejected with
402 and is not billed.
See Credits and billing.
See Errors for the envelope shape.
Example
A single analyze call can take 40–60 seconds on a real transcript. Set a
client timeout of at least 120 seconds.

