Shipeasy
Flags experimentsApiOperations

Create an experiment

Creates a new experiment in draft status. name, universe, and groups are required; everything else has sensible defaults.

Returns 409 if name already exists, 422 if the named universe doesn't exist, 403 if a plan-gated option is set (sequential_testing, custom significance_threshold) on a plan that doesn't include it.

Use cases
  • Minimal 50/50name + universe + two equal-weight groups.
  • Targeted rollout — supply targeting_gate to restrict the eligible audience and allocation_pct to enrol a slice of it.
  • Multivariant — three or more groups with weights summing to 10000.
  • Sequential testingsequential_testing: true for Premium plans.
POST
/api/admin/experiments

Authorization

bearerSdkKey
AuthorizationBearer <token>

Pass an admin SDK key as Authorization: Bearer sdk_admin_…. Mint via POST /api/admin/keys with type: "admin".

In: header

Header Parameters

X-Project-Id*string

Project the request operates on. Must match the project the SDK key belongs to.

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

application/json

application/json

application/json

curl -X POST "https://shipeasy.ai/api/admin/experiments" \  -H "X-Project-Id: string" \  -H "Content-Type: application/json" \  -d '{    "name": "checkout_button_color",    "universe": "primary_users",    "groups": [      {        "name": "control",        "weight": 5000      },      {        "name": "treatment",        "weight": 5000      }    ]  }'
{
  "id": "exp_01j7wb12c3d4e5f6g7h8j9k0l1",
  "name": "checkout_button_color"
}
{
  "error": "string",
  "code": "string",
  "detail": "string"
}
{
  "error": "string",
  "code": "string",
  "detail": "string"
}
{
  "error": "string",
  "code": "string",
  "detail": "string"
}
{
  "error": "string",
  "code": "string",
  "detail": "string"
}
{
  "error": "string",
  "code": "string",
  "detail": "string"
}
{
  "error": "string",
  "code": "string",
  "detail": "string"
}