REST API
The NeuralRepo REST API gives you full programmatic access to your ideas. Build custom integrations, automate idea capture from other tools, or create your own front-end — the API supports everything the web dashboard does.
Base URL
Section titled “Base URL”https://neuralrepo.com/api/v1All endpoints are served over HTTPS. HTTP requests are rejected.
Authentication
Section titled “Authentication”Authenticate every request with your API key in the X-API-Key header:
X-API-Key: nrp_your_api_key_hereGenerate an API key in Settings > API Keys on the web dashboard. Keys use the format nrp_ followed by 64 hexadecimal characters.
Quick Example: Create an Idea
Section titled “Quick Example: Create an Idea”curl -X POST https://neuralrepo.com/api/v1/ideas \ -H "Content-Type: application/json" \ -H "X-API-Key: nrp_your_api_key_here" \ -d '{ "title": "Build a personal finance dashboard", "body": "Track spending, budgets, and investments in one place. Use Plaid for bank integration.", "tags": ["fintech", "side-project"], "status": "exploring" }'const response = await fetch("https://neuralrepo.com/api/v1/ideas", { method: "POST", headers: { "Content-Type": "application/json", "X-API-Key": "nrp_your_api_key_here", }, body: JSON.stringify({ title: "Build a personal finance dashboard", body: "Track spending, budgets, and investments in one place. Use Plaid for bank integration.", tags: ["fintech", "side-project"], status: "exploring", }),});
const idea = await response.json();console.log(idea);import requests
response = requests.post( "https://neuralrepo.com/api/v1/ideas", headers={ "Content-Type": "application/json", "X-API-Key": "nrp_your_api_key_here", }, json={ "title": "Build a personal finance dashboard", "body": "Track spending, budgets, and investments in one place. Use Plaid for bank integration.", "tags": ["fintech", "side-project"], "status": "exploring", },)
idea = response.json()print(idea)Request Body
Section titled “Request Body”| Field | Type | Required | Description |
|---|---|---|---|
title | string | Yes | Idea title (1-200 characters) |
body | string | No | Idea body in plain text or Markdown |
tags | string[] | No | Array of tags (max 20) |
status | string | No | One of: captured, exploring, building, shipped, shelved. Defaults to captured |
source | string | No | Capture channel to record: web, cli, claude-mcp, siri, email, api, shortcut, ios. Defaults to api |
source_url | string | No | URL where the idea originated (max 2,000 characters) |
parent_id | number | No | Parent idea ID. Background processing turns this into a parent relation |
Bodies are capped at 50,000 characters and titles at 200.
Response
Section titled “Response”A successful request returns 201 Created with the full idea object:
{ "id": 42, "title": "Build a personal finance dashboard", "body": "Track spending, budgets, and investments in one place. Use Plaid for bank integration.", "status": "exploring", "source": "api", "tags": ["fintech", "side-project"], "processing": true, "created_at": "2026-03-24T14:22:00Z", "updated_at": "2026-03-24T14:22:00Z"}Error Responses
Section titled “Error Responses”The API returns standard HTTP status codes with a JSON error body. Validation failures put
the offending fields in error, one array of messages per field:
{ "error": { "title": ["String must contain at most 200 character(s)"] }}| Status Code | Meaning |
|---|---|
400 | Bad request — invalid or missing parameters |
401 | Unauthorized — missing or invalid API key |
403 | Forbidden — action not allowed (e.g., free tier limit reached) |
404 | Not found — idea or resource does not exist |
429 | Rate limited — daily request quota exceeded |
500 | Server error — try again or contact support |
Hitting the free plan’s idea limit returns a 403 with a machine-readable shape you can
branch on:
{ "error": "idea_limit_reached", "message": "You've captured 50 ideas on the free plan. Upgrade to Pro for unlimited ideas.", "currentCount": 50, "limit": 50, "upgradeUrl": "https://neuralrepo.com/upgrade", "featureRequestUrl": "https://support.neuralrepo.com/feature-requests"}Pro-only endpoints return 403 with pro_required: true and the feature name.
Rate Limits
Section titled “Rate Limits”API endpoints are rate-limited per user per day. Free plans allow 100 requests per day, and Pro plans allow 10,000 requests per day, counted per UTC day and reset at midnight UTC. If you exceed this, the API returns 429 Too Many Requests. Rate limits apply to API key and Bearer token requests only — web UI sessions are exempt. Multiple keys share one quota, and MCP calls count against it too.