Hypotize Learnings API
Closed experiments with their result and learning.
Closed experiments with their result and learning.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/hypotize-ai:hypotize-ai-learnings-api"
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Hypotize Learnings API
version: 1.0.0
summary: Growth experiments for agents and automations.
description: 'Read and write the growth experiments of your Hypotize projects: ideas, tests, outcomes and learnings.
Authenticate with a personal API key (Settings, API keys) sent as `Authorization: Bearer hyp_...`. A Read only key can call the GET endpoints; a Read and write key can also call the others.
Errors use real HTTP status codes and one body shape: `{ "error": { "code", "message" } }`, sometimes with extra fields such as `required_roles` or the import row that failed.
- 400 INVALID_REQUEST, INVALID_JSON, INVALID_CURSOR, INVALID_IDEMPOTENCY_KEY and the lifecycle codes (EXPERIMENT_NOT_READY, OUTCOME_REQUIRED...)
- 401 UNAUTHORIZED: missing, invalid, revoked or expired API key
- 403 FORBIDDEN (the key''s access level is too low) or INSUFFICIENT_ROLE (the project role is too low, with required_roles)
- 404 NOT_FOUND
- 409 STALE_EXPERIMENT (expected_updated_at is not the current updated_at) or IDEMPOTENCY_KEY_REUSED
- 429 RATE_LIMITED: 300 requests a minute per key, 500 written rows every 5 minutes
Writes accept an `Idempotency-Key` header: a retry with the same key and body within 24 hours returns the first response, with the header `Idempotent-Replayed: true`.
Lists are paginated with `cursor`: pass `next_cursor` from the previous page until it is null.
The same operations are available to AI agents on the MCP server at https://api.hypotize.ai/mcp.'
contact:
name: Hypotize
url: https://hypotize.ai
email: hello@hypotize.ai
termsOfService: https://hypotize.ai/terms
servers:
- url: https://api.hypotize.ai/v1
security:
- apiKey: []
tags:
- name: Learnings
description: Closed experiments with their result and learning.
paths:
/projects/{project_id}/learnings:
get:
operationId: listLearnings
summary: List learnings
description: 'Experiment outcomes and learnings, most recently updated first. With ended_after, experiments without an end date are left out.
For a polling trigger, read the first page (most recently updated first) and dedupe on experiment_id plus updated_at. Do not poll with ended_after: an outcome recorded later keeps the earlier end date and would be missed.'
tags:
- Learnings
parameters:
- name: project_id
in: path
required: true
description: Project ID, from GET /projects.
schema:
type: string
format: uuid
- name: results
in: query
required: false
style: form
explode: true
description: Repeat the parameter or separate values with commas.
schema:
maxItems: 3
type: array
items:
type: string
enum:
- Win
- Lose
- Neutral
- name: statuses
in: query
required: false
style: form
explode: true
description: Repeat the parameter or separate values with commas.
schema:
default:
- Winning
- Failed
- Inconclusive
- Learned
minItems: 1
maxItems: 12
type: array
items:
type: string
enum:
- Idea
- Approved
- Ready
- Running
- Analyzing
- Winning
- Failed
- Learned
- Archived
- Inconclusive
- Testing
- Analysis
- name: ended_after
in: query
required: false
schema:
type: string
format: date-time
pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z|([+-](?:[01]\d|2[0-3]):[0-5]\d)))$
- name: cursor
in: query
required: false
schema:
type: string
minLength: 1
maxLength: 2048
- name: limit
in: query
required: false
schema:
default: 20
type: integer
minimum: 1
maximum: 100
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
additionalProperties: true
'400':
$ref: '#/components/responses/Error'
'401':
$ref: '#/components/responses/Error'
'403':
$ref: '#/components/responses/Error'
'404':
$ref: '#/components/responses/Error'
'429':
$ref: '#/components/responses/Error'
components:
schemas:
Error:
type: object
required:
- error
properties:
error:
type: object
required:
- code
- message
properties:
code:
type: string
examples:
- NOT_FOUND
message:
type: string
additionalProperties: true
responses:
Error:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/Error'
securitySchemes:
apiKey:
type: http
scheme: bearer
bearerFormat: hyp_ API key
description: Personal API key from Settings, API keys.
externalDocs:
description: Hypotize
url: https://hypotize.ai/?utm_source=openapi&utm_medium=api