KB-4DE5
Lark Bitable v1 REST API - Exhaustive Endpoint Matrix (S178 Final)
8 min read Revision 1
larkcong2s178rest-apiread-matrix
Lark Bitable v1 REST API — Exhaustive Endpoint Matrix (Final P6)
S178 GĐ1 | 2026-04-11 | Base 88
YSIkb8PxOaNaozs2vwalOOcagkf4 sources: Docs EN, Docs CN, SDK Go (resource.go), SDK Python (lark-oapi 1.4.16) Cross-ref: mechanisms.md rev 20 — Section 5 (MCP C1) + Section 10bis (C4) + Section 11 (GPT)
Totals
| Metric | Count |
|---|---|
| Total endpoints | 46 |
| READ (GET + POST-as-read) | 15 |
| WRITE (POST/PUT/PATCH/DELETE) | 31 |
| P3 verified (READ) | 15/15 PASS |
| WRITE tested (GĐ2 scope) | 0/31 |
| MCP Cổng 1 covers | 3 of 15 READ |
| Cổng 4 superset covers | ~6 READ equivalent |
| Cổng 2 exclusive value | 3 (Role perm matrix, Form questions, Member user_id) |
| Cổng 4 exclusive value | 7 (automation full, syncTableIds, formula, trash, ordering, change stream, record perm) |
Source Discrepancies (3)
| # | Endpoint | EN docs | CN docs | SDK Go | SDK Py | Verdict |
|---|---|---|---|---|---|---|
| D1 | PUT /workflows/:workflow_id |
Missing EN overview | Documented | Present | Present | EN incomplete |
| D2 | POST /records/batch_get |
Page shows CN content | Documented | Present | Present | EN translation lag |
| D3 | Form group (4 endpoints) | Not in EN overview | Documented | Present | Present | EN overview omits |
15 READ Endpoints — Verified (Docs / Actual / Match)
| # | Nhom | Method | URL pattern | Docs noi | Thuc te tra | Khop? | C1 | C4 |
|---|---|---|---|---|---|---|---|---|
| 1 | App | GET | /apps/:app_token |
name, revision, is_advanced, time_zone |
+ advance_version, formula_type, app_token (3 bonus) |
⚠️ | N | Superset |
| 5 | Table | GET | /apps/:token/tables |
table_id, name, revision |
Khop — 80 tables | ✅ | Y | Superset |
| 11 | Field | GET | /tables/:id/fields |
field_id, name, type, property, description, ui_type |
Khop — 87 fields | ✅ | Y | Superset |
| 15 | Record | GET | /tables/:id/records |
Deprecated list | Works, 12x cham hon search (8.5s vs 0.7s) | ⚠️ | N | Superset |
| 16 | Record | GET | /records/:record_id |
record_id, fields |
Khop — 86 fields | ✅ | N | N |
| 17 | Record | POST | /records/search |
record_id, fields + paging 500/page |
Khop — 25 records | ✅ | Y | Superset |
| 18 | Record | POST | /records/batch_get |
records[] up to 100 |
Khop — CN-only docs, works on larksuite.com | ✅ | N | N |
| 25 | View | GET | /tables/:id/views |
view_id, view_name, view_type |
Khop — 8 views | ✅ | N | Superset |
| 26 | View | GET | /views/:view_id |
view_id, view_name, view_type, property |
property={filter_info, hidden_fields, hierarchy_config} |
⚠️ | N | Superset |
| 30 | Form | GET | /forms/:form_id |
name, description, shared, shared_url |
+ shared_limit, submit_limit_once (2 bonus) |
⚠️ | N | N |
| 31 | Form | GET | /forms/:form_id/fields |
field_id, title, required, visible |
+ description, rich_description (question tree exposed) |
⚠️ | N | N |
| 34 | Dashboard | GET | /dashboards |
block_id, block_type, name |
Empty (0 dashboard Base 88). Endpoint works. | ❓ | N | N |
| 36 | Workflow | GET | /workflows |
workflow_id, title, status |
Chinh xac 3 field. 183 workflows. Shallow only. | ✅ | N | Superset |
| 38 | Role | GET | /roles |
role_id, role_name |
+ table_roles[]{table_id, table_name, table_perm} 278KB! |
⚠️ | N | Partial |
| 42 | Member | GET | /roles/:role_id/members |
member_type, name, open_id, union_id |
+ member_en_name, user_id (2 bonus) |
⚠️ | N | N |
31 WRITE Endpoints — NOT tested (GĐ2 scope)
| # | Nhom | Method | URL pattern | SDK Go func | SDK Py func | C1 | Notes |
|---|---|---|---|---|---|---|---|
| 2 | App | POST | /apps |
app.Create |
App.create |
N | Create Base |
| 3 | App | PUT | /apps/:app_token |
app.Update |
App.update |
N | Update name/permissions |
| 4 | App | POST | /apps/:app_token/copy |
app.Copy |
App.copy |
N | Clone Base |
| 6 | Table | POST | /tables |
appTable.Create |
AppTable.create |
Y | Create 1 table |
| 7 | Table | POST | /tables/batch_create |
appTable.BatchCreate |
AppTable.batch_create |
N | Batch create |
| 8 | Table | PATCH | /tables/:table_id |
appTable.Patch |
AppTable.patch |
N | Rename table |
| 9 | Table | DELETE | /tables/:table_id |
appTable.Delete |
AppTable.delete |
N | Delete table |
| 10 | Table | POST | /tables/batch_delete |
appTable.BatchDelete |
AppTable.batch_delete |
N | Batch delete |
| 12 | Field | POST | /fields |
appTableField.Create |
AppTableField.create |
N | Create field |
| 13 | Field | PUT | /fields/:field_id |
appTableField.Update |
AppTableField.update |
N | Update field |
| 14 | Field | DELETE | /fields/:field_id |
appTableField.Delete |
AppTableField.delete |
N | Delete field |
| 19 | Record | POST | /records |
appTableRecord.Create |
AppTableRecord.create |
Y | Create 1 record |
| 20 | Record | POST | /records/batch_create |
appTableRecord.BatchCreate |
AppTableRecord.batch_create |
Y | Batch create |
| 21 | Record | PUT | /records/:record_id |
appTableRecord.Update |
AppTableRecord.update |
Y | Update 1 record |
| 22 | Record | POST | /records/batch_update |
appTableRecord.BatchUpdate |
AppTableRecord.batch_update |
Y | Batch update |
| 23 | Record | DELETE | /records/:record_id |
appTableRecord.Delete |
AppTableRecord.delete |
N | Delete 1 record |
| 24 | Record | POST | /records/batch_delete |
appTableRecord.BatchDelete |
AppTableRecord.batch_delete |
N | Batch delete |
| 27 | View | POST | /views |
appTableView.Create |
AppTableView.create |
N | Create view |
| 28 | View | PATCH | /views/:view_id |
appTableView.Patch |
AppTableView.patch |
N | Update view |
| 29 | View | DELETE | /views/:view_id |
appTableView.Delete |
AppTableView.delete |
N | Delete view |
| 32 | Form | PATCH | /forms/:form_id |
appTableForm.Patch |
AppTableForm.patch |
N | Update form meta |
| 33 | Form | PATCH | /forms/:form_id/fields/:field_id |
appTableFormField.Patch |
AppTableFormField.patch |
N | Update form question |
| 35 | Dashboard | POST | /dashboards/:block_id/copy |
appDashboard.Copy |
AppDashboard.copy |
N | Copy dashboard |
| 37 | Workflow | PUT | /workflows/:workflow_id |
appWorkflow.Update |
AppWorkflow.update |
N | Enable/disable only |
| 39 | Role | POST | /roles |
appRole.Create |
AppRole.create |
N | Create role |
| 40 | Role | PUT | /roles/:role_id |
appRole.Update |
AppRole.update |
N | Update role |
| 41 | Role | DELETE | /roles/:role_id |
appRole.Delete |
AppRole.delete |
N | Delete role |
| 43 | Member | POST | /roles/:role_id/members |
appRoleMember.Create |
AppRoleMember.create |
N | Add 1 member |
| 44 | Member | POST | /members/batch_create |
appRoleMember.BatchCreate |
AppRoleMember.batch_create |
N | Batch add |
| 45 | Member | DELETE | /members/:member_id |
appRoleMember.Delete |
AppRoleMember.delete |
N | Remove 1 member |
| 46 | Member | POST | /members/batch_delete |
appRoleMember.BatchDelete |
AppRoleMember.batch_delete |
N | Batch remove |
Cong 4 Exclusive (no public REST equivalent)
syncTableIds— Sync Table list per Base (1 call)trashBlockMap/trashTableMap— deleted tablesbaseRecordsNum— total records across BaseformulaInfo.code— compiled formularankInfo/viewRankMap— record ordering per viewcommentMap/milestoneMap— comments, milestonescs/latestCSRev— change streamdeniedRecords— record-level permissionautomation/listfull logic (nodeSchema + draft.steps + extra.TableMap)
v2 Check
4 sources confirm: No bitable/v2 endpoints exist.