Google Workspace kit · Google Sheets · Apps Script
KeyedSheet API Kit
Paste one script into your Google Sheet and get a JSON API with API keys per tab, filters, joins across tabs, aggregations, validation rules, signed webhooks, an OpenAPI document and a key manager in the spreadsheet. It runs in your own Google account: no monthly fee, no third-party request quota, and your data stays with Google and you.

Buy on Gumroad €19, one payment. No subscription.
Hosted "sheet to API" services charge every month, count every request and keep their extra features for the expensive plans. KeyedSheet API Kit is a script that runs in your own Google account. You pay once.
Set up in about 10 minutes. Paste Code.gs into Extensions > Apps Script, run setup, deploy as a web app. The guide walks through every click.
Read
- Rows as JSON with paging, sorting, random order, full-text search, field selection and row counts, or as CSV.
- Filters: ?city=Amsterdam, ?price__gt=10, __lt, __gte, __lte, __ne, __contains, __in, and match=any for OR.
- Joins across tabs: expand adds the related row (an order's customer), embed adds the list of related rows (a customer's orders).
- Aggregations: count, sum, average, minimum and maximum, optionally per group.
Write
- Create one row or up to 500, update, delete, batch update, batch delete and upsert. Batches are all-or-nothing, writes are locked so two callers never overwrite each other, and created_at / updated_at fill themselves.
- Validation rules per column in a tab: required, number, integer, email, url, date, boolean, min, max, length, list of values, pattern and unique. A failed write lists every problem and writes nothing.
- Plain HTML forms can post straight to a tab and send the visitor to your thank-you page.
Control - API keys that are read-only, read-write or create-only (for public forms), limited to chosen tabs, with a label and an expiry date. Revoke a key and it stops at once. - A sidebar in the spreadsheet to create, list and revoke keys, with requests and errors per key from the optional usage log. - Read-only by default, hidden columns, tabs you choose, cache cleared by every write, and a rate limit per key.
Connect - Webhooks after every write, signed with HMAC-SHA256, and optional webhooks for edits made by hand. - An OpenAPI 3.0 document and a readable docs page, generated from your tabs and validation rules, for Postman, Swagger UI or your team.
Good for: internal tools, prototypes, small websites, product catalogues, event lists, sign-up forms and no-code projects that need a simple backend.
Honest limits. These come from Google Apps Script: about 30 simultaneous executions per account, responses of a few hundred milliseconds to a couple of seconds, GET and POST only (create, update and delete are POST requests with an action field), and every answer is HTTP 200 with the real status in the JSON. Apps Script cannot see the caller's IP address or website, so keys cannot be limited by IP or domain. Webhooks are sent once, without retries. It is not meant for high-traffic production APIs or tabs with hundreds of thousands of rows.
What's in the download: the commented script, a setup guide, a request reference with examples, a ready web page that lists and adds rows, curl examples and the licence. Use it in as many of your own and your clients' projects as you like.
Test status
Runs only on Google Apps Script; tested with the included test suite against a mock of the Google services.
Questions
Ask on the support page. You get a reply from a real person.