Create a filter via POST /v1/filters with type set to deals and conditions defining the field, operator, and value for each criterion
Use GET /v1/deals with filter_id set to the created filter's ID to retrieve matching deals with pagination via start and limit parameters
Iterate through pages by incrementing start by limit until the additional_data.pagination.more_items_in_collection field is false
For each deal that needs updating issue a PUT /v1/deals/<dealId> with only the changed fields in the body
Monitor the per-user and per-company API rate limit headers returned with each response to avoid throttling
Delete the filter via DELETE /v1/filters/<filterId> after the bulk operation to keep the filter list clean
Known gotchas
Pipedrive filters created via API are owned by the API user and may not be visible to other users in the UI unless the visibility is set appropriately
Updating a deal's stage_id without also updating the pipeline_id when moving across pipelines results in an error; both fields must be consistent
Pipedrive enforces per-second and per-day rate limits per company; bulk update loops must include a delay or a rate-limit back-off strategy to avoid HTTP 429 responses
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp