gtable
gtable.appOpen the Studio
Get startedQuickstart

Quickstart

Make a key in an app you were invited into, read a table and write a record with curl, then hand the same access to an agent.

This takes five minutes and needs an app you can sign in to. Everything below acts as you: the key sees exactly what you see in the app, and nothing more.

Make a key

In your app, open Settings, then Connections, then For developers, and create a key. Pick the scopes it needs (records:read and records:write for this guide). Copy it now: it is shown once.

An app lives under its suite’s address, at its own path:

Terminal
export GTABLE_TOKEN="gt_live_…"
export GTABLE_APP="https://your-suite.gtable.app/your-app"

See what you can reach

Terminal
curl "$GTABLE_APP/v1/schema" -H "Authorization: Bearer $GTABLE_TOKEN"

The answer lists your tables and, in each, the fields you can read. Table ids look like tbl_8fj3kq2wmv5d and field ids like fld_3ns8wq5ke2pb. Ids never change; names can.

Read some records

Terminal
curl "$GTABLE_APP/v1/tables/tbl_8fj3kq2wmv5d/records?limit=5" \
  -H "Authorization: Bearer $GTABLE_TOKEN"

Every response has the same envelope. A record is keyed by field id, and meta.fields says which name each id has today, so you can show names without a second call:

JSON
{
  "data": [{ "id": "rec_4nqw8e2hzk7s", "fld_3ns8wq5ke2pb": "First record", "fld_7qk2mv9xp4ht": 20500 }],
  "meta": {
    "nextCursor": "eyJ…",
    "hasMore": true,
    "fields": { "fld_3ns8wq5ke2pb": "Name", "fld_7qk2mv9xp4ht": "Amount" }
  }
}

Write one

Send an Idempotency-Key with every write. If the request is retried, and in a CI job it will be, you get the first answer back instead of a second row.

Terminal
curl -X POST "$GTABLE_APP/v1/tables/tbl_8fj3kq2wmv5d/records" \
  -H "Authorization: Bearer $GTABLE_TOKEN" \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{"records":[{"Name":"Second record","Amount":1000}]}'

When you write, a field’s exact name works in place of its id. A key that is neither is refused with a 422 naming it, so a typo never becomes an empty row.

Hand it to an agent

In the same Connections screen, choose Copy setup prompt and paste it into Claude, ChatGPT, Cursor or VS Code. The agent adds the server and you sign in in your browser. See Set up your agent.

Where next

  • Conventions: the envelope, pagination, filters and how records look on the wire.
  • Retries and idempotency: making a script safe to run twice.
  • The App API reference: every operation of an app.
  • Your own OpenAPI document, which describes your tables: curl "$GTABLE_APP/v1/openapi.json" -H "Authorization: Bearer $GTABLE_TOKEN".

Use these docs with your AI tools

An AI agent can read this documentation directly. You do not need an account or an API key. Everything here is public and read-only.

Query these docs via MCP

Recommended

Add this server to Claude, Claude Code, Cursor, Mistral, or any tool that supports MCP. Your agent can then search gtable documentation and read it in full, instead of answering from memory.

https://gtable.app/docs/mcp
  • searchFind the passages that answer a question.
  • fetchRead one page in full, as Markdown.
  • list_pagesSee every page in this documentation.

Query these docs over HTTP

The same tools also work as plain web requests. Use this for scripts, or for any tool that does not support MCP. There is one endpoint per tool. Arguments go in the query string, and the answer comes back as JSON.

https://gtable.app/docs/api/docs/search?query=custom+domain

Read the OpenAPI description. It is built from the same definitions as the tools, so it always matches what the endpoints do.

Read these docs as Markdown

Add .md to any page URL to get its Markdown source. You can also send the headerAccept: text/markdown to the page URL itself.

To read the whole documentation in one file, open llms-full.txt. For a short index of every page, open llms.txt.