> ## Documentation Index
> Fetch the complete documentation index at: https://docs.modulex.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Figma Integration for AI Agents & Workflows

> Design collaboration platform for creating, sharing, and commenting on design files

{/* Self-hosted logo — build-time vendored from modulex.json / Iconify (see scripts/lib/logo.js). */}

<img src="https://mintcdn.com/modulexaillc/zKB2qsP6Q61VNLfB/logos/figma.svg?fit=max&auto=format&n=zKB2qsP6Q61VNLfB&q=85&s=6bc03a6d1aa007e670533783adc5ca09" alt="Figma logo" width="72" height="72" data-path="logos/figma.svg" />

## Overview

Add **Figma** to any ModuleX agent or workflow. Design collaboration platform for creating, sharing, and commenting on design files via the Figma REST API (`api.figma.com`).

<Info>
  **Categories**: Productivity & Collaboration · Design · **Auth**: OAuth2 · **Actions**: 3
</Info>

## Authentication

### OAuth2 Authentication

Connect using Figma OAuth (recommended)

#### Required Credentials

| Field         | Description                   | Required | Format |
| ------------- | ----------------------------- | -------- | ------ |
| Client ID     | Figma OAuth App Client ID     | Yes      | `-`    |
| Client Secret | Figma OAuth App Client Secret | Yes      | `-`    |

#### OAuth Configuration

* **Authorization URL**: `https://www.figma.com/oauth`
* **Token URL**: `https://api.figma.com/v1/oauth/token`
* **Scopes**: `file_content:read`, `file_comments:read`, `file_comments:write`

## Available Actions

<AccordionGroup>
  <Accordion title="list_comments — List all comments left on a Figma file">
    ### Parameters

    <ResponseField name="file_id" type="string" required>
      The Figma file ID (found in the file URL after /file/)
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "$defs": {
        "CommentUser": {
          "additionalProperties": false,
          "description": "A Figma user who authored a comment.",
          "properties": {
            "handle": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Handle"
            },
            "img_url": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Img Url"
            },
            "id": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Id"
            }
          },
          "title": "CommentUser",
          "type": "object"
        },
        "FigmaComment": {
          "additionalProperties": false,
          "description": "A single comment on a Figma file.",
          "properties": {
            "id": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Id"
            },
            "file_key": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "File Key"
            },
            "parent_id": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Parent Id"
            },
            "user": {
              "anyOf": [
                {
                  "$ref": "#/$defs/CommentUser"
                },
                {
                  "type": "null"
                }
              ],
              "default": null
            },
            "created_at": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Created At"
            },
            "resolved_at": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Resolved At"
            },
            "message": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Message"
            },
            "order_id": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Order Id"
            }
          },
          "title": "FigmaComment",
          "type": "object"
        }
      },
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "comments": {
          "items": {
            "$ref": "#/$defs/FigmaComment"
          },
          "title": "Comments",
          "type": "array"
        }
      },
      "required": [
        "success"
      ],
      "title": "ListCommentsOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="delete_comment — Delete a comment from a Figma file">
    ### Parameters

    <ResponseField name="file_id" type="string" required>
      The Figma file ID (found in the file URL after /file/)
    </ResponseField>

    <ResponseField name="comment_id" type="string" required>
      The ID of the comment to delete
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        }
      },
      "required": [
        "success"
      ],
      "title": "DeleteCommentOutput",
      "type": "object"
    }
    ```
  </Accordion>

  <Accordion title="post_a_comment — Post a comment to a Figma file">
    ### Parameters

    <ResponseField name="file_id" type="string" required>
      The Figma file ID (found in the file URL after /file/)
    </ResponseField>

    <ResponseField name="message" type="string" required>
      The text contents of the comment to post
    </ResponseField>

    <ResponseField name="comment_id" type="string">
      The ID of the comment to reply to (must be a root comment)
    </ResponseField>

    ### Response

    ```json theme={null}
    {
      "$defs": {
        "CommentUser": {
          "additionalProperties": false,
          "description": "A Figma user who authored a comment.",
          "properties": {
            "handle": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Handle"
            },
            "img_url": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Img Url"
            },
            "id": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Id"
            }
          },
          "title": "CommentUser",
          "type": "object"
        },
        "FigmaComment": {
          "additionalProperties": false,
          "description": "A single comment on a Figma file.",
          "properties": {
            "id": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Id"
            },
            "file_key": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "File Key"
            },
            "parent_id": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Parent Id"
            },
            "user": {
              "anyOf": [
                {
                  "$ref": "#/$defs/CommentUser"
                },
                {
                  "type": "null"
                }
              ],
              "default": null
            },
            "created_at": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Created At"
            },
            "resolved_at": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Resolved At"
            },
            "message": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Message"
            },
            "order_id": {
              "anyOf": [
                {
                  "type": "string"
                },
                {
                  "type": "null"
                }
              ],
              "default": null,
              "title": "Order Id"
            }
          },
          "title": "FigmaComment",
          "type": "object"
        }
      },
      "additionalProperties": false,
      "properties": {
        "success": {
          "title": "Success",
          "type": "boolean"
        },
        "error": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Error"
        },
        "comment": {
          "anyOf": [
            {
              "$ref": "#/$defs/FigmaComment"
            },
            {
              "type": "null"
            }
          ],
          "default": null
        }
      },
      "required": [
        "success"
      ],
      "title": "PostACommentOutput",
      "type": "object"
    }
    ```
  </Accordion>
</AccordionGroup>

## Limits & Quotas

* Figma REST API rate limit: 30 requests per minute per OAuth token (may vary by endpoint and plan).
* No per-request billing; API access is included with Figma Professional and above.
* Error model: non-2xx responses are caught and returned as `success=False` + `error` rather than raising.

## Related integrations

<CardGroup cols={3}>
  <Card title="Cal.com" href="/integrations/tools/cal-com" />

  <Card title="Canva" href="/integrations/tools/canva" />

  <Card title="ConvertAPI" href="/integrations/tools/convertapi" />
</CardGroup>

## Links

* [Figma](https://www.figma.com)
