API Reference
Boards
Access Kanban board lists and cards.
Returns all lists (columns) for a board project, ordered by position.
GET /api/v1/boards/lists?project_id=:project_id
| Parameter | Type | Required | Description |
|---|
project_id | string | Yes | Board project ID |
{
"data": [
{
"id": "list-001",
"project_id": "proj-002",
"name": "To Do",
"position": 0,
"created_at": "2025-06-10T08:00:00Z"
},
{
"id": "list-002",
"project_id": "proj-002",
"name": "In Progress",
"position": 1,
"created_at": "2025-06-10T08:00:00Z"
},
{
"id": "list-003",
"project_id": "proj-002",
"name": "Done",
"position": 2,
"created_at": "2025-06-10T08:00:00Z"
}
],
"meta": { "total": 3, "limit": 100, "offset": 0 }
}
| Status | Error |
|---|
400 | project_id query parameter is required |
404 | Project not found |
Returns cards with optional filters and pagination.
| Parameter | Type | Default | Description |
|---|
project_id | string | — | Filter by project |
list_id | string | — | Filter by list (column) |
limit | number | 50 | Results per page (max 100) |
offset | number | 0 | Items to skip |
{
"data": [
{
"id": "card-001",
"list_id": "list-001",
"project_id": "proj-002",
"title": "Implement dark mode",
"description": "Add theme toggle to settings page",
"labels": [
{ "color": "#8B5CF6", "text": "feature" }
],
"due_date": "2025-07-01",
"checklist": [
{ "id": "check-1", "text": "Add ThemeProvider", "checked": true },
{ "id": "check-2", "text": "Update CSS variables", "checked": false }
],
"attachments": [],
"author_name": null,
"position": 0,
"created_at": "2025-06-12T09:00:00Z"
}
],
"meta": { "total": 1, "limit": 50, "offset": 0 }
}
| Field | Type | Description |
|---|
id | string | Card ID |
list_id | string | Parent list ID |
project_id | string | Board project ID |
title | string | Card title |
description | string | null | Card description (markdown) |
labels | array | Array of { color, text } label objects |
due_date | string | null | Due date (ISO format) |
checklist | array | Array of { id, text, checked } items |
attachments | array | Array of { name, url, mimeType, bytes } |
author_name | string | null | Original author (from imports) |
position | number | Sort position within list |
created_at | string | ISO 8601 timestamp |
Create a new card on a board project. The card is appended to the end of the specified list.
POST /api/v1/boards/cards
| Field | Type | Required | Description |
|---|
project_id | string | Yes | Board project ID |
list_id | string | Yes | Target list/column ID |
title | string | Yes | Card title |
description | string | No | Card description (markdown) |
labels | array | No | Array of { color, text } label objects |
author_name | string | No | Author name to display on the card |
curl -X POST \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"project_id": "proj-002",
"list_id": "list-001",
"title": "Add dark mode toggle",
"description": "Implement a theme toggle in the settings page",
"labels": [{"color": "#8B5CF6", "text": "feature"}]
}' \
https://loop.solve-studio.co/api/v1/boards/cards
{
"data": {
"id": "card-042",
"list_id": "list-001",
"project_id": "proj-002",
"title": "Add dark mode toggle",
"description": "Implement a theme toggle in the settings page",
"labels": [{ "color": "#8B5CF6", "text": "feature" }],
"due_date": null,
"checklist": null,
"attachments": null,
"author_name": null,
"position": 3,
"created_at": "2025-06-15T10:30:00Z"
}
}
| Status | Error |
|---|
400 | project_id, list_id, and title are required |
404 | Project not found in this organization |
404 | List not found in this project |
Retrieve a single board card with all fields.
GET /api/v1/boards/cards/:id
| Parameter | Type | Description |
|---|
id | string | Card ID |
| Status | Error |
|---|
404 | Card not found |
Update a board card's fields.
PATCH /api/v1/boards/cards/:id
| Parameter | Type | Description |
|---|
id | string | Card ID |
| Field | Type | Description |
|---|
title | string | Updated title |
description | string | Updated description |
labels | array | Updated labels array |
due_date | string | null | Updated due date |
checklist | array | Updated checklist items |
list_id | string | Move to a different list |
position | number | New position within list |
All fields are optional. At least one must be provided.
# Move a card to the "Done" list
curl -X PATCH \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"list_id": "list-003"}' \
https://loop.solve-studio.co/api/v1/boards/cards/card-001
| Status | Error |
|---|
400 | No valid fields to update |
404 | Card not found |