SidetalkGuides
Sidetalk website ↗Open dashboard

Table Data Query API

Purpose

This API retrieves table data in newest-first order by registration date.
If no item count is provided, retrieves all data in the table. Use page and limit together for pagination.

URL


HTTP method

GET

Headers

HeadersValueDescription
AuthorizationBearer <api_key>Use the API KEY issued in Install in the Sidetalk dashboard.

Parameters (query string)

ParameterTypeRequiredDescription
tableIdStringYesThe table ID to query. Copy it from Table Settings.
limitNumberNoItems per page. If omitted, retrieves all data.
pageNumberNoThe page number. Each page contains the number of items specified by limit. With limit=10, records are split into groups of 10 starting from the newest: page=1 retrieves items 1–10; page=2 retrieves 11–20. Defaults to 1.

Where to find the table ID

Find the table ID as follows.
  1. Open Table Management in the Sidetalk dashboard.
  2. Open Data Management for the table whose ID you need.
  3. Click the gear icon at the top right of Data Management.
  4. Find the Table ID under Table Data API Integration in Table Settings.
  5. Click the Table ID field to copy it to the clipboard.

Example request

Retrieve the latest 10 records

If page is omitted, the first page is retrieved.
Shell
curl -X GET \
  "https://api.sidetalk.ai/v1/data-sheets?tableId=${TABLE_ID}&limit=10" \
  -H "Authorization: Bearer ${API_KEY}"

Retrieve the second page

Retrieves the next 10 records after the latest ones.
Shell
curl -X GET \
  "https://api.sidetalk.ai/v1/data-sheets?tableId=${TABLE_ID}&limit=10&page=2" \
  -H "Authorization: Bearer ${API_KEY}"

Retrieve all data

Shell
curl -X GET \
  "https://api.sidetalk.ai/v1/data-sheets?tableId=${TABLE_ID}" \
  -H "Authorization: Bearer ${API_KEY}"

Response format

The JSON response returns data in newest-first order by created_at.

Response body

JSON
{
  "success": true,
  "table_id": "12345678-1234-1234-1234-123456789abc",
  "table_name": "고객 문의",
  "page": 1,
  "total_count": 25,
  "rows": [
    {
      "entry_id": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa",
      "created_at": "20260728143000",
      "updated_at": "20260728143000",
      "columns": {
        "고객명": "홍길동",
        "전화번호": "010-1234-5678"
      }
    }
  ]
}

Response fields

1. Query result
FieldTypeDescription
successBooleanWhether the request succeeded.
table_idStringThe unique ID of the queried table.
table_nameStringThe name of the queried table.
pageNumberThe current retrieved page number.
total_countNumberThe total number of records stored in the table.
rowsArrayThe records retrieved in newest-first order by registration date.
2. Data list (rows)
FieldTypeDescription
entry_idStringThe unique row identifier.
created_atStringThe date and time the record was created.
updated_atStringThe date and time the record was last modified.
columnsObjectThe actual data, keyed by column names.

Example code (JavaScript)

Query table data

JavaScript
async function getTableData(tableId, limit = null, page = 1) {
    const baseUrl = "https://api.sidetalk.ai/v1/data-sheets";

    const params = new URLSearchParams({
        tableId: tableId
    });

    if (limit !== null) {
        params.append("limit", limit);
    }

    if (page > 1) {
        params.append("page", page);
    }

    try {
        const response = await fetch(`${baseUrl}?${params.toString()}`, {
            method: "GET",
            headers: {
                "Authorization": "Bearer [API_KEY]"
            }
        });

        const result = await response.json();

        if (!response.ok || !result.success) {
            console.error(
                "Server Error:",
                result.error || "Unknown error"
            );
            return;
        }

        console.log(`현재 페이지: ${result.page}`);
        console.log(`전체 데이터 개수: ${result.total_count}`);

        result.rows.forEach(row => {
            console.log(`[${row.created_at}]`, row.columns);
        });

        return result;
    } catch (error) {
        console.error("Error fetching table data:", error);
    }
}
Retrieve the latest 10 records:
JavaScript
getTableData("TABLE_ID", 10);
Retrieve the second page:
JavaScript
getTableData("TABLE_ID", 10, 2);
Retrieve all data:
JavaScript
getTableData("TABLE_ID");

Error response

If a processing error occurs, the following response is returned.

Response body

JavaScript
{
  "success": false,
  "error": "Data sheet not found."
}

Error response fields

FieldTypeDescription
successBooleanWhether the request succeeded. false on error.
errorStringDetailed information about the error.

Cautions

  • Find the table ID in Table Management → Data Management → top-right gear → Table Data API Integration.
  • Data is returned in newest-first order by created_at.
  • If page is omitted, the first page is retrieved.
  • Requests for page=2 or higher must also include limit.
  • Omitting limit retrieves all data. For large tables, paginate using limit and page.
  • Each row’s actual data is in its columns object in the rows array.
  • columns uses column names as keys, so changing a column name also changes the response key.
  • The table ID alone is insufficient; the API KEY of the site that owns the table is required.
  • To protect the API KEY, call this API from your server rather than the browser in production.