Figma Projects API

Figma Projects API provides endpoints for listing team projects and retrieving project files.

Operations 2

GET /v1/projects/{project_id}/files Figma Get Files in a Project #
GET /v1/teams/{team_id}/projects Figma Get Team Projects #

Documentation

Specifications

Schemas & Data

Other Resources

Work with this as data

Every API 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 apis

7 MCP tools reach this
  • 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.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/figma-projects-api"
All apis
curl "https://apis.io/api/v1/apis?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.

OpenAPI Specification

figma-projects-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Figma Activity Logs Projects API
  version: 0.21.0
  description: 'Figma allows designers to create and prototype their digital experiences -

    together in real-time and in one place - helping them turn their ideas and

    visions into products, faster. Figma''s mission is to make design

    accessible to everyone. The Figma API is one of the ways we aim to do that.'
  termsOfService: https://www.figma.com/developer-terms/
  contact:
    email: support@figma.com
servers:
- url: https://api.figma.com
  description: Figma Production API Server
tags:
- name: Projects
  description: Operations for managing and retrieving project information
paths:
  /v1/projects/{project_id}/files:
    get:
      tags:
      - Projects
      summary: Figma Get Files in a Project
      security:
      - PersonalAccessToken: []
      - OAuth2:
        - files:read
      description: Get a list of all the Files within the specified project.
      operationId: getProjectFiles
      x-microcks-operation:
        dispatcher: URI_PARTS
        dispatcherRules: project_id
        defaultResponse: GetProjectFilesSuccessExample
      parameters:
      - $ref: '#/components/parameters/ProjectIdPath'
      - $ref: '#/components/parameters/BranchDataQuery'
      responses:
        '200':
          $ref: '#/components/responses/GetProjectFilesResponse'
        '400':
          $ref: '#/components/responses/BadRequestErrorResponse'
        '403':
          $ref: '#/components/responses/ForbiddenErrorResponse'
        '429':
          $ref: '#/components/responses/TooManyRequestsErrorResponse'
        '500':
          $ref: '#/components/responses/InternalServerErrorResponse'
  /v1/teams/{team_id}/projects:
    get:
      tags:
      - Projects
      summary: Figma Get Team Projects
      operationId: getTeamProjects
      description: Lists the projects for a specified team. Only projects visible to the authenticated user are returned.
      security:
      - PersonalAccessToken: []
      - OAuth2:
        - files:read
      parameters:
      - $ref: '#/components/parameters/TeamIdPathParam'
      responses:
        '200':
          description: Successfully retrieved team projects.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetTeamProjectsResponse'
              examples:
                Getteamprojects200Example:
                  summary: Default getTeamProjects 200 response
                  x-microcks-default: true
                  value:
                    name: Example Title
                    projects:
                    - id: abc123
                      name: Example Title
        '401':
          $ref: '#/components/responses/UnauthorizedError'
        '403':
          $ref: '#/components/responses/ForbiddenError'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '429':
          $ref: '#/components/responses/RateLimitError'
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
components:
  parameters:
    TeamIdPathParam:
      name: team_id
      in: path
      description: The ID of the team.
      required: true
      schema:
        type: string
      example: '12345'
    ProjectIdPath:
      name: project_id
      in: path
      description: ID of the project to list files from
      required: true
      schema:
        type: string
      example: '12345678'
    BranchDataQuery:
      name: branch_data
      in: query
      description: Returns branch metadata in the response for each main file with a branch inside the project.
      schema:
        type: boolean
        default: false
      example: false
  schemas:
    ErrorResponsePayloadWithMessage:
      type: object
      description: A response indicating an error occurred.
      properties:
        error:
          type: boolean
          description: For erroneous requests, this value is always `true`.
          enum:
          - true
          example: true
        status:
          type: number
          description: Status code
          example: 42.5
        message:
          type: string
          description: A string describing the error
          example: example_value
      required:
      - error
      - status
      - message
    InternalServerError:
      allOf:
      - $ref: '#/components/schemas/ErrorResponsePayloadWithErr'
      - type: object
        properties:
          status:
            type: number
            description: Status code
            enum:
            - 500
        required:
        - status
      example:
        status: 500
        err: Internal server error
    ErrorResponse:
      type: object
      description: Standard error response from the Figma API.
      required:
      - error
      - status
      - message
      properties:
        error:
          type: boolean
          description: Always true for error responses.
          enum:
          - true
          example: true
        status:
          type: integer
          description: The HTTP status code.
          example: 10
        message:
          type: string
          description: A human-readable description of the error.
          example: example_value
    TooManyRequestsError:
      allOf:
      - $ref: '#/components/schemas/ErrorResponsePayloadWithErr'
      - type: object
        properties:
          status:
            type: number
            description: Status code
            enum:
            - 429
        required:
        - status
      example:
        status: 429
        err: Rate limit exceeded. Please wait before retrying.
    ProjectFile:
      type: object
      description: A file within a project.
      properties:
        key:
          type: string
          description: The file's key.
          example: example_value
        name:
          type: string
          description: The file's name.
          example: Example Title
        thumbnail_url:
          type: string
          description: The file's thumbnail URL.
          example: https://www.example.com
        last_modified:
          type: string
          format: date-time
          description: The UTC ISO 8601 time at which the file was last modified.
          example: '2026-01-15T10:30:00Z'
      required:
      - key
      - name
      - last_modified
      example:
        key: abc123XYZ789
        name: Design System Components
        thumbnail_url: https://s3-alpha.figma.com/thumbnails/abc123-xyz789
        last_modified: '2024-06-20T10:30:00Z'
    GetProjectFilesResponseBody:
      type: object
      description: Successful response containing project files.
      properties:
        name:
          type: string
          description: The project's name.
          example: Example Title
        files:
          type: array
          description: An array of files.
          items:
            $ref: '#/components/schemas/ProjectFile'
          example: []
      required:
      - name
      - files
      example:
        name: Mobile App Design
        files:
        - key: abc123XYZ789
          name: Design System Components
          thumbnail_url: https://s3-alpha.figma.com/thumbnails/abc123-xyz789
          last_modified: '2024-06-20T10:30:00Z'
        - key: def456UVW012
          name: App Screens
          thumbnail_url: https://s3-alpha.figma.com/thumbnails/def456-uvw012
          last_modified: '2024-06-19T15:45:00Z'
    GetTeamProjectsResponse:
      type: object
      description: Response from the Get Team Projects endpoint.
      required:
      - name
      - projects
      properties:
        name:
          type: string
          description: The name of the team.
          example: Example Title
        projects:
          type: array
          items:
            $ref: '#/components/schemas/Project'
          example: []
    BadRequestError:
      allOf:
      - $ref: '#/components/schemas/ErrorResponsePayloadWithMessage'
      - type: object
        properties:
          status:
            type: number
            description: Status code
            enum:
            - 400
        required:
        - status
      example:
        error: true
        status: 400
        message: Invalid project ID format
    Project:
      type: object
      description: A Figma project within a team.
      required:
      - id
      - name
      properties:
        id:
          type: string
          description: The ID of the project.
          example: abc123
        name:
          type: string
          description: The name of the project.
          example: Example Title
    ForbiddenError:
      allOf:
      - $ref: '#/components/schemas/ErrorResponsePayloadWithErr'
      - type: object
        properties:
          status:
            type: number
            description: Status code
            enum:
            - 403
        required:
        - status
      example:
        status: 403
        err: Access denied. You do not have permission to access this project.
    ErrorResponsePayloadWithErr:
      type: object
      description: A response indicating an error occurred.
      properties:
        status:
          type: number
          description: Status code
          example: 42.5
        err:
          type: string
          description: A string describing the error
          example: example_value
      required:
      - status
      - err
  responses:
    ForbiddenErrorResponse:
      description: The request was valid, but the server is refusing action. The user might not have the necessary permissions for a resource, or may need an account of some sort.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ForbiddenError'
          examples:
            ForbiddenExample:
              summary: Access denied error
              value:
                status: 403
                err: Access denied. You do not have permission to access this project.
    RateLimitError:
      description: Rate limit exceeded. The Figma API enforces rate limits on a per-user, per-app basis. Retry after the period indicated in the Retry-After header.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    NotFoundError:
      description: The requested file, project, team, or resource was not found.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    UnauthorizedError:
      description: Authentication token is missing, invalid, or expired.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    ForbiddenError:
      description: The authenticated user does not have the necessary permissions to access this resource.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    GetProjectFilesResponse:
      description: Response from the GET /v1/projects/{project_id}/files endpoint.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/GetProjectFilesResponseBody'
          examples:
            GetProjectFilesSuccessExample:
              summary: Successful project files response
              value:
                name: Mobile App Design
                files:
                - key: abc123XYZ789
                  name: Design System Components
                  thumbnail_url: https://s3-alpha.figma.com/thumbnails/abc123-xyz789
                  last_modified: '2024-06-20T10:30:00Z'
                - key: def456UVW012
                  name: App Screens
                  thumbnail_url: https://s3-alpha.figma.com/thumbnails/def456-uvw012
                  last_modified: '2024-06-19T15:45:00Z'
    InternalServerErrorResponse:
      description: An internal server error occurred.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/InternalServerError'
          examples:
            InternalServerErrorExample:
              summary: Internal server error
              value:
                status: 500
                err: Internal server error
    BadRequestErrorResponse:
      description: Bad request. Parameters are invalid or malformed. Please check the input formats. This error can also happen if the requested resources are too large to complete the request, which results in a timeout. Please reduce the number and size of objects requested.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/BadRequestError'
          examples:
            BadRequestExample:
              summary: Invalid project ID error
              value:
                error: true
                status: 400
                message: Invalid project ID format
    TooManyRequestsErrorResponse:
      description: In some cases API requests may be throttled or rate limited. Please wait a while before attempting the request again (typically a minute).
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/TooManyRequestsError'
          examples:
            TooManyRequestsExample:
              summary: Rate limit exceeded error
              value:
                status: 429
                err: Rate limit exceeded. Please wait before retrying.
  securitySchemes:
    OrgOAuth2:
      type: oauth2
      flows:
        authorizationCode:
          authorizationUrl: https://www.figma.com/oauth
          tokenUrl: https://api.figma.com/v1/oauth/token
          scopes:
            org:activity_log_read: Read organization activity logs