We check Pipedrive's changelog and OpenAPI spec every day, because we run production integrations on the Pipedrive API. This page lists the 18 changes we have recorded since monitoring started on 26 March 2026, newest first.
2 breaking changes and 0 deprecations in the Pipedrive API in the last 90 days. The latest: “API v1 endpoints now out of support” (1 August 2026).
Latest detection, 9 October 2026 The `/users` `access` request default remains `app:sales`; only OpenAPI source metadata changed, so no action is needed.
Labels are assigned automatically. Check the vendor's note before planning work around an entry.
Deprecated API v1 endpoints have reached end-of-support as of August 1st, 2026, making this a critical breaking change for any remaining v1 integrations.
Affects one of your integrations? We take over the migration, at a fixed priceAPI v1 endpoints have reached end-of-support as of August 1st, 2026, requiring all integrations to migrate to v2.
Affects one of your integrations? We take over the migration, at a fixed priceNew Projects API v2 released, expanding v2 capabilities for project management features.
New webhook types and general API improvements added to v2.
Projects webhook support added to webhooks v2 on April 10th, 2026, enabling event notifications for project-related changes.
Corrected payload issue in product webhooks v2.
New Assignees field added to Projects API on March 25th, 2026, allowing assignment of team members to projects.
Bug fix addressing payload issues in v2 product webhooks, effective April 1st, 2026.
Channels API has been deprecated with a breaking change effective February 1st, 2026, requiring migration to alternative solutions.
New Fields API v2 released for managing custom fields.
New deal_id query parameter added to GET /api/v2/persons endpoint on November 24th, 2025, enabling filtering persons by associated deal.
New Product Duplication API released on November 24th, 2025, enabling programmatic duplication of products.
Deprecation of Channels API: Channels API marked as deprecated with February 1st, 2026 effective date, requiring migration away from this endpoint.
New Deal Products bulk operations API introduced for batch operations, effective October 1st, 2025.
New sorting parameter added to the Products API for more flexible product list ordering.
updating activities note field limit sizing for POST v1/activities: Activities note field character limit is being changed, which may affect existing integrations that rely on current field size limits.
New dedicated API endpoint for managing product images separately from product data.
updating activities note field limit sizing for POST v1/activities: Activities note field limit sizing updated for POST v1/activities endpoint, effective September 21st, 2025; may break integrations expecting larger note fields.
Differences between consecutive versions of Pipedrive's published OpenAPI spec, as reported by oasdiff. Only changes that break or may break existing clients are listed.
GET /leads removed the enum value 'add_time' from the 'query' request parameter 'sort' GET /leads removed the enum value 'creator_id' from the 'query' request parameter 'sort' GET /leads removed the enum value 'expected_close_date' from the 'query' request parameter 'sort' GET /leads removed the enum value 'id' from the 'query' request parameter 'sort' GET /leads removed the enum value 'next_activity_id' from the 'query' request parameter 'sort' GET /leads removed the enum value 'owner_id' from the 'query' request parameter 'sort' GET /leads removed the enum value 'title' from the 'query' request parameter 'sort' GET /leads removed the enum value 'update_time' from the 'query' request parameter 'sort' GET /leads removed the enum value 'was_seen' from the 'query' request parameter 'sort' DELETE /dealFields for the 'query' request parameter 'ids', the type/format was changed from 'string'/'' to 'array'/'' GET /deals/{id}/flow for the 'query' request parameter 'items', the type/format was changed from 'string'/'' to 'array'/'' DELETE /filters for the 'query' request parameter 'ids', the type/format was changed from 'string'/'' to 'array'/'' GET /leads/search removed the enum value 'custom_fields' from the 'query' request parameter 'fields' GET /leads/search removed the enum value 'lead.was_seen' from the 'query' request parameter 'include_fields' GET /leads/search removed the enum value 'notes' from the 'query' request parameter 'fields' GET /leads/search removed the enum value 'title' from the 'query' request parameter 'fields' GET /leads/search for the 'query' request parameter 'fields', the type/format was changed from 'string'/'' to 'array'/'' GET /leads/search for the 'query' request parameter 'include_fields', the type/format was changed from 'string'/'' to 'array'/'' DELETE /organizationFields for the 'query' request parameter 'ids', the type/format was changed from 'string'/'' to 'array'/'' GET /organizations/{id}/flow for the 'query' request parameter 'items', the type/format was changed from 'string'/'' to 'array'/'' DELETE /personFields for the 'query' request parameter 'ids', the type/format was changed from 'string'/'' to 'array'/'' GET /persons/{id}/flow for the 'query' request parameter 'items', the type/format was changed from 'string'/'' to 'array'/'' DELETE /productFields for the 'query' request parameter 'ids', the type/format was changed from 'string'/'' to 'array'/'' GET /deals/archived the 'data/items/allOf[subschema #1]/creator_user_id/has_pic' response's property type/format changed from 'boolean'/'' to 'integer'/'' for status '200' GET /products/{id}/deals the '/allOf[subschema #2]/data/items/allOf[subschema #1]/creator_user_id/has_pic' response's property type/format changed from 'boolean'/'' to 'integer'/'' for status '200' GET /products/{id}/files the response property '/allOf[subschema #2]/data' became nullable for the status '200' GET /deals/archived the response property 'data/items/allOf[subschema #1]/org_id' became nullable for the status '200' GET /deals/archived the response property 'data/items/allOf[subschema #1]/person_id' became nullable for the status '200' GET /deals/archived the response property 'data/items/allOf[subschema #2: baseDeal]/expected_close_date' became nullable for the status '200' GET /deals/archived the response property 'data/items/allOf[subschema #2: baseDeal]/first_won_time' became nullable for the status '200' GET /deals/archived the response property 'data/items/allOf[subschema #2: baseDeal]/label' became nullable for the status '200' GET /deals/archived the response property 'data/items/allOf[subschema #2: baseDeal]/last_incoming_mail_time' became nullable for the status '200' GET /deals/archived the response property 'data/items/allOf[subschema #2: baseDeal]/last_outgoing_mail_time' became nullable for the status '200' GET /deals/archived the response property 'data/items/allOf[subschema #2: baseDeal]/lost_time' became nullable for the status '200' GET /deals/archived the response property 'data/items/allOf[subschema #2: baseDeal]/next_activity_date' became nullable for the status '200' GET /deals/archived the response property 'data/items/allOf[subschema #2: baseDeal]/next_activity_duration' became nullable for the status '200' GET /deals/archived the response property 'data/items/allOf[subschema #2: baseDeal]/next_activity_note' became nullable for the status '200' GET /deals/archived the response property 'data/items/allOf[subschema #2: baseDeal]/next_activity_subject' became nullable for the status '200' GET /deals/archived the response property 'data/items/allOf[subschema #2: baseDeal]/next_activity_time' became nullable for the status '200' GET /deals/archived the response property 'data/items/allOf[subschema #2: baseDeal]/next_activity_type' became nullable for the status '200' GET /deals/archived the response property 'data/items/allOf[subschema #2: baseDeal]/org_name' became nullable for the status '200' GET /deals/archived the response property 'data/items/allOf[subschema #2: baseDeal]/person_name' became nullable for the status '200' GET /deals/archived the response property 'data/items/allOf[subschema #2: baseDeal]/stage_change_time' became nullable for the status '200' GET /deals/archived the response property 'data/items/allOf[subschema #2: baseDeal]/update_time' became nullable for the status '200' GET /deals/archived the response property 'data/items/allOf[subschema #2: baseDeal]/won_time' became nullable for the status '200' GET /deals/archived the 'data/items/allOf[subschema #1]/org_id' response's property type/format changed from ''/'' to 'object'/'' for status '200' GET /deals/archived the 'data/items/allOf[subschema #1]/person_id' response's property type/format changed from ''/'' to 'object'/'' for status '200' GET /deals/timeline the response property 'data/deals/items/allOf[subschema #1]/org_id' became nullable for the status '200' GET /deals/timeline the response property 'data/deals/items/allOf[subschema #1]/person_id' became nullable for the status '200' GET /deals/timeline the response property 'data/deals/items/allOf[subschema #2: baseDeal]/expected_close_date' became nullable for the status '200' GET /deals/timeline the response property 'data/deals/items/allOf[subschema #2: baseDeal]/first_won_time' became nullable for the status '200' GET /deals/{id}/participants added the new 'nova' enum value to the 'data/items/added_by_user_id/allOf[subschema #2: GetUserResponseData]/data/access/items/app' response property for the response status '200' POST /deals/{id}/participants added the new 'nova' enum value to the 'data/added_by_user_id/allOf[subschema #2: GetUserResponseData]/data/access/items/app' response property for the response status '200' GET /permissionSets added the new 'nova' enum value to the '/allOf[subschema #2]/data/items/app' response property for the response status '200' GET /permissionSets added the new 'partnership' enum value to the '/allOf[subschema #2]/data/items/app' response property for the response status '200' GET /permissionSets/{id} added the new 'nova' enum value to the '/allOf[subschema #1: PermissionSet]/app' response property for the response status '200' GET /permissionSets/{id} added the new 'partnership' enum value to the '/allOf[subschema #1: PermissionSet]/app' response property for the response status '200' GET /recents added the new 'nova' enum value to the 'data/items/anyOf[subschema #12]/data/access/items/app' response property for the response status '200' GET /users added the new 'nova' enum value to the '/allOf[subschema #2]/data/items/access/items/app' response property for the response status '200' POST /users added the new 'nova' enum value to the '/allOf[subschema #2: GetUserResponseData]/data/access/items/app' response property for the response status '200' GET /users/find added the new 'nova' enum value to the '/allOf[subschema #2]/data/items/access/items/app' response property for the response status '200' GET /users/me added the new 'nova' enum value to the '/allOf[subschema #2]/data/allOf[subschema #1: BaseUser]/access/items/app' response property for the response status '200' GET /users/{id} added the new 'nova' enum value to the '/allOf[subschema #2: GetUserResponseData]/data/access/items/app' response property for the response status '200' PUT /users/{id} added the new 'nova' enum value to the '/allOf[subschema #2: GetUserResponseData]/data/access/items/app' response property for the response status '200' GET /filters the response property '/allOf[subschema #2]/data/items/custom_view_id' became nullable for the status '200' GET /filters the response property '/allOf[subschema #2]/data/items/update_time' became nullable for the status '200' GET /filters the '/allOf[subschema #2]/data/items/visible_to' response's property type/format changed from 'integer'/'' to ''/'' for status '200' POST /filters the response property '/allOf[subschema #2]/data/custom_view_id' became nullable for the status '200' POST /filters the response property '/allOf[subschema #2]/data/temporary_flag' became nullable for the status '200' POST /filters the response property '/allOf[subschema #2]/data/update_time' became nullable for the status '200' POST /filters the '/allOf[subschema #2]/data/visible_to' response's property type/format changed from 'integer'/'' to ''/'' for status '200' GET /filters/{id} the response property '/allOf[subschema #2]/data/custom_view_id' became nullable for the status '200' GET /filters/{id} the response property '/allOf[subschema #2]/data/update_time' became nullable for the status '200' GET /filters/{id} the '/allOf[subschema #2]/data/visible_to' response's property type/format changed from 'integer'/'' to ''/'' for status '200' PUT /filters/{id} the response property '/allOf[subschema #2]/data/custom_view_id' became nullable for the status '200' PUT /filters/{id} the response property '/allOf[subschema #2]/data/temporary_flag' became nullable for the status '200' PUT /filters/{id} the response property '/allOf[subschema #2]/data/update_time' became nullable for the status '200' PUT /filters/{id} the '/allOf[subschema #2]/data/visible_to' response's property type/format changed from 'integer'/'' to ''/'' for status '200' POST /notes added 'subschema #1, subschema #2' to the request body 'allOf' list PUT /notes/{id} added 'subschema #2, subschema #3' to the request body 'allOf' list GET /filters added the new 'activity' enum value to the '/allOf[subschema #2]/data/items/type' response property for the response status '200' GET /filters added the new 'deals' enum value to the '/allOf[subschema #2]/data/items/type' response property for the response status '200' GET /filters added the new 'leads' enum value to the '/allOf[subschema #2]/data/items/type' response property for the response status '200' GET /filters added the new 'org' enum value to the '/allOf[subschema #2]/data/items/type' response property for the response status '200' GET /filters added the new 'people' enum value to the '/allOf[subschema #2]/data/items/type' response property for the response status '200' GET /filters added the new 'products' enum value to the '/allOf[subschema #2]/data/items/type' response property for the response status '200' GET /filters added the new 'projects' enum value to the '/allOf[subschema #2]/data/items/type' response property for the response status '200' GET /filters/{id} added the new 'activity' enum value to the '/allOf[subschema #2]/data/type' response property for the response status '200' GET /filters/{id} added the new 'deals' enum value to the '/allOf[subschema #2]/data/type' response property for the response status '200' We watch Pipedrive because we run integrations on it. If one of yours depends on Pipedrive, we can take it over: build it properly, operate it, and fix it when Pipedrive changes, before your data is affected. Fixed-price scoping quote within 48 hours.