Skip to main content
GET
/
public
/
v1
/
board
/
{boardId}
/
table
/
{tableId}
/
rows
Node.js SDK
import { CoperaAI } from '@copera.ai/sdk';

const copera = CoperaAI({
  apiKey: 'your-api-key-here'
});

const rows = await copera.board.listTableRows({
  boardId: 'board_id_here',
  tableId: 'table_id_here',
  filter: {
    match: 'and',
    conditions: [
      { column_id: 'col_status', operator: 'equals', value: ['opt_done'] },
      { column_id: 'col_due',    operator: 'before', value: '2026-12-31' }
    ]
  },
  sort: [{ column: 'col_due', dir: 'asc' }]
});
console.log(rows);
[
  {
    "_id": "<string>",
    "rowId": 123,
    "owner": "<string>",
    "table": "<string>",
    "board": "<string>",
    "createdAt": "<string>",
    "updatedAt": "<string>",
    "columns": [
      {
        "columnId": "<string>",
        "value": "<unknown>",
        "linkValue": "<unknown>",
        "lookupValue": [
          {
            "foreignRowId": "<string>",
            "foreignRowValue": "<unknown>"
          }
        ]
      }
    ],
    "description": "<string>"
  }
]

Documentation Index

Fetch the complete documentation index at: https://developer.copera.ai/llms.txt

Use this file to discover all available pages before exploring further.

Overview

Retrieves rows (records) from the specified table. Each row contains values for the table’s columns. You can optionally filter and sort the result with the filter and sort query parameters.

Query parameters

ParamTypeDescription
filterstring (JSON)A JSON object describing the conditions to apply. See Filtering.
sortstringComma-separated sort spec, e.g. col_a:asc,col_b:desc. See Sorting.

Filtering

Pass a JSON object as the filter query parameter. Encode it appropriately for the query string (most HTTP clients and SDKs handle this automatically).
{
  "match": "and",
  "conditions": [
    { "column_id": "65f1…", "operator": "contains", "value": "foo" },
    { "column_id": "65f2…", "operator": "between", "value": ["2026-01-01", "2026-12-31"] },
    { "column_id": "65f3…", "operator": "is_empty" }
  ]
}
  • match: "and" (default) or "or" — how to combine multiple conditions.
  • conditions[]: up to 20 conditions. Each has column_id, operator, and (for most operators) value.

Operators by column type

Column typeOperators
stringequals, not_equals, contains, not_contains, starts_with, ends_with, is_empty, is_not_empty
numberequals, not_equals, gt, gte, lt, lte, includes, not_includes, is_empty, is_not_empty
select (status / dropdown / labels)equals, not_equals, includes, not_includes, is_empty, is_not_empty
boolequals, not_equals, is_empty, is_not_empty
dateequals, before, after, between, today, yesterday, tomorrow, next_7_days, last_7_days, current_week, last_week, next_week, current_month, last_month, next_month, is_empty, is_not_empty

Value shape

Operator familyExpected value
String operatorsstring
Number equals/not_equals/gt/gte/lt/ltenumber
Number includes/not_includesnumber[]
Select operatorsstring or string[] of option IDs
Date equals/before/afterISO date string
Date between[startISO, endISO]
Date relative (today, yesterday, current_week, …)omit value
is_empty / is_not_emptyomit value

Examples

Status equals “Done” and due date is in the past:
{
  "match": "and",
  "conditions": [
    { "column_id": "65aa…status", "operator": "equals",  "value": ["65bb…done"] },
    { "column_id": "65aa…due",    "operator": "before",  "value": "2026-05-10" }
  ]
}
Owner is empty or owner matches a specific user:
{
  "match": "or",
  "conditions": [
    { "column_id": "65aa…owner", "operator": "is_empty" },
    { "column_id": "65aa…owner", "operator": "includes", "value": ["65uu…user"] }
  ]
}

Sorting

Pass sort=<colId>:asc,<colId>:desc to sort rows by one or more columns:
?sort=65aa…due:asc,65aa…priority:desc
Sorting by a PASSWORD column is not allowed and returns 400.

Response

Returns an array of row objects with:
  • Row ID (_id) and internal rowId number
  • Owner and timestamps
  • columns[]{columnId, value, linkValue?, lookupValue?} pairs

Errors

StatusCause
400Invalid filter JSON, unknown column ID, operator not valid for the column type, filtering or sorting by a PASSWORD column, or more than 20 conditions.
403The API key lacks ACCESS_BOARDS permission.

Authorizations

Authorization
string
header
required

Bearer token

Path Parameters

boardId
string
required

ObjectId

Required string length: 24
Pattern: ^[0-9a-fA-F]{24}$
tableId
string
required

ObjectId

Required string length: 24
Pattern: ^[0-9a-fA-F]{24}$

Query Parameters

filter
string

JSON filter as a string, e.g. {"match":"and","conditions":[{"column_id":"…","operator":"contains","value":"foo"}]}. See the list-table-rows endpoint docs for the full operator catalog.

sort
string

Comma-separated sort spec, e.g. "col_a:asc,col_b:desc". Defaults to no sorting.

Response

Default Response

_id
string
required
rowId
number
required
owner
string
required
table
string
required
board
string
required
createdAt
string
required
updatedAt
string
required
columns
object[]
required
description
string