/deals/{id}/participants
Lists the participants associated with a deal.
If a company uses the Campaigns product, then this endpoint will also return the data.marketing_status field.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | integer | The ID of the deal |
| start | query | optional | integer | Pagination start |
| limit | query | optional | integer | Items shown per page |
Get all deal participants by the DealID
GET /deals/{id}/participants
/deals/{id}/participants
Adds a participant to a deal.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | integer | The ID of the deal |
application/json
DealsAddParticipantRequest
| Property | Type | Required |
|---|---|---|
| person_id | integer | required |
Add new participant to the deal
POST /deals/{id}/participants
/deals/{id}/participants/{deal_participant_id}
Deletes a participant from a deal.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | integer | The ID of the deal |
| deal_participant_id | path | required | integer | The ID of the participant of the deal |
Delete a participant from a deal
DELETE /deals/{id}/participants/{deal_participant_id}
/deals/{id}/participantsChangelog
List updates about participants of a deal. This is a cursor-paginated endpoint. For more information, please refer to our documentation on pagination.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | integer | The ID of the deal |
| limit | query | optional | integer | Items shown per page |
| cursor | query | optional | string | For pagination, the marker (an opaque string value) representing the first item on the next page |
Get participant changelogs for a given deal
GET /deals/{id}/participantsChangelog
/deals/{id}/permittedUsers
Lists the users permitted to access a deal.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | integer | The ID of the deal |
Success
GET /deals/{id}/permittedUsers
/deals/{id}/persons
Lists all persons associated with a deal, regardless of whether the person is the primary contact of the deal, or added as a participant.
If a company uses the Campaigns product, then this endpoint will also return the data.marketing_status field.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | integer | The ID of the deal |
| start | query | optional | integer | Pagination start |
| limit | query | optional | integer | Items shown per page |
Success
GET /deals/{id}/persons
/deals/{id}/products
Lists products attached to a deal.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | integer | The ID of the deal |
| start | query | optional | integer | Pagination start |
| limit | query | optional | integer | Items shown per page |
| include_product_data | query | optional | number | Whether to fetch product data along with each attached product (1) or not (0, default) |
Success
GET /deals/{id}/products
/deals/{id}/products
Adds a product to a deal, creating a new item called a deal-product.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | integer | The ID of the deal |
application/json
DealsAddProductToDealRequest
| Property | Type | Required |
|---|---|---|
| tax | number | optional |
| comments | string | optional |
| discount | number | optional |
| duration | number | optional |
| quantity | integer | required |
| item_price | number | required |
| product_id | integer | required |
| tax_method | string | optional |
| enabled_flag | boolean | optional |
| discount_type | string | optional |
| duration_unit | string | optional |
| product_variation_id | integer | optional |
Add a product to the deal
POST /deals/{id}/products
/deals/{id}/products/{product_attachment_id}
Deletes a product attachment from a deal, using the product_attachment_id.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | integer | The ID of the deal |
| product_attachment_id | path | required | integer | The product attachment ID |
Delete an attached product from a deal
DELETE /deals/{id}/products/{product_attachment_id}
/deals/{id}/products/{product_attachment_id}
Updates the details of the product that has been attached to a deal.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | integer | The ID of the deal |
| product_attachment_id | path | required | integer | The ID of the deal-product (the ID of the product attached to the deal) |
application/json
DealsUpdateProductAttachmentRequest
| Property | Type | Required |
|---|---|---|
| tax | number | optional |
| comments | string | optional |
| discount | number | optional |
| duration | number | optional |
| quantity | integer | optional |
| item_price | number | optional |
| product_id | integer | optional |
| tax_method | string | optional |
| enabled_flag | boolean | optional |
| discount_type | string | optional |
| duration_unit | string | optional |
| product_variation_id | integer | optional |
Update product attachment details
PUT /deals/{id}/products/{product_attachment_id}
/files
Returns data about all files.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| start | query | optional | integer | Pagination start |
| limit | query | optional | integer | Items shown per page |
| sort | query | optional | string | The field names and sorting mode separated by a comma ( |
Get data about all files uploaded to Pipedrive
GET /files
/files
Lets you upload a file and associate it with a deal, person, organization, activity, product or lead. For more information, see the tutorial for adding a file.
multipart/form-data
FilesUploadAndAssociateRequest
| Property | Type | Required |
|---|---|---|
| file | string | required |
| org_id | integer | optional |
| deal_id | integer | optional |
| lead_id | string | optional |
| person_id | integer | optional |
| product_id | integer | optional |
| activity_id | integer | optional |
Add a file from computer or Google Drive and associate it with deal, person, organization, activity or product
POST /files
/files/remote
Creates a new empty file in the remote location (googledrive) that will be linked to the item you supply. For more information, see the tutorial for adding a remote file.
application/x-www-form-urlencoded
FilesCreateRemoteFileAndLinkRequest
| Property | Type | Required |
|---|---|---|
| title | string | required |
| item_id | integer | required |
| file_type | string | required |
| item_type | string | required |
| remote_location | string | required |
Creates a new empty file in the remote location (googledrive) that will be linked to the item you supply - deal, person or organization
POST /files/remote
/files/remoteLink
Links an existing remote file (googledrive) to the item you supply. For more information, see the tutorial for adding a remote file.
application/x-www-form-urlencoded
FilesLinkRemoteFileRequest
| Property | Type | Required |
|---|---|---|
| item_id | integer | required |
| item_type | string | required |
| remote_id | string | required |
| remote_location | string | required |
Links an existing remote file (googledrive) to the item you supply - deal, person, organization
POST /files/remoteLink
/files/{id}
Marks a file as deleted. After 30 days, the file will be permanently deleted.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | integer | The ID of the file |
Delete a file from Pipedrive
DELETE /files/{id}
/files/{id}
Returns data about a specific file.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | integer | The ID of the file |
Get data about one specific file uploaded to Pipedrive
GET /files/{id}
/files/{id}
Updates the properties of a file.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | integer | The ID of the file |
application/x-www-form-urlencoded
FilesUpdateDetailsRequest
| Property | Type | Required |
|---|---|---|
| name | string | optional |
| description | string | optional |
Update file name and description
PUT /files/{id}
/files/{id}/download
Initializes a file download.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | integer | The ID of the file |
success
GET /files/{id}/download
/filters
Marks multiple filters as deleted.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| ids | query | required | string | The comma-separated filter IDs to delete |
Success
DELETE /filters
/filters
Returns data about all filters.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| type | query | optional | string | The types of filters to fetch |
Success
GET /filters
/filters
Adds a new filter, returns the ID upon success. Note that in the conditions JSON object only one first-level condition group is supported, and it must be glued with ‘AND’, and only two second level condition groups are supported of which one must be glued with ‘AND’ and the second with ‘OR’. Other combinations do not work (yet) but the syntax supports introducing them in future. For more information, see the tutorial for adding a filter.
application/json
FiltersAddNewFilterRequest
| Property | Type | Required |
|---|---|---|
| name | string | required |
| type | string | required |
| conditions | object | required |
Success
POST /filters
/filters/helpers
Returns all supported filter helpers. It helps to know what conditions and helpers are available when you want to add or update filters. For more information, see the tutorial for adding a filter.
Success
GET /filters/helpers
/filters/{id}
Marks a filter as deleted.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | integer | The ID of the filter |
Success
DELETE /filters/{id}
/filters/{id}
Returns data about a specific filter. Note that this also returns the condition lines of the filter.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | integer | The ID of the filter |
Success
GET /filters/{id}
/filters/{id}
Updates an existing filter.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | integer | The ID of the filter |
application/json
FiltersUpdateFilterRequest
| Property | Type | Required |
|---|---|---|
| name | string | optional |
| conditions | object | required |
Success
PUT /filters/{id}
/goals
Adds a new goal. Along with adding a new goal, a report is created to track the progress of your goal.
application/json
GoalsCreateReportRequest
| Property | Type | Required |
|---|---|---|
| type | object | required |
| title | string | optional |
| assignee | object | required |
| duration | object | required |
| interval | string | required |
| expected_outcome | object | required |
Successful response containing payload in the data.goal object
POST /goals
/goals/find
Returns data about goals based on criteria. For searching, append {searchField}={searchValue} to the URL, where searchField can be any one of the lowest-level fields in dot-notation (e.g. type.params.pipeline_id; title). searchValue should be the value you are looking for on that field. Additionally, is_active=<true|false> can be provided to search for only active/inactive goals. When providing period.start, period.end must also be provided and vice versa.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| type.name | query | optional | string | The type of the goal. If provided, everyone’s goals will be returned. |
| title | query | optional | string | The title of the goal |
| is_active | query | optional | boolean | Whether the goal is active or not |
| assignee.id | query | optional | integer | The ID of the user who’s goal to fetch. When omitted, only your goals will be returned. |
| assignee.type | query | optional | string | The type of the goal’s assignee. If provided, everyone’s goals will be returned. |
| expected_outcome.target | query | optional | number | The numeric value of the outcome. If provided, everyone’s goals will be returned. |
| expected_outcome.tracking_metric | query | optional | string | The tracking metric of the expected outcome of the goal. If provided, everyone’s goals will be returned. |
| expected_outcome.currency_id | query | optional | integer | The numeric ID of the goal’s currency. Only applicable to goals with |
| type.params.pipeline_id | query | optional | array | An array of pipeline IDs or |
| type.params.stage_id | query | optional | integer | The ID of the stage. Applicable to only |
| type.params.activity_type_id | query | optional | array | An array of IDs or |
| period.start | query | optional | string | The start date of the period for which to find goals. Date in format of YYYY-MM-DD. When |
| period.end | query | optional | string | The end date of the period for which to find goals. Date in format of YYYY-MM-DD. |
Successful response containing payload in the data.goal object
GET /goals/find
/goals/{id}
Marks a goal as deleted.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | string | The ID of the goal |
Successful response with id ‘success’ field only
DELETE /goals/{id}
/goals/{id}
Updates an existing goal.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | string | The ID of the goal |
application/json
GoalsUpdateExistingGoalRequest
| Property | Type | Required |
|---|---|---|
| type | object | optional |
| title | string | optional |
| assignee | object | optional |
| duration | object | optional |
| interval | string | optional |
| expected_outcome | object | optional |
Successful response containing payload in the data.goal object
PUT /goals/{id}
/goals/{id}/results
Gets the progress of a goal for the specified period.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | string | The ID of the goal that the results are looked for |
| period.start | query | required | string | The start date of the period for which to find the goal’s progress. Format: YYYY-MM-DD. This date must be the same or after the goal duration start date. |
| period.end | query | required | string | The end date of the period for which to find the goal’s progress. Format: YYYY-MM-DD. This date must be the same or before the goal duration end date. |
Successful response containing payload in the data.goal object
GET /goals/{id}/results
/itemSearch
Performs a search from your choice of item types and fields.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| term | query | required | string | The search term to look for. Minimum 2 characters (or 1 if using |
| item_types | query | optional | string | A comma-separated string array. The type of items to perform the search from. Defaults to all. |
| fields | query | optional | string | A comma-separated string array. The fields to perform the search from. Defaults to all. Relevant for each item type are: |
| search_for_related_items | query | optional | boolean | When enabled, the response will include up to 100 newest related leads and 100 newest related deals for each found person and organization and up to 100 newest related persons for each found organization |
| exact_match | query | optional | boolean | When enabled, only full exact matches against the given term are returned. It is not case sensitive. |
| include_fields | query | optional | string | A comma-separated string array. Supports including optional fields in the results which are not provided by default. |
| start | query | optional | integer | Pagination start. Note that the pagination is based on main results and does not include related items when using |
| limit | query | optional | integer | Items shown per page |
Success
GET /itemSearch
/itemSearch/field
Performs a search from the values of a specific field. Results can either be the distinct values of the field (useful for searching autocomplete field values), or the IDs of actual items (deals, leads, persons, organizations or products).
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| term | query | required | string | The search term to look for. Minimum 2 characters (or 1 if using |
| field_type | query | required | string | The type of the field to perform the search from |
| exact_match | query | optional | boolean | When enabled, only full exact matches against the given term are returned. The search is case sensitive. |
| field_key | query | required | string | The key of the field to search from. The field key can be obtained by fetching the list of the fields using any of the fields’ API GET methods (dealFields, personFields, etc.). Only the following custom field types are searchable: |
| return_item_ids | query | optional | boolean | Whether to return the IDs of the matching items or not. When not set or set to |
| start | query | optional | integer | Pagination start |
| limit | query | optional | integer | Items shown per page |
Success
GET /itemSearch/field
/leadLabels
Returns details of all lead labels. This endpoint does not support pagination and all labels are always returned.
Successful response containing payload in the data field
GET /leadLabels
/leadLabels
Creates a lead label.
application/json
LeadLabelsAddNewLabelRequest
| Property | Type | Required |
|---|---|---|
| name | string | required |
| color | string | required |
Successful response containing payload in the data field
POST /leadLabels
/leadLabels/{id}
Deletes a specific lead label.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | string | The ID of the lead label |
Successful response with id value only. Used in DELETE calls.
A resource describing an error
DELETE /leadLabels/{id}
/leadLabels/{id}
Updates one or more properties of a lead label. Only properties included in the request will be updated.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | string | The ID of the lead label |
application/json
LeadLabelsUpdatePropertiesRequest
| Property | Type | Required |
|---|---|---|
| name | string | optional |
| color | string | optional |
Successful response containing payload in the data field
A resource describing an error
PATCH /leadLabels/{id}
/leadSources
Returns all lead sources. Please note that the list of lead sources is fixed, it cannot be modified. All leads created through the Pipedrive API will have a lead source API assigned.
The successful response containing payload in the data field.
GET /leadSources
/leads
Returns multiple leads. Leads are sorted by the time they were created, from oldest to newest. Pagination can be controlled using limit and start query parameters. If a lead contains custom fields, the fields’ values will be included in the response in the same format as with the Deals endpoints. If a custom field’s value hasn’t been set for the lead, it won’t appear in the response. Please note that leads do not have a separate set of custom fields, instead they inherit the custom fields’ structure from deals.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| limit | query | optional | integer | For pagination, the limit of entries to be returned. If not provided, 100 items will be returned. |
| start | query | optional | integer | For pagination, the position that represents the first result for the page |
| archived_status | query | optional | string | Filtering based on the archived status of a lead. If not provided, |
| owner_id | query | optional | integer | If supplied, only leads matching the given user will be returned. However, |
| person_id | query | optional | integer | If supplied, only leads matching the given person will be returned. However, |
| organization_id | query | optional | integer | If supplied, only leads matching the given organization will be returned. However, |
| filter_id | query | optional | integer | The ID of the filter to use |
| sort | query | optional | string | The field names and sorting mode separated by a comma ( |
Successful response containing payload in the data field
GET /leads
/leads
Creates a lead. A lead always has to be linked to a person or an organization or both. All leads created through the Pipedrive API will have a lead source API assigned. Here’s the tutorial for adding a lead. If a lead contains custom fields, the fields’ values will be included in the response in the same format as with the Deals endpoints. If a custom field’s value hasn’t been set for the lead, it won’t appear in the response. Please note that leads do not have a separate set of custom fields, instead they inherit the custom fields’ structure from deals. See an example given in the updating custom fields’ values tutorial.
application/json
LeadsCreateLeadRequest
| Property | Type | Required |
|---|---|---|
| title | string | required |
| value | object | optional |
| └ amount | number | required |
| └ currency | string | required |
| owner_id | integer | optional |
| was_seen | boolean | optional |
| label_ids | array | optional |
| person_id | integer | optional |
| visible_to | string | optional |
| organization_id | integer | optional |
| expected_close_date | string | optional |
Successful response containing payload in the data field
POST /leads
/leads/search
Searches all leads by title, notes and/or custom fields. This endpoint is a wrapper of /v1/itemSearch with a narrower OAuth scope. Found leads can be filtered by the person ID and the organization ID.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| term | query | required | string | The search term to look for. Minimum 2 characters (or 1 if using |
| fields | query | optional | string | A comma-separated string array. The fields to perform the search from. Defaults to all of them. |
| exact_match | query | optional | boolean | When enabled, only full exact matches against the given term are returned. It is not case sensitive. |
| person_id | query | optional | integer | Will filter leads by the provided person ID. The upper limit of found leads associated with the person is 2000. |
| organization_id | query | optional | integer | Will filter leads by the provided organization ID. The upper limit of found leads associated with the organization is 2000. |
| include_fields | query | optional | string | Supports including optional fields in the results which are not provided by default |
| start | query | optional | integer | Pagination start. Note that the pagination is based on main results and does not include related items when using |
| limit | query | optional | integer | Items shown per page |
Success
GET /leads/search
/leads/{id}
Deletes a specific lead.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | string | The ID of the lead |
Successful response with id value only. Used in DELETE calls.
A resource describing an error
DELETE /leads/{id}
/leads/{id}
Returns details of a specific lead. If a lead contains custom fields, the fields’ values will be included in the response in the same format as with the Deals endpoints. If a custom field’s value hasn’t been set for the lead, it won’t appear in the response. Please note that leads do not have a separate set of custom fields, instead they inherit the custom fields’ structure from deals.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | string | The ID of the lead |
Successful response containing payload in the data field
A resource describing an error
GET /leads/{id}
/leads/{id}
Updates one or more properties of a lead. Only properties included in the request will be updated. Send null to unset a property (applicable for example for value, person_id or organization_id). If a lead contains custom fields, the fields’ values will be included in the response in the same format as with the Deals endpoints. If a custom field’s value hasn’t been set for the lead, it won’t appear in the response. Please note that leads do not have a separate set of custom fields, instead they inherit the custom fields’ structure from deals. See an example given in the updating custom fields’ values tutorial.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | string | The ID of the lead |
application/json
LeadsUpdateLeadPropertiesRequest
| Property | Type | Required |
|---|---|---|
| title | string | optional |
| value | object | optional |
| └ amount | number | required |
| └ currency | string | required |
| owner_id | integer | optional |
| was_seen | boolean | optional |
| label_ids | array | optional |
| person_id | integer | optional |
| visible_to | string | optional |
| is_archived | boolean | optional |
| organization_id | integer | optional |
| expected_close_date | string | optional |
Successful response containing payload in the data field
A resource describing an error
PATCH /leads/{id}
/leads/{id}/permittedUsers
Lists the users permitted to access a lead.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | string | The ID of the lead |
Lists users permitted to access a lead
GET /leads/{id}/permittedUsers
/mailbox/mailMessages/{id}
Returns data about a specific mail message.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | integer | The ID of the mail message to fetch |
| include_body | query | optional | number | Whether to include the full message body or not. |
The mail messages that are being synced with Pipedrive
GET /mailbox/mailMessages/{id}
/mailbox/mailThreads
Returns mail threads in a specified folder ordered by the most recent message within.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| folder | query | required | string | The type of folder to fetch |
| start | query | optional | integer | Pagination start |
| limit | query | optional | integer | Items shown per page |
Get mail threads
GET /mailbox/mailThreads
/mailbox/mailThreads/{id}
Marks a mail thread as deleted.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | integer | The ID of the mail thread |
Marks mail thread as deleted
DELETE /mailbox/mailThreads/{id}
/mailbox/mailThreads/{id}
Returns a specific mail thread.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | integer | The ID of the mail thread |
Get mail threads
GET /mailbox/mailThreads/{id}
/mailbox/mailThreads/{id}
Updates the properties of a mail thread.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | integer | The ID of the mail thread |
application/x-www-form-urlencoded
MailboxUpdateMailThreadDetailsRequest
| Property | Type | Required |
|---|---|---|
| deal_id | integer | optional |
| lead_id | string | optional |
| read_flag | number | optional |
| shared_flag | number | optional |
| archived_flag | number | optional |
Updates the properties of a mail thread
PUT /mailbox/mailThreads/{id}
/mailbox/mailThreads/{id}/mailMessages
Returns all the mail messages inside a specified mail thread.
| Name | In | Required | Type | Description |
|---|---|---|---|---|
| id | path | required | integer | The ID of the mail thread |
Get mail messages from thread
GET /mailbox/mailThreads/{id}/mailMessages