Skip to main content

List Hypotheses

GET/v2/project/{project_key}/hypotheses

Return the project's hypothesis backlog: the ideas the team wrote down, how they rated each one, and which experiments came out of them.

A hypothesis is the reason an experiment exists. It holds what the team observed, the problem they think it causes, and the change they want to try, plus their own 1 to 5 ratings for confidence, importance and difficulty.

Newest updates come first.

Query parameters

ParameterTypeDefaultDescription
searchstringnoneOnly return hypotheses whose observation, problem or solution contains this text.
limitinteger50Max results to return. Maximum 200.
offsetinteger0Number of records to skip (for pagination).
include_archivedbooleanfalseAlso return ideas that were archived, each marked "archived": true. Archived ideas are off the backlog, so they are left out by default.

Example

curl "https://api-{region}.mida.so/v2/project/YOUR_PROJECT_KEY/hypotheses?limit=50&offset=0" \
-H "Authorization: Bearer YOUR_GENERATED_API_KEY"

Success response

{
"success": true,
"hypotheses": [
{
"hypothesis_id": 4021,
"observation": "62% of pricing page visitors on mobile never scroll past the first plan.",
"problem": "The plan comparison is three screens tall on a phone, so the cheaper plan is all most people ever see.",
"solution": "Collapse the comparison into a single card with a plan switcher.",
"confidence": 4,
"importance": 5,
"difficulty": 2,
"hypothesis_url": "https://www.notion.so/pricing-mobile-research",
"archived": false,
"created_at": "2026-07-02T09:14:00.000Z",
"updated_at": "2026-08-19T04:31:00.000Z",
"linked_test_ids": [34707, 34755]
},
{
"hypothesis_id": 4034,
"observation": "Support gets asked whether the trial needs a card about twice a week.",
"problem": null,
"solution": "Say \"no card needed\" directly under the signup button.",
"confidence": 3,
"importance": 4,
"difficulty": 1,
"hypothesis_url": null,
"archived": false,
"created_at": "2026-08-11T02:00:00.000Z",
"updated_at": "2026-08-11T02:00:00.000Z",
"linked_test_ids": []
}
],
"count": 2,
"total": 34,
"limit": 50,
"offset": 0,
"has_more": false,
"next_offset": 2
}

Response fields

FieldTypeDescription
hypothesesarrayThe backlog, most recently updated first
hypotheses[].hypothesis_idintegerUnique ID. Use it in the other hypothesis endpoints
hypotheses[].observationstring|nullWhat the team saw happening
hypotheses[].problemstring|nullWhy they think it is a problem
hypotheses[].solutionstring|nullThe change they want to test
hypotheses[].confidenceinteger|nullThe team's own rating, 1 to 5. null means unrated
hypotheses[].importanceinteger|nullThe team's own rating, 1 to 5. null means unrated
hypotheses[].difficultyinteger|nullThe team's own rating, 1 to 5. null means unrated
hypotheses[].hypothesis_urlstring|nullLink to supporting research
hypotheses[].archivedbooleantrue when the idea was taken off the backlog. Only appears if you asked for archived ideas
hypotheses[].linked_test_idsarrayExperiments run from this hypothesis. An empty array means nobody has tested it yet
countintegerNumber of hypotheses in this page of results
totalintegerNumber of hypotheses matching the filters, so the backlog size unless you asked for archived ones
has_morebooleanWhether more results exist past this page
next_offsetintegerPass as offset to fetch the next page

Error responses

StatusMeaning
401Invalid or missing API key
404Project not found
Deciding what to test next

An entry with a high importance, a low difficulty and an empty linked_test_ids is an idea the team believes in and has not tried yet. Those are the ones worth picking up first.

Ratings are the team's own judgement. Read them, and do not fill them in on their behalf.