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
| Headers | Value | Description |
|---|---|---|
| Authorization | Bearer <api_key> | Use the API KEY issued in Install in the Sidetalk dashboard. |
Parameters (query string)
| Parameter | Type | Required | Description |
|---|---|---|---|
| tableId | String | Yes | The table ID to query. Copy it from Table Settings. |
| limit | Number | No | Items per page. If omitted, retrieves all data. |
| page | Number | No | The 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.
- Open Table Management in the Sidetalk dashboard.
- Open Data Management for the table whose ID you need.
- Click the gear icon at the top right of Data Management.
- Find the Table ID under Table Data API Integration in Table Settings.
- 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
| Field | Type | Description |
|---|---|---|
| success | Boolean | Whether the request succeeded. |
| table_id | String | The unique ID of the queried table. |
| table_name | String | The name of the queried table. |
| page | Number | The current retrieved page number. |
| total_count | Number | The total number of records stored in the table. |
| rows | Array | The records retrieved in newest-first order by registration date. |
2. Data list (rows)
| Field | Type | Description |
|---|---|---|
| entry_id | String | The unique row identifier. |
| created_at | String | The date and time the record was created. |
| updated_at | String | The date and time the record was last modified. |
| columns | Object | The 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
| Field | Type | Description |
|---|---|---|
| success | Boolean | Whether the request succeeded. false on error. |
| error | String | Detailed 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.
