Appearance
Projects
List the projects you belong to, or create one. Ids are UUIDs. See Concepts for roles and scope.
List Projects
GET /api/v1/projects
Scope: intangia:read.
Returns { "projects": [] } when you have none. Each project includes id, name, created_at, role, and the latest brief (null when there is none). role is owner, editor, or viewer.
bash
curl "https://app.intangia.co/api/v1/projects" \
-H "Authorization: Bearer $TOKEN"json
{
"projects": [
{
"id": "2c0b1a44-7e1d-4f0a-9c3b-6d5e4f3a2b10",
"name": "Kinase landscape",
"created_at": "2026-10-01T09:00:00.000Z",
"role": "owner",
"brief": null
}
]
}Create a Project
POST /api/v1/projects
Scope: projects:write. Status 201.
| Field | Required | Notes |
|---|---|---|
name | yes | Trimmed. Missing or blank returns 400 and { "error": "Missing name" }. |
brief | no | Stored on the project. This route does not extract scope from it. |
watchlist_items | no | Scope items: entity_id, entity_type, optional entity_name and data. |
operand | no | $and or $or. Any other value is ignored. |
goals | no | Array of target, indication, modality. Other values are dropped. |
primary_filter_type | no | Defaults to keyword. |
bash
curl -X POST "https://app.intangia.co/api/v1/projects" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"Kinase landscape"}'json
{
"id": "2c0b1a44-7e1d-4f0a-9c3b-6d5e4f3a2b10",
"name": "Kinase landscape",
"role": "owner",
"setup_url": "https://app.intangia.co/projects/2c0b1a44-7e1d-4f0a-9c3b-6d5e4f3a2b10/overview?setup=1"
}setup_url is where scoring setup is finished in the app. Scoring cannot start until that setup exists. If the initial scan fails to start, the response also includes scan_error. The project is still created.
To create a project from a brief and have scope matched for you, use the MCP tool create_project. This route stores the items you send.