Projects
A project groups related traffic: it can carry its own routing policy, a budget, and project-scoped API keys, and its spend is reported separately in usage.
Path: /v1/projects. Requires the manage_projects scope.
Fields
Unknown fields in request bodies are rejected with 422 rather than silently dropped, so IaC callers learn about typos instead of losing config.
Create a project
slug is derived from name (Internal Tools becomes internal-tools) and suffixed -2, -3 on collision. To create the project with its own routing or a budget, see Project routing and Budgets.
List and get projects
Lists are keyset-paginated: pass limit (default 20, max 100) and the next cursor from the previous response.
Update a project
PATCH updates only the fields you send.
Delete a project
Deleting a project also deletes its scoped routing policy and budget. The delete is blocked with 409 (PROJECT_HAS_ACTIVE_API_KEYS) while active project-scoped API keys exist. Revoke those first. If the deletion check cannot be completed, the request fails with 503 rather than deleting a project that may still have live keys.