Skip to content

Experiment routes: conclude, start

The Experiment Verbs conclude, start as api.sb routes, with inputs, result, refusals and an example.

Reference for Experiment, one group of Experiment routes.

Experiment.conclude

Conclude ends an Experiment with a decision to ship, kill, or iterate, recorded as a Decision. Verb page.

Text
POST /{namespace}/experiments/{experiment}/conclude

Path: experiment. Body, as JSON: the other inputs. Emits Experiment.concluded.

Inputs

InputTypeRequiredDescription
experimentExperimentrequiredThe running Experiment.
decisionstringrequiredOne of ship, kill, iterate.

Returns

OutputTypeRequiredDescription
decisionDecisionrequiredThe recorded Decision.
experimentExperimentrequiredThe Experiment, now concluded.

Refuses when

CheckErrorFixThen call
The input does not match the schema of the operation.invalid-inputRead the schema of the operation, then send every required field with the right type.None.
The key is valid, but its scopes do not allow this operation.forbiddenUse a key whose scopes cover the operation, or ask an owner of the namespace to grant them.None.
The record is not in a state that allows this Verb, so the call is refused.refusedRead the record, run the Verb that moves it to an allowed state, then retry.None.

Example

Terminal
curl -X POST https://api.sb/leaseline.app/experiments/experiment_IyIJJPngKt/conclude \
  -H "Authorization: Bearer $STARTUP_BUILDER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"decision":"ship"}'
JSON
{
  "api": "https://api.sb/leaseline.app",
  "decision": {
    "$id": "https://api.sb/leaseline.app/decisions/decision_ipoch3tTJh",
    "$type": "Decision",
    "choice": "Example choice",
    "reason": "Example reason"
  },
  "experiment": {
    "$id": "https://api.sb/leaseline.app/experiments/experiment_IyIJJPngKt",
    "$type": "Experiment",
    "variants": {}
  },
  "action": {
    "$id": "https://api.sb/leaseline.app/actions/act_br07HsG8MG",
    "operation": "Experiment.conclude",
    "status": "done"
  },
  "links": {
    "self": "https://api.sb/leaseline.app/actions/act_br07HsG8MG"
  }
}

Experiment.start

Start opens an Experiment, splits traffic across its variants, and begins measuring its primary and guardrail Metrics. Verb page.

Text
POST /{namespace}/experiments/{experiment}/start

Path: experiment. Emits Experiment.started.

Inputs

InputTypeRequiredDescription
experimentExperimentrequiredThe Experiment to open.

Returns

OutputTypeRequiredDescription
experimentExperimentrequiredThe running Experiment.

Refuses when

CheckErrorFixThen call
The input does not match the schema of the operation.invalid-inputRead the schema of the operation, then send every required field with the right type.None.
The key is valid, but its scopes do not allow this operation.forbiddenUse a key whose scopes cover the operation, or ask an owner of the namespace to grant them.None.
The record is not in a state that allows this Verb, so the call is refused.refusedRead the record, run the Verb that moves it to an allowed state, then retry.None.

Example

Terminal
curl -X POST https://api.sb/leaseline.app/experiments/experiment_IyIJJPngKt/start \
  -H "Authorization: Bearer $STARTUP_BUILDER_API_KEY"
JSON
{
  "api": "https://api.sb/leaseline.app",
  "experiment": {
    "$id": "https://api.sb/leaseline.app/experiments/experiment_IyIJJPngKt",
    "$type": "Experiment",
    "variants": {}
  },
  "action": {
    "$id": "https://api.sb/leaseline.app/actions/act_br07HsG8MG",
    "operation": "Experiment.start",
    "status": "done"
  },
  "links": {
    "self": "https://api.sb/leaseline.app/actions/act_br07HsG8MG"
  }
}