verification.score

A play's verification score is final

Sent once a play's score is final, which is at most about 15 minutes after the play starts. Each endpoint receives this at most once per play, even if the delivery is retried.

Subscribing an endpoint through /v1 sends this for every play in the endpoint's scope whose score becomes final after you subscribe. It never backfills: earlier plays are not sent. Score filters can't be set through /v1 yet. attestConfigId identifies the filter settings Vojo created for the endpoint when you subscribed.

Read tracks.passport and tracks.harvester for the evidence behind the score. Ignore tracks.player: Vojo's evidence sources are Passport and Harvester.

Payload

A point-in-time echo of the play's FINAL score, not a live-updating view. tracks.*.eventCount are raw received-event counts per track, not the lifecycle-completeness bonus used internally to compute score.

  • eventTypestringRequired

    Always verification.score

  • eventIdstringRequired

    Stable per-event id, constant across retries (injected at delivery). Dedupe on this.

  • playIdstringRequired
  • externalIdstring or nullRequired

    Echoed from the play's wrapper, if any.

  • attestConfigIdstringRequired

    The filter settings this play cleared. For an endpoint subscribed through /v1, this is the permissive config created automatically when the endpoint subscribed to verification.score.

  • attestedAtstringRequired

    Epoch (seconds) this event was generated.

  • tracksobjectRequired
    Show 3 fields
    • passportobjectRequired
      Show 1 field
      • eventCountintegerRequired
    • playerobjectRequired
      Show 1 field
      • eventCountintegerRequired
    • harvesterobjectRequired
      Show 1 field
      • eventCountintegerRequired
  • scoreobjectRequired
    Show 5 fields
    • finalinteger or nullRequired
    • bandstring or nullRequired

      One of LOW, MEDIUM, HIGH, MAX

    • phasestringRequired

      Always FINAL

      Always FINAL — this event is only sent once a play settles.

    • policyVersionstring or nullRequired
    • scoredAtstring or nullRequired
  • metadataobjectRequired

    Your own data, returned unchanged — never scored. Empty object when the wrapper carried none.

  • attemptIdstring

    Per-attempt id; CHANGES on each retry. Do not dedupe on this.

Handling this event

Verify the signature, reply with a 2xx within 20 seconds, then process the event in the background. Retries reuse the same event id, so deduplicate on it.