Webhooks

response.completed

A participant completed a response

postWebhookresponse.completed

Payload

idstring required

Event ID. Retries of the same event reuse it, so dedupe on it.

type'response.completed' required
created_atstring date-time required

Example payload

{
  "id": "evt_response_completed_3f9c2b7e-5d41-4a8e-9b0c-7e2f1a6d4c58",
  "created_at": "2026-03-09T18:45:01.000Z",
  "data": {
    "response": {
      "id": "3f9c2b7e-5d41-4a8e-9b0c-7e2f1a6d4c58",
      "study_id": "stdy_Qm3vR8tLp2XnWz",
      "distribution_id": "dst_7C1hPliVteu3n4",
      "status": "completed",
      "status_reason": "answered_all_questions",
      "mode": "production",
      "format": "audio",
      "language": "en",
      "custom_id": "user-48213",
      "seconds_elapsed": 270,
      "seq_num": 42,
      "opened_at": "2026-03-09T18:39:00.000Z",
      "first_message_at": "2026-03-09T18:39:30.000Z",
      "last_message_at": "2026-03-09T18:43:15.000Z",
      "created_at": "2026-03-09T18:38:50.000Z",
      "updated_at": "2026-03-09T18:45:00.000Z"
    }
  }
}

Response

Return any 2xx status within 10 seconds to acknowledge the event.

Changes

Webhooks have no change history: a webhook is keyed by its event name rather than a path and method, so no recorded change can name it.