# Grid82 > Build on Grid82 from a script, a terminal or an agent: the REST API, the MCP servers and the CLI, for the Studio and for every app, each acting as the person whose credential it is. Answer from these pages rather than from memory: they describe the current API version (/v1). Grid82 has two planes. The Studio (https://studio.grid82.app) is where builders define apps; its Builder API is the same for everyone. Each app runs in its suite's Runtime at https://{suite}.grid82.app/{app}, and its App API is generated per caller: the real OpenAPI document is https://{suite}.grid82.app/{app}/v1/openapi.json, masked to the tables and fields that caller can read, so it is fetched with the caller's own key (without one it answers 401). The App API reference here is the generic contract and names no real table or field. Never invent table or field names; read them from the caller's own schema. The OpenAPI documents at /docs/openapi/builder.json and /docs/openapi/app.json are authoritative for request and response shapes. Where a guide and the reference disagree, the reference wins. Every credential acts as one person and can never do more than that person. There is no admin key. Keys start with g82_. Grid82 is pre-release and not open to sign-ups. The CLI is on npm: `npx grid82`. Every page is also served as Markdown: append `.md` to its URL. Cite the HTML URL, which is the canonical one. Each link below is a page of this documentation as Markdown. The same path without the `.md` suffix serves the HTML version. ## Get started - [The Studio and the Runtime](https://grid82.com/docs/start/studio-and-runtime.md): Grid82 has two planes. Builders define apps in the Studio; invited people use them in their suite's Runtime. Each plane has its own API, MCP server and credentials. - [Quickstart](https://grid82.com/docs/start/quickstart.md): 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. - [Permissions](https://grid82.com/docs/start/permissions.md): User roles, the union rule, and what "cannot read" means for an API, an OpenAPI document or an agent. The same rules apply on every surface. - [Authentication](https://grid82.com/docs/start/authentication.md): API keys and OAuth 2.1 with PKCE, device flow and dynamic client registration. Every credential acts as one person, on one plane, and never does more than that person. ## Agents - [MCP servers](https://grid82.com/docs/agents/overview.md): Which MCP address to give an agent. One server per suite for every app you are in, one per app for a narrow integration, Code Mode, and the Studio's own server. - [Set up your agent](https://grid82.com/docs/agents/setup.md): Copy one prompt from Grid82 and your agent connects itself. Or add the server by hand in Claude Code, Claude, ChatGPT, Cursor, VS Code or Codex. - [Tools](https://grid82.com/docs/agents/tools.md): How Grid82's MCP tools are named, what their hints mean, how lists page, and what is deliberately not a tool. - [Code Mode](https://grid82.com/docs/agents/code-mode.md): Two tools, search and execute. The agent searches its own OpenAPI document, then writes one script that calls many operations, in a sandbox with no network. - [Safety and undo](https://grid82.com/docs/agents/safety.md): An agent's writes run as you, straight away, and land in the change history. What that means, how to undo one, and how Grid82's own assistant differs. ## REST API - [REST API overview](https://grid82.com/docs/api/overview.md): Two REST APIs, the Builder API on the Studio and the App API of every app, with one envelope, one versioning scheme and one set of error codes. - [Conventions](https://grid82.com/docs/api/conventions.md): The response envelope, how a record looks on the wire, cursor pagination, strict inputs, writes by field name, and replacing a whole document safely. - [Errors and limits](https://grid82.com/docs/api/errors.md): Stable error codes to switch on, why 402 and 429 differ, what an error never contains, and the rate limits that exist today. - [Retries and idempotency](https://grid82.com/docs/api/idempotency.md): Send an Idempotency-Key with every write. A retry then returns the first answer instead of doing the work twice, on both APIs, for 24 hours. - [Versioning](https://grid82.com/docs/api/versioning.md): The API is versioned in its path and announces its contract version on every response. How deprecation works, and how page code is versioned. - [Filtering, views and SQL](https://grid82.com/docs/api/filtering-and-sql.md): Narrow a list with a saved view, a search, a filter tree or a where clause, and read or change many rows with Grid82's SQL dialect. All of it through your permissions. - [Undo and history](https://grid82.com/docs/api/undo.md): Every write is recorded with who made it and how it arrived. Undo a change from the API, read a record's history, and restore a deleted table or field from the trash. - [Events and webhooks](https://grid82.com/docs/api/events.md): Pull what changed in an app since the last event you saw. Webhooks are not available yet; the events feed is how you follow changes today. ## App API - [What this app is, to you](https://grid82.com/docs/app-api/app/get.md): Get the app's name, address, enabled surfaces, theme, your roles and the pages those roles may open. - [Read the schema you can see](https://grid82.com/docs/app-api/schema/get.md): Returns the tables and fields your permissions allow. - [List records](https://grid82.com/docs/app-api/records/list.md): Lists records from one table, filtered by your permissions and optionally by a saved view. - [Create records](https://grid82.com/docs/app-api/records/create.md): Creates one or more records. - [Count records](https://grid82.com/docs/app-api/records/count.md): How many records match, for the same view, filter and search a list would use, among the rows your roles see (`meta.rowsLimited` says when that is only some). - [Total a column](https://grid82.com/docs/app-api/records/summarise.md): Reductions over the records a list would return: `summaries` is a JSON object of field id to one of sum, avg, median, min, max, range, stdev, count, filled, empty, unique, checked, unchecked or a percentage of those. - [Count records per value](https://grid82.com/docs/app-api/records/groups.md): Count records by each value in one column for the same set a list would return; a key has the shape the record's value has (a link is `[{ id, label }]`); order keys by that column's sort order. - [Read a window of records by position](https://grid82.com/docs/app-api/records/window.md): Rows `offset` to `offset + limit` of the set a list would return, in the same order, with the size of the whole set. - [Read one record](https://grid82.com/docs/app-api/records/get.md): Returns a single record with the fields your permissions allow. - [Update a record](https://grid82.com/docs/app-api/records/update.md): Applies a partial update; the body is {"fields":{…}}, keyed by field id or exact name. - [Delete a record](https://grid82.com/docs/app-api/records/delete.md): Deletes one record. - [Delete several records](https://grid82.com/docs/app-api/records/delete-many.md): Delete up to 500 records per request. - [Duplicate a record](https://grid82.com/docs/app-api/records/duplicate.md): Copy readable, writable fields into a new record. - [Read a record's history](https://grid82.com/docs/app-api/records/history.md): List changes to this record, newest first, with one entry per field that changed; setting a field to its existing value creates no history. - [List the saved views of a table](https://grid82.com/docs/app-api/views/list.md): List your saved views of this table in your arranged order. - [Save a new view of a table](https://grid82.com/docs/app-api/views/create.md): Visible to you alone; there is no other kind. - [Read one saved view](https://grid82.com/docs/app-api/views/get.md): One of yours. - [Change a saved view](https://grid82.com/docs/app-api/views/update.md): Only a view that is yours. - [Delete a saved view](https://grid82.com/docs/app-api/views/delete.md): Only a view that is yours, which is every view you can see. - [Reorder a table's views](https://grid82.com/docs/app-api/views/reorder.md): `ids` in the order you want them. - [Read a record's comments](https://grid82.com/docs/app-api/comments/list.md): List notes users left on this record, oldest first. - [Comment on a record](https://grid82.com/docs/app-api/comments/create.md): Leave a note on a record. - [Who may be named on this record](https://grid82.com/docs/app-api/comments/mentionable.md): List users who can currently see this record and may be named in an @. - [Edit your own comment](https://grid82.com/docs/app-api/comments/update.md): Only your own, refused on the server rather than hidden in the interface. - [Delete your own comment](https://grid82.com/docs/app-api/comments/delete.md): Delete only your own comment. - [Upload a file for an attachment field](https://grid82.com/docs/app-api/files/upload.md): Upload file bytes as `multipart/form-data` under `file` and return `{ id, name, size, mime, key, uploadedAt }`. - [Read with SQL](https://grid82.com/docs/app-api/sql/query.md): Runs one SELECT as you and returns rows and columns. - [Change many rows with SQL](https://grid82.com/docs/app-api/sql/execute.md): Runs one UPDATE or DELETE as you. - [Turn a sentence into a filter](https://grid82.com/docs/app-api/filters/suggest.md): Return the complete filter to apply, given the table's fields, visible example values, and existing filter; return a plain-word refusal when the sentence is not about narrowing rows. - [What was changed here, and what can be undone](https://grid82.com/docs/app-api/changesets/mine.md): List this app's recent write bundles, newest first. - [Undo a change](https://grid82.com/docs/app-api/changesets/undo.md): Undo a bundle by replaying its operations backwards through the standard write permission compiler; undoing a delete recreates the row only if you have permission to create it. - [Catch up on what changed](https://grid82.com/docs/app-api/events/list.md): Events since a cursor, so a consumer that was down can catch up itself instead of asking us to replay. - [Make a Template page your own](https://grid82.com/docs/app-api/my/pages-fork.md): Fork the Template page into your own editable, deletable page, visible only to you; it replaces the Template for you. - [Rename a page you own](https://grid82.com/docs/app-api/my/pages-rename.md): Changes the name of a copy you took, and nothing else about it. - [Delete a page you own](https://grid82.com/docs/app-api/my/pages-delete.md): Only your own copies. - [Create a page of your own](https://grid82.com/docs/app-api/my/pages-create.md): A new page that is yours alone, empty until you save code to it. - [Read a page's code](https://grid82.com/docs/app-api/my/pages-code-get.md): The current version of a page you can open, or an earlier one by number. - [Save a new version of your page's code](https://grid82.com/docs/app-api/my/pages-code-set.md): Only a page you own. - [The history of a page you can open](https://grid82.com/docs/app-api/my/pages-versions.md): Every saved version, newest first: who saved it, when, the note they left, whether it builds, and which one users are looking at. - [Publish a version of your page](https://grid82.com/docs/app-api/my/pages-publish.md): Point the page to an already-built version: the latest by default, or `version` to select an earlier one. - [Which apps you are in](https://grid82.com/docs/app-api/my/apps.md): List every app in this organisation you can access and your roles in each. - [List your workflows](https://grid82.com/docs/app-api/my/workflows-list.md): Every workflow here (your own workflows in this app, which act as you): name, status, trigger, the version that is live and the last run. - [Create a workflow of your own](https://grid82.com/docs/app-api/my/workflows-create.md): Saves version 1 of a new workflow from its source. - [Read a workflow](https://grid82.com/docs/app-api/my/workflows-get.md): The workflow with one version in full (the latest unless `version` names another): its source, the compiler's verdict, the graph, the notes, and the list of every version. - [Rename a workflow](https://grid82.com/docs/app-api/my/workflows-rename.md): Changes the name people see. - [Delete a workflow](https://grid82.com/docs/app-api/my/workflows-delete.md): The workflow, its versions and its run history. - [Save a new version of a workflow](https://grid82.com/docs/app-api/my/workflows-code-set.md): Never overwrites: every save is a version, and what runs does not change until a person activates one. - [Check a workflow's code without saving it](https://grid82.com/docs/app-api/my/workflows-check.md): Compiles the source exactly as a save would and answers with the same verdict, but saves nothing: no version, no bundle, no history. - [Test a version without changing anything](https://grid82.com/docs/app-api/my/workflows-test.md): Runs a version now (the latest unless `version` says otherwise) against the real records: reads are real; record writes, POSTs and approvals are captured instead of done; waits are skipped. - [Activate a version](https://grid82.com/docs/app-api/my/workflows-activate.md): Makes a version the one that runs (the latest unless `version` names another): its trigger is armed, and new runs use it. - [Pause a workflow](https://grid82.com/docs/app-api/my/workflows-pause.md): Nothing new starts until a version is activated again. - [Run a workflow now](https://grid82.com/docs/app-api/my/workflows-run.md): Starts a real run of the active version, as if its trigger fired. - [A workflow's runs, newest first](https://grid82.com/docs/app-api/my/workflows-runs-list.md): Status, version, when it started and ended, how many records it changed, and the error of a run that failed. - [Read one run, step by step](https://grid82.com/docs/app-api/my/workflows-runs-get.md): Every step of the run in order with its status, its result or its error. - [Stop a run](https://grid82.com/docs/app-api/my/workflows-runs-cancel.md): The run stops where it is. - [Retry a run](https://grid82.com/docs/app-api/my/workflows-runs-retry.md): Only a run that failed or was stopped. - [Who this token acts as](https://grid82.com/docs/app-api/me/get.md): Get the user, their roles, and how the request arrived. - [Your keys and connected agents in this app](https://grid82.com/docs/app-api/me/keys-list.md): Every credential acting as you here: the keys you made and the AI clients you connected. - [Create a personal API key for this app](https://grid82.com/docs/app-api/me/keys-create.md): Mint a key that acts as you in this app, with no more permissions than you have. - [Revoke one of your credentials](https://grid82.com/docs/app-api/me/keys-revoke.md): Stops a key or a connected agent working, immediately. - [Decisions waiting for you](https://grid82.com/docs/app-api/approvals/list.md): Approvals workflows asked of one of your roles in this app, oldest first, with exactly what the workflow chose to show. - [Approve or reject](https://grid82.com/docs/app-api/approvals/decide.md): Your decision wakes the workflow that asked. ## Builder API - [Who is signed in](https://grid82.com/docs/builder-api/session/get.md): Identify the acting builder, how it arrived (browser session, key, or connected agent), and its scopes. - [The organisations you build for](https://grid82.com/docs/builder-api/orgs/list.md): Every organisation you are a builder of. - [Start another organisation](https://grid82.com/docs/builder-api/orgs/create.md): Create a separate organisation for another company, with its own plan, invoice, suites, builders, and billing. - [Read an organisation](https://grid82.com/docs/builder-api/orgs/get.md): Its name, its plan, when it was created, and the models its builders' own assistant offers in the Studio. - [Change an organisation](https://grid82.com/docs/builder-api/orgs/update.md): Set your team's Studio name, shown at the top of the Studio without changing any suite login page, and the models your assistant offers in the Studio. - [Delete an organisation](https://grid82.com/docs/builder-api/orgs/delete.md): Delete the organisation; admins only. - [Leave an organisation](https://grid82.com/docs/builder-api/orgs/leave.md): Leave the organisation and lose every suite under it; nothing in the organisation is deleted. - [Close your account](https://grid82.com/docs/builder-api/account/delete.md): Delete your account and sign-in; delete organisations where you are the only builder, including their suites and apps, and leave organisations with another admin. - [The builders of an organisation](https://grid82.com/docs/builder-api/builders/list.md): List builders who can open this Studio, their roles, and the suites each may work on. - [Change what a builder is, or which suites they may work on](https://grid82.com/docs/builder-api/builders/update.md): Restrict updates to admins. - [The organisation's builder invite link](https://grid82.com/docs/builder-api/builders/invite-link-get.md): Admins only. - [Turn the builder invite link on, renew it, or turn it off](https://grid82.com/docs/builder-api/builders/invite-link-set.md): Admins only. - [Plan, usage and limits](https://grid82.com/docs/builder-api/billing/get.md): Retrieve the organisation's plan, usage, and allowed features. - [Start paying for a plan](https://grid82.com/docs/builder-api/billing/checkout.md): Create a Stripe Checkout address for an organisation with no paid subscription, where a person enters a card and the plan applies after completion; nothing is charged until then. - [What changing plan would do, and cost today](https://grid82.com/docs/builder-api/billing/preview.md): Admins only. - [Change plan](https://grid82.com/docs/builder-api/billing/change.md): Admins only. - [Cancel the subscription, or a scheduled change](https://grid82.com/docs/builder-api/billing/cancel.md): Admins only. - [Keep the plan after cancelling it](https://grid82.com/docs/builder-api/billing/resume.md): Admins only. - [Open Stripe's billing portal](https://grid82.com/docs/builder-api/billing/portal.md): Return a short-lived Stripe address for a person to update the card, billing address, and tax ID and download invoices; admins only. - [What is happening across an organisation](https://grid82.com/docs/builder-api/analytics/get.md): Retrieve activity and cost for a window, filterable to one suite or one app. - [The suites of an organisation](https://grid82.com/docs/builder-api/suites/list.md): Each suite is one user directory and one login page, holding one or more apps. - [Create a suite](https://grid82.com/docs/builder-api/suites/create.md): Create an empty directory and login page; nobody is added, and creation grants no access to apps inside. - [Read a suite](https://grid82.com/docs/builder-api/suites/get.md): The suite's name, branding and login switches: which providers its users may sign in with, and whether a stranger may sign themselves up. - [Change a suite](https://grid82.com/docs/builder-api/suites/update.md): Renames a suite, changes its subdomain, sets its login page's colour and logo, or flips its providers. - [Delete a suite](https://grid82.com/docs/builder-api/suites/delete.md): Delete the suite, its apps, directory, and addresses together. - [List your apps](https://grid82.com/docs/builder-api/apps/list.md): Every app you build, newest first, across every organisation and suite. - [Create an app](https://grid82.com/docs/builder-api/apps/create.md): Create an app at the suite's address followed by its slug. - [Read an app definition](https://grid82.com/docs/builder-api/apps/get.md): The whole definition: tables, views, rules, pages, members, theme, surfaces. - [Rename an app, change its path, or its icon, theme and surfaces](https://grid82.com/docs/builder-api/apps/update.md): Update the app's name, Studio icon (a name from the table icon library, or `null` for the default), appearance (accent, radius, font, density), `slug`, and enabled surfaces: data grid, interface, assistant, API, MCP, and CLI. - [Delete an app](https://grid82.com/docs/builder-api/apps/delete.md): Remove the app from its suite address, then mark it deleted. - [List a suite's deleted apps that can still be restored](https://grid82.com/docs/builder-api/apps/deleted.md): Apps of this suite deleted in the last thirty days and not yet purged, with when each was deleted and after when it is purged. - [Restore a deleted app](https://grid82.com/docs/builder-api/apps/restore.md): Brings back an app deleted in the last thirty days, at its own path, with everything in it. - [Read the app's definition log](https://grid82.com/docs/builder-api/apps/log.md): Who changed the schema, rules, members, automations, pages and views, newest first; no row data. - [Add a table](https://grid82.com/docs/builder-api/tables/create.md): Add a table. - [Rename a table, change its Studio icon or primary field](https://grid82.com/docs/builder-api/tables/update.md): The id never changes: it is the column name and what every rule and page points at. - [Delete a table and its rows](https://grid82.com/docs/builder-api/tables/delete.md): Drop the table and all its rows; remove links to it from other tables and references to it in rules. - [Every field type, its settings and its limits](https://grid82.com/docs/builder-api/fields/types.md): List field types, storage, writable and systemWritten flags, setting names, `configSchema`, and limits. - [Every function a formula may call](https://grid82.com/docs/builder-api/fields/functions.md): List each function's name, group, purpose, example, return value, and argument count. - [Add a field](https://grid82.com/docs/builder-api/fields/create.md): Add a field. - [Change a field's name, type, width or options](https://grid82.com/docs/builder-api/fields/update.md): Update a field; its `id` is its column and never changes. - [Delete a field](https://grid82.com/docs/builder-api/fields/delete.md): Drop a field and its values after sending its current name as `confirm`. - [What a schema change would break](https://grid82.com/docs/builder-api/schema/impact.md): List permission rules, saved views, pages, and other fields that read the fields or tables you propose to remove. - [List a table's records, as the builder](https://grid82.com/docs/builder-api/data/records-list.md): Every row the table holds, paginated with an opaque cursor. - [Create records, as the builder](https://grid82.com/docs/builder-api/data/records-create.md): Creates one to 500 records in one call, all or nothing: one refused row saves none. - [Count a table's records, as the builder](https://grid82.com/docs/builder-api/data/records-count.md): How many rows match, for the same view, filter and search a list would use. - [Total a column, as the builder](https://grid82.com/docs/builder-api/data/records-summarise.md): Reductions over the rows a list would return. - [Count a table's records per value, as the builder](https://grid82.com/docs/builder-api/data/records-groups.md): How many rows sit under each value of one column, ordered the way that column sorts. - [Read a window of a table's records by position, as the builder](https://grid82.com/docs/builder-api/data/records-window.md): Rows `offset` to `offset + limit` of the set a list would return, in the same order, with the size of the whole set. - [Read one record, as the builder](https://grid82.com/docs/builder-api/data/records-get.md): The whole row, every field. - [Update a record, as the builder](https://grid82.com/docs/builder-api/data/records-update.md): A partial update: only the fields sent are changed. - [Delete a record, as the builder](https://grid82.com/docs/builder-api/data/records-delete.md): Delete the row, its links, and its comments; the op log retains all three, so `changesets.revert` restores the row with the same id and number, links to records that still exist, and comments. - [Upload a file for an attachment field, as the builder](https://grid82.com/docs/builder-api/data/files-upload.md): The builder plane's half of `files.upload`. - [Duplicate a record, as the builder](https://grid82.com/docs/builder-api/data/records-duplicate.md): A new record with the same values, inserted after the original. - [Delete several records, as the builder](https://grid82.com/docs/builder-api/data/records-delete-many.md): Delete up to 500 records per request. - [A record's history, as the builder](https://grid82.com/docs/builder-api/data/records-history.md): Every change to the record, one entry per field that moved, newest first. - [A record's comments, as the builder](https://grid82.com/docs/builder-api/data/comments-list.md): The notes users have left on this record, oldest first. - [Comment on a record, as the builder](https://grid82.com/docs/builder-api/data/comments-create.md): Adds a comment under this builder's own identity. - [Who may be named on this record](https://grid82.com/docs/builder-api/data/comments-mentionable.md): The app users who can currently see this record, the only users an @ may name. - [Edit your own comment, as the builder](https://grid82.com/docs/builder-api/data/comments-update.md): Only the author may edit a comment, and the builder is the author of the ones they wrote. - [Delete your own comment, as the builder](https://grid82.com/docs/builder-api/data/comments-delete.md): Removes a comment this builder wrote. - [Read with SQL, as the builder](https://grid82.com/docs/builder-api/data/sql-query.md): One SELECT over one table of the app, every row. - [Change many rows with SQL, as the builder](https://grid82.com/docs/builder-api/data/sql-execute.md): One UPDATE or DELETE; each row is written through the ordinary path, and the statement is one changeset (changesetId), undone by one revert. - [Turn a sentence into a filter, as the builder](https://grid82.com/docs/builder-api/data/filters-suggest.md): Generate a complete filter to apply from the table's fields, example values, and current filter, or return a plain-language refusal. - [Your saved views of a table, as the builder](https://grid82.com/docs/builder-api/data/views-list.md): List the views you saved for this table, in your order. - [Save a view of a table, as the builder](https://grid82.com/docs/builder-api/data/views-create.md): A view visible to you alone. - [Read one of your saved views, as the builder](https://grid82.com/docs/builder-api/data/views-get.md): One of your own views. - [Change one of your saved views, as the builder](https://grid82.com/docs/builder-api/data/views-update.md): Only a view that is yours. - [Delete one of your saved views, as the builder](https://grid82.com/docs/builder-api/data/views-delete.md): Only a view that is yours. - [List the user roles](https://grid82.com/docs/builder-api/roles/list.md): Start here to inspect permissions. - [Add a role](https://grid82.com/docs/builder-api/roles/create.md): Add a role, with its permissions in the same call. - [Read one role's permissions](https://grid82.com/docs/builder-api/roles/get.md): Retrieve one role's table-by-table permissions: rows it can see, fields it can read, fields it can change, and rows on which it can add, edit, or delete. - [Rename or describe a role](https://grid82.com/docs/builder-api/roles/update.md): Change a role's name, description, or what its members may do with pages (`interface`) and workflows (`automations`). - [Remove a role](https://grid82.com/docs/builder-api/roles/delete.md): Remove a role and its permissions. - [Replace one role's permissions](https://grid82.com/docs/builder-api/roles/set-permissions.md): Set permissions for this role only; other roles remain untouched, and permissions never cross between roles or require ordering. - [Read the whole permission document](https://grid82.com/docs/builder-api/rules/get.md): Return every role and its permissions in one object. - [Replace the whole permission document](https://grid82.com/docs/builder-api/rules/set.md): Replace every role and permission at once. - [Ask what someone would see](https://grid82.com/docs/builder-api/rules/simulate.md): Preview the rows and fields a set of roles would see on a table, without granting access; show the result for each role to identify which role grants access. - [List an app's pages](https://grid82.com/docs/builder-api/pages/list.md): Every page of the app: the builder's, with their mode and the roles they are shown to, and the pages app users built of their own. - [Add a page](https://grid82.com/docs/builder-api/pages/create.md): Create a page definition with its name, mode, roles that can see it, and optional associated table. - [Rename a page, change its mode, or change who sees it](https://grid82.com/docs/builder-api/pages/update.md): Any of name, mode, tableId and visibleTo. - [Delete a page](https://grid82.com/docs/builder-api/pages/delete.md): The page, every version of its code, and every copy an app user took of it. - [Read a page's code](https://grid82.com/docs/builder-api/pages/code-get.md): The current version unless `version` names an earlier one. - [Save a new version of a page's code](https://grid82.com/docs/builder-api/pages/code-set.md): Save a new version without overwriting; the page points to the latest version. - [A page's version history, newest first](https://grid82.com/docs/builder-api/pages/versions.md): Who saved each version and when, with the note they left. - [Record what a version did when it ran](https://grid82.com/docs/builder-api/pages/report.md): Written by the preview, never by a page and never by an agent: which tables the page asked for, how many rows came back, what was refused, and what it drew. - [Publish a version of a page](https://grid82.com/docs/builder-api/pages/publish.md): Point the page to a built version: the latest by default, or an earlier one via `version`. - [What was changed, and what can be undone](https://grid82.com/docs/builder-api/changesets/list.md): List recent write bundles, newest first. - [Undo a changeset](https://grid82.com/docs/builder-api/changesets/revert.md): Replay a bundle's operations in reverse through the normal permission compiler; undoing a delete recreates the row only if you could create it. - [What was deleted, and can still be put back](https://grid82.com/docs/builder-api/trash/list.md): List deleted tables and fields, plus columns converted by type changes; show how many records' values each holds and when it expires (thirty days after the change). - [Put a deleted table or field back](https://grid82.com/docs/builder-api/trash/restore.md): Restore tables with rows and links, fields with values, converted columns with previous values, and their grants, using the same IDs. - [A suite's directory](https://grid82.com/docs/builder-api/users/list.md): Check existing suite accounts before inviting a user again. - [Add someone to a suite's directory](https://grid82.com/docs/builder-api/users/invite.md): Create a directory entry; this grants no access. - [Rename or suspend someone](https://grid82.com/docs/builder-api/users/update.md): Suspending keeps the user in the directory and in their apps, but refuses their next sign-in and every request from their credentials. - [Remove someone from a suite](https://grid82.com/docs/builder-api/users/remove.md): Remove users from the directory and every app in this suite. - [Get someone's personal set-password link](https://grid82.com/docs/builder-api/users/password-link.md): Create a password-setting link for this person only, at the suite's address. - [List members](https://grid82.com/docs/builder-api/members/list.md): Everyone invited into this app and which roles they are in. - [Put someone in an app](https://grid82.com/docs/builder-api/members/add.md): Grant app access in one or more roles. - [Change someone's roles in an app](https://grid82.com/docs/builder-api/members/update.md): Replace this user's entire role list in this app; recompute access as the union of the new roles. - [Remove someone from an app](https://grid82.com/docs/builder-api/members/remove.md): Remove access to this app only; keep the member in the directory and all other apps, and retain records they created because those belong to the app. - [List invite links](https://grid82.com/docs/builder-api/invites/list.md): List every invite link across the suite's apps, including its app, granted roles, use count, and whether it is still live. - [Create an invite link](https://grid82.com/docs/builder-api/invites/create.md): Create a single-use link that adds anyone who opens it to one app in this suite with exactly these roles, after signing in at the suite's address. - [Revoke an invite link](https://grid82.com/docs/builder-api/invites/revoke.md): Stops a link working from now on. - [The hostnames a suite answers on](https://grid82.com/docs/builder-api/domains/list.md): Every hostname attached to this suite (active, pending its DNS proof, provisioning its certificate, or released), with when it was verified. - [Attach a hostname to a suite](https://grid82.com/docs/builder-api/domains/attach.md): Route a hostname to this suite so people can sign in there and each app responds under its slug, such as `/crm` or `/hr`; one address serves every app. - [Check a hostname's DNS and certificate, and activate it](https://grid82.com/docs/builder-api/domains/verify.md): Check a hostname's status and advance it one step. - [Detach a hostname](https://grid82.com/docs/builder-api/domains/detach.md): The hostname stops routing to this suite at once, for every app under it; people signed in there are signed out by the next request. - [Your builder keys and connected agents](https://grid82.com/docs/builder-api/keys/list.md): Every credential acting as you on the builder plane: keys you made and AI clients you connected to the Studio. - [Create a builder API key](https://grid82.com/docs/builder-api/keys/create.md): Mint a key acting as you, the builder, in one named organisation, narrowed to chosen scopes. - [Revoke one of your builder credentials](https://grid82.com/docs/builder-api/keys/revoke.md): Stops a key or a connected agent working, immediately. - [List the skills](https://grid82.com/docs/builder-api/skills/list.md): List skill IDs and one-line summaries. - [Read one skill](https://grid82.com/docs/builder-api/skills/get.md): Retrieve the full Markdown text of one skill, explaining how its tools fit together, common mistakes, and actions to never take. - [The models an assistant menu may offer](https://grid82.com/docs/builder-api/models/list.md): The platform's model catalogue: each model's id, name, what it is good at and how fast, clever and expensive it is. - [This organisation's referral code and what it has earned](https://grid82.com/docs/builder-api/referrals/get.md): Retrieve the sign-up link code, the referrals it brought (status and date, never who), and earned credits: a bonus for the referred organisation when it signs up, then for you when it first uses Grid82 and first subscribes. - [List an app's workflows](https://grid82.com/docs/builder-api/workflows/list.md): Every workflow here (the app's workflows, which act as themselves, with the Studio's reach over the apps they list): name, status, trigger, the version that is live and the last run. - [Create a workflow](https://grid82.com/docs/builder-api/workflows/create.md): Saves version 1 of a new workflow from its source. - [Read a workflow](https://grid82.com/docs/builder-api/workflows/get.md): The workflow with one version in full (the latest unless `version` names another): its source, the compiler's verdict, the graph, the notes, and the list of every version. - [Rename a workflow](https://grid82.com/docs/builder-api/workflows/rename.md): Changes the name people see. - [Delete a workflow](https://grid82.com/docs/builder-api/workflows/delete.md): The workflow, its versions and its run history. - [Save a new version of a workflow](https://grid82.com/docs/builder-api/workflows/code-set.md): Never overwrites: every save is a version, and what runs does not change until a person activates one. - [Check a workflow's code without saving it](https://grid82.com/docs/builder-api/workflows/check.md): Compiles the source exactly as a save would and answers with the same verdict, but saves nothing: no version, no bundle, no history. - [Test a version without changing anything](https://grid82.com/docs/builder-api/workflows/test.md): Runs a version now (the latest unless `version` says otherwise) against the real records: reads are real; record writes, POSTs and approvals are captured instead of done; waits are skipped. - [Activate a version](https://grid82.com/docs/builder-api/workflows/activate.md): Makes a version the one that runs (the latest unless `version` names another): its trigger is armed, and new runs use it. - [Pause a workflow](https://grid82.com/docs/builder-api/workflows/pause.md): Nothing new starts until a version is activated again. - [Run a workflow now](https://grid82.com/docs/builder-api/workflows/run.md): Starts a real run of the active version, as if its trigger fired. - [A workflow's runs, newest first](https://grid82.com/docs/builder-api/workflows/runs-list.md): Status, version, when it started and ended, how many records it changed, and the error of a run that failed. - [Read one run, step by step](https://grid82.com/docs/builder-api/workflows/runs-get.md): Every step of the run in order with its status, its result or its error. - [Stop a run](https://grid82.com/docs/builder-api/workflows/runs-cancel.md): The run stops where it is. - [Retry a run](https://grid82.com/docs/builder-api/workflows/runs-retry.md): Only a run that failed or was stopped. - [Get a workflow's webhook address and secret](https://grid82.com/docs/builder-api/workflows/webhook-get.md): For a workflow of the app whose trigger is `webhook()`. - [Replace a workflow's webhook secret](https://grid82.com/docs/builder-api/workflows/webhook-rotate.md): The old secret stops working at once. - [List a suite's secrets, by name](https://grid82.com/docs/builder-api/secrets/list.md): Names and dates only. - [Set a secret](https://grid82.com/docs/builder-api/secrets/set.md): Stores a value workflows of this suite can use by name (`"secret:NAME"`) without ever seeing it: a webhook address, an API key. - [Delete a secret](https://grid82.com/docs/builder-api/secrets/delete.md): Workflows that use it fail on that step with a sentence naming it. ## CLI - [The Grid82 CLI](https://grid82.com/docs/cli/overview.md): A command for every API operation, JSON output for scripts, exit codes by kind of failure. On npm as grid82. ## Changelog - [Changelog](https://grid82.com/docs/changelog.md): What changed for developers building on Grid82, newest first. ## Optional - [Full documentation in one file](https://grid82.com/docs/llms-full.txt): every page above, concatenated. Fetch this instead of crawling if you would rather read once. - [Builder API (OpenAPI)](https://grid82.com/docs/openapi/builder.json): the Studio's Builder API, the same for every builder. The live copy is https://studio.grid82.app/v1/openapi.json. - [App API, generic contract (OpenAPI)](https://grid82.com/docs/openapi/app.json): the shape every app's API shares, with no table or field named. A caller's real document is https://{suite}.grid82.app/{app}/v1/openapi.json, masked to what that caller can read. - [MCP server](https://grid82.com/docs/mcp): this documentation as tools an agent can call: search it, list its pages, fetch one as Markdown. Add the URL as a remote MCP server. - [HTTP API](https://grid82.com/docs/api/docs): the same tools as plain GET requests, for scripts. No authentication; see https://grid82.com/docs/api/docs/openapi.json for the description. - [Sitemap](https://grid82.com/docs/sitemap.xml): the same pages as HTML, with last-modified dates. - [Recently updated](https://grid82.com/docs/updates.xml): an Atom feed of the pages that changed most recently, newest first. - [Documentation home](https://grid82.com/docs): the browsable site, with search and navigation.