Grist orgs API
Team sites and personal spaces are called 'orgs' in the API.
Team sites and personal spaces are called 'orgs' in the API.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/grist-orgs-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
description: 'An API for manipulating Grist sites, workspaces, and documents.
# Authentication
<SecurityDefinitions />
'
version: 1.0.1
title: Grist attachments Orgs API
servers:
- url: https://{gristhost}/api
variables:
subdomain:
description: The team name, or `docs` for personal areas
default: docs
security:
- ApiKey: []
tags:
- name: orgs
description: Team sites and personal spaces are called 'orgs' in the API.
paths:
/orgs:
get:
operationId: listOrgs
tags:
- orgs
summary: List the orgs you have access to
description: This enumerates all the team sites or personal areas available.
responses:
200:
description: An array of organizations
content:
application/json:
schema:
$ref: '#/components/schemas/Orgs'
/orgs/{orgId}:
get:
operationId: describeOrg
tags:
- orgs
summary: Describe an org
parameters:
- $ref: '#/components/parameters/orgIdPathParam'
responses:
200:
description: An organization
content:
application/json:
schema:
$ref: '#/components/schemas/Org'
patch:
operationId: modifyOrg
tags:
- orgs
summary: Modify an org
parameters:
- $ref: '#/components/parameters/orgIdPathParam'
requestBody:
description: the changes to make
content:
application/json:
schema:
$ref: '#/components/schemas/OrgParameters'
required: true
responses:
200:
description: Success
/orgs/{orgId}/{name}:
delete:
operationId: deleteOrg
tags:
- orgs
summary: Delete an org
parameters:
- $ref: '#/components/parameters/orgIdPathParam'
- in: path
name: name
schema:
type: string
description: The organization name
required: true
responses:
200:
description: Success
403:
description: Access denied
404:
description: Not found
/orgs/{orgId}/access:
get:
operationId: listOrgAccess
tags:
- orgs
summary: List users with access to org
parameters:
- $ref: '#/components/parameters/orgIdPathParam'
responses:
200:
description: Users with access to org
content:
application/json:
schema:
$ref: '#/components/schemas/OrgAccessRead'
patch:
operationId: modifyOrgAccess
tags:
- orgs
summary: Change who has access to org
parameters:
- $ref: '#/components/parameters/orgIdPathParam'
requestBody:
description: the changes to make
content:
application/json:
schema:
type: object
required:
- delta
properties:
delta:
$ref: '#/components/schemas/OrgAccessWrite'
required: true
responses:
200:
description: Success
/orgs/{orgId}/usage:
get:
operationId: getOrgUsage
tags:
- orgs
summary: Get organization usage summary
description: 'Get usage statistics for all non-deleted documents in the organization.
Only accessible to organization owners.
'
parameters:
- $ref: '#/components/parameters/orgIdPathParam'
responses:
200:
description: Usage summary
content:
application/json:
schema:
type: object
properties:
countsByDataLimitStatus:
type: object
description: Count of documents grouped by data limit status
properties:
approachingLimit:
type: integer
gracePeriod:
type: integer
deleteOnly:
type: integer
attachments:
type: object
required:
- totalBytes
properties:
totalBytes:
type: integer
description: Total attachment storage used in bytes
limitExceeded:
type: boolean
description: Whether the attachment limit has been exceeded (only present when limit is exceeded)
components:
parameters:
orgIdPathParam:
in: path
name: orgId
schema:
oneOf:
- type: integer
- type: string
description: This can be an integer id, or a string subdomain (e.g. `gristlabs`), or `current` if the org is implied by the domain in the url
required: true
schemas:
OrgAccessWrite:
type: object
required:
- users
properties:
users:
type: object
additionalProperties:
type: string
enum:
- owners
- editors
- viewers
- members
- null
example:
foo@getgrist.com: owners
bar@getgrist.com: null
User:
type: object
required:
- id
- name
- picture
properties:
id:
type: integer
format: int64
example: 101
name:
type: string
example: Helga Hufflepuff
picture:
type:
- string
- 'null'
example: null
OrgParameters:
type: object
properties:
name:
type: string
example: ACME Unlimited
Org:
type: object
required:
- id
- name
- domain
- owner
- createdAt
- updatedAt
- access
properties:
id:
type: integer
format: int64
example: 42
name:
type: string
example: Grist Labs
domain:
type:
- string
- 'null'
example: gristlabs
owner:
type:
- object
- 'null'
$ref: '#/components/schemas/User'
access:
type: string
$ref: '#/components/schemas/Access'
createdAt:
type: string
example: '2019-09-13T15:42:35.000Z'
updatedAt:
type: string
example: '2019-09-13T15:42:35.000Z'
OrgAccessRead:
type: object
required:
- users
properties:
users:
type: array
items:
type: object
required:
- id
- name
properties:
id:
type: integer
example: 1
name:
type: string
example: Andrea
email:
type: string
example: andrea@getgrist.com
access:
$ref: '#/components/schemas/Access'
Orgs:
type: array
items:
$ref: '#/components/schemas/Org'
Access:
type: string
enum:
- owners
- editors
- viewers
securitySchemes:
ApiKey:
type: http
scheme: bearer
bearerFormat: 'Authorization: Bearer XXXXXXXXXXX'
description: Access to the Grist API is controlled by an Authorization header, which should contain the word 'Bearer', followed by a space, followed by your API key.