Back to Docs

API Endpoints

Complete reference for all SheetsJSON API endpoints.

API Endpoints

Base URL: https://api.sheetsjson.com

All endpoints require authentication via API key when the sheet has require_api_key enabled.

Reading Data

Get Sheet Data

Fetch all rows from a sheet.

GET /api/sheets/:account_slug/:sheet_slug

Parameters

Parameter Type Description
account_slug string Your account slug or UUID
sheet_slug string The sheet’s slug or custom API slug

See Query Parameters for filtering, sorting, and pagination options.

Code Examples

```bash # Basic request curl "https://api.sheetsjson.com/api/sheets/your-account/products" \ -H "Authorization: Bearer YOUR_API_KEY" # With query parameters curl "https://api.sheetsjson.com/api/sheets/your-account/products?limit=10&sort=-price" \ -H "Authorization: Bearer YOUR_API_KEY" # With filtering curl "https://api.sheetsjson.com/api/sheets/your-account/products?filter[category]=Electronics&filter[price][lte]=100" \ -H "Authorization: Bearer YOUR_API_KEY" ```
```javascript // Using fetch API const response = await fetch( 'https://api.sheetsjson.com/api/sheets/your-account/products', { headers: { 'Authorization': 'Bearer YOUR_API_KEY' } } ); const data = await response.json(); console.log(data); // With query parameters const url = new URL('https://api.sheetsjson.com/api/sheets/your-account/products'); url.searchParams.set('limit', '10'); url.searchParams.set('sort', '-price'); url.searchParams.set('filter[category]', 'Electronics'); const filteredResponse = await fetch(url, { headers: { 'Authorization': 'Bearer YOUR_API_KEY' } }); // Using async/await with error handling async function fetchProducts() { try { const response = await fetch( 'https://api.sheetsjson.com/api/sheets/your-account/products', { headers: { 'Authorization': 'Bearer YOUR_API_KEY' } } ); if (!response.ok) { throw new Error(`HTTP error! status: ${response.status}`); } return await response.json(); } catch (error) { console.error('Failed to fetch products:', error); throw error; } } ```
```python import requests # Basic request response = requests.get( 'https://api.sheetsjson.com/api/sheets/your-account/products', headers={'Authorization': 'Bearer YOUR_API_KEY'} ) data = response.json() print(data) # With query parameters params = { 'limit': 10, 'sort': '-price', 'filter[category]': 'Electronics', 'filter[price][lte]': 100 } response = requests.get( 'https://api.sheetsjson.com/api/sheets/your-account/products', headers={'Authorization': 'Bearer YOUR_API_KEY'}, params=params ) products = response.json() # With error handling def fetch_products(): try: response = requests.get( 'https://api.sheetsjson.com/api/sheets/your-account/products', headers={'Authorization': 'Bearer YOUR_API_KEY'}, timeout=30 ) response.raise_for_status() return response.json() except requests.exceptions.RequestException as e: print(f'Failed to fetch products: {e}') raise ```

Response

{
  "data": [
    {
      "id": "1",
      "name": "Widget A",
      "price": "29.99",
      "category": "Electronics"
    },
    {
      "id": "2",
      "name": "Widget B",
      "price": "49.99",
      "category": "Electronics"
    }
  ],
  "meta": {
    "total": 2,
    "limit": 100,
    "offset": 0,
    "has_more": false
  }
}

Get Single Row

Fetch a single row by its row number or ID.

GET /api/sheets/:account_slug/:sheet_slug?filter[id]=:id

Code Examples

```bash # Filter by ID field curl "https://api.sheetsjson.com/api/sheets/your-account/products?filter[id]=1&limit=1" \ -H "Authorization: Bearer YOUR_API_KEY" ```
```javascript async function getProductById(id) { const url = new URL('https://api.sheetsjson.com/api/sheets/your-account/products'); url.searchParams.set('filter[id]', id); url.searchParams.set('limit', '1'); const response = await fetch(url, { headers: { 'Authorization': 'Bearer YOUR_API_KEY' } }); const data = await response.json(); return data.data[0] || null; } const product = await getProductById('1'); console.log(product); ```
```python def get_product_by_id(product_id): response = requests.get( 'https://api.sheetsjson.com/api/sheets/your-account/products', headers={'Authorization': 'Bearer YOUR_API_KEY'}, params={ 'filter[id]': product_id, 'limit': 1 } ) data = response.json() return data['data'][0] if data['data'] else None product = get_product_by_id('1') print(product) ```

