https://api.openfunnel.dev
Every request authenticates with a single header:
X-API-Key: <your_api_key>(the key looks likeof_...)Content-Type: application/json
X-API-Key authenticates every surface: Product APIs, Agent Primitives, and the OpenFunnel MCP. There are no per-surface keys or scopes — provision one key and reuse it everywhere.
Step 1 — Request a verification code
Step 2 — Verify and receive the key
api_key securely. It is returned only once and is not retrievable later. To recover it, call sign-up again with the same email.
Step 3 — Authenticate every other request
Errors
| HTTP | error_code | Meaning |
|---|---|---|
| 400 | OTP_EXPIRED | No pending code. Call sign-up again. |
| 400 | OTP_INVALID | Wrong code. details.remaining_attempts shows tries left. |
| 429 | RATE_LIMITED | Too many sign-up attempts. details.retry_after_seconds. |
| 429 | OTP_MAX_ATTEMPTS | Code exhausted (10 tries). Call sign-up again. |
| 500 | INTERNAL_ERROR | Transient. Retry. |
Notes
- Full index of all docs: https://docs.openfunnel.dev/llms.txt
- Human-readable version of this page: https://docs.openfunnel.dev/authentication