Skip to main content

Webhooks

Create Webhook

Register a new webhook to receive event notifications.

Create a webhook subscription for a team. Figma will send HTTP POST requests to your endpoint when events occur.

POST https://api.figma.com/v2/webhooks

Authentication

Requires a valid access token with webhooks:write scope. Pass via X-Figma-Token header (personal access token) or Authorization: Bearer header (OAuth).

Setup Workflow

1

Prepare your endpoint

Set up an HTTPS endpoint on your server that can receive POST requests. The endpoint must respond with a 200 status code within 10 seconds.

2

Generate a passcode

Create a secret passcode string. Figma includes this in webhook payloads so you can verify that incoming requests are authentic.

3

Choose your event type

Decide which event to subscribe to. Available event types are listed in the request body parameters below.

4

Register the webhook

Send the POST request with your configuration. Figma will return the webhook details with an ACTIVE status if registration succeeds.

Request Body

FieldTypeRequiredDescription
event_typestringYesThe event to subscribe to
team_idstringYesThe team ID to watch
endpointstringYesHTTPS URL to receive webhooks
passcodestringYesSecret passcode for verification
descriptionstringNoHuman-readable description

Example Request

curl -X POST "https://api.figma.com/v2/webhooks" \
  -H "X-Figma-Token: YOUR_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "event_type": "FILE_UPDATE",
    "team_id": "123456",
    "endpoint": "https://your-server.com/webhooks/figma",
    "passcode": "your-secret-passcode",
    "description": "File update notifications"
  }'

Response

{
  "id": "wh_123456",
  "event_type": "FILE_UPDATE",
  "team_id": "123456",
  "endpoint": "https://your-server.com/webhooks/figma",
  "status": "ACTIVE",
  "description": "File update notifications",
  "created_at": "2024-01-15T10:30:00Z"
}

Response Fields

FieldTypeDescription
idstringUnique webhook identifier
event_typestringThe subscribed event type
team_idstringThe team being watched
endpointstringThe registered endpoint URL
statusstringWebhook status: ACTIVE or PAUSED
descriptionstringThe description you provided
created_atstringISO 8601 timestamp of creation

Your endpoint must be HTTPS and respond with a 200 status within 10 seconds. Figma will disable webhooks that consistently fail to respond.

Use the passcode field in incoming webhook payloads to verify that requests are genuinely from Figma. Compare the passcode in each payload against the one you registered.