# Zoho Tables Integration via LowCodeAPI

**Last Updated**: February 10, 2026

## Overview

Zoho Tables is an online database platform that provides powerful data management capabilities with features like tables, views, fields, records, workspaces, portals, and more. It's designed for teams to organize, analyze, and collaborate on data in a spreadsheet-like interface with relational database features.

**Main Features:**
- Portal and workspace management
- Base (database) and table management
- Record creation, retrieval, update, and deletion
- Field customization and selection options
- View management for different data perspectives
- Import and export functionality
- Workspace member management

## Base Endpoint

https://api.lowcodeapi.com/zohotables

**Important**: Always include the provider name `zohotables` in the URL path after `api.lowcodeapi.com/`

## Authentication

**Type**: OAuth 2.0

To connect to Zoho Tables via LowCodeAPI:

1. Go to [Zoho Developer Console](https://accounts.zoho.com/developerconsole)
2. Create a Zoho Tables application
3. Get your OAuth 2.0 Client ID and Client Secret
4. Configure your Zoho Region (e.g., `https://tables.zoho.com` or `https://tables.zoho.in`)
5. Configure your Zoho Auth Region (e.g., `https://accounts.zoho.com` or `https://accounts.zoho.in`)
6. Set up required scopes (e.g., `ZohoTables.bases.READ`, `ZohoTables.tables.ALL`, etc.)
7. Add your credentials to LowCodeAPI's Zoho Tables integration

LowCodeAPI automatically handles authentication by mapping your credentials to the Zoho Tables API for each request.

## URL Format

LowCodeAPI supports two URL formats for endpoints with path parameters. Always try the **New Format first**, and only fall back to the **Old Format** if it doesn't work.

### New Format (Priority) - Dynamic Path Parameters

Path parameters stay in the URL path. Do NOT convert them to query parameters.

**Pattern:**
```
https://api.lowcodeapi.com/zohotables/{path_with_params}?api_token={api_token}
```

**Example:**
```bash
# New Format - Path parameter stays in the URL path
https://api.lowcodeapi.com/zohotables/api/v1/records?base_id={base_id}&table_id={table_id}&api_token={api_token}
```

### Old Format (Fallback) - Sanitized Path + Query Parameters

Path parameters become query parameters with a sanitized path.

**Pattern:**
```
https://api.lowcodeapi.com/zohotables/{sanitized_path}?{path_params}&api_token={api_token}
```

**Example:**
```bash
# Old Format - Path parameter becomes a query parameter
https://api.lowcodeapi.com/zohotables/api/v1/records?base_id={base_id}&table_id={table_id}&api_token={api_token}
```

### Decision Flow for AI Agents

1. **Always use New Format first** - Keep path parameters in the URL path
2. If you get a 404 or error, try **Old Format** with sanitized path
3. Log which format worked for future requests to this provider

**Note**: Most Zoho Tables endpoints use query parameters rather than path parameters, so the New Format and Old Format URLs are often identical.

## API Categories

- **Portal** - List portals
- **Workspace** - Manage workspaces and workspace members
- **Base** - Manage bases (databases) in workspaces
- **Tables** - Manage tables within bases
- **Views** - Manage views for tables
- **Fields** - Manage fields and selection options
- **Record** - Create, read, update, delete records
- **Data** - Update record data with specific criteria
- **Import** - Import data from files
- **Export** - Export data to various formats

## Common Endpoints

### Workspace Operations

#### List Workspaces

Get all Workspaces of a Portal.

**Method**: `GET`

| LowCodeAPI Path | Method |
|----------------|--------|
| `/api/v1/workspaces` | GET |

**New Format URL:**
```
https://api.lowcodeapi.com/zohotables/api/v1/workspaces?api_token={api_token}
```

**Old Format URL:**
```
https://api.lowcodeapi.com/zohotables/api/v1/workspaces?api_token={api_token}
```

**Query Parameters:**

| Parameter | Type | Required | Description |
|-----------|-------|----------|-------------|
| `portal_id` | number | Yes | Portal ID |

**Example Request:**
```bash
curl -X GET "https://api.lowcodeapi.com/zohotables/api/v1/workspaces?portal_id=123456&api_token=YOUR_API_TOKEN"
```

**Example Response:**
```json
{
  "data": {
    "workspaces": [
      {
        "workspace_id": "workspace_001",
        "workspace_name": "Marketing Team",
        "portal_id": 123456
      }
    ]
  }
}
```

**Official Documentation**: [List Workspaces](https://tables.zoho.com/help/api/v1#WORKSPACES-List-Workspaces)

---

#### Create Workspace

Add a new Workspace in a Portal.

**Method**: `POST`

| LowCodeAPI Path | Method |
|----------------|--------|
| `/api/v1/workspaces` | POST |

**Request Body:**

| Parameter | Type | Required | Description |
|-----------|-------|----------|-------------|
| `portal_id` | number | Yes | Portal ID |
| `Workspace_name` | string | Yes | Workspace Name |

**Example Request:**
```bash
curl -X POST "https://api.lowcodeapi.com/zohotables/api/v1/workspaces?api_token=YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "portal_id": 123456,
    "Workspace_name": "Sales Team"
  }'
```

**Official Documentation**: [Create Workspace](https://tables.zoho.com/help/api/v1#WORKSPACES-Create-Workspace)

---

### Base Operations

#### List Bases

List all of Bases of a Workspace.

**Method**: `GET`

| LowCodeAPI Path | Method |
|----------------|--------|
| `/api/v1/bases` | GET |

**Query Parameters:**

| Parameter | Type | Required | Description |
|-----------|-------|----------|-------------|
| `portal_id` | number | Yes | Portal ID |
| `workspace_id` | string | Yes | Workspace ID |

**Example Request:**
```bash
curl -X GET "https://api.lowcodeapi.com/zohotables/api/v1/bases?portal_id=123456&workspace_id=workspace_001&api_token=YOUR_API_TOKEN"
```

**Official Documentation**: [List Bases](https://tables.zoho.com/help/api/v1#BASES-List-Bases)

---

#### Duplicate Base

Duplicate a new Base in a Workspace.

**Method**: `POST`

| LowCodeAPI Path | Method |
|----------------|--------|
| `/api/v1/bases` | POST |

**Request Body:**

| Parameter | Type | Required | Description |
|-----------|-------|----------|-------------|
| `portal_id` | number | Yes | Portal ID |
| `workspace_id` | string | Yes | Workspace ID |
| `base_id` | string | Yes | Source Base Id |
| `base_name` | string | Yes | Base Name |
| `base_icon` | number | Yes | Base Icon |
| `base_color` | string | Yes | Base Color |

**Example Request:**
```bash
curl -X POST "https://api.lowcodeapi.com/zohotables/api/v1/bases?api_token=YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "portal_id": 123456,
    "workspace_id": "workspace_001",
    "base_id": "base_123",
    "base_name": "Customer Database Copy",
    "base_icon": 1,
    "base_color": "#FF5733"
  }'
```

**Official Documentation**: [Duplicate Base](https://tables.zoho.com/help/api/v1#BASES-Duplicate-Base)

---

#### Search Bases

Get all Bases whose names are matched with the search_string.

**Method**: `GET`

| LowCodeAPI Path | Method |
|----------------|--------|
| `/api/v1/searchBases` | GET |

**Query Parameters:**

| Parameter | Type | Required | Description |
|-----------|-------|----------|-------------|
| `search_string` | string | Yes | String to Search |
| `workspace_id` | string | No | WorkspaceID to search inside a particular workspace |

**Example Request:**
```bash
curl -X GET "https://api.lowcodeapi.com/zohotables/api/v1/searchBases?search_string=customer&workspace_id=workspace_001&api_token=YOUR_API_TOKEN"
```

**Official Documentation**: [Search Bases](https://tables.zoho.com/help/api/v1#BASES-Search-Bases)

---

### Table Operations

#### List Tables

Get all tables of a Base.

**Method**: `GET`

| LowCodeAPI Path | Method |
|----------------|--------|
| `/api/v1/tables` | GET |

**Query Parameters:**

| Parameter | Type | Required | Description |
|-----------|-------|----------|-------------|
| `base_id` | string | Yes | Base Id |

**Example Request:**
```bash
curl -X GET "https://api.lowcodeapi.com/zohotables/api/v1/tables?base_id=base_123&api_token=YOUR_API_TOKEN"
```

**Example Response:**
```json
{
  "data": {
    "tables": [
      {
        "table_id": "table_001",
        "table_name": "Customers",
        "base_id": "base_123"
      },
      {
        "table_id": "table_002",
        "table_name": "Orders",
        "base_id": "base_123"
      }
    ]
  }
}
```

**Official Documentation**: [List Tables](https://tables.zoho.com/help/api/v1#TABLES-List-Tables)

---

#### Duplicate Table

Duplicate a Table in a Base.

**Method**: `POST`

| LowCodeAPI Path | Method |
|----------------|--------|
| `/api/v1/tables` | POST |

**Request Body:**

| Parameter | Type | Required | Description |
|-----------|-------|----------|-------------|
| `base_id` | string | Yes | Base Id |
| `table_id` | string | Yes | Table Id |
| `table_name` | string | Yes | Table Name |
| `is_duplicate_with_records` | boolean | Yes | By default it is true. Can be set as false if you want to duplicate table without its records |

**Example Request:**
```bash
curl -X POST "https://api.lowcodeapi.com/zohotables/api/v1/tables?api_token=YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "base_id": "base_123",
    "table_id": "table_001",
    "table_name": "Customers Archive",
    "is_duplicate_with_records": true
  }'
```

**Official Documentation**: [Duplicate Table](https://tables.zoho.com/help/api/v1#TABLES-Duplicate-Table)

---

### Record Operations

#### List Data

Get the list of all records and its data for a specific Table in a Base.

**Method**: `GET`

| LowCodeAPI Path | Method |
|----------------|--------|
| `/api/v1/records` | GET |

**Query Parameters:**

| Parameter | Type | Required | Description |
|-----------|-------|----------|-------------|
| `base_id` | string | Yes | Base Id |
| `table_id` | string | Yes | Table Id |
| `view_id` | string | No | View Id |
| `record_id` | string | No | Reference record id |
| `count` | number | No | No of records to fetch |
| `selection_option_color` | string | No | Selection Option Color |

**Example Request:**
```bash
curl -X GET "https://api.lowcodeapi.com/zohotables/api/v1/records?base_id=base_123&table_id=table_001&view_id=view_001&count=50&api_token=YOUR_API_TOKEN"
```

**Official Documentation**: [List Data](https://tables.zoho.com/help/api/v1#DATA-List-Data)

---

#### Create Record With Data

Add a new record to a Table in a Base.

**Method**: `POST`

| LowCodeAPI Path | Method |
|----------------|--------|
| `/api/v1/records` | POST |

**Request Body:**

| Parameter | Type | Required | Description |
|-----------|-------|----------|-------------|
| `base_id` | string | Yes | Base Id |
| `table_id` | string | Yes | Table Id |
| `field_ids` | array | No | Field Ids As Array |
| `values` | array | No | Corresponding Values for fields As Array |
| `field_ids_with_values` | object | No | The data that needs to be updated |

**Example Request:**
```bash
curl -X POST "https://api.lowcodeapi.com/zohotables/api/v1/records?api_token=YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "base_id": "base_123",
    "table_id": "table_001",
    "field_ids_with_values": {
      "field_001": "John Doe",
      "field_002": "[email protected]",
      "field_003": "Acme Corp"
    }
  }'
```

**Official Documentation**: [Create Record with Data](https://tables.zoho.com/help/api/v1#RECORDS-Create-Record-with-Data)

---

#### Delete Record

Remove a record from a Table in a Base.

**Method**: `DELETE`

| LowCodeAPI Path | Method |
|----------------|--------|
| `/api/v1/records` | DELETE |

**Query Parameters:**

| Parameter | Type | Required | Description |
|-----------|-------|----------|-------------|
| `base_id` | string | Yes | Base Id |
| `table_id` | string | Yes | Table Id |
| `record_id` | string | No | Record Id |

**Example Request:**
```bash
curl -X DELETE "https://api.lowcodeapi.com/zohotables/api/v1/records?base_id=base_123&table_id=table_001&record_id=rec_456&api_token=YOUR_API_TOKEN"
```

**Official Documentation**: [Delete Record](https://tables.zoho.com/help/api/v1#RECORDS-Delete-Record)

---

#### Fetch Records With Criteria

Fetch records of a Table in Base, that matches the given criteria or record IDs.

**Method**: `POST`

| LowCodeAPI Path | Method |
|----------------|--------|
| `/api/v1/fetchRecordsWithCriteria` | POST |

**Request Body:**

| Parameter | Type | Required | Description |
|-----------|-------|----------|-------------|
| `base_id` | string | Yes | Base Id |
| `table_id` | string | Yes | Table Id |
| `view_id` | string | Yes | When a view ID is provided, additional information is included in response |
| `criteria` | string | No | If criteria is not set, all available records will get fetched |
| `record_ids` | array | No | record IDs as array for fetching records |
| `count` | number | No | No of records to fetch (default: 500) |
| `is_case_sensitive` | boolean | No | Can be set as true if field is specified by ID in criteria |
| `is_ids_used_in_params` | boolean | No | Can be set as true if field is specified by ID in criteria |
| `reference_record_id` | boolean | No | Can be set as false for case-insensitive search |
| `first_match_only` | boolean | No | Can be set as false for case-insensitive search |

**Example Request:**
```bash
curl -X POST "https://api.lowcodeapi.com/zohotables/api/v1/fetchRecordsWithCriteria?api_token=YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "base_id": "base_123",
    "table_id": "table_001",
    "view_id": "view_001",
    "criteria": "Status == \"Active\"",
    "count": 100
  }'
```

**Official Documentation**: [Fetch Record with Criteria](https://tables.zoho.com/help/api/v1#RECORDS-Fetch-Record-with-Criteria)

---

### Field Operations

#### List Fields

Get all fields and its details for a specific Table in a Base.

**Method**: `GET`

| LowCodeAPI Path | Method |
|----------------|--------|
| `/api/v1/fields` | GET |

**Query Parameters:**

| Parameter | Type | Required | Description |
|-----------|-------|----------|-------------|
| `base_id` | string | Yes | Base Id |
| `table_id` | string | Yes | Table Id |
| `view_id` | string | No | When a view ID is provided, additional information is included |

**Example Request:**
```bash
curl -X GET "https://api.lowcodeapi.com/zohotables/api/v1/fields?base_id=base_123&table_id=table_001&view_id=view_001&api_token=YOUR_API_TOKEN"
```

**Example Response:**
```json
{
  "data": {
    "fields": [
      {
        "field_id": "field_001",
        "field_name": "Name",
        "field_type": "text"
      },
      {
        "field_id": "field_002",
        "field_name": "Email",
        "field_type": "email"
      }
    ]
  }
}
```

**Official Documentation**: [List Fields](https://tables.zoho.com/help/api/v1#FIELDS-List-Fields)

---

#### Create Field

Add a new field to a Table in a Base.

**Method**: `POST`

| LowCodeAPI Path | Method |
|----------------|--------|
| `/api/v1/fields` | POST |

**Request Body:**

| Parameter | Type | Required | Description |
|-----------|-------|----------|-------------|
| `base_id` | string | Yes | Base Id |
| `table_id` | string | Yes | Table Id |
| `type` | string | No | Field type |

**Example Request:**
```bash
curl -X POST "https://api.lowcodeapi.com/zohotables/api/v1/fields?api_token=YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "base_id": "base_123",
    "table_id": "table_001",
    "type": "text"
  }'
```

**Official Documentation**: [Create Field](https://tables.zoho.com/help/api/v1#FIELDS-Create-Field)

---

#### Update Field

Change name, type and/or type components of field in a Table.

**Method**: `PUT`

| LowCodeAPI Path | Method |
|----------------|--------|
| `/api/v1/fields` | PUT |

**Request Body:**

| Parameter | Type | Required | Description |
|-----------|-------|----------|-------------|
| `base_id` | string | Yes | Base Id |
| `table_id` | string | Yes | Table Id |
| `field_id` | string | No | Field Id |
| `field_name` | string | No | Field name |
| `type` | number | No | Field type |

**Example Request:**
```bash
curl -X PUT "https://api.lowcodeapi.com/zohotables/api/v1/fields?api_token=YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "base_id": "base_123",
    "table_id": "table_001",
    "field_id": "field_001",
    "field_name": "Full Name",
    "type": 1
  }'
```

**Official Documentation**: [Update Field](https://tables.zoho.com/help/api/v1#FIELDS-Update-Field)

---

### Import/Export Operations

#### Import

Use this API to import base/table from files.

**Method**: `POST`

| LowCodeAPI Path | Method |
|----------------|--------|
| `/api/v1/import` | POST |

**Request Body:**

| Parameter | Type | Required | Description |
|-----------|-------|----------|-------------|
| `import_file` | file | Yes | xls|xlsx|xlsm|ods|csv|tsv|accdb|mdb |
| `import_scope` | string | Yes | base|table |
| `portal_id` | string | Yes | Portal ID - Mandatory if import_scope == base |
| `workspace_id` | string | Yes | Workspace ID - Mandatory if import_scope == base |
| `base_id` | string | Yes | Base ID - Mandatory if import_scope == table |
| `password` | string | No | To get Password protected file |

**Example Request:**
```bash
curl -X POST "https://api.lowcodeapi.com/zohotables/api/v1/import?api_token=YOUR_API_TOKEN" \
  -F "[email protected]" \
  -F "import_scope=table" \
  -F "base_id=base_123"
```

**Official Documentation**: [Import](https://tables.zoho.com/help/api/v1#Import-Import)

---

#### Export

Use this API to export base/table/view.

**Method**: `GET`

| LowCodeAPI Path | Method |
|----------------|--------|
| `/api/v1/exports` | GET |

**Query Parameters:**

| Parameter | Type | Required | Description |
|-----------|-------|----------|-------------|
| `base_id` | string | Yes | Base Id |
| `scope` | string | Yes | base|table|view |
| `file_type` | string | Yes | csv|xls|xlsx|tsv|ics |
| `table_id` | string | No | Table Id (required if scope is table or view) |
| `view_id` | string | No | View Id (required if scope is view) |
| `password` | string | Yes | To get Password protected file |

**Example Request:**
```bash
curl -X GET "https://api.lowcodeapi.com/zohotables/api/v1/exports?base_id=base_123&scope=table&table_id=table_001&file_type=csv&password=secret&api_token=YOUR_API_TOKEN"
```

**Official Documentation**: [Export](https://tables.zoho.com/help/api/v1#Export-Export)

---

## Response Format

All responses from LowCodeAPI are wrapped in a `data` key:

```json
{
  "data": {
    // Actual response from provider API
  }
}
```

The `data` key contains the raw response from the provider's API.

## Complete Endpoint Reference

| Category | Method | LowCodeAPI Path (New Format) | Description |
|----------|---------|---------------------------|-------------|
| Portal | GET | `/api/v1/portals` | List Portals |
| Workspace | GET | `/api/v1/workspaces` | List Workspaces |
| Workspace | POST | `/api/v1/workspaces` | Create Workspace |
| Workspace | PUT | `/api/v1/workspaces` | Update Workspace |
| Workspace | DELETE | `/api/v1/workspaces` | Delete Workspace |
| Workspace | GET | `/api/v1/workspaceMembers` | List Workspace Members |
| Workspace | POST | `/api/v1/workspaceMembers` | Add Workspace Member |
| Base | GET | `/api/v1/bases` | List Base |
| Base | POST | `/api/v1/bases` | Duplicate Base |
| Base | PUT | `/api/v1/bases` | Update Base |
| Base | GET | `/api/v1/searchBases` | Search Base |
| Tables | GET | `/api/v1/tables` | List Tables |
| Tables | POST | `/api/v1/tables` | Duplicate Table |
| Tables | PUT | `/api/v1/tables` | Update Table |
| Tables | DELETE | `/api/v1/tables` | Delete Table |
| Views | GET | `/api/v1/views` | List Views |
| Fields | GET | `/api/v1/fields` | List Fields |
| Fields | POST | `/api/v1/fields` | Create Field |
| Fields | PUT | `/api/v1/fields` | Update Field |
| Fields | DELETE | `/api/v1/fields` | Delete Field |
| Fields | POST | `/api/v1/selectionOptions` | Create Selection Options |
| Fields | PUT | `/api/v1/selectionOptions` | Update Selection Options |
| Fields | DELETE | `/api/v1/selectionOptions` | Delete Selection Options |
| Record | GET | `/api/v1/records` | List Data |
| Record | POST | `/api/v1/records` | Create Record With Data |
| Record | DELETE | `/api/v1/records` | Delete Record |
| Record | PUT | `/api/v1/records` | Update Records with Criteria |
| Record | POST | `/api/v1/fetchRecordsWithCriteria` | Fetch Records with Criteria |
| Data | PUT | `/api/v1/data` | Update Data |
| Import | POST | `/api/v1/import` | Import |
| Export | GET | `/api/v1/exports` | Export |

---

## API Definition Endpoints

To discover all available endpoints for Zoho Tables:

| Format | URL Pattern | Description |
|--------|-------------|-------------|
| **New Format** | `https://backend.lowcodeapi.com/zohotables/openapi` | OpenAPI spec with dynamic path parameters |
| **Old Format** | `https://backend.lowcodeapi.com/zohotables/definition` | API definition with sanitized paths |

**Examples:**
```bash
# Get OpenAPI spec (New Format)
curl -X GET "https://backend.lowcodeapi.com/zohotables/openapi"

# Get API definition (Old Format)
curl -X GET "https://backend.lowcodeapi.com/zohotables/definition"
```

---

## Usage Examples

### Example 1: Create a New Record in a Table

```bash
# Step 1: List portals (no specific ID required)
curl -X GET "https://api.lowcodeapi.com/zohotables/api/v1/portals?api_token=YOUR_API_TOKEN"

# Response includes portal_id to use for workspace operations

# Step 2: List workspaces in a portal (uses portal_id from Step 1)
curl -X GET "https://api.lowcodeapi.com/zohotables/api/v1/workspaces?portal_id=123456&api_token=YOUR_API_TOKEN"

# Response includes workspace_id to use for base operations

# Step 3: List bases in a workspace (uses workspace_id from Step 2)
curl -X GET "https://api.lowcodeapi.com/zohotables/api/v1/bases?portal_id=123456&workspace_id=workspace_001&api_token=YOUR_API_TOKEN"

# Response includes base_id to use for table operations

# Step 4: List tables in a base (uses base_id from Step 3)
curl -X GET "https://api.lowcodeapi.com/zohotables/api/v1/tables?base_id=base_123&api_token=YOUR_API_TOKEN"

# Response includes table_id to use for record operations

# Step 5: List fields to understand table structure (uses base_id and table_id from previous steps)
curl -X GET "https://api.lowcodeapi.com/zohotables/api/v1/fields?base_id=base_123&table_id=table_001&api_token=YOUR_API_TOKEN"

# Response includes field_ids to populate records

# Step 6: Create a new record (uses base_id, table_id, and field_ids from previous steps)
curl -X POST "https://api.lowcodeapi.com/zohotables/api/v1/records?api_token=YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "base_id": "base_123",
    "table_id": "table_001",
    "field_ids_with_values": {
      "field_001": "John Doe",
      "field_002": "[email protected]",
      "field_003": "Acme Corp"
    }
  }'
```

### Example 2: Query Records with Criteria

```bash
# Step 1: List workspaces and bases to get IDs (no specific ID required initially)
curl -X GET "https://api.lowcodeapi.com/zohotables/api/v1/portals?api_token=YOUR_API_TOKEN"
curl -X GET "https://api.lowcodeapi.com/zohotables/api/v1/workspaces?portal_id=123456&api_token=YOUR_API_TOKEN"
curl -X GET "https://api.lowcodeapi.com/zohotables/api/v1/bases?portal_id=123456&workspace_id=workspace_001&api_token=YOUR_API_TOKEN"
curl -X GET "https://api.lowcodeapi.com/zohotables/api/v1/tables?base_id=base_123&api_token=YOUR_API_TOKEN"

# Step 2: List views to find appropriate view ID (uses base_id and table_id from above)
curl -X GET "https://api.lowcodeapi.com/zohotables/api/v1/views?base_id=base_123&table_id=table_001&api_token=YOUR_API_TOKEN"

# Response includes view_id to use for fetching records

# Step 3: Fetch records matching specific criteria (uses IDs from previous steps)
curl -X POST "https://api.lowcodeapi.com/zohotables/api/v1/fetchRecordsWithCriteria?api_token=YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "base_id": "base_123",
    "table_id": "table_001",
    "view_id": "view_001",
    "criteria": "Status == \"Active\" && City == \"New York\"",
    "count": 100,
    "is_case_sensitive": true
  }'
```

### Example 3: Import and Export Data

```bash
# Step 1: Import data from a CSV file into a table (uses base_id and table_id from previous operations)
curl -X POST "https://api.lowcodeapi.com/zohotables/api/v1/import?api_token=YOUR_API_TOKEN" \
  -F "[email protected]" \
  -F "import_scope=table" \
  -F "base_id=base_123"

# Step 2: Export data from a table (uses base_id and table_id from previous operations)
curl -X GET "https://api.lowcodeapi.com/zohotables/api/v1/exports?base_id=base_123&scope=table&table_id=table_001&file_type=xlsx&password=secret&api_token=YOUR_API_TOKEN" \
  --output export.xlsx
```

---

## Error Handling

| Status Code | Description |
|-------------|-------------|
| 200 | Success |
| 201 | Created |
| 400 | Bad Request - Invalid parameters |
| 401 | Unauthorized - Invalid or missing OAuth token |
| 403 | Forbidden - Insufficient permissions |
| 404 | Not Found - Resource doesn't exist |
| 422 | Unprocessable Entity - Validation errors |
| 429 | Too Many Requests - Rate limit exceeded |
| 500 | Internal Server Error |

---

## Official Documentation

For complete API details, parameter descriptions, and examples, visit the [Zoho Tables API Documentation](https://tables.zoho.com/help/api/v1).

**Setup Credentials**: [Zoho Developer Console](https://accounts.zoho.com/developerconsole)