Experiments API
Create Experiment
POST /experimentsCreate a new experiment request.
Request Body
{
"experiment_type": "MIC_MBC_ASSAY",
"title": "Test antibacterial activity of compound X",
"hypothesis": {
"statement": "Compound X inhibits E. coli growth with MIC ≤ 32 μg/mL",
"null_hypothesis": "Compound X has no antibacterial activity"
},
"compliance": {
"bsl": "BSL1"
},
"privacy": "open"
}Response
{
"experiment_id": "exp_abc123",
"status": "open",
"created_at": "2026-01-27T10:00:00Z",
"estimated_cost_usd": 300,
"estimated_turnaround_days": 14,
"links": {
"self": "/experiments/exp_abc123",
"results": "/experiments/exp_abc123/results",
"cancel": "/experiments/exp_abc123"
}
}List Experiments
GET /experimentsQuery Parameters
| Parameter | Type | Description |
|---|---|---|
status | string | Filter by status |
created_after | datetime | Filter by creation date |
created_before | datetime | Filter by creation date |
limit | integer | Results per page (1-100, default 20) |
cursor | string | Pagination cursor |
Response
{
"experiments": [...],
"pagination": {
"total": 42,
"cursor": "exp_xyz789",
"has_more": true
}
}Get Experiment
GET /experiments/{experiment_id}Returns full experiment details including current status and operator info.
Update Experiment
PATCH /experiments/{experiment_id}Update experiment constraints or communication preferences. Only allowed before an operator claims the job.
Cancel Experiment
DELETE /experiments/{experiment_id}Cancel an experiment. Refund amount depends on current status:
- Open: Full refund
- Claimed: Partial refund (operator compensation)
- In Progress: No refund
Response
{
"experiment_id": "exp_abc123",
"status": "cancelled",
"refund_amount_usd": 280,
"refund_status": "processing"
}Experiment Status Flow
draft → pending_review → open → claimed → in_progress → completed
↓
disputed → resolved
↓
cancelled