Skip to main content

Documentation Index

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

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

After every call, Nixflex runs an analysis pass over the transcript. You get a summary, the caller’s sentiment, whether the call succeeded, and any custom data you’ve defined — automatically. No setup required for the defaults. Everything is generated by a second Claude call after the conversation ends.

What you get out of the box

Every call record has these fields populated automatically:
FieldTypeDescription
call_summarystring2–4 sentence summary of what happened
caller_sentimentenumhappy, neutral, or frustrated
call_successfulbooleanDid the agent achieve its goal?
extracted_dataobjectCustom fields you configured (see below)
Example response from GET /v1/calls/:id:
{
  "call_id": "CA1234567890",
  "call_summary": "Caller booked a check-up appointment for Tuesday 8th March at 2pm. Confirmed contact details and texted address.",
  "caller_sentiment": "happy",
  "call_successful": true,
  "extracted_data": {
    "caller_name": "Sarah Johnson",
    "email": "sarah@example.com",
    "appointment_date": "2026-03-08",
    "appointment_time": "14:00"
  }
}

Custom data extraction

Beyond the defaults, you define fields you want pulled from each call. Add an extraction_schema to the agent:
{
  "extraction_schema": {
    "caller_name": "The caller's full name if mentioned",
    "email": "Email address if provided",
    "appointment_date": "Booked date in YYYY-MM-DD format",
    "appointment_time": "Booked time in 24-hour HH:MM format",
    "service_requested": "Type of service (check-up, cleaning, whitening, etc.)",
    "callback_requested": "true if the caller asked us to call them back"
  }
}
For each call, Claude reads the transcript and fills in whatever it can. Missing fields come back as null — Claude won’t invent data.

When analysis runs

  • Inbound and outbound calls — both directions, always
  • All calls over 5 seconds — calls that ended in voicemail or instant hangup are skipped to save cost
  • Asynchronously, after the call ends — usually within 5–10 seconds
By the time your webhook fires, all analysis fields are populated.

Querying for outcomes

The dashboard’s Call History page is one way. The API lets you filter calls by analysis results:
# All successful calls today
curl "https://api.nixflex.com/v1/calls?call_successful=true&since=2026-05-17" \
  -H "Authorization: Bearer KEY_ID:KEY_SECRET"

# All frustrated callers
curl "https://api.nixflex.com/v1/calls?caller_sentiment=frustrated" \
  -H "Authorization: Bearer KEY_ID:KEY_SECRET"
Useful for:
  • Quality assurance — review frustrated calls
  • Lead routing — flag successful sales calls for follow-up
  • Reporting — aggregate sentiment over time
  • Data exports — populate your CRM with extracted fields

Cost

Post-call analysis adds roughly $0.001 to the cost of each call (one Claude Haiku call over the transcript). It’s included in the per-minute pricing — you don’t pay extra.

Disabling extraction

To skip extraction for an agent (rare; e.g. very high call volume where you only need the call recording):
curl -X PUT https://api.nixflex.com/v1/agents/agent_xxx \
  -d '{"enable_post_call_analysis": false}'
The transcript and recording are still saved; just the AI fields are skipped.

Reading analysis programmatically

Each call object includes the analysis inline. There’s no separate endpoint to fetch it. See Get call for the full schema.