Skip to content
NeuralRepo
Get Support

Links

Links attach external URLs to an idea — reference material, GitHub issues, design documents, or any relevant resource. All three endpoints take the idea’s database id in the path, not its #N display number.

GET /api/v1/ideas/:id/links

Returns every link attached to the idea, newest first. Available on all plans.

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

Response 200 OK

{
"links": [
{
"id": 1,
"idea_id": 137,
"url": "https://github.com/org/repo/issues/42",
"title": "GitHub Issue #42",
"link_type": "github-issue",
"created_at": "2026-03-20 10:00:00"
}
]
}

The same links are also embedded in the links array of GET /ideas/:id, so fetching an idea already gives you them — this endpoint exists for when you only need the links.

POST /api/v1/ideas/:id/links

FieldTypeRequiredDescription
urlstringYesMust parse as a URL; max 2,000 characters
titlestringNoDisplay title, max 200 characters
link_typestringNoOne of the five types below (default url)
Terminal window
curl -X POST https://neuralrepo.com/api/v1/ideas/137/links \
-H "X-API-Key: nrp_YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://github.com/org/repo",
"title": "Project repository",
"link_type": "github-repo"
}'

Response 201 Created

{
"link": {
"id": 2,
"idea_id": 137,
"url": "https://github.com/org/repo",
"title": "Project repository",
"link_type": "github-repo",
"created_at": "2026-03-24 09:00:00"
}
}

Nothing is fetched, validated, or unfurled at the far end: the URL only has to parse. A link to a page that 404s is stored exactly like one that works, and title is whatever you supply — it is never read from the page. Duplicate URLs on the same idea are allowed and create separate rows.

DELETE /api/v1/ideas/:id/links/:linkId

Removes a link from an idea. Both ids are required, and the link must belong to that idea.

Terminal window
curl -X DELETE https://neuralrepo.com/api/v1/ideas/137/links/2 \
-H "X-API-Key: nrp_YOUR_KEY"

Response 200 OK

{
"success": true
}

link_type is a closed set — any other value is rejected with 400:

TypeDescription
urlGeneral web link (default)
claude-chatClaude conversation link
github-repoGitHub repository
github-issueGitHub issue or PR
attachmentAccepted, but see below
FieldTypeDescription
idnumberUnique link identifier — the :linkId for deletion
idea_idnumberThe idea this link belongs to
urlstringThe linked URL
titlestring | nullDisplay title
link_typestringOne of the five types above
created_atstringUTC YYYY-MM-DD HH:MM:SS
StatusMeaning
200 OKLinks listed, or delete accepted
201 CreatedLink added
400 Bad RequestNon-numeric id, unparseable URL, title too long, or unknown link_type
401 UnauthorizedMissing or invalid auth
404 Not FoundThe idea does not exist or is not yours