Skip to content

Ideas

GET /api/v1/ideas

Returns a paginated list of ideas. Use query parameters to filter.

ParameterTypeDescription
statusstringFilter by status
tagstringFilter by tag name
limitnumberItems per page (default 20, max 100)
offsetnumberItems to skip (default 0)
Terminal window
curl "https://neuralrepo.com/api/v1/ideas?status=exploring&limit=10" \
-H "X-API-Key: nrp_YOUR_KEY"

Response 200 OK

[
{
"id": 42,
"title": "Add dark mode support",
"body": "Users have requested a dark theme...",
"status": "exploring",
"source": "web",
"source_url": null,
"tags": ["ui", "feature-request"],
"created_at": "2026-03-20T10:00:00Z",
"updated_at": "2026-03-22T14:30:00Z"
}
]

POST /api/v1/ideas

FieldTypeRequiredDescription
titlestringYes1-200 characters
bodystringNoMax 50,000 characters
tagsstring[]NoMax 20 tags, each max 50 characters
source_urlstringNoValid URL, max 2,000 characters
statusstringNoInitial status
parent_idnumberNoParent idea ID for nesting
Terminal window
curl -X POST https://neuralrepo.com/api/v1/ideas \
-H "X-API-Key: nrp_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"title": "Implement webhook notifications",
"body": "Send HTTP callbacks when ideas change status.",
"tags": ["backend", "integrations"]
}'

Response 201 Created

{
"id": 18,
"title": "Implement webhook notifications",
"body": "Send HTTP callbacks when ideas change status.",
"status": "captured",
"source": "api",
"source_url": null,
"tags": ["backend", "integrations"],
"links": [],
"relations": [],
"processing": true,
"created_at": "2026-03-24T09:00:00Z",
"updated_at": "2026-03-24T09:00:00Z"
}

GET /api/v1/ideas/:id

Returns a single idea with its tags, links, and relations.

Response 200 OK

{
"id": 18,
"title": "Implement webhook notifications",
"body": "Send HTTP callbacks when ideas change status.",
"status": "captured",
"source": "api",
"source_url": null,
"tags": ["backend", "integrations"],
"links": [],
"relations": [],
"created_at": "2026-03-24T09:00:00Z",
"updated_at": "2026-03-24T09:00:00Z"
}

PATCH /api/v1/ideas/:id

All fields are optional. Only provided fields are updated.

FieldTypeRequiredDescription
titlestringNo1-200 characters
bodystringNoMax 50,000 characters
statusstringNoNew status value
parent_idnumber | nullNoSet or remove parent (pass null to detach)
tagsstring[]NoReplaces all tags; max 20, each max 50 characters

Response 200 OK — Returns the updated idea object.

DELETE /api/v1/ideas/:id

Permanently deletes the idea.

Response 200 OK — Returns { "success": true }.

POST /api/v1/ideas/:id/merge

Merges another idea into the target idea. The absorbed idea’s body, tags, and relations are folded into the target.

FieldTypeRequiredDescription
absorb_idnumberYesID of the idea to absorb
Terminal window
curl -X POST https://neuralrepo.com/api/v1/ideas/42/merge \
-H "X-API-Key: nrp_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"absorb_id": 18}'

Response 200 OK — Returns the merged idea.

POST /api/v1/ideas/:id/develop

Uses AI to generate a detailed specification from the idea. Requires a BYOK (Bring Your Own Key) provider key to be configured.

Terminal window
curl -X POST https://neuralrepo.com/api/v1/ideas/42/develop \
-H "X-API-Key: nrp_YOUR_KEY"

Response 200 OK

{
"spec": "## Specification\n\n### Overview\n...",
"provider": "anthropic",
"model": "claude-sonnet-4-20250514",
"usage": {
"input_tokens": 2400,
"output_tokens": 1800
}
}
StatusMeaning
200 OKSuccessful read, update, or delete
201 CreatedIdea created
400 Bad RequestValidation error
401 UnauthorizedMissing or invalid auth
404 Not FoundIdea not found
409 ConflictDuplicate detected or merge conflict