Grist webhooks API
Document changes can trigger requests to URLs called webhooks.
Document changes can trigger requests to URLs called webhooks.
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-webhooks-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 Webhooks API
servers:
- url: https://{gristhost}/api
variables:
subdomain:
description: The team name, or `docs` for personal areas
default: docs
security:
- ApiKey: []
tags:
- name: webhooks
description: Document changes can trigger requests to URLs called webhooks.
paths:
/docs/{docId}/webhooks:
get:
operationId: listWebhooks
tags:
- webhooks
summary: Webhooks associated with a document
description: 'Returns all webhooks configured for this document, including their
settings and delivery statistics.
'
parameters:
- $ref: '#/components/parameters/docIdPathParam'
responses:
200:
description: A list of webhooks.
content:
application/json:
schema:
type: object
required:
- webhooks
properties:
webhooks:
$ref: '#/components/schemas/Webhooks'
post:
operationId: createWebhooks
tags:
- webhooks
summary: Create new webhooks for a document
description: 'Creates one or more webhooks that will POST to specified URLs when
data in the document changes. Returns the IDs of the created webhooks.
'
parameters:
- $ref: '#/components/parameters/docIdPathParam'
requestBody:
description: an array of webhook settings
content:
application/json:
schema:
type: object
required:
- webhooks
properties:
webhooks:
type: array
items:
type: object
required:
- fields
properties:
fields:
$ref: '#/components/schemas/WebhookPartialFields'
responses:
200:
description: Success
content:
application/json:
schema:
type: object
required:
- webhooks
properties:
webhooks:
type: array
items:
$ref: '#/components/schemas/WebhookId'
/docs/{docId}/webhooks/{webhookId}:
patch:
operationId: modifyWebhook
tags:
- webhooks
summary: Modify a webhook
description: 'Update the configuration of an existing webhook, such as its URL,
enabled state, or event types.
'
parameters:
- $ref: '#/components/parameters/docIdPathParam'
- in: path
name: webhookId
schema:
type: string
required: true
requestBody:
description: the changes to make
content:
application/json:
schema:
$ref: '#/components/schemas/WebhookPartialFields'
responses:
200:
description: Webhook updated successfully. Returns empty body.
delete:
operationId: deleteWebhook
tags:
- webhooks
summary: Remove a webhook
description: 'Permanently delete a webhook. Any pending deliveries in the queue
for this webhook will also be removed.
'
parameters:
- $ref: '#/components/parameters/docIdPathParam'
- in: path
name: webhookId
schema:
type: string
required: true
responses:
200:
description: Webhook deleted successfully.
content:
application/json:
schema:
type: object
required:
- success
properties:
success:
type: boolean
example: true
/docs/{docId}/webhooks/queue:
delete:
operationId: clearWebhookQueue
tags:
- webhooks
summary: Empty a document's queue of undelivered payloads
description: 'Clear all pending webhook deliveries for this document. Use this
if the queue has built up due to unreachable endpoints.
'
parameters:
- $ref: '#/components/parameters/docIdPathParam'
responses:
200:
description: Queue cleared successfully. Returns empty body.
/docs/{docId}/webhooks/queue/{webhookId}:
delete:
operationId: clearWebhookQueueForWebhook
tags:
- webhooks
summary: Clear queue for a specific webhook
description: 'Clear the queue of pending payloads for a specific webhook.
Only document owners can call this endpoint.
'
parameters:
- $ref: '#/components/parameters/docIdPathParam'
- name: webhookId
in: path
required: true
schema:
type: string
description: ID of the webhook
responses:
200:
description: Queue cleared
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
example: true
components:
schemas:
WebhookId:
type: object
required:
- id
properties:
id:
type: string
description: Webhook identifier
example: xxxxxxx-xxxx-xxxx-xxxxxxxxxxxxxxxx
WebhookUsage:
type:
- object
- 'null'
required:
- numWaiting
- status
properties:
numWaiting:
type: integer
status:
type: string
example: idle
updatedTime:
type:
- number
- 'null'
format: UNIX epoch in milliseconds
example: 1685637500424
lastSuccessTime:
type:
- number
- 'null'
format: UNIX epoch in milliseconds
example: 1685637500424
lastFailureTime:
type:
- number
- 'null'
format: UNIX epoch in milliseconds
example: 1685637500424
lastErrorMessage:
type:
- string
- 'null'
example: null
lastHttpStatus:
type:
- number
- 'null'
example: 200
lastEventBatch:
$ref: '#/components/schemas/WebhookBatchStatus'
Webhooks:
type: array
items:
$ref: '#/components/schemas/Webhook'
WebhookRequiredFields:
type: object
required:
- name
- memo
- url
- enabled
- unsubscribeKey
- eventTypes
- isReadyColumn
- tableId
properties:
unsubscribeKey:
type: string
WebhookBatchStatus:
type:
- object
- 'null'
required:
- size
- attempts
- status
properties:
size:
type: number
example: 1
attempts:
type: number
example: 1
errorMessage:
type:
- string
- 'null'
example: null
httpStatus:
type: number
example: 200
status:
type: string
example: success
Webhook:
type: object
properties:
id:
type: string
format: uuid
example: xxxxxxx-xxxx-xxxx-xxxxxxxxxxxxxxxx
fields:
$ref: '#/components/schemas/WebhookFields'
usage:
$ref: '#/components/schemas/WebhookUsage'
WebhookFields:
allOf:
- $ref: '#/components/schemas/WebhookPartialFields'
- $ref: '#/components/schemas/WebhookRequiredFields'
WebhookPartialFields:
type: object
properties:
name:
type:
- string
- 'null'
example: new-project-email
memo:
type:
- string
- 'null'
example: Send an email when a project is added
url:
type: string
format: uri
example: https://example.com/webhook/123
enabled:
type: boolean
eventTypes:
type: array
items:
type: string
example:
- add
- update
isReadyColumn:
type:
- string
- 'null'
example: null
tableId:
type: string
example: Projects
parameters:
docIdPathParam:
in: path
name: docId
schema:
type: string
description: A string id (UUID)
required: true
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.