Figma · AsyncAPI Specification

Figma Webhooks

Version 2.0.0

Figma Webhooks allow applications to receive real-time notifications when events occur in Figma files and projects. Webhooks are configured at the team level and send HTTP POST requests with JSON payloads to a specified endpoint URL. Supported events include file updates, comments, library publish changes, and version history updates. Webhooks use a passcode for payload verification.

View Spec View on GitHub CollaborationDesignGraphicsInterfacesPrototypesPrototypingUI/UXAsyncAPIEventsWebhooks

Channels

/webhook
publish receiveFigmaWebhookEvent
Receive a Figma webhook event
The endpoint that receives all Figma webhook event deliveries. The specific event type is identified by the event_type field in the payload. Figma webhooks are team-scoped and can subscribe to specific event types.

Messages

ping
Ping Event
Test event sent when a webhook is first created to verify the endpoint is reachable.
file_update
File Update Event
Triggered when a file in the team is saved or modified.
file_version_update
File Version Update Event
Triggered when a named version is created in the file's version history.
file_delete
File Delete Event
Triggered when a file in the team is deleted.
file_comment
File Comment Event
Triggered when a new comment is posted on a file.
library_publish
Library Publish Event
Triggered when a library file publishes new components or styles.

Servers

https
webhook-receiver {webhookUrl}
Your webhook receiver endpoint. Figma sends POST requests to this URL when subscribed events occur on the specified team. The endpoint must respond with a 200-level status code within 10 seconds.

AsyncAPI Specification

Raw ↑
asyncapi: 2.6.0
info:
  title: Figma Webhooks
  description: >-
    Figma Webhooks allow applications to receive real-time notifications when
    events occur in Figma files and projects. Webhooks are configured at the
    team level and send HTTP POST requests with JSON payloads to a specified
    endpoint URL. Supported events include file updates, comments, library
    publish changes, and version history updates. Webhooks use a passcode
    for payload verification.
  version: '2.0.0'
  contact:
    name: Figma Developer Support
    url: https://www.figma.com/developers
    email: support@figma.com
  license:
    name: Figma Developer Terms
    url: https://www.figma.com/developer-terms/
  externalDocs:
    description: Figma Webhooks Documentation
    url: https://developers.figma.com/docs/rest-api/webhooks/
servers:
  webhook-receiver:
    url: '{webhookUrl}'
    protocol: https
    description: >-
      Your webhook receiver endpoint. Figma sends POST requests to this URL
      when subscribed events occur on the specified team. The endpoint must
      respond with a 200-level status code within 10 seconds.
    variables:
      webhookUrl:
        description: >-
          The URL configured to receive webhook deliveries. This is set when
          creating or updating a webhook via the Figma REST API.
    security:
      - passcodeVerification: []
channels:
  /webhook:
    description: >-
      The endpoint that receives all Figma webhook event deliveries. The
      specific event type is identified by the event_type field in the
      payload. Figma webhooks are team-scoped and can subscribe to specific
      event types.
    publish:
      operationId: receiveFigmaWebhookEvent
      summary: Receive a Figma webhook event
      description: >-
        Figma delivers webhook events as HTTP POST requests with JSON payloads.
        Each delivery includes a passcode field that matches the passcode
        configured when the webhook was created, which can be used to verify
        authenticity. If a webhook endpoint fails to respond with a 2xx status
        code, Figma will retry delivery with exponential backoff.
      bindings:
        http:
          type: request
          method: POST
          headers:
            type: object
            properties:
              Content-Type:
                type: string
                enum:
                  - application/json
                description: The content type of the webhook payload.
      message:
        oneOf:
          - $ref: '#/components/messages/ping'
          - $ref: '#/components/messages/file_update'
          - $ref: '#/components/messages/file_version_update'
          - $ref: '#/components/messages/file_delete'
          - $ref: '#/components/messages/file_comment'
          - $ref: '#/components/messages/library_publish'