Response

{
  "data": [
    {
      "id": "1",
      "name": "Widget A",
      "price": "29.99",
      "category": "Electronics"
    }
  ],
  "meta": {
    "total": 1,
    "limit": 1,
    "offset": 0,
    "has_more": false
  }
}

Writing Data

Note: Write operations require a Pro plan or higher. See Write API for complete documentation.

Create Row(s)

Append one or more rows to the sheet.

POST /api/sheets/:account_slug/:sheet_slug

Code Examples

```bash # Add a single row curl -X POST "https://api.sheetsjson.com/api/sheets/your-account/products" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{"name": "New Product", "price": "29.99", "category": "Electronics"}' # Add multiple rows curl -X POST "https://api.sheetsjson.com/api/sheets/your-account/products" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '[{"name": "Product A", "price": "19.99"}, {"name": "Product B", "price": "39.99"}]' ```
```javascript // Add a single row const response = await fetch( 'https://api.sheetsjson.com/api/sheets/your-account/products', { method: 'POST', headers: { 'Authorization': 'Bearer YOUR_API_KEY', 'Content-Type': 'application/json' }, body: JSON.stringify({ name: 'New Product', price: '29.99', category: 'Electronics' }) } ); const result = await response.json(); // { success: true, message: "1 row(s) added", rows_added: 1 } ```
```python # Add a single row response = requests.post( 'https://api.sheetsjson.com/api/sheets/your-account/products', headers={'Authorization': 'Bearer YOUR_API_KEY'}, json={ 'name': 'New Product', 'price': '29.99', 'category': 'Electronics' } ) result = response.json() # {'success': True, 'message': '1 row(s) added', 'rows_added': 1} ```

Update Row

Update an existing row by row number.

PUT /api/sheets/:account_slug/:sheet_slug/:row_number

Code Examples

```bash # Update row 5 curl -X PUT "https://api.sheetsjson.com/api/sheets/your-account/products/5" \ -H "Authorization: Bearer YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{"price": "34.99", "in_stock": "true"}' ```
```javascript const rowNumber = 5; const response = await fetch( `https://api.sheetsjson.com/api/sheets/your-account/products/${rowNumber}`, { method: 'PUT', headers: { 'Authorization': 'Bearer YOUR_API_KEY', 'Content-Type': 'application/json' }, body: JSON.stringify({ price: '34.99', in_stock: 'true' }) } ); const result = await response.json(); // { success: true, message: "Row 5 updated", row: 5 } ```
```python row_number = 5 response = requests.put( f'https://api.sheetsjson.com/api/sheets/your-account/products/{row_number}', headers={'Authorization': 'Bearer YOUR_API_KEY'}, json={ 'price': '34.99', 'in_stock': 'true' } ) result = response.json() # {'success': True, 'message': 'Row 5 updated', 'row': 5} ```

Delete Row

Delete a row by row number.

DELETE /api/sheets/:account_slug/:sheet_slug/:row_number

Code Examples

```bash # Delete row 5 curl -X DELETE "https://api.sheetsjson.com/api/sheets/your-account/products/5" \ -H "Authorization: Bearer YOUR_API_KEY" ```
```javascript const rowNumber = 5; const response = await fetch( `https://api.sheetsjson.com/api/sheets/your-account/products/${rowNumber}`, { method: 'DELETE', headers: { 'Authorization': 'Bearer YOUR_API_KEY' } } ); const result = await response.json(); // { success: true, message: "Row 5 deleted", row: 5 } ```
```python row_number = 5 response = requests.delete( f'https://api.sheetsjson.com/api/sheets/your-account/products/{row_number}', headers={'Authorization': 'Bearer YOUR_API_KEY'} ) result = response.json() # {'success': True, 'message': 'Row 5 deleted', 'row': 5} ```

Response Format

Success Response

All successful responses include a data field with the requested data:

{
  "data": [...],
  "meta": {
    "total": 100,
    "limit": 10,
    "offset": 0,
    "has_more": true
  }
}

Error Response

All errors follow a consistent format:

{
  "error": "Human-readable error message",
  "code": "machine_readable_code"
}

See Error Codes for a complete reference.


Rate Limiting

All API requests are subject to rate limits. See Rate Limits for details.

Rate limit headers are included in every response:

X-RateLimit-Limit: 60
X-RateLimit-Remaining: 45
X-RateLimit-Reset: 1705764000

What’s Next?

Was this page helpful? |