Boards
List all boards
Output:
[
{
"_id": "64a1b2c3d4e5f6a7b8c9d0e1",
"name": "Engineering Roadmap",
"description": "Track features, bugs, and milestones across the engineering team.",
"createdAt": "2025-03-10T09:15:42.301Z",
"updatedAt": "2026-02-18T11:30:05.128Z"
},
{
"_id": "64b3c4d5e6f7a8b9c0d1e2f3",
"name": "Sales Pipeline",
"description": "Manage deals from lead to close.",
"createdAt": "2025-05-22T14:08:33.712Z",
"updatedAt": "2026-01-05T08:42:19.455Z"
}
]
Get board details
copera boards get <board-id>
Output:
{
"_id": "64a1b2c3d4e5f6a7b8c9d0e1",
"name": "Engineering Roadmap",
"description": "Track features, bugs, and milestones across the engineering team.",
"createdAt": "2025-03-10T09:15:42.301Z",
"updatedAt": "2026-02-18T11:30:05.128Z"
}
Use copera bases list as an alias for copera boards list.
Tables
List tables in a board
copera tables list --board <board-id>
Output:
[
{
"_id": "65d4e5f6a7b8c9d0e1f2a3b4",
"name": "QA Tests",
"board": "64a1b2c3d4e5f6a7b8c9d0e1",
"createdAt": "2025-04-12T10:22:45.189Z",
"updatedAt": "2026-01-28T16:05:37.640Z",
"columns": [
{ "columnId": "65d4e5f6a7b8c9d0e1f2a3b6", "label": "ID", "type": "NUMBER" },
{ "columnId": "65d7f8a1b2c3d4e5f6a7b8c9", "label": "Related Tasks", "type": "LINK" },
{ "columnId": "65d8a9b0c1d2e3f4a5b6c7d8", "label": "Test Date", "type": "DATE" },
{ "columnId": "65d4e5f6a7b8c9d0e1f2a3b7", "label": "Assignee", "type": "TEXT" }
]
},
{
"_id": "64a1b2c3d4e5f6a7b8c9d0e5",
"name": "Tasks",
"board": "64a1b2c3d4e5f6a7b8c9d0e1",
"columns": [
{ "columnId": "64a1b2c3d4e5f6a7b8c9d0e7", "label": "ID", "type": "NUMBER" },
{ "columnId": "64a1b2c3d4e5f6a7b8c9d0e8", "label": "Task Title", "type": "TEXT" },
{ "columnId": "64a1b2c3d4e5f6a7b8c9d0e9", "label": "Status", "type": "STATUS" },
{ "columnId": "64a1b2c3d4e5f6a7b8c9d0ea", "label": "Priority", "type": "DROPDOWN" },
{ "columnId": "64a1b2c3d4e5f6a7b8c9d0eb", "label": "Owner", "type": "USERS" }
]
}
]
Each table includes its full column schema with column IDs, labels, and types. Use these columnId values when creating rows.
Get a specific table
copera tables get <table-id> --board <board-id>
Returns the full table schema including all columns and their options (for STATUS, DROPDOWN, and similar types):
{
"_id": "64a1b2c3d4e5f6a7b8c9d0e5",
"name": "Tasks",
"board": "64a1b2c3d4e5f6a7b8c9d0e1",
"columns": [
{
"columnId": "64a1b2c3d4e5f6a7b8c9d0e9",
"label": "Status",
"type": "STATUS",
"options": [
{ "optionId": "64a1b2c3d4e5f6a7b8c9d101", "label": "Not Started", "color": "GRAY", "statusGroup": "TODO" },
{ "optionId": "64a1b2c3d4e5f6a7b8c9d102", "label": "In Progress", "color": "BLUE", "statusGroup": "IN_PROGRESS" },
{ "optionId": "64a1b2c3d4e5f6a7b8c9d103", "label": "Done", "color": "GREEN", "statusGroup": "DONE" }
]
},
{
"columnId": "64a1b2c3d4e5f6a7b8c9d0ea",
"label": "Priority",
"type": "DROPDOWN",
"options": [
{ "optionId": "64a1b2c3d4e5f6a7b8c9d104", "label": "High", "color": "RED" },
{ "optionId": "64a1b2c3d4e5f6a7b8c9d105", "label": "Medium", "color": "ORANGE" },
{ "optionId": "64a1b2c3d4e5f6a7b8c9d106", "label": "Low", "color": "NAVY_BLUE" }
]
}
]
}
Use tables get to discover column IDs and option IDs before creating rows — you’ll need these IDs for the columns array.
Rows
List rows
copera rows list --board <board-id> --table <table-id>
Output:
[
{
"_id": "66c2d3e4f5a6b7c8d9e0f1a2",
"rowId": 3,
"owner": "64f1a2b3c4d5e6f7a8b9c0d1",
"table": "64a1b2c3d4e5f6a7b8c9d0e5",
"board": "64a1b2c3d4e5f6a7b8c9d0e1",
"createdAt": "2025-06-15T12:44:18.302Z",
"updatedAt": "2025-06-15T13:10:52.741Z",
"columns": [
{ "columnId": "64a1b2c3d4e5f6a7b8c9d0e8", "value": "Implement OAuth flow" },
{ "columnId": "64a1b2c3d4e5f6a7b8c9d0eb", "value": "https://app.copera.ai/..." }
]
}
]
Get a specific row
Output:
{
"_id": "66c2d3e4f5a6b7c8d9e0f1a2",
"rowId": 3,
"owner": "64f1a2b3c4d5e6f7a8b9c0d1",
"table": "64a1b2c3d4e5f6a7b8c9d0e5",
"board": "64a1b2c3d4e5f6a7b8c9d0e1",
"createdAt": "2025-06-15T12:44:18.302Z",
"updatedAt": "2025-06-15T13:10:52.741Z",
"columns": [
{ "columnId": "64a1b2c3d4e5f6a7b8c9d0e8", "value": "Implement OAuth flow" },
{ "columnId": "64a1b2c3d4e5f6a7b8c9d0eb", "value": "https://app.copera.ai/..." }
]
}
Create a row
copera rows create --board <board-id> --table <table-id> \
--data '{"columns":[{"columnId":"col_id","value":"My Value"}]}'
You can also pipe JSON from stdin:
echo '{"columns":[{"columnId":"col_id","value":"Piped Value"}]}' | copera rows create
Common Workflows
Find column IDs then create a row
A typical flow for creating a row programmatically:
List boards to find the board ID
List tables to find the table ID
copera tables list --board <board-id>
Get table schema to find column IDs
copera tables get <table-id> --board <board-id>
Create a row using the column IDs
copera rows create --board <board-id> --table <table-id> \
--data '{
"columns": [
{ "columnId": "64a1b2c3...", "value": "New Task" },
{ "columnId": "64a1b2c4...", "value": "High" }
],
"description": "Created via CLI"
}'
Using default board and table
If your profile or .copera.toml defines board_id and table_id, you can omit them:
# With defaults configured
copera rows list
copera rows create --data '{"columns":[{"columnId":"col_1","value":"Quick entry"}]}'