---
title: "An experiment started"
method: POST
path: "experiment.started"
tags: ["webhooks"]
---

# An experiment started

`POST experiment.started` (webhook)

The experiment as its start recorded it.

## Payload

- WebhookEventWebhookExperiment
  - `id` string, required: The event id, also sent as the webhook-id header; deduplicate on it
  - `type` string, required: The topic: quiz.started | quiz.finished | quiz.abandoned | identity.captured | quiz.published | experiment.started | experiment.ended | profile.created | profile.updated | export.completed | webhook.endpoint.disabled | ping
  - `created` string, date-time, required: When the event happened
  - `api_version` 'v1': The payload version
  - `data` WebhookDataWebhookExperiment, required
    - `object` WebhookExperiment, required
      - `experiment_id` string, required: The experiment
      - `quiz_id` string, required: Its quiz
      - `name` string, required: Its name
      - `status` 'running' | 'waiting' | 'ended', required: Its status as the lifecycle recorded it
      - `arms` WebhookExperimentArm[], required: The arms in position order
        - `arm_id` string, required: The arm
        - `label` string, required: The arm's label
        - `is_control` boolean, required: True for the live version the test compares against
        - `version_id` string, required: The version the arm shows
        - `version_number` integer, required: That version's number
      - `winner` WebhookExperimentArm, required
        - `arm_id` string, required: The arm
        - `label` string, required: The arm's label
        - `is_control` boolean, required: True for the live version the test compares against
        - `version_id` string, required: The version the arm shows
        - `version_number` integer, required: That version's number
      - `period` integer, required: The counting period the event closed or opened
      - `started_at` string, date-time, nullable, required: When the test started
      - `ended_at` string, date-time, nullable, required: When the test ended; null on experiment.started
      - `outcome` string, nullable, required: How the test ended, on experiment.ended: winner_manual | winner_auto | winner_ai | ai_no_change | no_winner_notify | ended_manual | cancelled | reverted | plan_downgraded; null on experiment.started

## Acknowledgement `200`

Any 2xx within 10 seconds acknowledges the event

## Other responses

- `4XX`: 410 ends the delivery and disables the endpoint; any other 4xx but 408 and 429 ends it
- `5XX`: Retried, as are 408, 429, a timeout and a network error: seven retries over about 28 hours, then the delivery is dead

---

[API](https://skmtc.dev/octaneai/apis/octane-ai-merchant-api.md) - [All operations](https://skmtc.dev/octaneai/apis/octane-ai-merchant-api/llms.txt) - [OpenAPI document](https://skmtc.dev/octaneai/apis/octane-ai-merchant-api/revisions/dc2d1aa2b7c6?raw)
