List active tables with folder filtering, search, sorting, and cursor pagination. Use scope=archived to find tables available for restoration. Workspace folder trees exceeding 10,000 folders return 413.
OAuth scope: api:read.
/api/v2/tablesYour Sim API key, personal or workspace-scoped. Generate one under Settings, then API Keys. Operations that reject workspace keys say so in their own description.
In: header
Query Parameters
Workspace whose tables should be listed.
1 <= length <= 128Which lifecycle set to list: active (default) for live tables, archived for tables a delete archived and a table restore can bring back. folderPath resolves against active folders only, so pairing it with scope=archived returns an empty page when the containing folder was archived too.
"active""active" | "archived"Restrict results to tables in this folder. Unknown folder paths contribute no matches.
length <= 4096Case-insensitive substring match against the resource name.
1 <= length <= 200Field used to sort the result. Sorting by name is case-sensitive and follows the storage collation, so do not rely on a case-insensitive order.
"createdAt""name" | "createdAt" | "updatedAt"Sort direction.
"asc""asc" | "desc"Maximum tables to return per page. Values outside 1–1000 are truncated and clamped into that range rather than rejected. Defaults to 100.
100Opaque cursor from the previous page. Send it back with the same sort and filters; only limit may change. Change anything else and pagination must restart without a cursor.
1 <= lengthResponse Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://www.sim.ai/api/v2/tables?workspaceId=string" \ -H "X-API-Key: YOUR_API_KEY"{
"data": [
{
"id": "string",
"webUrl": "http://example.com",
"name": "string",
"description": "string",
"ownerEmail": "owner@example.com",
"schema": {
"columns": [
{
"id": "string",
"name": "string",
"type": "string",
"required": false,
"unique": false,
"workflowGroupId": "string",
"options": [
{
"id": "string",
"name": "string"
}
],
"multiple": true,
"currencyCode": "string"
}
]
},
"rowCount": 0,
"maxRows": 0,
"folderPath": "string",
"locks": {
"schemaLocked": true,
"insertLocked": true,
"updateLocked": true,
"deleteLocked": true
},
"job": {
"id": "string",
"type": "import",
"status": "running",
"rowsProcessed": 0,
"error": "string"
},
"createdAt": "2019-08-24T14:15:22Z",
"updatedAt": "2019-08-24T14:15:22Z"
}
],
"nextCursor": "string"
}{
"error": {
"code": "BAD_REQUEST",
"message": "Invalid request"
}
}{
"error": {
"code": "UNAUTHORIZED",
"message": "Authentication required"
}
}{
"error": {
"code": "FORBIDDEN",
"message": "Insufficient workspace permissions",
"details": {
"code": "INSUFFICIENT_WORKSPACE_ROLE"
}
}
}{
"error": {
"code": "NOT_FOUND",
"message": "Not found"
}
}{
"error": {
"code": "PAYLOAD_TOO_LARGE",
"message": "Request body is too large"
}
}{
"error": {
"code": "RATE_LIMITED",
"message": "API rate limit exceeded",
"details": {
"retryAfter": "2026-01-01T00:00:30.000Z"
}
}
}{
"error": {
"code": "INTERNAL_ERROR",
"message": "Internal server error"
}
}{
"error": {
"code": "SERVICE_UNAVAILABLE",
"message": "Service temporarily unavailable"
}
}