# VisiBase > VisiBase is an open database for AI agents. Agents can create tables, add columns, and insert rows via a simple REST API. Humans can view and edit the data in a spreadsheet UI or a terminal TUI. ## Quick start 1. Create a table: POST https://visibase.dev/api/tables 2. Insert rows: POST https://visibase.dev/api/tables/{tableId}/rows 3. View in browser: https://visibase.dev/base/{tableId} 4. View in terminal: npx visibase-cli view {tableId} ## API reference Full documentation: https://visibase.dev/docs ## Endpoints All endpoints accept and return JSON. No authentication is required. ### Tables - GET https://visibase.dev/api/tables — List all tables. Returns { tables: [...] } - POST https://visibase.dev/api/tables — Create a table. Body: { "name": "Gyms", "columns": [{ "name": "Name" }, { "name": "Address" }, { "name": "Rating", "kind": "number" }] }. Column kind defaults to "text". Returns { table: { id, name, slug, columns: [...] } } - GET https://visibase.dev/api/tables/{tableId} — Get table schema. The tableId can be the table's UUID or its slug. - DELETE https://visibase.dev/api/tables/{tableId} — Delete a table. ### Columns - POST https://visibase.dev/api/tables/{tableId}/columns — Add a column. Body: { "name": "Phone", "kind": "text" }. Returns { table: { ... } } with updated schema. - PATCH https://visibase.dev/api/tables/{tableId}/columns/{columnId} — Update a column. Body: { "name": "New Name" } - DELETE https://visibase.dev/api/tables/{tableId}/columns/{columnId} — Delete a column. ### Rows - GET https://visibase.dev/api/tables/{tableId}/rows?limit=100&offset=0 — List rows. Returns { rows: [{ id, values: { columnId: value, ... } }] } - POST https://visibase.dev/api/tables/{tableId}/rows — Create a row. Body: { "values": { "Name": "Gold's Gym", "Address": "123 Main St", "Rating": 4.5 } }. Value keys can be column name, slug, or ID. Returns { row: { id, values, ... } } - PATCH https://visibase.dev/api/tables/{tableId}/rows/{rowId} — Update a row. Body: { "values": { "Rating": 4.8 } } - DELETE https://visibase.dev/api/tables/{tableId}/rows/{rowId} — Delete a row. ### Real-time updates - GET https://visibase.dev/api/tables/{tableId}/events — SSE stream. Emits "table_changed" events when data changes. - GET https://visibase.dev/api/tables/{tableId}/version — Returns { version: "..." } for polling. ## Column kinds text, number, boolean, date, json, ai, javascript ## Viewing data - Browser: Open https://visibase.dev/base/{tableId} to see the spreadsheet UI - Terminal: Run `npx visibase-cli view {tableId}` for an interactive TUI (vim-like navigation) - CLI setup: `npx visibase-cli config -s https://visibase.dev` ## Example: complete workflow ```bash # 1. Create a table curl -X POST https://visibase.dev/api/tables \ -H "Content-Type: application/json" \ -d '{"name": "Gyms in SF", "columns": [{"name": "Name"}, {"name": "Address"}, {"name": "Rating", "kind": "number"}, {"name": "Website"}]}' # Returns: { "table": { "id": "tbl_xyz789", "slug": "gyms-in-sf", ... } } # 2. Add rows curl -X POST https://visibase.dev/api/tables/tbl_xyz789/rows \ -H "Content-Type: application/json" \ -d '{"values": {"Name": "Gold\'s Gym", "Address": "1001 Brannan St", "Rating": 4.5, "Website": "https://goldsgym.com"}}' # 3. View in browser: https://visibase.dev/base/tbl_xyz789 # 4. View in terminal: npx visibase-cli view tbl_xyz789 ```