Skip to main content
POST
/
analytics-participant
Participant Analysis
curl --request POST \
  --url https://api.heify.com/analytics-participant \
  --header 'Content-Type: application/json' \
  --header 'x-api-key: <api-key>' \
  --data '
{
  "participant_id": "580cc0e1-3a60-49d9-8e20-1745252f0aae"
}
'
{
  "data": {
    "metadata": {
      "total_records_analyzed": 5,
      "query_limit_reached": false,
      "generated_at": "2026-03-21T14:07:43.791756"
    },
    "kpis": {
      "total_calls": 5,
      "avg_score": 55.8,
      "pass_rate": 80,
      "total_critical_fails": 0,
      "pending_critical_reviews": 0
    },
    "charts": {
      "timeline": [
        {
          "date": "2026-03-03",
          "avg_score": 66,
          "volume": 1,
          "critical_fails": 0
        },
        {
          "date": "2026-03-07",
          "avg_score": 53.3,
          "volume": 3,
          "critical_fails": 0
        },
        {
          "date": "2026-03-12",
          "avg_score": 52.8,
          "volume": 1,
          "critical_fails": 0
        }
      ]
    },
    "evaluators": [
      {
        "id": "a848aaa5-28d6-43eb-bd7c-247f7535aa3a",
        "tag": "evaluador temporal",
        "calls": 1,
        "avg_score": 66,
        "critical_fails": 0,
        "critical_fail_rate": 0,
        "consistency": 0,
        "avg_duration": 542
      },
      {
        "id": "2abb5563-dd64-47bb-bb17-94252e168b06",
        "tag": "pitch temporal",
        "calls": 4,
        "avg_score": 53.2,
        "critical_fails": 0,
        "critical_fail_rate": 0,
        "consistency": 13.13,
        "avg_duration": 587
      }
    ],
    "criteria_breakdown": [
      {
        "id": "2faa4a20-7445-4beb-a09e-2af26872dba3",
        "name": "Saludo Corporativo inicial2",
        "fail_count": 4,
        "fail_rate": 80
      },
      {
        "id": "881fa6dd-12b2-45e8-9705-0c3485421afe",
        "name": "Saludo Corporativo",
        "fail_count": 1,
        "fail_rate": 20
      }
    ],
    "score_distribution": {
      "0-20": 0,
      "21-40": 1,
      "41-60": 2,
      "61-80": 2,
      "81-100": 0
    },
    "comparison": {
      "current_period": {
        "calls": 5,
        "avg_score": 55.8,
        "pass_rate": 80
      },
      "previous_period": {
        "calls": 0,
        "avg_score": 0,
        "pass_rate": 0
      },
      "delta": {}
    },
    "duration_insights": {
      "thresholds": {
        "p25": 543,
        "p75": 609
      },
      "short": {
        "count": 2,
        "avg_score": 59.4
      },
      "medium": {
        "count": 1,
        "avg_score": 65
      },
      "long": {
        "count": 2,
        "avg_score": 47.5
      }
    },
    "trend": {
      "direction": "insufficient_data",
      "recent_avg": null,
      "previous_avg": null,
      "sample_size": 20
    },
    "degradation_alert": false,
    "raw_data": [
      {
        "id": "e927a34c-8f2f-4045-8a15-c0f7a182bab2",
        "date": "2026-03-12T20:33:14.145386+00:00",
        "score": 52.8,
        "critical": false,
        "duration": 542,
        "evaluator_tag": "pitch temporal",
        "evaluator_id": "2abb5563-dd64-47bb-bb17-94252e168b06",
        "group": null,
        "status": "COMPLETED",
        "failed_criteria": [
          "Saludo Corporativo inicial2"
        ]
      },
      {
        "id": "caa75e99-53d5-4a8e-8cb2-0521e2fd59ba",
        "date": "2026-03-03T20:19:16.427616+00:00",
        "score": 66,
        "critical": false,
        "duration": 542,
        "evaluator_tag": "evaluador temporal",
        "evaluator_id": "a848aaa5-28d6-43eb-bd7c-247f7535aa3a",
        "group": "PENDING_REVIEW",
        "status": "COMPLETED",
        "failed_criteria": [
          "Saludo Corporativo"
        ]
      }
    ]
  }
}
This endpoint counts against your monthly analytics quota. Each request is counted even if no data is found. Returns 429 when the limit is reached.
Only COMPLETED transcriptions with a non-null evaluation score are included. IN_PROGRESS and FAILED transcriptions are excluded.
Results are capped at 20,000 transcriptions. If data.metadata.query_limit_reached is true, the dashboard is based on a partial dataset.
data.comparison.delta may be an empty object {} when there is no previous-period data to compare against (e.g. the participant had no calls last month).

Authorizations

x-api-key
string
header
required

Body

application/json
participant_id
string<uuid>
required

The unique identifier of the participant to analyze. Must belong to the authenticated account.

Response

200 - application/json

Participant analysis generated successfully.

data
object