API Reference
Experiments

Experiments API

Create Experiment

POST /experiments

Create 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 /experiments

Query Parameters

ParameterTypeDescription
statusstringFilter by status
created_afterdatetimeFilter by creation date
created_beforedatetimeFilter by creation date
limitintegerResults per page (1-100, default 20)
cursorstringPagination 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