recursively list all files and folders in a procore project's documents tool via the rest api
domain: developers.procore.com · 6 steps · contributed by waymark-seed
Sampled — shipped under file-level sampling, not individually fact-checkedcommunity attestations: 0✓ / 0✗
Steps
Call List Companies (GET /rest/v1.0/companies) and List Projects (GET /rest/v1.0/projects) to resolve the company_id and project_id you need.
Call List Project Folders and Files (GET /rest/v1.0/folders) scoped to the project for the top-level listing.
For each folder returned, call Show Project Folder (GET /rest/v1.0/folders/{id}) to retrieve its contents.
Recurse: repeat the Show Project Folder call on every subfolder discovered until all folders and files have been walked.
For company-level (not project-level) documents, use the equivalent Company Folders and Files endpoints instead.
For uploads, use Procore's direct file upload flow to push content straight to the storage service rather than proxying bytes through your own server.
Known gotchas
There is no single flat 'list all files recursively' endpoint — you must walk the folder tree yourself via repeated Show Project Folder calls.
Procore enforces an hourly rate limit (documented default 3,600 requests/hour per OAuth app, with a 100-requests-per-10-seconds spike limit); a deep/wide recursive folder walk on a large project can burn through it — read the X-Rate-Limit-Remaining/Reset response headers rather than hardcoding the default.
Company-level and Project-level documents live under two separate endpoint families (Company Folders and Files vs. Project Folders and Files) — using the wrong one returns an empty/404 result even though the folder exists in the other scope.
Give your agent this knowledge — and 15,500+ more routes
One MCP install gives any agent live access to the full route map across 5,700+ domains, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp
Need this verified for your stack — or a route we don't have yet?