components:
  securitySchemes:
    passcodeVerification:
      type: userPassword
      description: >-
        Figma webhook payloads include a passcode field that matches the
        passcode you specified when creating the webhook. Compare this value
        to verify the payload originated from Figma.
  messages:
    ping:
      name: ping
      title: Ping Event
      summary: >-
        Test event sent when a webhook is first created to verify the endpoint
        is reachable.
      description: >-
        The PING event is sent immediately when a new webhook is created via
        the POST /v2/webhooks endpoint. This event confirms that your endpoint
        is reachable and can process Figma webhook payloads. The webhook will
        be set to ACTIVE status if the ping succeeds.
      payload:
        $ref: '#/components/schemas/PingEvent'

    file_update:
      name: file_update
      title: File Update Event
      summary: >-
        Triggered when a file in the team is saved or modified.
      description: >-
        The FILE_UPDATE event fires whenever a Figma file within the subscribed
        team is modified and saved. This includes changes to the document tree,
        styles, components, and other file properties. Multiple rapid saves
        may be batched into a single webhook delivery.
      payload:
        $ref: '#/components/schemas/FileUpdateEvent'

    file_version_update:
      name: file_version_update
      title: File Version Update Event
      summary: >-
        Triggered when a named version is created in the file's version history.
      description: >-
        The FILE_VERSION_UPDATE event fires when a user creates a named version
        in a file's version history. This does not fire for auto-saved versions.
      payload:
        $ref: '#/components/schemas/FileVersionUpdateEvent'

    file_delete:
      name: file_delete
      title: File Delete Event
      summary: >-
        Triggered when a file in the team is deleted.
      description: >-
        The FILE_DELETE event fires when a Figma file within the subscribed
        team is permanently deleted. This event is not triggered when a file
        is moved to trash but only when it is permanently removed.
      payload:
        $ref: '#/components/schemas/FileDeleteEvent'

    file_comment:
      name: file_comment
      title: File Comment Event
      summary: >-
        Triggered when a new comment is posted on a file.
      description: >-
        The FILE_COMMENT event fires when a user posts a new comment on a
        Figma file within the subscribed team. This includes both top-level
        comments and replies. The payload includes the comment text, author,
        and location metadata.
      payload:
        $ref: '#/components/schemas/FileCommentEvent'

    library_publish:
      name: library_publish
      title: Library Publish Event
      summary: >-
        Triggered when a library file publishes new components or styles.
      description: >-
        The LIBRARY_PUBLISH event fires when a library file within the
        subscribed team publishes updates to its components, component sets,
        or styles. The payload includes lists of created, modified, and
        deleted library items.
      payload:
        $ref: '#/components/schemas/LibraryPublishEvent'

  schemas:
    BaseEvent:
      type: object
      description: >-
        Common properties shared by all Figma webhook event payloads.
      required:
        - event_type
        - passcode
        - timestamp
        - webhook_id
      properties:
        event_type:
          type: string
          description: The type of event that triggered this webhook delivery.
          enum:
            - PING
            - FILE_UPDATE
            - FILE_VERSION_UPDATE
            - FILE_DELETE
            - FILE_COMMENT
            - LIBRARY_PUBLISH
        passcode:
          type: string
          description: >-
            The passcode specified when the webhook was created. Use this to
            verify the payload originated from Figma.
        timestamp:
          type: string
          format: date-time
          description: The UTC ISO 8601 time when the event occurred.
        webhook_id:
          type: string
          description: The unique identifier of the webhook that generated this delivery.

    PingEvent:
      allOf:
        - $ref: '#/components/schemas/BaseEvent'
        - type: object
          description: >-
            Sent when a webhook is first created to verify the endpoint is
            reachable. Contains no additional fields beyond the base event.
          properties:
            event_type:
              type: string
              enum:
                - PING

    FileUpdateEvent:
      allOf:
        - $ref: '#/components/schemas/BaseEvent'
        - type: object
          description: >-
            Delivered when a file within the subscribed team is saved.
          required:
            - file_key
            - file_name
            - triggered_by
          properties:
            event_type:
              type: string
              enum:
                - FILE_UPDATE
            file_key:
              type: string
              description: The key of the file that was updated.
            file_name:
              type: string
              description: The name of the file at the time of the event.
            triggered_by:
              $ref: '#/components/schemas/WebhookUser'

    FileVersionUpdateEvent:
      allOf:
        - $ref: '#/components/schemas/BaseEvent'
        - type: object
          description: >-
            Delivered when a named version is created in the version history.
          required:
            - file_key
            - file_name
            - triggered_by
          properties:
            event_type:
              type: string
              enum:
                - FILE_VERSION_UPDATE
            file_key:
              type: string
              description: The key of the file where the version was created.
            file_name:
              type: string
              description: The name of the file.
            version_id:
              type: string
              description: The ID of the newly created version.
            label:
              type: string
              description: The label given to the new version.
            description:
              type: string
              description: The description of the new version.
            triggered_by:
              $ref: '#/components/schemas/WebhookUser'

    FileDeleteEvent:
      allOf:
        - $ref: '#/components/schemas/BaseEvent'
        - type: object
          description: >-
            Delivered when a file within the subscribed team is deleted.
          required:
            - file_key
            - file_name
            - triggered_by
          properties:
            event_type:
              type: string
              enum:
                - FILE_DELETE
            file_key:
              type: string
              description: The key of the file that was deleted.
            file_name:
              type: string
              description: The name of the file at the time of deletion.
            triggered_by:
              $ref: '#/components/schemas/WebhookUser'

    FileCommentEvent:
      allOf:
        - $ref: '#/components/schemas/BaseEvent'
        - type: object
          description: >-
            Delivered when a comment is posted on a file within the subscribed team.
          required:
            - file_key
            - file_name
            - comment
            - triggered_by
          properties:
            event_type:
              type: string
              enum:
                - FILE_COMMENT
            file_key:
              type: string
              description: The key of the file where the comment was posted.
            file_name:
              type: string
              description: The name of the file.
            comment:
              type: array
              description: >-
                An array of comment objects representing the new comment and
                any mentions within the comment.
              items:
                $ref: '#/components/schemas/WebhookComment'
            comment_id:
              type: string
              description: The ID of the comment that was posted.
            parent_id:
              type: string
              description: >-
                The ID of the parent comment if this is a reply, otherwise null.
            triggered_by:
              $ref: '#/components/schemas/WebhookUser'

    LibraryPublishEvent:
      allOf:
        - $ref: '#/components/schemas/BaseEvent'
        - type: object
          description: >-
            Delivered when a library file publishes new or updated components,
            component sets, or styles.
          required:
            - file_key
            - file_name
            - triggered_by
          properties:
            event_type:
              type: string
              enum:
                - LIBRARY_PUBLISH
            file_key:
              type: string
              description: The key of the library file that was published.
            file_name:
              type: string
              description: The name of the library file.
            description:
              type: string
              description: The publish description entered by the user.
            created_components:
              type: array
              description: Components that were newly published.
              items:
                $ref: '#/components/schemas/LibraryItem'
            modified_components:
              type: array
              description: Components that were modified and republished.
              items:
                $ref: '#/components/schemas/LibraryItem'
            deleted_components:
              type: array
              description: Components that were unpublished.
              items:
                $ref: '#/components/schemas/LibraryItem'
            created_styles:
              type: array
              description: Styles that were newly published.
              items:
                $ref: '#/components/schemas/LibraryItem'
            modified_styles:
              type: array
              description: Styles that were modified and republished.
              items:
                $ref: '#/components/schemas/LibraryItem'
            deleted_styles:
              type: array
              description: Styles that were unpublished.
              items:
                $ref: '#/components/schemas/LibraryItem'
            triggered_by:
              $ref: '#/components/schemas/WebhookUser'

    WebhookUser:
      type: object
      description: >-
        A simplified user object included in webhook payloads identifying
        the user who triggered the event.
      required:
        - id
        - handle
      properties:
        id:
          type: string
          description: The unique stable ID of the user.
        handle:
          type: string
          description: The display name of the user.
        img_url:
          type: string
          format: uri
          description: URL to the user's profile image.

    WebhookComment:
      type: object
      description: >-
        A comment segment within a webhook FILE_COMMENT payload. Comment text
        is split into segments to support mentions.
      properties:
        text:
          type: string
          description: The text content of the comment segment.
        mention:
          type: string
          description: >-
            If this segment is a mention, this is the user ID of the mentioned
            user.

    LibraryItem:
      type: object
      description: >-
        A library item (component or style) referenced in a LIBRARY_PUBLISH
        webhook payload.
      required:
        - key
        - name
      properties:
        key:
          type: string
          description: The globally unique key of the library item.
        name:
          type: string
          description: The name of the library item.

Work with this as data

Every AsyncAPI spec here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for asyncapi

4 MCP tools reach this
  • find_asyncapisBrowse and filter every AsyncAPI spec in the catalog.
  • 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.
All 92 tools →

Call it yourself

curl for this page
This AsyncAPI spec
curl "https://apis.io/api/v1/asyncapis/figma-webhooks-asyncapi"
All asyncapi
curl "https://apis.io/api/v1/asyncapis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

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.