Payloads

Every webhook HI Platform sends has the same envelope wrapping an event-specific payload. This page documents the envelope, score scale, and the JSON shape of each event.

Envelope

The body of every webhook delivery has this shape.

{
  "id": "0fbe5d2c-7c9d-4f9a-9e0b-2c3d4a5b6c7d",
  "type": "assessment.completed",
  "apiVersion": "2026-05-14",
  "occurredAt": "2026-05-14T10:30:45.123Z",
  "data": { "...": "..." }
}
Field Type Notes
id UUID string Delivery identifier. Also delivered as X-Webhook-Delivery-Id. Use it as your dedup key — deliveries can repeat under retry.
type string Event type in dot-notation (e.g. assessment.completed). Mirrors the X-Webhook-Event header. See Events for the catalog.
apiVersion ISO-date string Current wire-contract version. Bumped only on breaking changes (removed or renamed fields, type or semantic changes); new optional fields ship under the current version, so pin your parsing to ignore unknown keys. Current: 2026-05-14.
occurredAt ISO-8601 string (UTC) When the event happened in HI Platform.
data object Event-specific payload (see below).

Score scale

Assessment scores are sent on a 0–10 scale with 1 decimal place — the same scale as the report a recruiter sees. Job-filter match scores are integers in [0, 100].

assessment.completed

One assessment was completed on a participation. The payload carries the participant, the assessment type, the score, and (for LOGIC) integrity information.

{
  "id": "0fbe5d2c-7c9d-4f9a-9e0b-2c3d4a5b6c7d",
  "type": "assessment.completed",
  "apiVersion": "2026-05-14",
  "occurredAt": "2026-05-14T10:30:45.123Z",
  "data": {
    "project": {
      "id": "9f8e7d6c-5b4a-3210-fedc-ba9876543210",
      "name": "Senior Engineer — Backend",
      "url": "https://app.hiassessments.com/projects/9f8e7d6c-5b4a-3210-fedc-ba9876543210"
    },
    "participation": {
      "id": "12345678-9abc-def0-1234-56789abcdef0",
      "url": "https://app.hiassessments.com/projects/9f8e7d6c-5b4a-3210-fedc-ba9876543210/participants/12345678-9abc-def0-1234-56789abcdef0",
      "participant": {
        "email": "jane.doe@example.com",
        "firstName": "Jane",
        "lastName": "Doe"
      }
    },
    "assessmentType": "LOGIC",
    "score": {
      "scoreType": "LOGIC",
      "gma": 8.8,
      "itemsAnswered": 18,
      "correctAnswers": 15,
      "incorrectAnswers": 3,
      "totalTimeSeconds": 720,
      "averageTimePerItemSeconds": 40
    },
    "integrity": { "tier": "NO_ISSUES", "cameraStatus": "ENABLED" },
    "occurredAt": "2026-05-14T10:30:42.987Z"
  }
}
Field Type Notes
project.id UUID string The project that owns this participation.
project.name string The project's display name.
project.url URL string Deep link to the project in the customer portal.
participation.id UUID string The participant's participation.
participation.url URL string Deep link to the participation's results in the customer portal.
participation.participant.email string Participant's email — typically the join key against your candidate records.
participation.participant.firstName string Participant's first name.
participation.participant.lastName string Participant's last name.
assessmentType enum string LOGIC, PERSONALITY, or HI.
score object Polymorphic — see Score variants below. The scoreType field always matches assessmentType.
integrity object · always present Object for LOGIC assessments with proctoring data, null for PERSONALITY and HI.
occurredAt ISO-8601 string (UTC) Same as the envelope's occurredAt.

participation.completed

The participant completed every assessment on a participation. The payload bundles all assessment results and, when the project has a job filter configured, the participant's match score against it.

{
  "id": "7a2b1c4d-5e6f-7890-abcd-ef1234567890",
  "type": "participation.completed",
  "apiVersion": "2026-05-14",
  "occurredAt": "2026-05-14T11:05:00.000Z",
  "data": {
    "project": {
      "id": "9f8e7d6c-5b4a-3210-fedc-ba9876543210",
      "name": "Senior Engineer — Backend",
      "url": "https://app.hiassessments.com/projects/9f8e7d6c-5b4a-3210-fedc-ba9876543210"
    },
    "participation": {
      "id": "12345678-9abc-def0-1234-56789abcdef0",
      "url": "https://app.hiassessments.com/projects/9f8e7d6c-5b4a-3210-fedc-ba9876543210/participants/12345678-9abc-def0-1234-56789abcdef0",
      "participant": {
        "email": "jane.doe@example.com",
        "firstName": "Jane",
        "lastName": "Doe"
      }
    },
    "assessments": [
      {
        "assessmentType": "LOGIC",
        "score": {
          "scoreType": "LOGIC",
          "gma": 8.8,
          "itemsAnswered": 18,
          "correctAnswers": 15,
          "incorrectAnswers": 3,
          "totalTimeSeconds": 720,
          "averageTimePerItemSeconds": 40
        },
        "integrity": { "tier": "NO_ISSUES", "cameraStatus": "ENABLED" }
      },
      {
        "assessmentType": "PERSONALITY",
        "score": { "scoreType": "PERSONALITY", "...": "..." },
        "integrity": null
      },
      {
        "assessmentType": "HI",
        "score": { "scoreType": "HI", "riskLevel": "MEDIUM", "...": "..." },
        "integrity": null
      }
    ],
    "jobFilterMatch": {
      "id": "0a1b2c3d-4e5f-6789-abcd-ef0123456789",
      "name": "Senior Engineer — Backend",
      "type": "COMPETENCY_BASED",
      "matchScore": 82,
      "assessmentBreakdown": [
        { "assessmentType": "LOGIC", "matchScore": 88 },
        { "assessmentType": "PERSONALITY", "matchScore": 74 },
        { "assessmentType": "HI", "matchScore": 81 }
      ],
      "competencyBreakdown": [
        { "id": "c1d2e3f4-5678-90ab-cdef-1234567890ab", "name": "Problem solving", "matchScore": 90 },
        { "id": "d2e3f4a5-6789-01bc-def0-234567890abc", "name": "Collaboration", "matchScore": 75 }
      ]
    },
    "occurredAt": "2026-05-14T11:04:58.123Z"
  }
}

