CPT Tools

Google Sheets API Documentation

REST endpoints for reading, writing, searching, and bulk-managing Google Sheets rows.

Base URL

/api/gs

Auth

Not implemented yet.

Rate limit

100 requests per 15 minutes per IP.

Quick Start

Each request targets a spreadsheet ID and a tab name.

GET /api/gs/:sheet_id/:tab_name

Example:

GET /api/gs/1abcDEF12345/Sheet1?page=1&limit=10

Endpoints

GET List records

/api/gs/:sheet_id/:tab_name

Supports page, limit, sort_by, sort_order, and JSON filter.

GET Get one record

/api/gs/:sheet_id/:tab_name/:record_id

GET Search records

/api/gs/:sheet_id/:tab_name/search?query=John&field=name&operator=contains

POST Create a record

{
  "sheet_id": "1abcDEF12345",
  "tab_name": "Sheet1",
  "row": { "name": "Bob", "age": "35" }
}

PUT Update or upsert a record

{
  "sheet_id": "1abcDEF12345",
  "tab_name": "Sheet1",
  "row": { "id": "1", "name": "John Updated" }
}

DELETE Delete a record

/api/gs/:sheet_id/:tab_name/:record_id

POST Bulk create

{
  "rows": [
    { "name": "Bob", "age": "35" },
    { "name": "Alice", "age": "28" }
  ]
}

PUT Bulk update

{
  "match_field": "id",
  "rows": [
    { "id": "1", "name": "John Updated" },
    { "id": "2", "age": "26" }
  ]
}

DELETE Bulk delete

{
  "record_ids": ["1", "2"]
}

Query Parameters

Parameter Type Description Default
page number Page number. 1
limit number Records per page, max 100. 10
sort_by string Field name used for sorting. -
sort_order string asc or desc. asc
filter JSON string Field comparisons such as $gt, $lt, $in, or $regex. -