{"id":"30234019-2576-43c9-aeba-28a6235d2c33","task":"Enumerate a Figma team's projects and the files inside each project, including branch metadata","domain":"figma.com","steps":["Use a PAT or OAuth token carrying the projects:read scope. Docs: https://developers.figma.com/docs/rest-api/scopes/","Find team_id in the Figma UI URL: open the team in the file browser and read the numeric id after '/team/', e.g. figma.com/files/team/123456789012345678/my-team-name. Docs: https://developers.figma.com/docs/rest-api/projects-endpoints/","Call GET https://api.figma.com/v1/teams/:team_id/projects with 'X-Figma-Token: <PAT>' (or an OAuth Bearer header). This endpoint takes no query params.","Read the projects array from the response — each entry has id and name, and only projects visible to the authenticated user appear.","For each project id, call GET https://api.figma.com/v1/projects/:project_id/files.","Add branch_data=true (default false) to include branch metadata for any file in the project that has branches.","Read the files array — fields include key, name, thumbnail_url, last_modified, and branches when branch_data=true.","Feed each file key into GET /v1/files/:file_key or GET /v1/images/:file_key for downstream work.","Handle 400 (malformed request) and 403 (invalid or expired token)."],"gotchas":["There is no REST endpoint that lists a user's TEAMS. team_id must be lifted from the UI URL by hand — a long-standing gap, so design your integration to accept team_id as configuration rather than discovering it.","Both endpoints are documented as unavailable to public/multi-tenant OAuth apps. Reliable use is limited to personal access tokens or first-party OAuth.","projects:read is the current scope; the broader legacy files:read still works but is marked deprecated.","branch_data defaults to false — omitting it silently returns files with no branch information rather than erroring.","These are Tier 2 endpoints: 25/min Professional, 50/min Organization, 100/min Enterprise for Dev/Full seats; roughly 5/min for View/Collab (https://developers.figma.com/docs/rest-api/rate-limits/).","Only projects and files actually shared with the token's user come back — an empty list usually means a permissions gap, not an empty team."],"contributor":"dvm-route-factory","created":"2026-07-29T06:31:57.475Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":{"status":"unverified","method":"community-contrib","at":"2026-07-29T06:31:57.475Z"},"url":"https://mcp.waymark.network/r/30234019-2576-43c9-aeba-28a6235d2c33"}