Job filter match

When a project is configured with a job filter, HI Platform attaches the participant's match score to the participation.completed event.

Field Type Notes
id UUID string The configured filter.
name string Human-readable name.
type enum string SCALE_BASED or COMPETENCY_BASED.
matchScore integer (0–100) Overall aggregate match.
assessmentBreakdown array One entry per assessment that contributed a score, with assessmentType and matchScore (integer 0–100). Assessments with no contribution are omitted from the array.
competencyBreakdown array Empty for SCALE_BASED. Populated for COMPETENCY_BASED: each entry has id, name, and matchScore (integer 0–100; omitted when a required underlying assessment is incomplete).

Score variants

The score field's shape depends on the assessment type. Branch on scoreType (or the parent assessmentType, which always matches).

LOGIC

{
  "scoreType": "LOGIC",
  "gma": 8.8,
  "itemsAnswered": 18,
  "correctAnswers": 15,
  "incorrectAnswers": 3,
  "totalTimeSeconds": 720,
  "averageTimePerItemSeconds": 40
}
Field Type Description
gma number (0–10) General Mental Ability score on the 1-decimal scale.
itemsAnswered integer Number of items the participant attempted.
correctAnswers integer Correct responses.
incorrectAnswers integer Incorrect responses.
totalTimeSeconds integer Total session duration in seconds.
averageTimePerItemSeconds number Average per-item duration in seconds.

PERSONALITY

{
  "scoreType": "PERSONALITY",
  "openness": {
    "overall": 6.5,
    "subfactors": [
      { "code": "OP1", "name": "Creativity", "score": 7.1 },
      { "code": "OP2", "name": "Curiosity", "score": 6.8 },
      { "code": "OP3", "name": "Change Orientation", "score": 6.0 },
      { "code": "OP4", "name": "Imagination", "score": 6.3 }
    ]
  },
  "conscientiousness": { "overall": 7.2, "subfactors": [/* CO1..CO4 */] },
  "extraversion":      { "overall": 5.8, "subfactors": [/* EX1..EX4 */] },
  "agreeableness":     { "overall": 7.4, "subfactors": [/* AG1..AG4 */] },
  "emotionalStability":{ "overall": 6.1, "subfactors": [/* ES1..ES4 */] }
}

Big Five factors. Each factor has an overall aggregate plus four subfactors. See Subfactor codes below for the full map.

HI

{
  "scoreType": "HI",
  "riskLevel": "MEDIUM",
  "intellectualHumility": {
    "subfactors": [
      { "code": "IH1", "name": "Reconsideration", "score": 6.4 },
      { "code": "IH2", "name": "Perspective-seeking", "score": 7.1 },
      { "code": "IH3", "name": "Self-awareness", "score": 6.9 }
    ]
  },
  "resilience":      { "subfactors": [/* RE1..RE3 */] },
  "stressBehaviors": { "subfactors": [/* SB1..SB10 */] }
}
Field Type Notes
riskLevel enum string LOW · MEDIUM · HIGH. Derived from the count of elevated stress-behavior subfactors. LOW = 0–2 elevated, MEDIUM = 3–4, HIGH = 5+. This is the canonical summary of the HI result.
intellectualHumility object 3 subfactors (IH1–IH3).
resilience object 3 subfactors (RE1–RE3).
stressBehaviors object 10 subfactors (SB1–SB10).

HI factors expose subfactors only — the product UI never surfaces a factor-level aggregate, so the webhook contract doesn't either. Use riskLevel as the summary.

Subfactor codes

Codes are stable identifiers; names are the English labels HI Platform uses in its reports. Join on code; the name is supplied for display.

Personality (OCEAN)

Factor Code Name
Openness to Experience OP1 Creativity
OP2 Curiosity
OP3 Change Orientation
OP4 Imagination
Conscientiousness CO1 Dutifulness
CO2 Persistence
CO3 Goal Orientation
CO4 Structure
Extraversion EX1 Sociability
EX2 Assertiveness
EX3 Energy
EX4 Enthusiasm
Agreeableness AG1 Trust
AG2 Cooperation
AG3 Helpfulness
AG4 Empathy
Emotional Stability ES1 Emotional Resilience
ES2 Impulse Control
ES3 Optimism
ES4 Stress Tolerance

HI

Factor Code Name
Humility (Intellectual Humility) IH1 Reconsideration
IH2 Perspective-seeking
IH3 Self-awareness
Resilience RE1 Adaptability
RE2 Emotional Regulation
RE3 Recovery Capacity
Stress Behaviors SB1 Detached
SB2 Dominant
SB3 Expressive
SB4 Cautious
SB5 Charismatic
SB6 Emotion-Driven
SB7 Resistant
SB8 Perfectionistic
SB9 Guarded
SB10 Visionary

Integrity info

Always present on assessment payloads (the integrity key never disappears). The value is an object for LOGIC assessments and null for everything else.

Field Type Values
tier enum string NO_ISSUES, MINOR_ISSUES, MODERATE_ISSUES, MAJOR_ISSUES
cameraStatus enum string ENABLED, PARTIALLY_ENABLED, DISABLED

What's next