Aura Logo
AuraAPI Docs
OpenapiV1CallsIdAnalysis

Get call analysis

Retrieve the full AI review for a call. This is the complete output of the analysis pipeline — everything the Aura dashboard shows on a call's review tab.

Response includes:

  • Overall, closing, emotional and structure scores, plus the buyer certainty index
  • AI verdict (hire, retain, replace) with confidence and written reasoning
  • Every detected objection: category, the prospect's verbatim quote, and how well it was handled
  • Key moments with their offset into the call
  • The stage-by-stage call journey (rapport → discovery → pitch → close), each stage scored
  • Coaching output: quick insights, the specific script upgrades that would have changed the call, and the exit door taken
  • offer_made, which powers offer-rate reporting

Availability. The review runs asynchronously after the call ends, so it lands minutes to hours after the call itself. Until it does, this endpoint returns 404. Two ways to know when it is ready:

  • has_analysis on the call object (GET /v1/calls, GET /v1/calls/{id})
  • the call.analysis_completed webhook, which carries the headline scores and a link back here — prefer this over polling

Evolving fields. coaching_data, metrics, call_journey and quick_insights are pipeline outputs whose internal structure improves as the models do. Their presence is contractual; their inner keys are not. Read them defensively and do not pin to a specific shape.

GET
/v1/calls/{id}/analysis

Path Parameters

idstring

Call ID (UUID)

Formatuuid

Response Body

application/json

application/json

curl -X GET "https://api.aura-app.ai/v1/calls/550e8400-e29b-41d4-a716-446655440000/analysis"
{
  "data": {
    "analyzed_at": "2026-01-17T10:00:00Z",
    "buyer_certainty_index": 55,
    "call_id": "string",
    "call_journey": [
      {
        "property1": null,
        "property2": null
      }
    ],
    "closing_score": 65,
    "coaching_data": {
      "property1": null,
      "property2": null
    },
    "confidence": 0.87,
    "created_at": "2026-01-17T10:00:00Z",
    "door": {
      "note": "Prospect agreed to review the proposal with their partner and a follow-up was booked.",
      "taken": 2,
      "property1": null,
      "property2": null
    },
    "emotional_score": 82,
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "key_moments": [
      {
        "description": "Lead raised concern about implementation timeline",
        "id": "moment-1",
        "speaker": "Sarah Smith",
        "timestamp": 312,
        "title": "Prospect Rejects Offer",
        "type": "breaking_point",
        "property1": null,
        "property2": null
      }
    ],
    "metrics": {
      "property1": null,
      "property2": null
    },
    "objections_detected": [
      {
        "category": "smoke_screen",
        "confidence": 0.92,
        "handling_feedback": "Good reframe to value but missed opportunity to anchor to ROI",
        "handling_score": 75,
        "quote": "That's a bit more than we budgeted for this quarter",
        "property1": null,
        "property2": null
      }
    ],
    "offer_made": true,
    "overall_score": 78,
    "pack_id": "string",
    "primary_objection": "price",
    "quick_insights": [
      {
        "property1": null,
        "property2": null
      }
    ],
    "reasoning": "string",
    "status": "closed",
    "structure_score": 71,
    "updated_at": "2026-01-17T10:00:00Z",
    "upgrades": [
      {
        "ctx": "Immediately after the prospect declines — the highest-leverage moment in the call.",
        "say": "Before we wrap up — I totally respect that. Can I ask what gave you pause?",
        "t": 312,
        "was": "So unfortunately, we don't have a deal today.",
        "property1": null,
        "property2": null
      }
    ],
    "verdict": "retain"
  },
  "success": true
}
{
  "code": "NOT_FOUND",
  "error": "Call analysis not found",
  "success": false
}