Hypotheses API
The Hypothesis Library allows you to save, manage, and reuse hypotheses across experiments.
Create Hypothesis
POST /hypothesesCreate a new hypothesis in your library.
Request Body
{
"title": "Compound X antibacterial activity",
"statement": "Compound X inhibits E. coli growth with MIC ≤ 32 μg/mL",
"null_hypothesis": "Compound X has no antibacterial activity against E. coli",
"experiment_type": "MIC_MBC_ASSAY",
"intake_draft": {
"compliance": { "bsl": "BSL1" }
}
}Parameters
| Field | Type | Required | Description |
|---|---|---|---|
title | string | Yes | Short descriptive title |
statement | string | Yes | The hypothesis statement |
null_hypothesis | string | No | The null hypothesis |
experiment_type | string | No | Associated experiment type |
intake_draft | object | No | Partial experiment intake to pre-fill |
Response
{
"id": "hyp_abc123",
"title": "Compound X antibacterial activity",
"statement": "Compound X inhibits E. coli growth with MIC ≤ 32 μg/mL",
"null_hypothesis": "Compound X has no antibacterial activity against E. coli",
"experiment_type": "MIC_MBC_ASSAY",
"status": "DRAFT",
"intake_draft": {
"compliance": { "bsl": "BSL1" }
},
"experiments_count": 0,
"created_at": "2026-01-27T10:00:00Z",
"updated_at": "2026-01-27T10:00:00Z"
}List Hypotheses
GET /hypothesesList hypotheses in your library with filtering and pagination.
Query Parameters
| Parameter | Type | Description |
|---|---|---|
status | string | Filter by status: DRAFT, USED, ARCHIVED |
experiment_type | string | Filter by experiment type |
search | string | Search in title and statement |
limit | integer | Results per page (1-100, default 20) |
offset | integer | Pagination offset |
Response
{
"hypotheses": [
{
"id": "hyp_abc123",
"title": "Compound X antibacterial activity",
"statement": "Compound X inhibits E. coli growth with MIC ≤ 32 μg/mL",
"status": "DRAFT",
"experiment_type": "MIC_MBC_ASSAY",
"experiments_count": 0,
"created_at": "2026-01-27T10:00:00Z"
}
],
"total": 42,
"limit": 20,
"offset": 0
}Get Hypothesis
GET /hypotheses/{hypothesis_id}Get full details of a specific hypothesis.
Response
Returns the full hypothesis object including intake_draft and Edison metadata if applicable.
Update Hypothesis
PATCH /hypotheses/{hypothesis_id}Update hypothesis fields. Only allowed for hypotheses in DRAFT status.
Request Body
{
"title": "Updated title",
"statement": "Updated hypothesis statement",
"status": "ARCHIVED"
}All fields are optional. Only provided fields are updated.
Delete Hypothesis
DELETE /hypotheses/{hypothesis_id}Archive a hypothesis (soft delete). The hypothesis remains in the database but is hidden from listings.
Response
{
"id": "hyp_abc123",
"status": "ARCHIVED"
}Convert to Experiment
POST /hypotheses/{hypothesis_id}/to-experimentCreate a new experiment from a hypothesis, pre-filling the hypothesis fields and any saved intake draft.
Request Body
{
"additional_fields": {
"privacy": "open",
"turnaround_budget": {
"max_days": 14
}
}
}Response
Returns the created experiment object. The hypothesis status is updated to USED.
Hypothesis Status
| Status | Description |
|---|---|
DRAFT | Work in progress, can be edited |
USED | Associated with a submitted experiment |
ARCHIVED | Soft-deleted, hidden from listings |
Hypothesis Sources
Hypotheses can be created from multiple sources:
- Manual Entry: Created directly via this API
- Edison-Generated: Created from Edison Scientific analysis (includes
edison_responsefield) - Experiment-Derived: Saved from a submitted experiment
For Edison-generated hypotheses, additional fields are populated:
edison_agent: The Edison agent type usededison_query: The original research queryedison_response: The full Edison response object