openapi: 3.0.1 info: title: Pipedrive API v2 version: 2.0.0 servers: - url: 'https://api.pipedrive.com/api/v2' tags: - name: Activities description: | Activities are appointments/tasks/events on a calendar that can be associated with a deal, a lead, a person and an organization. Activities can be of different type (such as call, meeting, lunch or a custom type - see ActivityTypes object) and can be assigned to a particular user. Note that activities can also be created without a specific date/time. - name: ActivityFields description: | Activity fields represent different fields that an activity has. - name: Deals description: | Deals represent ongoing, lost or won sales to an organization or to a person. Each deal has a monetary value and must be placed in a stage. Deals can be owned by a user, and followed by one or many users. Each deal consists of standard data fields but can also contain a number of custom fields. The custom fields can be recognized by long hashes as keys. These hashes can be mapped against `DealField.key`. The corresponding label for each such custom field can be obtained from `DealField.name`. - name: DealProducts description: | Deal products are goods or services attached to a deal. Each deal product links a product to a deal with configurable quantity, pricing, and discounts, and contributes to the total value of the deal. - name: DealInstallments description: | Deal installments are scheduled payment entries attached to a deal, enabling split payment arrangements. - name: DealFields description: | Deal fields represent the schema for a deal in the context of the company of the authorized user. Each company can have a different schema for their deals, with various custom fields. - name: Products description: | Products are the goods or services you are dealing with. Each product can have N different price points - firstly, each product can have a price in N different currencies, and secondly, each product can have N variations of itself, each having N prices in different currencies. Note that only one price per variation per currency is supported. Products can be instantiated to deals. In the context of instantiation, a custom price, quantity and discount can be applied. - name: ProductFields description: | Product fields represent the schema for a product in the context of the company of the authorized user. Each company can have a different schema for their products, with various custom fields. - name: Leads description: | Leads are potential deals stored in Leads Inbox before they are archived or converted to a deal. Each lead needs to be named (using the `title` field) and be linked to a person or an organization. In addition to that, a lead can contain most of the fields a deal can (such as `value` or `expected_close_date`). - name: Organizations description: | Organizations are companies and other kinds of organizations you are making deals with. Persons can be associated with organizations so that each organization can contain one or more persons. - name: OrganizationFields description: | Organization fields represent the schema for an organization in the context of the company of the authorized user. Each company can have a different schema for their organizations, with various custom fields. - name: Persons description: | Persons are your contacts, the customers you are doing deals with. Each person can belong to an organization. Persons should not be confused with users. - name: PersonFields description: | Person fields represent the schema for a person in the context of the company of the authorized user. Each company can have a different schema for their persons, with various custom fields. - name: ItemSearch description: | Ordered reference objects, pointing to either deals, persons, organizations, leads, products, files or mail attachments. - name: Stages description: | Stage is a logical component of a pipeline, and essentially a bucket that can hold a number of deals. In the context of the pipeline a stage belongs to, it has an order number which defines the order of stages in that pipeline. - name: Pipelines description: | Pipelines are essentially ordered collections of stages. - name: Users description: | Users are individuals who have a Pipedrive account and can interact with its features. - name: Projects description: | Projects are used to plan and manage work that spans across deals, activities, and tasks. Each project can have a board, phases, and associated activities and tasks. - name: ProjectBoards description: | Project boards are the top-level containers for organizing projects into phases. Each board contains one or more phases that define the workflow stages for projects. - name: ProjectPhases description: | Project phases are the stages within a project board that define the workflow for projects. Each phase belongs to a board and can contain multiple projects. - name: ProjectTemplates description: | Project templates are reusable blueprints for creating projects with predefined structure and settings. - name: ProjectFields description: | Project fields represent the schema for a project in the context of the company of the authorized user. Each company can have a different schema for their projects, with various custom fields. - name: Tasks description: | Tasks are action items that can be associated with a project. - name: Beta description: | Beta endpoints are endpoints that may have changes without a regular 60-90 day notice period. paths: /activities: get: summary: Get all activities description: Returns data about all activities. x-token-cost: 10 operationId: getActivities tags: - Activities security: - api_key: [] - oauth2: - 'activities:read' - 'activities:full' parameters: - in: query name: filter_id schema: type: integer description: 'If supplied, only activities matching the specified filter are returned' - in: query name: ids description: 'Optional comma separated string array of up to 100 entity ids to fetch. If filter_id is provided, this is ignored. If any of the requested entities do not exist or are not visible, they are not included in the response.' schema: type: string - in: query name: owner_id schema: type: integer description: 'If supplied, only activities owned by the specified user are returned. If filter_id is provided, this is ignored.' - in: query name: deal_id schema: type: integer description: 'If supplied, only activities linked to the specified deal are returned. If filter_id is provided, this is ignored.' - in: query name: lead_id schema: type: string description: 'If supplied, only activities linked to the specified lead are returned. If filter_id is provided, this is ignored.' - in: query name: person_id schema: type: integer description: 'If supplied, only activities whose primary participant is the given person are returned. If filter_id is provided, this is ignored.' - in: query name: org_id schema: type: integer description: 'If supplied, only activities linked to the specified organization are returned. If filter_id is provided, this is ignored.' - in: query name: done schema: type: boolean description: 'If supplied, only activities with specified ''done'' flag value are returned' - in: query name: updated_since schema: type: string description: 'If set, only activities with an `update_time` later than or equal to this time are returned. In RFC3339 format, e.g. 2025-01-01T10:20:00Z.' - in: query name: updated_until schema: type: string description: 'If set, only activities with an `update_time` earlier than this time are returned. In RFC3339 format, e.g. 2025-01-01T10:20:00Z.' - in: query name: sort_by description: 'The field to sort by. Supported fields: `id`, `update_time`, `add_time`, `due_date`.' schema: type: string default: id enum: - id - update_time - add_time - due_date - in: query name: sort_direction description: 'The sorting direction. Supported values: `asc`, `desc`.' schema: type: string default: asc enum: - asc - desc - in: query name: include_fields description: Optional comma separated string array of additional fields to include schema: type: string enum: - attendees - in: query name: limit description: 'For pagination, the limit of entries to be returned. If not provided, 100 items will be returned. Please note that a maximum value of 500 is allowed.' schema: type: integer example: 100 - in: query name: cursor required: false schema: type: string description: 'For pagination, the marker (an opaque string value) representing the first item on the next page' responses: '200': description: Get all activities content: application/json: schema: type: object title: GetActivitiesResponse allOf: - title: baseResponse type: object properties: success: type: boolean description: If the response is successful or not - type: object properties: data: type: array description: Activities array items: type: object properties: id: type: integer description: The ID of the activity subject: type: string description: The subject of the activity type: type: string description: The type of the activity owner_id: type: integer description: The ID of the user who owns the activity creator_user_id: type: integer description: The ID of the user who created the activity is_deleted: type: boolean description: Whether the activity is deleted or not add_time: type: string description: The creation date and time of the activity update_time: type: string description: The last updated date and time of the activity deal_id: type: integer description: The ID of the deal linked to the activity lead_id: type: string description: The ID of the lead linked to the activity person_id: type: integer description: The ID of the person linked to the activity org_id: type: integer description: The ID of the organization linked to the activity project_id: type: integer description: The ID of the project linked to the activity due_date: type: string description: The due date of the activity due_time: type: string description: The due time of the activity duration: type: string description: The duration of the activity busy: type: boolean description: Whether the activity marks the assignee as busy or not in their calendar done: type: boolean description: Whether the activity is marked as done or not marked_as_done_time: type: string description: The date and time when the activity was marked as done location: type: object description: Location of the activity properties: value: type: string description: The full address of the activity country: type: string description: Country of the activity admin_area_level_1: type: string description: Admin area level 1 (e.g. state) of the activity admin_area_level_2: type: string description: Admin area level 2 (e.g. county) of the activity locality: type: string description: Locality (e.g. city) of the activity sublocality: type: string description: Sublocality (e.g. neighborhood) of the activity route: type: string description: Route (e.g. street) of the activity street_number: type: string description: Street number of the activity subpremise: type: string description: Subpremise (e.g. apartment/suite number) of the activity postal_code: type: string description: Postal code of the activity participants: type: array description: The participants of the activity items: type: object properties: person_id: type: integer description: The ID of the person primary: type: boolean description: Whether the person is the primary participant or not attendees: type: array description: The attendees of the activity items: type: object properties: email: type: string description: The email address of the attendee name: type: string description: The name of the attendee status: type: string description: The status of the attendee is_organizer: type: boolean description: Whether the attendee is the organizer or not person_id: type: integer description: The ID of the person if the attendee has a person record user_id: type: integer description: The ID of the user if the attendee is a user conference_meeting_client: type: string description: The client used for the conference meeting conference_meeting_url: type: string description: The URL of the conference meeting conference_meeting_id: type: string description: The ID of the conference meeting public_description: type: string description: The public description of the activity priority: type: integer description: The priority of the activity. Mappable to a specific string using activityFields API. note: type: string description: The note of the activity additional_data: type: object description: The additional data of the list properties: next_cursor: type: string description: The first item on the next page. The value of the `next_cursor` field will be `null` if you have reached the end of the dataset and there’s no more pages to be returned. example: success: true data: - id: 1 subject: Activity Subject type: activity_type owner_id: 1 creator_user_id: 1 is_deleted: false add_time: '2021-01-01T00:00:00Z' update_time: '2021-01-01T00:00:00Z' deal_id: 5 lead_id: abc-def person_id: 6 org_id: 7 project_id: 8 due_date: '2021-01-01' due_time: '15:00:00' duration: '01:00:00' busy: true done: true marked_as_done_time: '2021-01-01T00:00:00Z' location: value: 123 Main St country: USA admin_area_level_1: CA admin_area_level_2: Santa Clara locality: Sunnyvale sublocality: Downtown route: Main St street_number: '123' subpremise: Apt 1 postal_code: '94085' participants: - person_id: 1 primary: true attendees: - email: some@email.com name: Some Name status: accepted is_organizer: true person_id: 1 user_id: 1 conference_meeting_client: google_meet conference_meeting_url: 'https://meet.google.com/abc-xyz' conference_meeting_id: abc-xyz public_description: Public Description priority: 263 note: Note additional_data: next_cursor: eyJmaWVsZCI6ImlkIiwiZmllbGRWYWx1ZSI6Nywic29ydERpcmVjdGlvbiI6ImFzYyIsImlkIjo3fQ post: summary: Add a new activity description: Adds a new activity. x-token-cost: 5 operationId: addActivity tags: - Activities security: - api_key: [] - oauth2: - 'activities:full' requestBody: content: application/json: schema: type: object properties: subject: type: string description: The subject of the activity type: type: string description: The type of the activity owner_id: type: integer description: The ID of the user who owns the activity deal_id: type: integer description: The ID of the deal linked to the activity lead_id: type: string description: The ID of the lead linked to the activity person_id: type: integer description: The ID of the person linked to the activity org_id: type: integer description: The ID of the organization linked to the activity project_id: type: integer description: The ID of the project linked to the activity due_date: type: string description: The due date of the activity due_time: type: string description: The due time of the activity duration: type: string description: The duration of the activity busy: type: boolean description: Whether the activity marks the assignee as busy or not in their calendar done: type: boolean description: Whether the activity is marked as done or not location: type: object description: Location of the activity properties: value: type: string description: The full address of the activity country: type: string description: Country of the activity admin_area_level_1: type: string description: Admin area level 1 (e.g. state) of the activity admin_area_level_2: type: string description: Admin area level 2 (e.g. county) of the activity locality: type: string description: Locality (e.g. city) of the activity sublocality: type: string description: Sublocality (e.g. neighborhood) of the activity route: type: string description: Route (e.g. street) of the activity street_number: type: string description: Street number of the activity subpremise: type: string description: Subpremise (e.g. apartment/suite number) of the activity postal_code: type: string description: Postal code of the activity participants: type: array description: The participants of the activity items: type: object properties: person_id: type: integer description: The ID of the person primary: type: boolean description: Whether the person is the primary participant or not attendees: type: array description: The attendees of the activity items: type: object properties: email: type: string description: The email address of the attendee name: type: string description: The name of the attendee status: type: string description: The status of the attendee is_organizer: type: boolean description: Whether the attendee is the organizer or not person_id: type: integer description: The ID of the person if the attendee has a person record user_id: type: integer description: The ID of the user if the attendee is a user public_description: type: string description: The public description of the activity priority: type: integer description: The priority of the activity. Mappable to a specific string using activityFields API. note: type: string description: The note of the activity responses: '200': description: Add activity content: application/json: schema: type: object title: UpsertActivityResponse allOf: - title: baseResponse type: object properties: success: type: boolean description: If the response is successful or not - type: object title: UpsertActivityResponseData properties: data: type: object properties: id: type: integer description: The ID of the activity subject: type: string description: The subject of the activity type: type: string description: The type of the activity owner_id: type: integer description: The ID of the user who owns the activity creator_user_id: type: integer description: The ID of the user who created the activity is_deleted: type: boolean description: Whether the activity is deleted or not add_time: type: string description: The creation date and time of the activity update_time: type: string description: The last updated date and time of the activity deal_id: type: integer description: The ID of the deal linked to the activity lead_id: type: string description: The ID of the lead linked to the activity person_id: type: integer description: The ID of the person linked to the activity org_id: type: integer description: The ID of the organization linked to the activity project_id: type: integer description: The ID of the project linked to the activity due_date: type: string description: The due date of the activity due_time: type: string description: The due time of the activity duration: type: string description: The duration of the activity busy: type: boolean description: Whether the activity marks the assignee as busy or not in their calendar done: type: boolean description: Whether the activity is marked as done or not marked_as_done_time: type: string description: The date and time when the activity was marked as done location: type: object description: Location of the activity properties: value: type: string description: The full address of the activity country: type: string description: Country of the activity admin_area_level_1: type: string description: Admin area level 1 (e.g. state) of the activity admin_area_level_2: type: string description: Admin area level 2 (e.g. county) of the activity locality: type: string description: Locality (e.g. city) of the activity sublocality: type: string description: Sublocality (e.g. neighborhood) of the activity route: type: string description: Route (e.g. street) of the activity street_number: type: string description: Street number of the activity subpremise: type: string description: Subpremise (e.g. apartment/suite number) of the activity postal_code: type: string description: Postal code of the activity participants: type: array description: The participants of the activity items: type: object properties: person_id: type: integer description: The ID of the person primary: type: boolean description: Whether the person is the primary participant or not attendees: type: array description: The attendees of the activity items: type: object properties: email: type: string description: The email address of the attendee name: type: string description: The name of the attendee status: type: string description: The status of the attendee is_organizer: type: boolean description: Whether the attendee is the organizer or not person_id: type: integer description: The ID of the person if the attendee has a person record user_id: type: integer description: The ID of the user if the attendee is a user conference_meeting_client: type: string description: The client used for the conference meeting conference_meeting_url: type: string description: The URL of the conference meeting conference_meeting_id: type: string description: The ID of the conference meeting public_description: type: string description: The public description of the activity priority: type: integer description: The priority of the activity. Mappable to a specific string using activityFields API. note: type: string description: The note of the activity example: success: true data: id: 1 subject: Activity Subject type: activity_type owner_id: 1 creator_user_id: 1 is_deleted: false add_time: '2021-01-01T00:00:00Z' update_time: '2021-01-01T00:00:00Z' deal_id: 5 lead_id: abc-def person_id: 6 org_id: 7 project_id: 8 due_date: '2021-01-01' due_time: '15:00:00' duration: '01:00:00' busy: true done: true marked_as_done_time: '2021-01-01T00:00:00Z' location: value: 123 Main St country: USA admin_area_level_1: CA admin_area_level_2: Santa Clara locality: Sunnyvale sublocality: Downtown route: Main St street_number: '123' subpremise: Apt 1 postal_code: '94085' participants: - person_id: 1 primary: true attendees: - email: some@email.com name: Some Name status: accepted is_organizer: true person_id: 1 user_id: 1 conference_meeting_client: google_meet conference_meeting_url: 'https://meet.google.com/abc-xyz' conference_meeting_id: abc-xyz public_description: Public Description priority: 263 note: Note '/activities/{id}': delete: summary: Delete an activity description: 'Marks an activity as deleted. After 30 days, the activity will be permanently deleted.' x-token-cost: 3 operationId: deleteActivity tags: - Activities security: - api_key: [] - oauth2: - 'activities:full' parameters: - in: path name: id description: The ID of the activity required: true schema: type: integer responses: '200': description: Delete activity content: application/json: schema: title: DeleteActivityResponse type: object properties: success: type: boolean description: If the response is successful or not data: type: object properties: id: type: integer description: Deleted activity ID example: success: true data: id: 1 get: summary: Get details of an activity description: Returns the details of a specific activity. x-token-cost: 1 operationId: getActivity tags: - Activities security: - api_key: [] - oauth2: - 'activities:read' - 'activities:full' parameters: - in: path name: id description: The ID of the activity required: true schema: type: integer - in: query name: include_fields description: Optional comma separated string array of additional fields to include schema: type: string enum: - attendees responses: '200': description: Get activity content: application/json: schema: type: object title: UpsertActivityResponse allOf: - title: baseResponse type: object properties: success: type: boolean description: If the response is successful or not - type: object title: UpsertActivityResponseData properties: data: type: object properties: id: type: integer description: The ID of the activity subject: type: string description: The subject of the activity type: type: string description: The type of the activity owner_id: type: integer description: The ID of the user who owns the activity creator_user_id: type: integer description: The ID of the user who created the activity is_deleted: type: boolean description: Whether the activity is deleted or not add_time: type: string description: The creation date and time of the activity update_time: type: string description: The last updated date and time of the activity deal_id: type: integer description: The ID of the deal linked to the activity lead_id: type: string description: The ID of the lead linked to the activity person_id: type: integer description: The ID of the person linked to the activity org_id: type: integer description: The ID of the organization linked to the activity project_id: type: integer description: The ID of the project linked to the activity due_date: type: string description: The due date of the activity due_time: type: string description: The due time of the activity duration: type: string description: The duration of the activity busy: type: boolean description: Whether the activity marks the assignee as busy or not in their calendar done: type: boolean description: Whether the activity is marked as done or not marked_as_done_time: type: string description: The date and time when the activity was marked as done location: type: object description: Location of the activity properties: value: type: string description: The full address of the activity country: type: string description: Country of the activity admin_area_level_1: type: string description: Admin area level 1 (e.g. state) of the activity admin_area_level_2: type: string description: Admin area level 2 (e.g. county) of the activity locality: type: string description: Locality (e.g. city) of the activity sublocality: type: string description: Sublocality (e.g. neighborhood) of the activity route: type: string description: Route (e.g. street) of the activity street_number: type: string description: Street number of the activity subpremise: type: string description: Subpremise (e.g. apartment/suite number) of the activity postal_code: type: string description: Postal code of the activity participants: type: array description: The participants of the activity items: type: object properties: person_id: type: integer description: The ID of the person primary: type: boolean description: Whether the person is the primary participant or not attendees: type: array description: The attendees of the activity items: type: object properties: email: type: string description: The email address of the attendee name: type: string description: The name of the attendee status: type: string description: The status of the attendee is_organizer: type: boolean description: Whether the attendee is the organizer or not person_id: type: integer description: The ID of the person if the attendee has a person record user_id: type: integer description: The ID of the user if the attendee is a user conference_meeting_client: type: string description: The client used for the conference meeting conference_meeting_url: type: string description: The URL of the conference meeting conference_meeting_id: type: string description: The ID of the conference meeting public_description: type: string description: The public description of the activity priority: type: integer description: The priority of the activity. Mappable to a specific string using activityFields API. note: type: string description: The note of the activity example: success: true data: id: 1 subject: Activity Subject type: activity_type owner_id: 1 creator_user_id: 1 is_deleted: false add_time: '2021-01-01T00:00:00Z' update_time: '2021-01-01T00:00:00Z' deal_id: 5 lead_id: abc-def person_id: 6 org_id: 7 project_id: 8 due_date: '2021-01-01' due_time: '15:00:00' duration: '01:00:00' busy: true done: true marked_as_done_time: '2021-01-01T00:00:00Z' location: value: 123 Main St country: USA admin_area_level_1: CA admin_area_level_2: Santa Clara locality: Sunnyvale sublocality: Downtown route: Main St street_number: '123' subpremise: Apt 1 postal_code: '94085' participants: - person_id: 1 primary: true attendees: - email: some@email.com name: Some Name status: accepted is_organizer: true person_id: 1 user_id: 1 conference_meeting_client: google_meet conference_meeting_url: 'https://meet.google.com/abc-xyz' conference_meeting_id: abc-xyz public_description: Public Description priority: 263 note: Note patch: summary: Update an activity description: Updates the properties of an activity. x-token-cost: 5 operationId: updateActivity tags: - Activities security: - api_key: [] - oauth2: - 'activities:full' parameters: - in: path name: id description: The ID of the activity required: true schema: type: integer requestBody: content: application/json: schema: type: object properties: subject: type: string description: The subject of the activity type: type: string description: The type of the activity owner_id: type: integer description: The ID of the user who owns the activity deal_id: type: integer description: The ID of the deal linked to the activity lead_id: type: string description: The ID of the lead linked to the activity person_id: type: integer description: The ID of the person linked to the activity org_id: type: integer description: The ID of the organization linked to the activity project_id: type: integer description: The ID of the project linked to the activity due_date: type: string description: The due date of the activity due_time: type: string description: The due time of the activity duration: type: string description: The duration of the activity busy: type: boolean description: Whether the activity marks the assignee as busy or not in their calendar done: type: boolean description: Whether the activity is marked as done or not location: type: object description: Location of the activity properties: value: type: string description: The full address of the activity country: type: string description: Country of the activity admin_area_level_1: type: string description: Admin area level 1 (e.g. state) of the activity admin_area_level_2: type: string description: Admin area level 2 (e.g. county) of the activity locality: type: string description: Locality (e.g. city) of the activity sublocality: type: string description: Sublocality (e.g. neighborhood) of the activity route: type: string description: Route (e.g. street) of the activity street_number: type: string description: Street number of the activity subpremise: type: string description: Subpremise (e.g. apartment/suite number) of the activity postal_code: type: string description: Postal code of the activity participants: type: array description: The participants of the activity items: type: object properties: person_id: type: integer description: The ID of the person primary: type: boolean description: Whether the person is the primary participant or not attendees: type: array description: The attendees of the activity items: type: object properties: email: type: string description: The email address of the attendee name: type: string description: The name of the attendee status: type: string description: The status of the attendee is_organizer: type: boolean description: Whether the attendee is the organizer or not person_id: type: integer description: The ID of the person if the attendee has a person record user_id: type: integer description: The ID of the user if the attendee is a user public_description: type: string description: The public description of the activity priority: type: integer description: The priority of the activity. Mappable to a specific string using activityFields API. note: type: string description: The note of the activity responses: '200': description: Edit activity content: application/json: schema: type: object title: UpsertActivityResponse allOf: - title: baseResponse type: object properties: success: type: boolean description: If the response is successful or not - type: object title: UpsertActivityResponseData properties: data: type: object properties: id: type: integer description: The ID of the activity subject: type: string description: The subject of the activity type: type: string description: The type of the activity owner_id: type: integer description: The ID of the user who owns the activity creator_user_id: type: integer description: The ID of the user who created the activity is_deleted: type: boolean description: Whether the activity is deleted or not add_time: type: string description: The creation date and time of the activity update_time: type: string description: The last updated date and time of the activity deal_id: type: integer description: The ID of the deal linked to the activity lead_id: type: string description: The ID of the lead linked to the activity person_id: type: integer description: The ID of the person linked to the activity org_id: type: integer description: The ID of the organization linked to the activity project_id: type: integer description: The ID of the project linked to the activity due_date: type: string description: The due date of the activity due_time: type: string description: The due time of the activity duration: type: string description: The duration of the activity busy: type: boolean description: Whether the activity marks the assignee as busy or not in their calendar done: type: boolean description: Whether the activity is marked as done or not marked_as_done_time: type: string description: The date and time when the activity was marked as done location: type: object description: Location of the activity properties: value: type: string description: The full address of the activity country: type: string description: Country of the activity admin_area_level_1: type: string description: Admin area level 1 (e.g. state) of the activity admin_area_level_2: type: string description: Admin area level 2 (e.g. county) of the activity locality: type: string description: Locality (e.g. city) of the activity sublocality: type: string description: Sublocality (e.g. neighborhood) of the activity route: type: string description: Route (e.g. street) of the activity street_number: type: string description: Street number of the activity subpremise: type: string description: Subpremise (e.g. apartment/suite number) of the activity postal_code: type: string description: Postal code of the activity participants: type: array description: The participants of the activity items: type: object properties: person_id: type: integer description: The ID of the person primary: type: boolean description: Whether the person is the primary participant or not attendees: type: array description: The attendees of the activity items: type: object properties: email: type: string description: The email address of the attendee name: type: string description: The name of the attendee status: type: string description: The status of the attendee is_organizer: type: boolean description: Whether the attendee is the organizer or not person_id: type: integer description: The ID of the person if the attendee has a person record user_id: type: integer description: The ID of the user if the attendee is a user conference_meeting_client: type: string description: The client used for the conference meeting conference_meeting_url: type: string description: The URL of the conference meeting conference_meeting_id: type: string description: The ID of the conference meeting public_description: type: string description: The public description of the activity priority: type: integer description: The priority of the activity. Mappable to a specific string using activityFields API. note: type: string description: The note of the activity example: success: true data: id: 1 subject: Activity Subject type: activity_type owner_id: 1 creator_user_id: 1 is_deleted: false add_time: '2021-01-01T00:00:00Z' update_time: '2021-01-01T00:00:00Z' deal_id: 5 lead_id: abc-def person_id: 6 org_id: 7 project_id: 8 due_date: '2021-01-01' due_time: '15:00:00' duration: '01:00:00' busy: true done: true marked_as_done_time: '2021-01-01T00:00:00Z' location: value: 123 Main St country: USA admin_area_level_1: CA admin_area_level_2: Santa Clara locality: Sunnyvale sublocality: Downtown route: Main St street_number: '123' subpremise: Apt 1 postal_code: '94085' participants: - person_id: 1 primary: true attendees: - email: some@email.com name: Some Name status: accepted is_organizer: true person_id: 1 user_id: 1 conference_meeting_client: google_meet conference_meeting_url: 'https://meet.google.com/abc-xyz' conference_meeting_id: abc-xyz public_description: Public Description priority: 263 note: Note /activityFields: get: summary: Get all activity fields description: Returns metadata about all activity fields in the company. x-token-cost: 10 operationId: getActivityFields tags: - ActivityFields security: - api_key: [] - oauth2: - admin parameters: - in: query name: include_fields description: Optional comma separated string array of additional data namespaces to include in response schema: type: string enum: - ui_visibility - in: query name: limit description: 'For pagination, the limit of entries to be returned. If not provided, 100 items will be returned. Please note that a maximum value of 500 is allowed.' schema: type: integer example: 100 - in: query name: cursor required: false schema: type: string description: 'For pagination, the marker (an opaque string value) representing the first item on the next page' responses: '200': description: Get all activity fields content: application/json: schema: type: object properties: success: type: boolean description: Whether the request was successful data: type: array items: type: object required: - field_name - field_code - field_type - is_custom_field - is_optional_response_field properties: field_name: type: string description: The display name/label of the field field_code: type: string description: The unique identifier for the field (40-character hash for custom fields) field_type: type: string description: The type of the field enum: - int - double - boolean - varchar - text - phone - varchar_options - varchar_auto - date - daterange - time - timerange - enum - set - address - monetary - deal - deals - lead - org - people - project - stage - user - activity - json - picture - status - visible_to - price_list - billing_frequency - projects_board - projects_phase options: type: array nullable: true description: 'Array of available options for enum/set fields, null for other field types' items: type: object properties: id: type: integer description: The option ID label: type: string description: The option display label color: type: string nullable: true description: Optional color code for the option update_time: type: string format: date-time nullable: true description: When the option was last updated add_time: type: string format: date-time nullable: true description: When the option was created subfields: type: array nullable: true description: 'Array of subfields for complex field types (address, monetary), null for simple field types' items: type: object properties: field_code: type: string description: The subfield identifier field_name: type: string description: The subfield display name field_type: type: string description: The subfield type is_custom_field: type: boolean description: Whether this is a user-created custom field is_optional_response_field: type: boolean description: Whether this field is not returned by default in entity responses ui_visibility: type: object description: UI visibility settings (only included when requested via include_fields parameter) properties: add_visible_flag: type: boolean description: Whether the field is shown in the add modal details_visible_flag: type: boolean description: Whether the field is shown in the details view (read-only) additional_data: type: object properties: next_cursor: type: string nullable: true description: 'Base64url-encoded cursor for fetching the next page of results, null if no more pages' example: success: true data: - field_name: Subject field_code: subject description: The subject or title of the activity field_type: varchar options: null subfields: null is_custom_field: false is_optional_response_field: false ui_visibility: add_visible_flag: true details_visible_flag: true - field_name: Status field_code: 40characterhashforcustomfieldidentifier description: Current status of the activity field_type: enum options: - id: 1 label: Not Started - id: 2 label: In Progress - id: 3 label: Completed subfields: null is_custom_field: true is_optional_response_field: false ui_visibility: add_visible_flag: true details_visible_flag: true - field_name: Location field_code: location description: Physical location where the activity takes place field_type: address options: null subfields: - field_code: value field_name: Address value of Location field_type: varchar - field_code: street_number field_name: House number of Location field_type: varchar - field_code: route field_name: Street/road name of Location field_type: varchar - field_code: subpremise field_name: Apartment/suite of Location field_type: varchar - field_code: locality field_name: District of Location field_type: varchar - field_code: admin_area_level_1 field_name: State/province of Location field_type: varchar - field_code: admin_area_level_2 field_name: County of Location field_type: varchar - field_code: country field_name: Country of Location field_type: varchar - field_code: postal_code field_name: Postal code of Location field_type: varchar - field_code: formatted_address field_name: Formatted address of Location field_type: varchar is_custom_field: false is_optional_response_field: false ui_visibility: add_visible_flag: true details_visible_flag: true additional_data: next_cursor: eyJmaWVsZCI6ImlkIiwiZmllbGRWYWx1ZSI6Nywic29ydERpcmVjdGlvbiI6ImFzYyIsImlkIjo3fQ '/activityFields/{field_code}': get: summary: Get one activity field description: Returns metadata about a specific activity field. x-token-cost: 1 operationId: getActivityField tags: - ActivityFields security: - api_key: [] - oauth2: - admin parameters: - in: path name: field_code description: The unique code identifying the field required: true schema: type: string - in: query name: include_fields description: Optional comma separated string array of additional data namespaces to include in response schema: type: string enum: - ui_visibility responses: '200': description: Get one activity field content: application/json: schema: type: object properties: success: type: boolean description: Whether the request was successful data: type: object required: - field_name - field_code - field_type - is_custom_field - is_optional_response_field properties: field_name: type: string description: The display name/label of the field field_code: type: string description: The unique identifier for the field (40-character hash for custom fields) field_type: type: string description: The type of the field enum: - int - double - boolean - varchar - text - phone - varchar_options - varchar_auto - date - daterange - time - timerange - enum - set - address - monetary - deal - deals - lead - org - people - project - stage - user - activity - json - picture - status - visible_to - price_list - billing_frequency - projects_board - projects_phase options: type: array nullable: true description: 'Array of available options for enum/set fields, null for other field types' items: type: object properties: id: type: integer description: The option ID label: type: string description: The option display label color: type: string nullable: true description: Optional color code for the option update_time: type: string format: date-time nullable: true description: When the option was last updated add_time: type: string format: date-time nullable: true description: When the option was created subfields: type: array nullable: true description: 'Array of subfields for complex field types (address, monetary), null for simple field types' items: type: object properties: field_code: type: string description: The subfield identifier field_name: type: string description: The subfield display name field_type: type: string description: The subfield type is_custom_field: type: boolean description: Whether this is a user-created custom field is_optional_response_field: type: boolean description: Whether this field is not returned by default in entity responses ui_visibility: type: object description: UI visibility settings (only included when requested via include_fields parameter) properties: add_visible_flag: type: boolean description: Whether the field is shown in the add modal details_visible_flag: type: boolean description: Whether the field is shown in the details view (read-only) example: success: true data: field_name: Subject field_code: subject description: The subject or title of the activity field_type: varchar options: null subfields: null is_custom_field: false is_optional_response_field: false ui_visibility: add_visible_flag: true details_visible_flag: true /deals: get: summary: Get all deals description: Returns data about all not archived deals. x-tool-description: 'Retrieves paginated active deals with filtering by owner, person, organization, pipeline, stage, status, and time ranges. Essential for analytics, reporting, dashboard views, and bulk operations. Filters combine for precise selection; filter_id overrides individual filters.' x-token-cost: 10 operationId: getDeals tags: - Deals security: - api_key: [] - oauth2: - 'deals:read' - 'deals:full' parameters: - in: query name: filter_id schema: type: integer description: 'If supplied, only deals matching the specified filter are returned' - in: query name: ids description: 'Optional comma separated string array of up to 100 entity ids to fetch. If filter_id is provided, this is ignored. If any of the requested entities do not exist or are not visible, they are not included in the response.' schema: type: string - in: query name: owner_id schema: type: integer description: 'If supplied, only deals owned by the specified user are returned. If filter_id is provided, this is ignored.' - in: query name: person_id schema: type: integer description: 'If supplied, only deals linked to the specified person are returned. If filter_id is provided, this is ignored.' - in: query name: org_id schema: type: integer description: 'If supplied, only deals linked to the specified organization are returned. If filter_id is provided, this is ignored.' - in: query name: pipeline_id schema: type: integer description: 'If supplied, only deals in the specified pipeline are returned. If filter_id is provided, this is ignored.' - in: query name: stage_id schema: type: integer description: 'If supplied, only deals in the specified stage are returned. If filter_id is provided, this is ignored.' - in: query name: status schema: type: string enum: - open - won - lost - deleted description: 'Only fetch deals with a specific status. If omitted, all not deleted deals are returned. If set to deleted, deals that have been deleted up to 30 days ago will be included. Multiple statuses can be included as a comma separated array. If filter_id is provided, this is ignored.' - in: query name: updated_since schema: type: string description: 'If set, only deals with an `update_time` later than or equal to this time are returned. In RFC3339 format, e.g. 2025-01-01T10:20:00Z.' - in: query name: updated_until schema: type: string description: 'If set, only deals with an `update_time` earlier than this time are returned. In RFC3339 format, e.g. 2025-01-01T10:20:00Z.' - in: query name: sort_by description: 'The field to sort by. Supported fields: `id`, `update_time`, `add_time`.' schema: type: string default: id enum: - id - update_time - add_time - in: query name: sort_direction description: 'The sorting direction. Supported values: `asc`, `desc`.' schema: type: string default: asc enum: - asc - desc - in: query name: include_fields description: Optional comma separated string array of additional fields to include schema: type: string enum: - next_activity_id - last_activity_id - first_won_time - products_count - files_count - notes_count - followers_count - email_messages_count - activities_count - done_activities_count - undone_activities_count - participants_count - last_incoming_mail_time - last_outgoing_mail_time - smart_bcc_email - source_lead_id - in: query name: custom_fields description: 'Optional comma separated string array of custom fields keys to include. If you are only interested in a particular set of custom fields, please use this parameter for faster results and smaller response.
A maximum of 15 keys is allowed.' schema: type: string - in: query name: include_option_labels description: 'When provided with a ''true'' value, single option and multiple option custom fields values contain objects in the form of ''{ id: number, label: string }'' instead of plain id' schema: type: boolean - in: query name: include_labels description: 'When provided with ''true'' value, response will include an array of label objects in the form of ''{ id: number, label: string }''' schema: type: boolean - in: query name: limit description: 'For pagination, the limit of entries to be returned. If not provided, 100 items will be returned. Please note that a maximum value of 500 is allowed.' schema: type: integer example: 100 - in: query name: cursor required: false schema: type: string description: 'For pagination, the marker (an opaque string value) representing the first item on the next page' responses: '200': description: Get all not archived deals content: application/json: schema: type: object title: GetDealsResponse allOf: - title: baseResponse type: object properties: success: type: boolean description: If the response is successful or not - type: object properties: data: type: array description: Deals array items: type: object properties: id: type: integer description: The ID of the deal title: type: string description: The title of the deal owner_id: type: integer description: The ID of the user who owns the deal person_id: type: integer description: The ID of the person linked to the deal org_id: type: integer description: The ID of the organization linked to the deal pipeline_id: type: integer description: The ID of the pipeline associated with the deal stage_id: type: integer description: The ID of the deal stage value: type: number description: The value of the deal currency: type: string description: The currency associated with the deal add_time: type: string description: The creation date and time of the deal update_time: type: string description: The last updated date and time of the deal stage_change_time: type: string description: The last updated date and time of the deal stage is_deleted: type: boolean description: Whether the deal is deleted or not is_archived: type: boolean description: Whether the deal is archived or not status: type: string description: The status of the deal probability: type: number nullable: true description: The success probability percentage of the deal lost_reason: type: string nullable: true description: The reason for losing the deal visible_to: type: integer description: The visibility of the deal close_time: type: string nullable: true description: The date and time of closing the deal won_time: type: string description: The date and time of changing the deal status as won lost_time: type: string description: The date and time of changing the deal status as lost expected_close_date: type: string format: date description: The expected close date of the deal label_ids: type: array description: The IDs of labels assigned to the deal items: type: integer origin: type: string description: The way this Deal was created. `origin` field is set by Pipedrive when Deal is created and cannot be changed. origin_id: type: string nullable: true description: The optional ID to further distinguish the origin of the deal - e.g. Which API integration created this Deal. channel: type: integer nullable: true description: 'The ID of your Marketing channel this Deal was created from. Recognized Marketing channels can be configured in your Company settings.' channel_id: type: string nullable: true description: The optional ID to further distinguish the Marketing channel. source_lead_id: type: string format: uuid nullable: true description: The ID of the lead if the deal was converted from a lead. Only included when requested via include_fields parameter. arr: type: number nullable: true description: | Only available in Growth and above plans The Annual Recurring Revenue of the deal Null if there are no products attached to the deal mrr: type: number nullable: true description: | Only available in Growth and above plans The Monthly Recurring Revenue of the deal Null if there are no products attached to the deal acv: type: number nullable: true description: | Only available in Growth and above plans The Annual Contract Value of the deal Null if there are no products attached to the deal custom_fields: type: object additionalProperties: true description: 'An object where each key represents a custom field. All custom fields are referenced as randomly generated 40-character hashes. To clear a custom field value, set it to `null`. For multi-option fields (field type `set`), use `null` to clear the selection — sending an empty array `[]` is not supported and will result in a validation error.' additional_data: type: object description: The additional data of the list properties: next_cursor: type: string description: The first item on the next page. The value of the `next_cursor` field will be `null` if you have reached the end of the dataset and there’s no more pages to be returned. example: success: true data: - id: 1 title: Deal Title creator_user_id: 1 owner_id: 1 value: 200 person_id: 1 org_id: 1 stage_id: 1 pipeline_id: 1 currency: USD archive_time: '2021-01-01T00:00:00Z' add_time: '2021-01-01T00:00:00Z' update_time: '2021-01-01T00:00:00Z' stage_change_time: '2021-01-01T00:00:00Z' status: open is_archived: false is_deleted: false probability: 90 lost_reason: Lost Reason visible_to: 7 close_time: '2021-01-01T00:00:00Z' won_time: '2021-01-01T00:00:00Z' lost_time: '2021-01-01T00:00:00Z' local_won_date: '2021-01-01' local_lost_date: '2021-01-01' local_close_date: '2021-01-01' expected_close_date: '2021-01-01' label_ids: - 1 - 2 - 3 origin: ManuallyCreated origin_id: null channel: 52 channel_id: Jun23 Billboards source_lead_id: 35b0d604-eb0d-42d0-be11-eac8832051f0 acv: 120 arr: 120 mrr: 10 custom_fields: {} additional_data: next_cursor: eyJmaWVsZCI6ImlkIiwiZmllbGRWYWx1ZSI6Nywic29ydERpcmVjdGlvbiI6ImFzYyIsImlkIjo3fQ post: summary: Add a new deal description: Adds a new deal. x-tool-description: 'Creates new sales deals with customizable properties: title (required), value, person, organization, pipeline stage, and custom fields. Essential for lead conversion, sales processes, and integrations. Automatically assigns timestamps and ownership.' x-token-cost: 5 operationId: addDeal tags: - Deals security: - api_key: [] - oauth2: - 'deals:full' requestBody: content: application/json: schema: required: - title type: object properties: title: type: string description: The title of the deal owner_id: type: integer description: The ID of the user who owns the deal person_id: type: integer description: The ID of the person linked to the deal org_id: type: integer description: The ID of the organization linked to the deal pipeline_id: type: integer description: The ID of the pipeline associated with the deal stage_id: type: integer description: The ID of the deal stage value: type: number description: The value of the deal currency: type: string description: The currency associated with the deal is_deleted: type: boolean description: Whether the deal is deleted or not is_archived: type: boolean description: Whether the deal is archived or not archive_time: type: string description: 'The optional date and time of archiving the deal in UTC. Format: YYYY-MM-DD HH:MM:SS. If omitted and `is_archived` is true, it will be set to the current date and time.' status: type: string description: The status of the deal probability: type: number nullable: true description: The success probability percentage of the deal lost_reason: type: string nullable: true description: The reason for losing the deal. Can only be set if deal status is lost. visible_to: type: integer description: The visibility of the deal close_time: type: string nullable: true description: The date and time of closing the deal. Can only be set if deal status is won or lost. won_time: type: string description: The date and time of changing the deal status as won. Can only be set if deal status is won. lost_time: type: string description: The date and time of changing the deal status as lost. Can only be set if deal status is lost. expected_close_date: type: string format: date description: The expected close date of the deal label_ids: type: array description: The IDs of labels assigned to the deal items: type: integer custom_fields: type: object additionalProperties: true description: 'An object where each key represents a custom field. All custom fields are referenced as randomly generated 40-character hashes. To clear a custom field value, set it to `null`. For multi-option fields (field type `set`), use `null` to clear the selection — sending an empty array `[]` is not supported and will result in a validation error.' responses: '200': description: Add deal content: application/json: schema: type: object title: UpsertDealResponse allOf: - title: baseResponse type: object properties: success: type: boolean description: If the response is successful or not - type: object title: UpsertDealResponseData properties: data: type: object properties: id: type: integer description: The ID of the deal title: type: string description: The title of the deal owner_id: type: integer description: The ID of the user who owns the deal person_id: type: integer description: The ID of the person linked to the deal org_id: type: integer description: The ID of the organization linked to the deal pipeline_id: type: integer description: The ID of the pipeline associated with the deal stage_id: type: integer description: The ID of the deal stage value: type: number description: The value of the deal currency: type: string description: The currency associated with the deal add_time: type: string description: The creation date and time of the deal update_time: type: string description: The last updated date and time of the deal stage_change_time: type: string description: The last updated date and time of the deal stage is_deleted: type: boolean description: Whether the deal is deleted or not is_archived: type: boolean description: Whether the deal is archived or not status: type: string description: The status of the deal probability: type: number nullable: true description: The success probability percentage of the deal lost_reason: type: string nullable: true description: The reason for losing the deal visible_to: type: integer description: The visibility of the deal close_time: type: string nullable: true description: The date and time of closing the deal won_time: type: string description: The date and time of changing the deal status as won lost_time: type: string description: The date and time of changing the deal status as lost expected_close_date: type: string format: date description: The expected close date of the deal label_ids: type: array description: The IDs of labels assigned to the deal items: type: integer origin: type: string description: The way this Deal was created. `origin` field is set by Pipedrive when Deal is created and cannot be changed. origin_id: type: string nullable: true description: The optional ID to further distinguish the origin of the deal - e.g. Which API integration created this Deal. channel: type: integer nullable: true description: 'The ID of your Marketing channel this Deal was created from. Recognized Marketing channels can be configured in your Company settings.' channel_id: type: string nullable: true description: The optional ID to further distinguish the Marketing channel. source_lead_id: type: string format: uuid nullable: true description: The ID of the lead if the deal was converted from a lead. Only included when requested via include_fields parameter. arr: type: number nullable: true description: | Only available in Growth and above plans The Annual Recurring Revenue of the deal Null if there are no products attached to the deal mrr: type: number nullable: true description: | Only available in Growth and above plans The Monthly Recurring Revenue of the deal Null if there are no products attached to the deal acv: type: number nullable: true description: | Only available in Growth and above plans The Annual Contract Value of the deal Null if there are no products attached to the deal custom_fields: type: object additionalProperties: true description: 'An object where each key represents a custom field. All custom fields are referenced as randomly generated 40-character hashes. To clear a custom field value, set it to `null`. For multi-option fields (field type `set`), use `null` to clear the selection — sending an empty array `[]` is not supported and will result in a validation error.' example: success: true data: id: 1 title: Deal Title creator_user_id: 1 owner_id: 1 value: 200 person_id: 1 org_id: 1 stage_id: 1 pipeline_id: 1 currency: USD archive_time: '2021-01-01T00:00:00Z' add_time: '2021-01-01T00:00:00Z' update_time: '2021-01-01T00:00:00Z' stage_change_time: '2021-01-01T00:00:00Z' status: open is_archived: false is_deleted: false probability: 90 lost_reason: Lost Reason visible_to: 7 close_time: '2021-01-01T00:00:00Z' won_time: '2021-01-01T00:00:00Z' lost_time: '2021-01-01T00:00:00Z' local_won_date: '2021-01-01' local_lost_date: '2021-01-01' local_close_date: '2021-01-01' expected_close_date: '2021-01-01' label_ids: - 1 - 2 - 3 origin: ManuallyCreated origin_id: null channel: 52 channel_id: Jun23 Billboards source_lead_id: 35b0d604-eb0d-42d0-be11-eac8832051f0 acv: 120 arr: 120 mrr: 10 custom_fields: {} /deals/archived: get: summary: Get all archived deals description: Returns data about all archived deals. x-tool-description: 'Retrieves paginated archived deals with same filtering as active deals. Essential for historical analysis, closed opportunity reporting, data recovery, and audit trails. Supports filtering by owner, person, organization, pipeline, stage, and time ranges.' x-token-cost: 20 operationId: getArchivedDeals tags: - Deals security: - api_key: [] - oauth2: - 'deals:read' - 'deals:full' parameters: - in: query name: filter_id schema: type: integer description: 'If supplied, only deals matching the specified filter are returned' - in: query name: ids description: 'Optional comma separated string array of up to 100 entity ids to fetch. If filter_id is provided, this is ignored. If any of the requested entities do not exist or are not visible, they are not included in the response.' schema: type: string - in: query name: owner_id schema: type: integer description: 'If supplied, only deals owned by the specified user are returned. If filter_id is provided, this is ignored.' - in: query name: person_id schema: type: integer description: 'If supplied, only deals linked to the specified person are returned. If filter_id is provided, this is ignored.' - in: query name: org_id schema: type: integer description: 'If supplied, only deals linked to the specified organization are returned. If filter_id is provided, this is ignored.' - in: query name: pipeline_id schema: type: integer description: 'If supplied, only deals in the specified pipeline are returned. If filter_id is provided, this is ignored.' - in: query name: stage_id schema: type: integer description: 'If supplied, only deals in the specified stage are returned. If filter_id is provided, this is ignored.' - in: query name: status schema: type: string enum: - open - won - lost - deleted description: 'Only fetch deals with a specific status. If omitted, all not deleted deals are returned. If set to deleted, deals that have been deleted up to 30 days ago will be included. Multiple statuses can be included as a comma separated array. If filter_id is provided, this is ignored.' - in: query name: updated_since schema: type: string description: 'If set, only deals with an `update_time` later than or equal to this time are returned. In RFC3339 format, e.g. 2025-01-01T10:20:00Z.' - in: query name: updated_until schema: type: string description: 'If set, only deals with an `update_time` earlier than this time are returned. In RFC3339 format, e.g. 2025-01-01T10:20:00Z.' - in: query name: sort_by description: 'The field to sort by. Supported fields: `id`, `update_time`, `add_time`.' schema: type: string default: id enum: - id - update_time - add_time - in: query name: sort_direction description: 'The sorting direction. Supported values: `asc`, `desc`.' schema: type: string default: asc enum: - asc - desc - in: query name: include_fields description: Optional comma separated string array of additional fields to include schema: type: string enum: - next_activity_id - last_activity_id - first_won_time - products_count - files_count - notes_count - followers_count - email_messages_count - activities_count - done_activities_count - undone_activities_count - participants_count - last_incoming_mail_time - last_outgoing_mail_time - smart_bcc_email - source_lead_id - in: query name: custom_fields description: 'Optional comma separated string array of custom fields keys to include. If you are only interested in a particular set of custom fields, please use this parameter for faster results and smaller response.
A maximum of 15 keys is allowed.' schema: type: string - in: query name: limit description: 'For pagination, the limit of entries to be returned. If not provided, 100 items will be returned. Please note that a maximum value of 500 is allowed.' schema: type: integer example: 100 - in: query name: cursor required: false schema: type: string description: 'For pagination, the marker (an opaque string value) representing the first item on the next page' responses: '200': description: Get all archived deals content: application/json: schema: type: object title: GetDealsResponse allOf: - title: baseResponse type: object properties: success: type: boolean description: If the response is successful or not - type: object properties: data: type: array description: Deals array items: type: object properties: id: type: integer description: The ID of the deal title: type: string description: The title of the deal owner_id: type: integer description: The ID of the user who owns the deal person_id: type: integer description: The ID of the person linked to the deal org_id: type: integer description: The ID of the organization linked to the deal pipeline_id: type: integer description: The ID of the pipeline associated with the deal stage_id: type: integer description: The ID of the deal stage value: type: number description: The value of the deal currency: type: string description: The currency associated with the deal add_time: type: string description: The creation date and time of the deal update_time: type: string description: The last updated date and time of the deal stage_change_time: type: string description: The last updated date and time of the deal stage is_deleted: type: boolean description: Whether the deal is deleted or not is_archived: type: boolean description: Whether the deal is archived or not status: type: string description: The status of the deal probability: type: number nullable: true description: The success probability percentage of the deal lost_reason: type: string nullable: true description: The reason for losing the deal visible_to: type: integer description: The visibility of the deal close_time: type: string nullable: true description: The date and time of closing the deal won_time: type: string description: The date and time of changing the deal status as won lost_time: type: string description: The date and time of changing the deal status as lost expected_close_date: type: string format: date description: The expected close date of the deal label_ids: type: array description: The IDs of labels assigned to the deal items: type: integer origin: type: string description: The way this Deal was created. `origin` field is set by Pipedrive when Deal is created and cannot be changed. origin_id: type: string nullable: true description: The optional ID to further distinguish the origin of the deal - e.g. Which API integration created this Deal. channel: type: integer nullable: true description: 'The ID of your Marketing channel this Deal was created from. Recognized Marketing channels can be configured in your Company settings.' channel_id: type: string nullable: true description: The optional ID to further distinguish the Marketing channel. source_lead_id: type: string format: uuid nullable: true description: The ID of the lead if the deal was converted from a lead. Only included when requested via include_fields parameter. arr: type: number nullable: true description: | Only available in Growth and above plans The Annual Recurring Revenue of the deal Null if there are no products attached to the deal mrr: type: number nullable: true description: | Only available in Growth and above plans The Monthly Recurring Revenue of the deal Null if there are no products attached to the deal acv: type: number nullable: true description: | Only available in Growth and above plans The Annual Contract Value of the deal Null if there are no products attached to the deal custom_fields: type: object additionalProperties: true description: 'An object where each key represents a custom field. All custom fields are referenced as randomly generated 40-character hashes. To clear a custom field value, set it to `null`. For multi-option fields (field type `set`), use `null` to clear the selection — sending an empty array `[]` is not supported and will result in a validation error.' additional_data: type: object description: The additional data of the list properties: next_cursor: type: string description: The first item on the next page. The value of the `next_cursor` field will be `null` if you have reached the end of the dataset and there’s no more pages to be returned. example: success: true data: - id: 1 title: Deal Title creator_user_id: 1 owner_id: 1 value: 200 person_id: 1 org_id: 1 stage_id: 1 pipeline_id: 1 currency: USD archive_time: '2021-01-01T00:00:00Z' add_time: '2021-01-01T00:00:00Z' update_time: '2021-01-01T00:00:00Z' stage_change_time: '2021-01-01T00:00:00Z' status: open is_archived: true is_deleted: false probability: 90 lost_reason: Lost Reason visible_to: 7 close_time: '2021-01-01T00:00:00Z' won_time: '2021-01-01T00:00:00Z' lost_time: '2021-01-01T00:00:00Z' local_won_date: '2021-01-01' local_lost_date: '2021-01-01' local_close_date: '2021-01-01' expected_close_date: '2021-01-01' label_ids: - 1 - 2 - 3 origin: ManuallyCreated origin_id: null channel: 52 channel_id: Jun23 Billboards source_lead_id: 35b0d604-eb0d-42d0-be11-eac8832051f0 acv: 120 arr: 120 mrr: 10 custom_fields: {} additional_data: next_cursor: eyJmaWVsZCI6ImlkIiwiZmllbGRWYWx1ZSI6Nywic29ydERpcmVjdGlvbiI6ImFzYyIsImlkIjo3fQ '/deals/{id}': delete: summary: Delete a deal description: 'Marks a deal as deleted. After 30 days, the deal will be permanently deleted.' x-tool-description: 'Soft-deletes deals with 30-day recovery period before permanent removal. Essential for deal cleanup, error correction, and removing unwanted opportunities. Becomes inaccessible via standard APIs but recoverable during grace period.' x-token-cost: 3 operationId: deleteDeal tags: - Deals security: - api_key: [] - oauth2: - 'deals:full' parameters: - in: path name: id description: The ID of the deal required: true schema: type: integer responses: '200': description: Delete deal content: application/json: schema: title: DeleteDealResponse type: object properties: success: type: boolean description: If the response is successful or not data: type: object properties: id: type: integer description: Deleted deal ID example: success: true data: id: 1 get: summary: Get details of a deal description: Returns the details of a specific deal. x-tool-description: 'Fetches comprehensive details of a specific deal by ID, including all properties, custom fields, associated contacts, and metadata. Use this endpoint for deal detail pages, updating deal information, or when you need complete deal context. Supports optional field inclusion for optimized data retrieval and custom field expansion for enhanced deal analysis.' x-token-cost: 1 operationId: getDeal tags: - Deals security: - api_key: [] - oauth2: - 'deals:read' - 'deals:full' parameters: - in: path name: id description: The ID of the deal required: true schema: type: integer - in: query name: include_fields description: Optional comma separated string array of additional fields to include schema: type: string enum: - next_activity_id - last_activity_id - first_won_time - products_count - files_count - notes_count - followers_count - email_messages_count - activities_count - done_activities_count - undone_activities_count - participants_count - last_incoming_mail_time - last_outgoing_mail_time - smart_bcc_email - source_lead_id - in: query name: custom_fields description: 'Optional comma separated string array of custom fields keys to include. If you are only interested in a particular set of custom fields, please use this parameter for faster results and smaller response.
A maximum of 15 keys is allowed.' schema: type: string - in: query name: include_option_labels description: 'When provided with a ''true'' value, single option and multiple option custom fields values contain objects in the form of ''{ id: number, label: string }'' instead of plain id' schema: type: boolean - in: query name: include_labels description: 'When provided with ''true'' value, response will include an array of label objects in the form of ''{ id: number, label: string }''' schema: type: boolean responses: '200': description: Get deal content: application/json: schema: type: object title: UpsertDealResponse allOf: - title: baseResponse type: object properties: success: type: boolean description: If the response is successful or not - type: object title: UpsertDealResponseData properties: data: type: object properties: id: type: integer description: The ID of the deal title: type: string description: The title of the deal owner_id: type: integer description: The ID of the user who owns the deal person_id: type: integer description: The ID of the person linked to the deal org_id: type: integer description: The ID of the organization linked to the deal pipeline_id: type: integer description: The ID of the pipeline associated with the deal stage_id: type: integer description: The ID of the deal stage value: type: number description: The value of the deal currency: type: string description: The currency associated with the deal add_time: type: string description: The creation date and time of the deal update_time: type: string description: The last updated date and time of the deal stage_change_time: type: string description: The last updated date and time of the deal stage is_deleted: type: boolean description: Whether the deal is deleted or not is_archived: type: boolean description: Whether the deal is archived or not status: type: string description: The status of the deal probability: type: number nullable: true description: The success probability percentage of the deal lost_reason: type: string nullable: true description: The reason for losing the deal visible_to: type: integer description: The visibility of the deal close_time: type: string nullable: true description: The date and time of closing the deal won_time: type: string description: The date and time of changing the deal status as won lost_time: type: string description: The date and time of changing the deal status as lost expected_close_date: type: string format: date description: The expected close date of the deal label_ids: type: array description: The IDs of labels assigned to the deal items: type: integer origin: type: string description: The way this Deal was created. `origin` field is set by Pipedrive when Deal is created and cannot be changed. origin_id: type: string nullable: true description: The optional ID to further distinguish the origin of the deal - e.g. Which API integration created this Deal. channel: type: integer nullable: true description: 'The ID of your Marketing channel this Deal was created from. Recognized Marketing channels can be configured in your Company settings.' channel_id: type: string nullable: true description: The optional ID to further distinguish the Marketing channel. source_lead_id: type: string format: uuid nullable: true description: The ID of the lead if the deal was converted from a lead. Only included when requested via include_fields parameter. arr: type: number nullable: true description: | Only available in Growth and above plans The Annual Recurring Revenue of the deal Null if there are no products attached to the deal mrr: type: number nullable: true description: | Only available in Growth and above plans The Monthly Recurring Revenue of the deal Null if there are no products attached to the deal acv: type: number nullable: true description: | Only available in Growth and above plans The Annual Contract Value of the deal Null if there are no products attached to the deal custom_fields: type: object additionalProperties: true description: 'An object where each key represents a custom field. All custom fields are referenced as randomly generated 40-character hashes. To clear a custom field value, set it to `null`. For multi-option fields (field type `set`), use `null` to clear the selection — sending an empty array `[]` is not supported and will result in a validation error.' example: success: true data: id: 1 title: Deal Title creator_user_id: 1 owner_id: 1 value: 200 person_id: 1 org_id: 1 stage_id: 1 pipeline_id: 1 currency: USD archive_time: '2021-01-01T00:00:00Z' add_time: '2021-01-01T00:00:00Z' update_time: '2021-01-01T00:00:00Z' stage_change_time: '2021-01-01T00:00:00Z' status: open is_archived: false is_deleted: false probability: 90 lost_reason: Lost Reason visible_to: 7 close_time: '2021-01-01T00:00:00Z' won_time: '2021-01-01T00:00:00Z' lost_time: '2021-01-01T00:00:00Z' local_won_date: '2021-01-01' local_lost_date: '2021-01-01' local_close_date: '2021-01-01' expected_close_date: '2021-01-01' label_ids: - 1 - 2 - 3 origin: ManuallyCreated origin_id: null channel: 52 channel_id: Jun23 Billboards source_lead_id: 35b0d604-eb0d-42d0-be11-eac8832051f0 acv: 120 arr: 120 mrr: 10 custom_fields: {} patch: summary: Update a deal description: Updates the properties of a deal. x-tool-description: 'Modifies deal properties using PATCH semantics for partial updates without affecting unchanged fields. Essential for deal progression, value updates, stage changes, and workflow automation. Preserves data integrity by updating only provided fields.' x-token-cost: 5 operationId: updateDeal tags: - Deals security: - api_key: [] - oauth2: - 'deals:full' parameters: - in: path name: id description: The ID of the deal required: true schema: type: integer requestBody: content: application/json: schema: type: object properties: title: type: string description: The title of the deal owner_id: type: integer description: The ID of the user who owns the deal person_id: type: integer description: The ID of the person linked to the deal org_id: type: integer description: The ID of the organization linked to the deal pipeline_id: type: integer description: The ID of the pipeline associated with the deal stage_id: type: integer description: The ID of the deal stage value: type: number description: The value of the deal currency: type: string description: The currency associated with the deal is_deleted: type: boolean description: Whether the deal is deleted or not is_archived: type: boolean description: Whether the deal is archived or not archive_time: type: string description: 'The optional date and time of archiving the deal in UTC. Format: YYYY-MM-DD HH:MM:SS. If omitted and `is_archived` is true, it will be set to the current date and time.' status: type: string description: The status of the deal probability: type: number nullable: true description: The success probability percentage of the deal lost_reason: type: string nullable: true description: The reason for losing the deal. Can only be set if deal status is lost. visible_to: type: integer description: The visibility of the deal close_time: type: string nullable: true description: The date and time of closing the deal. Can only be set if deal status is won or lost. won_time: type: string description: The date and time of changing the deal status as won. Can only be set if deal status is won. lost_time: type: string description: The date and time of changing the deal status as lost. Can only be set if deal status is lost. expected_close_date: type: string format: date description: The expected close date of the deal label_ids: type: array description: The IDs of labels assigned to the deal items: type: integer custom_fields: type: object additionalProperties: true description: 'An object where each key represents a custom field. All custom fields are referenced as randomly generated 40-character hashes. To clear a custom field value, set it to `null`. For multi-option fields (field type `set`), use `null` to clear the selection — sending an empty array `[]` is not supported and will result in a validation error.' responses: '200': description: Edit deal content: application/json: schema: type: object title: UpsertDealResponse allOf: - title: baseResponse type: object properties: success: type: boolean description: If the response is successful or not - type: object title: UpsertDealResponseData properties: data: type: object properties: id: type: integer description: The ID of the deal title: type: string description: The title of the deal owner_id: type: integer description: The ID of the user who owns the deal person_id: type: integer description: The ID of the person linked to the deal org_id: type: integer description: The ID of the organization linked to the deal pipeline_id: type: integer description: The ID of the pipeline associated with the deal stage_id: type: integer description: The ID of the deal stage value: type: number description: The value of the deal currency: type: string description: The currency associated with the deal add_time: type: string description: The creation date and time of the deal update_time: type: string description: The last updated date and time of the deal stage_change_time: type: string description: The last updated date and time of the deal stage is_deleted: type: boolean description: Whether the deal is deleted or not is_archived: type: boolean description: Whether the deal is archived or not status: type: string description: The status of the deal probability: type: number nullable: true description: The success probability percentage of the deal lost_reason: type: string nullable: true description: The reason for losing the deal visible_to: type: integer description: The visibility of the deal close_time: type: string nullable: true description: The date and time of closing the deal won_time: type: string description: The date and time of changing the deal status as won lost_time: type: string description: The date and time of changing the deal status as lost expected_close_date: type: string format: date description: The expected close date of the deal label_ids: type: array description: The IDs of labels assigned to the deal items: type: integer origin: type: string description: The way this Deal was created. `origin` field is set by Pipedrive when Deal is created and cannot be changed. origin_id: type: string nullable: true description: The optional ID to further distinguish the origin of the deal - e.g. Which API integration created this Deal. channel: type: integer nullable: true description: 'The ID of your Marketing channel this Deal was created from. Recognized Marketing channels can be configured in your Company settings.' channel_id: type: string nullable: true description: The optional ID to further distinguish the Marketing channel. source_lead_id: type: string format: uuid nullable: true description: The ID of the lead if the deal was converted from a lead. Only included when requested via include_fields parameter. arr: type: number nullable: true description: | Only available in Growth and above plans The Annual Recurring Revenue of the deal Null if there are no products attached to the deal mrr: type: number nullable: true description: | Only available in Growth and above plans The Monthly Recurring Revenue of the deal Null if there are no products attached to the deal acv: type: number nullable: true description: | Only available in Growth and above plans The Annual Contract Value of the deal Null if there are no products attached to the deal custom_fields: type: object additionalProperties: true description: 'An object where each key represents a custom field. All custom fields are referenced as randomly generated 40-character hashes. To clear a custom field value, set it to `null`. For multi-option fields (field type `set`), use `null` to clear the selection — sending an empty array `[]` is not supported and will result in a validation error.' example: success: true data: id: 1 title: Deal Title creator_user_id: 1 owner_id: 1 value: 200 person_id: 1 org_id: 1 stage_id: 1 pipeline_id: 1 currency: USD archive_time: '2021-01-01T00:00:00Z' add_time: '2021-01-01T00:00:00Z' update_time: '2021-01-01T00:00:00Z' stage_change_time: '2021-01-01T00:00:00Z' status: open is_archived: false is_deleted: false probability: 90 lost_reason: Lost Reason visible_to: 7 close_time: '2021-01-01T00:00:00Z' won_time: '2021-01-01T00:00:00Z' lost_time: '2021-01-01T00:00:00Z' local_won_date: '2021-01-01' local_lost_date: '2021-01-01' local_close_date: '2021-01-01' expected_close_date: '2021-01-01' label_ids: - 1 - 2 - 3 origin: ManuallyCreated origin_id: null channel: 52 channel_id: Jun23 Billboards source_lead_id: 35b0d604-eb0d-42d0-be11-eac8832051f0 acv: 120 arr: 120 mrr: 10 custom_fields: {} '/deals/{id}/followers': get: summary: List followers of a deal description: Lists users who are following the deal. x-tool-description: 'Retrieves users following a deal for visibility into collaboration and stakeholder involvement. Essential for team coordination, notification management, and understanding deal ownership in collaborative sales environments.' x-token-cost: 10 operationId: getDealFollowers tags: - Deals security: - api_key: [] - oauth2: - 'deals:read' - 'deals:full' parameters: - in: path name: id description: The ID of the deal required: true schema: type: integer - in: query name: limit description: 'For pagination, the limit of entries to be returned. If not provided, 100 items will be returned. Please note that a maximum value of 500 is allowed.' schema: type: integer example: 100 - in: query name: cursor required: false schema: type: string description: 'For pagination, the marker (an opaque string value) representing the first item on the next page' responses: '200': description: List entity followers content: application/json: schema: type: object title: GetFollowersResponse allOf: - title: baseResponse type: object properties: success: type: boolean description: If the response is successful or not - type: object properties: data: type: array description: Followers array items: type: object properties: user_id: type: integer description: The ID of the user following the entity add_time: type: string description: The add time of the following additional_data: type: object description: The additional data of the list properties: next_cursor: type: string description: The first item on the next page. The value of the `next_cursor` field will be `null` if you have reached the end of the dataset and there’s no more pages to be returned. example: success: true data: - user_id: 1 add_time: '2021-01-01T00:00:00Z' additional_data: next_cursor: eyJmaWVsZCI6ImlkIiwiZmllbGRWYWx1ZSI6Nywic29ydERpcmVjdGlvbiI6ImFzYyIsImlkIjo3fQ post: summary: Add a follower to a deal description: Adds a user as a follower to the deal. x-tool-description: 'Adds user as deal follower to receive notifications and updates about progress. Essential for team collaboration, manager oversight, stakeholder visibility, and proper deal communication.' x-token-cost: 5 operationId: addDealFollower tags: - Deals security: - api_key: [] - oauth2: - 'deals:full' parameters: - in: path name: id description: The ID of the deal required: true schema: type: integer requestBody: content: application/json: schema: required: - user_id type: object properties: user_id: type: integer description: The ID of the user to add as a follower responses: '201': description: Add a follower content: application/json: schema: type: object title: AddFollowerResponse allOf: - title: baseResponse type: object properties: success: type: boolean description: If the response is successful or not - type: object properties: data: type: object properties: user_id: type: integer description: The ID of the user following the entity add_time: type: string description: The add time of the following example: success: true data: user_id: 1 add_time: '2021-01-01T00:00:00Z' '/deals/{id}/followers/changelog': get: summary: List followers changelog of a deal description: Lists changelogs about users have followed the deal. x-tool-description: 'Retrieves historical log of deal follower changes including start and stop events. Essential for audit trails, team collaboration analysis, compliance, and tracking deal stakeholder evolution over time.' x-token-cost: 10 operationId: getDealFollowersChangelog tags: - Deals security: - api_key: [] - oauth2: - 'deals:read' - 'deals:full' parameters: - in: path name: id description: The ID of the deal required: true schema: type: integer - in: query name: limit description: 'For pagination, the limit of entries to be returned. If not provided, 100 items will be returned. Please note that a maximum value of 500 is allowed.' schema: type: integer example: 100 - in: query name: cursor required: false schema: type: string description: 'For pagination, the marker (an opaque string value) representing the first item on the next page' responses: '200': description: List entity followers content: application/json: schema: type: object title: GetFollowerChangelogsResponse allOf: - title: baseResponse type: object properties: success: type: boolean description: If the response is successful or not - type: object properties: data: type: array description: Follower changelogs array items: type: object title: FollowerChangelogItem properties: action: type: string description: The type of change actor_user_id: type: integer description: The ID of the user who did the change follower_user_id: type: integer description: The ID of the user who was following the entity time: type: string description: The time at which the change happened additional_data: type: object description: The additional data of the list properties: next_cursor: type: string description: The first item on the next page. The value of the `next_cursor` field will be `null` if you have reached the end of the dataset and there’s no more pages to be returned. example: success: true data: - action: added actor_user_id: 1 follower_user_id: 1 time: '2024-01-01T00:00:00Z' additional_data: next_cursor: eyJmaWVsZCI6ImlkIiwiZmllbGRWYWx1ZSI6Nywic29ydERpcmVjdGlvbiI6ImFzYyIsImlkIjo3fQ '/deals/{id}/followers/{follower_id}': delete: summary: Delete a follower from a deal description: Deletes a user follower from the deal. x-tool-description: 'Removes user from deal''s follower list by follower ID, stopping notifications and updates. Essential for team restructuring, role changes, access control, and managing stakeholder lists.' x-token-cost: 3 operationId: deleteDealFollower tags: - Deals security: - api_key: [] - oauth2: - 'deals:full' parameters: - in: path name: id description: The ID of the deal required: true schema: type: integer - in: path name: follower_id required: true schema: type: integer description: The ID of the following user responses: '200': description: Remove a follower content: application/json: schema: title: DeleteFollowerResponse type: object properties: success: type: boolean description: If the response is successful or not data: type: object properties: user_id: type: integer description: Deleted follower user ID example: success: true data: user_id: 1 /deals/products: get: summary: Get deal products of several deals description: Returns data about products attached to deals x-tool-description: 'Retrieves product attachments across multiple deals (up to 100 IDs) in single request. Essential for bulk product analysis, revenue calculations, sales analytics, and commission calculations across deal portfolios.' x-token-cost: 10 operationId: getDealsProducts tags: - DealProducts security: - api_key: [] - oauth2: - 'products:read' - 'products:full' - 'deals:read' - 'deals:full' parameters: - in: query name: deal_ids required: true schema: type: array items: type: integer description: An array of integers with the IDs of the deals for which the attached products will be returned. A maximum of 100 deal IDs can be provided. - in: query name: cursor required: false schema: type: string description: 'For pagination, the marker (an opaque string value) representing the first item on the next page' - in: query name: limit description: 'For pagination, the limit of entries to be returned. If not provided, 100 items will be returned. Please note that a maximum value of 500 is allowed.' schema: type: integer example: 100 - in: query name: sort_by description: 'The field to sort by. Supported fields: `id`, `deal_id`, `add_time`, `update_time`, `order_nr`.' schema: type: string default: id enum: - id - deal_id - add_time - update_time - order_nr - in: query name: sort_direction description: 'The sorting direction. Supported values: `asc`, `desc`.' schema: type: string default: asc enum: - asc - desc responses: '200': description: List of products attached to deals content: application/json: schema: title: GetDealsProductsResponse type: object properties: success: type: boolean description: If the response is successful or not data: type: array description: Array containing data for all products attached to deals items: allOf: - type: object properties: id: type: integer description: The ID of the deal-product (the ID of the product attached to the deal) sum: type: number description: The sum of all the products attached to the deal tax: type: number description: The product tax deal_id: type: integer description: The ID of the deal name: type: string description: The product name product_id: type: integer description: The ID of the product product_variation_id: type: integer nullable: true description: The ID of the product variation order_nr: type: integer nullable: true description: The order number of the product within the deal add_time: type: string description: The date and time when the product was added to the deal update_time: type: string description: The date and time when the deal product was last updated comments: type: string description: The comments of the product currency: type: string description: The currency associated with the deal product discount: type: number default: 0 description: The value of the discount. The `discount_type` field can be used to specify whether the value is an amount or a percentage discount_type: type: string enum: - percentage - amount default: percentage description: The type of the discount's value quantity: type: integer description: The quantity of the product item_price: type: number description: The price value of the product tax_method: type: string enum: - exclusive - inclusive - none description: 'The tax option to be applied to the products. When using `inclusive`, the tax percentage will already be included in the price. When using `exclusive`, the tax will not be included in the price. When using `none`, no tax will be added. Use the `tax` field for defining the tax percentage amount. By default, the user setting value for tax options will be used. Changing this in one product affects the rest of the products attached to the deal' is_enabled: type: boolean description: Whether this product is enabled for the deal default: true - type: object properties: billing_frequency: default: one-time type: string enum: - one-time - annually - semi-annually - quarterly - monthly - weekly description: | Only available in Growth and above plans How often a customer is billed for access to a service or product To set `billing_frequency` different than `one-time`, the deal must not have installments associated A deal can have up to 20 products attached with `billing_frequency` different than `one-time` - type: object properties: billing_frequency_cycles: default: null type: integer nullable: true description: | Only available in Growth and above plans The number of times the billing frequency repeats for a product in a deal When `billing_frequency` is set to `one-time`, this field must be `null` When `billing_frequency` is set to `weekly`, this field cannot be `null` For all the other values of `billing_frequency`, `null` represents a product billed indefinitely Must be a positive integer less or equal to 208 - type: object properties: billing_start_date: default: null type: string format: YYYY-MM-DD nullable: true description: | Only available in Growth and above plans The billing start date. Must be between 10 years in the past and 10 years in the future additional_data: type: object description: Pagination related data properties: next_cursor: type: string description: The first item on the next page. The value of the `next_cursor` field will be `null` if you have reached the end of the dataset and there’s no more pages to be returned. example: success: true data: - id: 3 sum: 90 tax: 0 deal_id: 1 name: Mechanical Pencil product_id: 1 product_variation_id: null order_nr: 50 add_time: '2019-12-19T11:36:49Z' update_time: '2019-12-19T11:36:49Z' comments: '' currency: USD discount: 0 quantity: 1 item_price: 90 tax_method: inclusive discount_type: percentage is_enabled: true billing_frequency: one-time billing_frequency_cycles: null billing_start_date: '2019-12-19' additional_data: next_cursor: eyJmaWVsZCI6ImlkIiwiZmllbGRWYWx1ZSI6Nywic29ydERpcmVjdGlvbiI6ImFzYyIsImlkIjo3fQ /deals/search: get: summary: Search deals description: 'Searches all deals by title, notes and/or custom fields. This endpoint is a wrapper of /v1/itemSearch with a narrower OAuth scope. Found deals can be filtered by the person ID and the organization ID.' x-tool-description: 'Performs full-text search across deal titles, notes, and custom fields with advanced filtering. Essential for search functionality, autocomplete features, and deal discovery. Supports exact matching, field-specific searches, and filtering by person, organization, or status.' x-token-cost: 20 operationId: searchDeals tags: - Deals security: - api_key: [] - oauth2: - 'deals:read' - 'deals:full' - 'search:read' parameters: - in: query name: term required: true schema: type: string description: The search term to look for. Minimum 2 characters (or 1 if using `exact_match`). Please note that the search term has to be URL encoded. - in: query name: fields schema: type: string enum: - custom_fields - notes - title description: 'A comma-separated string array. The fields to perform the search from. Defaults to all of them. Only the following custom field types are searchable: `address`, `varchar`, `text`, `varchar_auto`, `double`, `monetary` and `phone`. Read more about searching by custom fields here.' - in: query name: exact_match schema: type: boolean description: 'When enabled, only full exact matches against the given term are returned. It is not case sensitive.' - in: query name: person_id schema: type: integer description: Will filter deals by the provided person ID. The upper limit of found deals associated with the person is 2000. - in: query name: organization_id schema: type: integer description: Will filter deals by the provided organization ID. The upper limit of found deals associated with the organization is 2000. - in: query name: status schema: type: string enum: - open - won - lost description: 'Will filter deals by the provided specific status. open = Open, won = Won, lost = Lost. The upper limit of found deals associated with the status is 2000.' - in: query name: include_fields schema: type: string enum: - deal.cc_email description: Supports including optional fields in the results which are not provided by default - in: query name: limit description: 'For pagination, the limit of entries to be returned. If not provided, 100 items will be returned. Please note that a maximum value of 500 is allowed.' schema: type: integer example: 100 - in: query name: cursor required: false schema: type: string description: 'For pagination, the marker (an opaque string value) representing the first item on the next page' responses: '200': description: Success content: application/json: schema: title: GetDealSearchResponse allOf: - title: baseResponse type: object properties: success: type: boolean description: If the response is successful or not - type: object properties: data: type: object properties: items: type: array description: The array of deals items: type: object properties: result_score: type: number description: Search result relevancy item: type: object properties: id: type: integer description: The ID of the deal type: type: string description: The type of the item title: type: string description: The title of the deal value: type: integer description: The value of the deal currency: type: string description: The currency of the deal status: type: string description: The status of the deal visible_to: type: integer description: The visibility of the deal owner: type: object properties: id: type: integer description: The ID of the owner of the deal stage: type: object properties: id: type: integer description: The ID of the stage of the deal name: type: string description: The name of the stage of the deal person: type: object nullable: true properties: id: type: integer description: The ID of the person the deal is associated with name: type: string description: The name of the person the deal is associated with organization: type: object nullable: true properties: id: type: integer description: The ID of the organization the deal is associated with name: type: string description: The name of the organization the deal is associated with custom_fields: type: array items: type: string description: Custom fields notes: type: array description: An array of notes items: type: string is_archived: type: boolean description: A flag indicating whether the deal is archived or not additional_data: type: object description: Pagination related data properties: next_cursor: type: string description: The first item on the next page. The value of the `next_cursor` field will be `null` if you have reached the end of the dataset and there’s no more pages to be returned. example: success: true data: items: - result_score: 1.22 item: id: 1 type: deal title: Jane Doe deal value: 100 currency: USD status: open visible_to: 3 owner: id: 1 stage: id: 1 name: Lead In person: id: 1 name: Jane Doe organization: null custom_fields: [] notes: [] is_archived: false additional_data: next_cursor: eyJmaWVsZCI6ImlkIiwiZmllbGRWYWx1ZSI6Nywic29ydERpcmVjdGlvbiI6ImFzYyIsImlkIjo3fQ '/deals/{id}/products': get: summary: List products attached to a deal description: Lists products attached to a deal. x-tool-description: 'Retrieves products attached to deal with detailed information: quantities, prices, and configurations. Essential for deal value analysis, product management, accurate summaries, and pricing calculations.' x-token-cost: 10 operationId: getDealProducts tags: - DealProducts security: - api_key: [] - oauth2: - 'products:read' - 'products:full' - 'deals:read' - 'deals:full' parameters: - in: path name: id description: The ID of the deal required: true schema: type: integer - in: query name: cursor required: false schema: type: string description: 'For pagination, the marker (an opaque string value) representing the first item on the next page' - in: query name: limit description: 'For pagination, the limit of entries to be returned. If not provided, 100 items will be returned. Please note that a maximum value of 500 is allowed.' schema: type: integer example: 100 - in: query name: sort_by description: 'The field to sort by. Supported fields: `id`, `add_time`, `update_time`, `order_nr`.' schema: default: id type: string enum: - id - add_time - update_time - order_nr - in: query name: sort_direction description: 'The sorting direction. Supported values: `asc`, `desc`.' schema: default: asc type: string enum: - asc - desc responses: '200': description: List of products attached to deals content: application/json: schema: title: GetDealsProductsResponse type: object properties: success: type: boolean description: If the response is successful or not data: type: array description: Array containing data for all products attached to deals items: allOf: - type: object properties: id: type: integer description: The ID of the deal-product (the ID of the product attached to the deal) sum: type: number description: The sum of all the products attached to the deal tax: type: number description: The product tax deal_id: type: integer description: The ID of the deal name: type: string description: The product name product_id: type: integer description: The ID of the product product_variation_id: type: integer nullable: true description: The ID of the product variation order_nr: type: integer nullable: true description: The order number of the product within the deal add_time: type: string description: The date and time when the product was added to the deal update_time: type: string description: The date and time when the deal product was last updated comments: type: string description: The comments of the product currency: type: string description: The currency associated with the deal product discount: type: number default: 0 description: The value of the discount. The `discount_type` field can be used to specify whether the value is an amount or a percentage discount_type: type: string enum: - percentage - amount default: percentage description: The type of the discount's value quantity: type: integer description: The quantity of the product item_price: type: number description: The price value of the product tax_method: type: string enum: - exclusive - inclusive - none description: 'The tax option to be applied to the products. When using `inclusive`, the tax percentage will already be included in the price. When using `exclusive`, the tax will not be included in the price. When using `none`, no tax will be added. Use the `tax` field for defining the tax percentage amount. By default, the user setting value for tax options will be used. Changing this in one product affects the rest of the products attached to the deal' is_enabled: type: boolean description: Whether this product is enabled for the deal default: true - type: object properties: billing_frequency: default: one-time type: string enum: - one-time - annually - semi-annually - quarterly - monthly - weekly description: | Only available in Growth and above plans How often a customer is billed for access to a service or product To set `billing_frequency` different than `one-time`, the deal must not have installments associated A deal can have up to 20 products attached with `billing_frequency` different than `one-time` - type: object properties: billing_frequency_cycles: default: null type: integer nullable: true description: | Only available in Growth and above plans The number of times the billing frequency repeats for a product in a deal When `billing_frequency` is set to `one-time`, this field must be `null` When `billing_frequency` is set to `weekly`, this field cannot be `null` For all the other values of `billing_frequency`, `null` represents a product billed indefinitely Must be a positive integer less or equal to 208 - type: object properties: billing_start_date: default: null type: string format: YYYY-MM-DD nullable: true description: | Only available in Growth and above plans The billing start date. Must be between 10 years in the past and 10 years in the future additional_data: type: object description: Pagination related data properties: next_cursor: type: string description: The first item on the next page. The value of the `next_cursor` field will be `null` if you have reached the end of the dataset and there’s no more pages to be returned. example: success: true data: - id: 3 sum: 90 tax: 0 deal_id: 1 name: Mechanical Pencil product_id: 1 product_variation_id: null order_nr: 50 add_time: '2019-12-19T11:36:49Z' update_time: '2019-12-19T11:36:49Z' comments: '' currency: USD discount: 0 quantity: 1 item_price: 90 tax_method: inclusive discount_type: percentage is_enabled: true billing_frequency: one-time billing_frequency_cycles: null billing_start_date: '2019-12-19' additional_data: next_cursor: eyJmaWVsZCI6ImlkIiwiZmllbGRWYWx1ZSI6Nywic29ydERpcmVjdGlvbiI6ImFzYyIsImlkIjo3fQ post: summary: Add a product to a deal description: 'Adds a product to a deal, creating a new item called a deal-product.' x-tool-description: 'Attaches product to deal with configurable quantity, pricing, and discounts. Essential for sales processes, quote generation, and deal composition. Automatically updates deal values and maintains accurate sales tracking.' x-token-cost: 5 operationId: addDealProduct tags: - DealProducts security: - api_key: [] - oauth2: - 'products:full' - 'deals:full' parameters: - in: path name: id description: The ID of the deal required: true schema: type: integer requestBody: content: application/json: schema: title: addDealProductRequest required: - item_price - quantity - product_id allOf: - required: - product_id - item_price - quantity title: dealProductRequestBody type: object properties: product_id: type: integer description: The ID of the product item_price: type: number description: The price value of the product quantity: type: number description: The quantity of the product tax: type: number default: 0 description: The product tax comments: type: string description: The comments of the product discount: type: number default: 0 description: The value of the discount. The `discount_type` field can be used to specify whether the value is an amount or a percentage is_enabled: type: boolean description: | Whether this product is enabled for the deal Not possible to disable the product if the deal has installments associated and the product is the last one enabled Not possible to enable the product if the deal has installments associated and the product is recurring default: true tax_method: type: string enum: - exclusive - inclusive - none description: 'The tax option to be applied to the products. When using `inclusive`, the tax percentage will already be included in the price. When using `exclusive`, the tax will not be included in the price. When using `none`, no tax will be added. Use the `tax` field for defining the tax percentage amount. By default, the user setting value for tax options will be used. Changing this in one product affects the rest of the products attached to the deal' discount_type: type: string enum: - percentage - amount default: percentage description: The value of the discount. The `discount_type` field can be used to specify whether the value is an amount or a percentage product_variation_id: type: integer nullable: true description: The ID of the product variation - type: object properties: billing_frequency: default: one-time type: string enum: - one-time - annually - semi-annually - quarterly - monthly - weekly description: | Only available in Growth and above plans How often a customer is billed for access to a service or product To set `billing_frequency` different than `one-time`, the deal must not have installments associated A deal can have up to 20 products attached with `billing_frequency` different than `one-time` - type: object properties: billing_frequency_cycles: default: null type: integer nullable: true description: | Only available in Growth and above plans The number of times the billing frequency repeats for a product in a deal When `billing_frequency` is set to `one-time`, this field must be `null` When `billing_frequency` is set to `weekly`, this field cannot be `null` For all the other values of `billing_frequency`, `null` represents a product billed indefinitely Must be a positive integer less or equal to 208 - type: object properties: billing_start_date: default: null type: string format: YYYY-MM-DD nullable: true description: | Only available in Growth and above plans The billing start date. Must be between 10 years in the past and 10 years in the future responses: '201': description: Add a product to the deal content: application/json: schema: title: AddDealProductResponse type: object properties: success: type: boolean description: If the response is successful or not data: allOf: - type: object properties: id: type: integer description: The ID of the deal-product (the ID of the product attached to the deal) sum: type: number description: The sum of all the products attached to the deal tax: type: number description: The product tax deal_id: type: integer description: The ID of the deal name: type: string description: The product name product_id: type: integer description: The ID of the product product_variation_id: type: integer nullable: true description: The ID of the product variation order_nr: type: integer nullable: true description: The order number of the product within the deal add_time: type: string description: The date and time when the product was added to the deal update_time: type: string description: The date and time when the deal product was last updated comments: type: string description: The comments of the product currency: type: string description: The currency associated with the deal product discount: type: number default: 0 description: The value of the discount. The `discount_type` field can be used to specify whether the value is an amount or a percentage discount_type: type: string enum: - percentage - amount default: percentage description: The type of the discount's value quantity: type: integer description: The quantity of the product item_price: type: number description: The price value of the product tax_method: type: string enum: - exclusive - inclusive - none description: 'The tax option to be applied to the products. When using `inclusive`, the tax percentage will already be included in the price. When using `exclusive`, the tax will not be included in the price. When using `none`, no tax will be added. Use the `tax` field for defining the tax percentage amount. By default, the user setting value for tax options will be used. Changing this in one product affects the rest of the products attached to the deal' is_enabled: type: boolean description: Whether this product is enabled for the deal default: true - type: object properties: billing_frequency: default: one-time type: string enum: - one-time - annually - semi-annually - quarterly - monthly - weekly description: | Only available in Growth and above plans How often a customer is billed for access to a service or product To set `billing_frequency` different than `one-time`, the deal must not have installments associated A deal can have up to 20 products attached with `billing_frequency` different than `one-time` - type: object properties: billing_frequency_cycles: default: null type: integer nullable: true description: | Only available in Growth and above plans The number of times the billing frequency repeats for a product in a deal When `billing_frequency` is set to `one-time`, this field must be `null` When `billing_frequency` is set to `weekly`, this field cannot be `null` For all the other values of `billing_frequency`, `null` represents a product billed indefinitely Must be a positive integer less or equal to 208 - type: object properties: billing_start_date: default: null type: string format: YYYY-MM-DD nullable: true description: | Only available in Growth and above plans The billing start date. Must be between 10 years in the past and 10 years in the future example: success: true data: id: 3 sum: 90 tax: 0 deal_id: 1 name: Mechanical Pencil product_id: 1 product_variation_id: null order_nr: 50 add_time: '2019-12-19T11:36:49Z' update_time: '2019-12-19T11:36:49Z' comments: '' currency: USD discount: 0 quantity: 1 item_price: 90 tax_method: inclusive discount_type: percentage is_enabled: true billing_frequency: one-time billing_frequency_cycles: null billing_start_date: '2019-12-19' delete: summary: Delete many products from a deal description: 'Deletes multiple products from a deal. If no product IDs are specified, up to 100 products will be removed from the deal. A maximum of 100 product IDs can be provided per request.' x-tool-description: 'Bulk-deletes products from a deal to simplify management and cleanup. Supports selective deletion (by specifying product IDs) or full removal of up to 100 products per request, enabling efficient deal maintenance and product update workflows.' x-token-cost: 15 operationId: deleteManyDealProducts tags: - DealProducts security: - api_key: [] - oauth2: - 'products:full' - 'deals:full' parameters: - in: path name: id description: The ID of the deal required: true schema: type: integer - in: query name: ids required: false description: 'Comma-separated list of deal product IDs to delete. If not provided, all deal products will be deleted up to 100 items. Maximum 100 IDs allowed.' schema: type: string example: '1,2,3' responses: '200': description: Delete many products from a deal content: application/json: schema: title: DeleteManyDealProductResponse type: object properties: success: type: boolean description: If the response is successful or not data: type: object properties: ids: type: array description: Array of IDs of products that were deleted from the deal items: type: integer additional_data: type: object nullable: true properties: more_items_in_collection: type: boolean description: Whether there are more products to delete (when the deal has more than 100 products) example: success: true data: ids: - 1 - 2 - 3 additional_data: more_items_in_collection: false '/deals/{id}/products/{product_attachment_id}': patch: summary: Update the product attached to a deal description: Updates the details of the product that has been attached to a deal. x-tool-description: 'Modifies product attachment configuration within deal: quantity, pricing, discounts, and properties. Essential for negotiations, quantity updates, configuration corrections, and maintaining accurate deal values.' x-token-cost: 5 operationId: updateDealProduct tags: - DealProducts security: - api_key: [] - oauth2: - 'products:full' - 'deals:full' parameters: - in: path name: id description: The ID of the deal required: true schema: type: integer - in: path name: product_attachment_id required: true schema: type: integer description: The ID of the deal-product (the ID of the product attached to the deal) requestBody: content: application/json: schema: title: updateDealProductRequest allOf: - title: dealProductRequestBody type: object properties: product_id: type: integer description: The ID of the product item_price: type: number description: The price value of the product quantity: type: number description: The quantity of the product tax: type: number default: 0 description: The product tax comments: type: string description: The comments of the product discount: type: number default: 0 description: The value of the discount. The `discount_type` field can be used to specify whether the value is an amount or a percentage is_enabled: type: boolean description: | Whether this product is enabled for the deal Not possible to disable the product if the deal has installments associated and the product is the last one enabled Not possible to enable the product if the deal has installments associated and the product is recurring default: true tax_method: type: string enum: - exclusive - inclusive - none description: 'The tax option to be applied to the products. When using `inclusive`, the tax percentage will already be included in the price. When using `exclusive`, the tax will not be included in the price. When using `none`, no tax will be added. Use the `tax` field for defining the tax percentage amount. By default, the user setting value for tax options will be used. Changing this in one product affects the rest of the products attached to the deal' discount_type: type: string enum: - percentage - amount default: percentage description: The value of the discount. The `discount_type` field can be used to specify whether the value is an amount or a percentage product_variation_id: type: integer nullable: true description: The ID of the product variation - type: object properties: billing_frequency: type: string enum: - one-time - annually - semi-annually - quarterly - monthly - weekly description: | Only available in Growth and above plans How often a customer is billed for access to a service or product To set `billing_frequency` different than `one-time`, the deal must not have installments associated A deal can have up to 20 products attached with `billing_frequency` different than `one-time` - type: object properties: billing_frequency_cycles: type: integer nullable: true description: | Only available in Growth and above plans The number of times the billing frequency repeats for a product in a deal When `billing_frequency` is set to `one-time`, this field must be `null` When `billing_frequency` is set to `weekly`, this field cannot be `null` For all the other values of `billing_frequency`, `null` represents a product billed indefinitely Must be a positive integer less or equal to 208 - type: object properties: billing_start_date: type: string format: YYYY-MM-DD nullable: true description: | Only available in Growth and above plans The billing start date. Must be between 10 years in the past and 10 years in the future responses: '200': description: Add a product to the deal content: application/json: schema: title: AddDealProductResponse type: object properties: success: type: boolean description: If the response is successful or not data: allOf: - type: object properties: id: type: integer description: The ID of the deal-product (the ID of the product attached to the deal) sum: type: number description: The sum of all the products attached to the deal tax: type: number description: The product tax deal_id: type: integer description: The ID of the deal name: type: string description: The product name product_id: type: integer description: The ID of the product product_variation_id: type: integer nullable: true description: The ID of the product variation order_nr: type: integer nullable: true description: The order number of the product within the deal add_time: type: string description: The date and time when the product was added to the deal update_time: type: string description: The date and time when the deal product was last updated comments: type: string description: The comments of the product currency: type: string description: The currency associated with the deal product discount: type: number default: 0 description: The value of the discount. The `discount_type` field can be used to specify whether the value is an amount or a percentage discount_type: type: string enum: - percentage - amount default: percentage description: The type of the discount's value quantity: type: integer description: The quantity of the product item_price: type: number description: The price value of the product tax_method: type: string enum: - exclusive - inclusive - none description: 'The tax option to be applied to the products. When using `inclusive`, the tax percentage will already be included in the price. When using `exclusive`, the tax will not be included in the price. When using `none`, no tax will be added. Use the `tax` field for defining the tax percentage amount. By default, the user setting value for tax options will be used. Changing this in one product affects the rest of the products attached to the deal' is_enabled: type: boolean description: Whether this product is enabled for the deal default: true - type: object properties: billing_frequency: default: one-time type: string enum: - one-time - annually - semi-annually - quarterly - monthly - weekly description: | Only available in Growth and above plans How often a customer is billed for access to a service or product To set `billing_frequency` different than `one-time`, the deal must not have installments associated A deal can have up to 20 products attached with `billing_frequency` different than `one-time` - type: object properties: billing_frequency_cycles: default: null type: integer nullable: true description: | Only available in Growth and above plans The number of times the billing frequency repeats for a product in a deal When `billing_frequency` is set to `one-time`, this field must be `null` When `billing_frequency` is set to `weekly`, this field cannot be `null` For all the other values of `billing_frequency`, `null` represents a product billed indefinitely Must be a positive integer less or equal to 208 - type: object properties: billing_start_date: default: null type: string format: YYYY-MM-DD nullable: true description: | Only available in Growth and above plans The billing start date. Must be between 10 years in the past and 10 years in the future example: success: true data: id: 3 sum: 90 tax: 0 deal_id: 1 name: Mechanical Pencil product_id: 1 product_variation_id: null order_nr: 50 add_time: '2019-12-19T11:36:49Z' update_time: '2019-12-19T11:36:49Z' comments: '' currency: USD discount: 0 quantity: 1 item_price: 90 tax_method: inclusive discount_type: percentage is_enabled: true billing_frequency: one-time billing_frequency_cycles: null billing_start_date: '2019-12-19' delete: summary: Delete an attached product from a deal description: 'Deletes a product attachment from a deal, using the `product_attachment_id`.' x-tool-description: 'Removes product attachment from deal by ID, automatically recalculating values and maintaining data integrity. Essential for negotiations, quote revisions, composition changes, and clean product-deal relationships.' x-token-cost: 3 operationId: deleteDealProduct tags: - DealProducts security: - api_key: [] - oauth2: - 'deals:full' - 'products:full' parameters: - in: path name: id description: The ID of the deal required: true schema: type: integer - in: path name: product_attachment_id required: true schema: type: integer description: The product attachment ID responses: '200': description: Delete an attached product from a deal content: application/json: schema: title: DeleteDealProductResponse type: object properties: success: type: boolean description: If the response is successful or not data: type: object properties: id: type: integer description: The ID of an attached product that was deleted from the deal example: success: true data: id: 123 '/deals/{id}/products/bulk': post: summary: Add multiple products to a deal description: Adds multiple products to a deal in a single request. Maximum of 100 products allowed per request. x-tool-description: 'Bulk attaches multiple products to deal with configurable quantities, pricing, and discounts. Essential for efficient deal composition, batch product management, and streamlined sales processes. Automatically calculates deal values and maintains sales tracking.' x-token-cost: 25 operationId: addManyDealProducts tags: - DealProducts security: - api_key: [] - oauth2: - 'products:full' - 'deals:full' parameters: - in: path name: id description: The ID of the deal required: true schema: type: integer requestBody: content: application/json: schema: title: createManyDealProductRequest type: object required: - data properties: data: type: array description: Array of products to attach to the deal. Each product object may have the following properties. maxItems: 100 items: title: addDealProductRequest required: - item_price - quantity - product_id allOf: - required: - product_id - item_price - quantity title: dealProductRequestBody type: object properties: product_id: type: integer description: The ID of the product item_price: type: number description: The price value of the product quantity: type: number description: The quantity of the product tax: type: number default: 0 description: The product tax comments: type: string description: The comments of the product discount: type: number default: 0 description: The value of the discount. The `discount_type` field can be used to specify whether the value is an amount or a percentage is_enabled: type: boolean description: | Whether this product is enabled for the deal Not possible to disable the product if the deal has installments associated and the product is the last one enabled Not possible to enable the product if the deal has installments associated and the product is recurring default: true tax_method: type: string enum: - exclusive - inclusive - none description: 'The tax option to be applied to the products. When using `inclusive`, the tax percentage will already be included in the price. When using `exclusive`, the tax will not be included in the price. When using `none`, no tax will be added. Use the `tax` field for defining the tax percentage amount. By default, the user setting value for tax options will be used. Changing this in one product affects the rest of the products attached to the deal' discount_type: type: string enum: - percentage - amount default: percentage description: The value of the discount. The `discount_type` field can be used to specify whether the value is an amount or a percentage product_variation_id: type: integer nullable: true description: The ID of the product variation - type: object properties: billing_frequency: default: one-time type: string enum: - one-time - annually - semi-annually - quarterly - monthly - weekly description: | Only available in Growth and above plans How often a customer is billed for access to a service or product To set `billing_frequency` different than `one-time`, the deal must not have installments associated A deal can have up to 20 products attached with `billing_frequency` different than `one-time` - type: object properties: billing_frequency_cycles: default: null type: integer nullable: true description: | Only available in Growth and above plans The number of times the billing frequency repeats for a product in a deal When `billing_frequency` is set to `one-time`, this field must be `null` When `billing_frequency` is set to `weekly`, this field cannot be `null` For all the other values of `billing_frequency`, `null` represents a product billed indefinitely Must be a positive integer less or equal to 208 - type: object properties: billing_start_date: default: null type: string format: YYYY-MM-DD nullable: true description: | Only available in Growth and above plans The billing start date. Must be between 10 years in the past and 10 years in the future responses: '201': description: Add many products to a deal content: application/json: schema: title: AddManyDealProductResponse type: object properties: success: type: boolean description: If the response is successful or not data: type: array description: Array of created deal products items: allOf: - type: object properties: id: type: integer description: The ID of the deal-product (the ID of the product attached to the deal) sum: type: number description: The sum of all the products attached to the deal tax: type: number description: The product tax deal_id: type: integer description: The ID of the deal name: type: string description: The product name product_id: type: integer description: The ID of the product product_variation_id: type: integer nullable: true description: The ID of the product variation order_nr: type: integer nullable: true description: The order number of the product within the deal add_time: type: string description: The date and time when the product was added to the deal update_time: type: string description: The date and time when the deal product was last updated comments: type: string description: The comments of the product currency: type: string description: The currency associated with the deal product discount: type: number default: 0 description: The value of the discount. The `discount_type` field can be used to specify whether the value is an amount or a percentage discount_type: type: string enum: - percentage - amount default: percentage description: The type of the discount's value quantity: type: integer description: The quantity of the product item_price: type: number description: The price value of the product tax_method: type: string enum: - exclusive - inclusive - none description: 'The tax option to be applied to the products. When using `inclusive`, the tax percentage will already be included in the price. When using `exclusive`, the tax will not be included in the price. When using `none`, no tax will be added. Use the `tax` field for defining the tax percentage amount. By default, the user setting value for tax options will be used. Changing this in one product affects the rest of the products attached to the deal' is_enabled: type: boolean description: Whether this product is enabled for the deal default: true - type: object properties: billing_frequency: default: one-time type: string enum: - one-time - annually - semi-annually - quarterly - monthly - weekly description: | Only available in Growth and above plans How often a customer is billed for access to a service or product To set `billing_frequency` different than `one-time`, the deal must not have installments associated A deal can have up to 20 products attached with `billing_frequency` different than `one-time` - type: object properties: billing_frequency_cycles: default: null type: integer nullable: true description: | Only available in Growth and above plans The number of times the billing frequency repeats for a product in a deal When `billing_frequency` is set to `one-time`, this field must be `null` When `billing_frequency` is set to `weekly`, this field cannot be `null` For all the other values of `billing_frequency`, `null` represents a product billed indefinitely Must be a positive integer less or equal to 208 - type: object properties: billing_start_date: default: null type: string format: YYYY-MM-DD nullable: true description: | Only available in Growth and above plans The billing start date. Must be between 10 years in the past and 10 years in the future example: success: true data: - id: 1 sum: 60.46 tax: 0 deal_id: 1 name: Product 1 product_id: 1 product_variation_id: null order_nr: 10 add_time: '2019-12-19T11:36:49Z' update_time: '2019-12-19T11:36:49Z' comments: '' currency: USD discount: 0 quantity: 2 item_price: 30.23 tax_method: none discount_type: percentage is_enabled: true billing_frequency: one-time billing_frequency_cycles: null billing_start_date: null - id: 2 sum: 40.5 tax: 0 deal_id: 1 name: Product 2 product_id: 2 product_variation_id: null order_nr: 20 add_time: '2019-12-19T11:36:49Z' update_time: '2019-12-19T11:36:49Z' comments: '' currency: USD discount: 0 quantity: 1 item_price: 40.5 tax_method: none discount_type: percentage is_enabled: true billing_frequency: one-time billing_frequency_cycles: null billing_start_date: null '/deals/{id}/discounts': get: summary: List discounts added to a deal description: Lists discounts attached to a deal. x-tool-description: 'Retrieves discount configurations applied to deal including percentage and fixed-amount discounts. Essential for discount analysis, deal value calculations, accurate pricing summaries, and complex promotional arrangements.' x-token-cost: 10 operationId: getAdditionalDiscounts tags: - Deals security: - api_key: [] - oauth2: - 'deals:read' - 'deals:full' parameters: - in: path name: id description: The ID of the deal required: true schema: type: integer responses: '200': description: List of discounts added to deal content: application/json: schema: title: GetAdditionalDiscountsResponse type: object properties: success: type: boolean description: If the response is successful or not data: type: array description: Array containing data for all discounts added to a deal items: type: object properties: id: type: string description: The ID of the additional discount type: type: string enum: - percentage - amount description: Determines whether the discount is applied as a percentage or a fixed amount. amount: type: number description: The discount amount. description: type: string description: The name of the discount. deal_id: type: integer description: The ID of the deal the discount was added to. created_at: type: string description: The date and time of when the discount was created in the ISO 8601 format. created_by: type: integer description: The ID of the user that created the discount. updated_at: type: string description: The date and time of when the discount was created in the ISO 8601 format. updated_by: type: integer description: The ID of the user that last updated the discount. example: success: true data: - id: 30195b0e-7577-4f52-a5cf-f3ee39b9d1e0 description: 10% amount: 10 type: percentage deal_id: 1 created_at: '2024-03-12T10:30:05Z' created_by: 1 updated_at: '2024-03-12T10:30:05Z' updated_by: 1 post: summary: Add a discount to a deal description: 'Adds a discount to a deal, changing the deal value if the deal has one-time products attached.' x-tool-description: 'Applies new discount to deal, automatically recalculating values for one-time products. Essential for negotiations, promotional campaigns, volume discounts, and maintaining accurate financial tracking.' x-token-cost: 5 operationId: postAdditionalDiscount tags: - Deals security: - api_key: [] - oauth2: - 'deals:read' - 'deals:full' parameters: - in: path name: id description: The ID of the deal required: true schema: type: integer requestBody: content: application/json: schema: title: AddAdditionalDiscountRequestBody required: - description - amount - type properties: description: type: string description: The name of the discount. amount: type: number description: The discount amount. Must be a positive number (excluding 0). type: type: string enum: - percentage - amount description: Determines whether the discount is applied as a percentage or a fixed amount. responses: '201': description: Discount added to deal content: application/json: schema: title: AddAdditionalDiscountResponse type: object properties: success: type: boolean description: If the response is successful or not data: type: object properties: id: type: string description: The ID of the additional discount type: type: string enum: - percentage - amount description: Determines whether the discount is applied as a percentage or a fixed amount. amount: type: number description: The discount amount. description: type: string description: The name of the discount. deal_id: type: integer description: The ID of the deal the discount was added to. created_at: type: string description: The date and time of when the discount was created in the ISO 8601 format. created_by: type: integer description: The ID of the user that created the discount. updated_at: type: string description: The date and time of when the discount was created in the ISO 8601 format. updated_by: type: integer description: The ID of the user that last updated the discount. example: success: true data: id: 30195b0e-7577-4f52-a5cf-f3ee39b9d1e0 description: 10% amount: 10 type: percentage deal_id: 1 created_at: '2024-03-12T10:30:05Z' created_by: 1 updated_at: '2024-03-12T10:30:05Z' updated_by: 1 '/deals/{id}/discounts/{discount_id}': patch: summary: Update a discount added to a deal description: 'Edits a discount added to a deal, changing the deal value if the deal has one-time products attached.' x-tool-description: 'Modifies existing discount configuration on deal, automatically recalculating values for one-time products. Essential for discount adjustments, corrections, promotional updates, and maintaining pricing integrity.' x-token-cost: 5 operationId: updateAdditionalDiscount tags: - Deals security: - api_key: [] - oauth2: - 'deals:read' - 'deals:full' parameters: - in: path name: id description: The ID of the deal required: true schema: type: integer - in: path name: discount_id required: true schema: type: string format: uuid description: The ID of the discount requestBody: content: application/json: schema: title: updateAdditionalDiscountRequestBody properties: description: type: string description: The name of the discount. amount: type: number description: The discount amount. Must be a positive number (excluding 0). type: type: string enum: - percentage - amount description: Determines whether the discount is applied as a percentage or a fixed amount. responses: '200': description: Edited discount. content: application/json: schema: title: UpdateAdditionalDiscountResponse type: object properties: success: type: boolean description: If the response is successful or not data: type: object properties: id: type: string description: The ID of the additional discount type: type: string enum: - percentage - amount description: Determines whether the discount is applied as a percentage or a fixed amount. amount: type: number description: The discount amount. description: type: string description: The name of the discount. deal_id: type: integer description: The ID of the deal the discount was added to. created_at: type: string description: The date and time of when the discount was created in the ISO 8601 format. created_by: type: integer description: The ID of the user that created the discount. updated_at: type: string description: The date and time of when the discount was created in the ISO 8601 format. updated_by: type: integer description: The ID of the user that last updated the discount. example: success: true data: id: 30195b0e-7577-4f52-a5cf-f3ee39b9d1e0 description: 10% amount: 10 type: percentage deal_id: 1 created_at: '2024-03-12T10:30:05Z' created_by: 1 updated_at: '2024-03-12T10:30:05Z' updated_by: 1 delete: summary: Delete a discount from a deal description: 'Removes a discount from a deal, changing the deal value if the deal has one-time products attached.' x-tool-description: 'Removes discount from deal by ID, automatically recalculating values for one-time products. Essential when discounts become inapplicable, negotiations change, or pricing corrections are needed.' x-token-cost: 3 operationId: deleteAdditionalDiscount tags: - Deals security: - api_key: [] - oauth2: - 'deals:read' - 'deals:full' parameters: - in: path name: id description: The ID of the deal required: true schema: type: integer - in: path name: discount_id required: true schema: type: string format: uuid description: The ID of the discount responses: '200': description: The ID of the deleted discount. content: application/json: schema: title: DeleteAdditionalDiscountResponse type: object properties: success: type: boolean description: If the response is successful or not data: type: object properties: id: type: integer description: The ID of the discount that was deleted from the deal example: success: true data: id: 123 /deals/installments: get: summary: List installments added to a list of deals description: | Lists installments attached to a list of deals. Only available in Growth and above plans. x-tool-description: 'Retrieves payment installments across multiple deals (up to 100 IDs) in single request. Restricted to Growth+ plans. Essential for bulk installment analysis, payment reporting, and enterprise cash flow management.' x-token-cost: 10 operationId: getInstallments tags: - DealInstallments security: - api_key: [] - oauth2: - 'deals:read' - 'deals:full' parameters: - in: query name: deal_ids required: true schema: type: array items: type: integer description: An array of integers with the IDs of the deals for which the attached installments will be returned. A maximum of 100 deal IDs can be provided. - in: query name: cursor required: false schema: type: string description: 'For pagination, the marker (an opaque string value) representing the first item on the next page' - in: query name: limit description: 'For pagination, the limit of entries to be returned. If not provided, 100 items will be returned. Please note that a maximum value of 500 is allowed.' schema: type: integer example: 100 - in: query name: sort_by description: 'The field to sort by. Supported fields: `id`, `billing_date`, `deal_id`.' schema: default: id type: string enum: - id - billing_date - deal_id - in: query name: sort_direction description: 'The sorting direction. Supported values: `asc`, `desc`.' schema: default: asc type: string enum: - asc - desc responses: '200': description: List installments added to a deal content: application/json: schema: title: GetInstallmentsResponse type: object properties: success: type: boolean description: If the response is successful or not data: type: array description: Array containing data for all installments added to a deal items: type: object properties: id: type: integer description: The ID of the installment amount: type: number description: The installment amount. billing_date: type: string description: The date on which the installment will be charged. description: type: string description: The name of installment. deal_id: type: integer description: The ID of the deal the installment was added to. example: success: true data: - id: 1 amount: 10 billing_date: '2025-03-10' deal_id: 1 description: Delivery Fee '/deals/{id}/installments': post: summary: Add an installment to a deal description: | Adds an installment to a deal. An installment can only be added if the deal includes at least one one-time product. If the deal contains at least one recurring product, adding installments is not allowed. Only available in Growth and above plans. x-tool-description: 'Creates payment installment for deals with one-time products, enabling split payment schedules. Restricted to Growth+ plans and incompatible with recurring products. Essential for enterprise deals and custom payment terms.' x-token-cost: 5 operationId: postInstallment tags: - DealInstallments security: - api_key: [] - oauth2: - 'deals:read' - 'deals:full' parameters: - in: path name: id description: The ID of the deal required: true schema: type: integer requestBody: content: application/json: schema: title: AddInstallmentRequestBody required: - description - amount - billing_date properties: description: type: string description: The name of the installment. amount: type: number description: The installment amount. Must be a positive number (excluding 0). billing_date: type: string description: The date on which the installment will be charged. Must be in the format YYYY-MM-DD. responses: '200': description: Installment added to deal content: application/json: schema: title: AddAInstallmentResponse type: object properties: success: type: boolean description: If the response is successful or not data: type: object properties: id: type: integer description: The ID of the installment amount: type: number description: The installment amount. billing_date: type: string description: The date on which the installment will be charged. description: type: string description: The name of installment. deal_id: type: integer description: The ID of the deal the installment was added to. example: success: true data: id: 1 amount: 10 billing_date: '2025-03-10' deal_id: 1 description: Delivery Fee '/deals/{id}/installments/{installment_id}': patch: summary: Update an installment added to a deal description: | Edits an installment added to a deal. Only available in Growth and above plans. x-tool-description: 'Modifies existing payment installment within deal: amounts, dates, or terms. Restricted to Growth+ plans. Essential for renegotiating schedules, corrections, and maintaining flexible payment arrangements.' x-token-cost: 5 operationId: updateInstallment tags: - DealInstallments security: - api_key: [] - oauth2: - 'deals:read' - 'deals:full' parameters: - in: path name: id description: The ID of the deal required: true schema: type: integer - in: path name: installment_id required: true schema: type: integer description: The ID of the installment requestBody: content: application/json: schema: title: UpdateInstallmentRequestBody properties: description: type: string description: The name of the installment. amount: type: number description: The installment amount. Must be a positive number (excluding 0). billing_date: type: string description: The date on which the installment will be charged. Must be in the format YYYY-MM-DD. responses: '200': description: Edited installment. content: application/json: schema: title: UpdateInstallmentResponse type: object properties: success: type: boolean description: If the response is successful or not data: type: object properties: id: type: integer description: The ID of the installment amount: type: number description: The installment amount. billing_date: type: string description: The date on which the installment will be charged. description: type: string description: The name of installment. deal_id: type: integer description: The ID of the deal the installment was added to. example: success: true data: id: 1 amount: 10 billing_date: '2025-03-10' deal_id: 1 description: Delivery Fee delete: summary: Delete an installment from a deal description: | Removes an installment from a deal. Only available in Growth and above plans. x-tool-description: 'Removes payment installment from deal by ID, simplifying schedules or correcting structures. Restricted to Growth+ plans. Essential when payment terms change or installments are no longer needed.' x-token-cost: 3 operationId: deleteInstallment tags: - DealInstallments security: - api_key: [] - oauth2: - 'deals:read' - 'deals:full' parameters: - in: path name: id description: The ID of the deal required: true schema: type: integer - in: path name: installment_id required: true schema: type: integer description: The ID of the installment responses: '200': description: The ID of the deleted installment. content: application/json: schema: title: DeleteInstallmentResponse type: object properties: success: type: boolean description: If the response is successful or not data: type: object properties: id: type: integer description: The ID of the installment that was deleted from the deal example: success: true data: id: 1 '/deals/{id}/convert/lead': post: security: - api_key: [] - oauth2: - 'deals:full' tags: - Deals summary: Convert a deal to a lead description: 'Initiates a conversion of a deal to a lead. The return value is an ID of a job that was assigned to perform the conversion. Related entities (notes, files, emails, activities, ...) are transferred during the process to the target entity. There are exceptions for entities like invoices or history that are not transferred and remain linked to the original deal. If the conversion is successful, the deal is marked as deleted. To retrieve the created entity ID and the result of the conversion, call the /api/v2/deals/{deal_id}/convert/status/{conversion_id} endpoint.' operationId: convertDealToLead x-token-cost: 40 parameters: - in: path name: id required: true schema: type: integer description: The ID of the deal to convert responses: '200': description: Successful response containing payload in the `data` field content: application/json: schema: title: AddConvertDealToLeadResponse type: object properties: success: type: boolean data: type: object description: An object containing conversion job id that performs the conversion required: - conversion_id properties: conversion_id: description: The ID of the conversion job that can be used to retrieve conversion status and details. The ID has UUID format. type: string format: uuid additional_data: type: object nullable: true example: null example: success: true data: conversion_id: 4b40248b-945a-4802-b996-60fdff8c5c69 additional_data: null '404': description: A resource describing an error content: application/json: schema: type: object title: GetConvertResponse properties: success: type: boolean example: false error: type: string description: The description of the error error_info: type: string description: A message describing how to solve the problem data: type: object nullable: true example: null additional_data: type: object nullable: true example: null example: success: false error: Entity was not found error_info: Object was not found. data: null additional_data: null /dealFields: get: summary: Get all deal fields description: Returns metadata about all deal fields in the company. x-token-cost: 10 operationId: getDealFields tags: - DealFields security: - api_key: [] - oauth2: - 'deals:read' - 'deals:full' - admin - 'deal-fields:full' parameters: - in: query name: include_fields description: Optional comma separated string array of additional data namespaces to include in response schema: type: string enum: - ui_visibility - important_fields - required_fields - 'ui_visibility,important_fields' - 'ui_visibility,required_fields' - 'important_fields,required_fields' - 'ui_visibility,important_fields,required_fields' - in: query name: limit description: 'For pagination, the limit of entries to be returned. If not provided, 100 items will be returned. Please note that a maximum value of 500 is allowed.' schema: type: integer example: 100 - in: query name: cursor required: false schema: type: string description: 'For pagination, the marker (an opaque string value) representing the first item on the next page' responses: '200': description: Get all deal fields content: application/json: schema: type: object properties: success: type: boolean description: Whether the request was successful data: type: array items: type: object required: - field_name - field_code - description - field_type - is_custom_field - is_optional_response_field properties: field_name: type: string description: The display name/label of the field field_code: type: string description: The unique identifier for the field (40-character hash for custom fields) description: type: string description: The description of the field field_type: type: string description: The type of the field enum: - int - double - boolean - varchar - text - phone - varchar_options - varchar_auto - date - daterange - time - timerange - enum - set - address - monetary - deal - deals - lead - org - people - project - stage - user - activity - json - picture - status - visible_to - price_list - billing_frequency - projects_board - projects_phase options: type: array nullable: true description: 'Array of available options for enum/set fields, null for other field types' items: type: object properties: id: type: integer description: The option ID label: type: string description: The option display label color: type: string nullable: true description: Optional color code for the option update_time: type: string format: date-time nullable: true description: When the option was last updated add_time: type: string format: date-time nullable: true description: When the option was created subfields: type: array nullable: true description: 'Array of subfields for complex field types (address, monetary), null for simple field types' items: type: object properties: field_code: type: string description: The subfield identifier field_name: type: string description: The subfield display name field_type: type: string description: The subfield type is_custom_field: type: boolean description: Whether this is a user-created custom field is_optional_response_field: type: boolean description: Whether this field is not returned by default in entity responses ui_visibility: type: object description: UI visibility settings (only included when requested via include_fields parameter) properties: add_visible_flag: type: boolean description: Whether the field is shown in the add modal details_visible_flag: type: boolean description: Whether the field is shown in the details view projects_detail_visible_flag: type: boolean description: Whether the field is shown in project details view show_in_pipelines: type: object description: Pipeline visibility configuration properties: show_in_all: type: boolean description: Whether the field is shown in all pipelines pipeline_ids: type: array items: type: integer description: Specific pipeline IDs where the field is shown (if show_in_all is false) important_fields: type: object description: Important fields configuration properties: enabled: type: boolean description: Whether the field is marked as important stage_ids: type: array items: type: integer description: Array of stage IDs where the field is important required_fields: type: object description: Required fields configuration properties: enabled: type: boolean description: Whether the field is required stage_ids: type: array items: type: integer description: Array of stage IDs where the field is required statuses: type: object description: 'Pipeline-specific status requirements, mapping pipeline ID to array of statuses' additionalProperties: type: array items: type: string enum: - won - lost additional_data: type: object properties: next_cursor: type: string nullable: true description: 'Base64url-encoded cursor for fetching the next page of results, null if no more pages' example: success: true data: - field_name: Deal Title field_code: title description: The title or name of the deal field_type: varchar options: null subfields: null is_custom_field: false is_optional_response_field: false ui_visibility: add_visible_flag: true details_visible_flag: true projects_detail_visible_flag: true show_in_pipelines: show_in_all: true pipeline_ids: [] important_fields: enabled: false stage_ids: [] required_fields: enabled: false stage_ids: [] statuses: {} - field_name: Value field_code: value description: The monetary value of the deal field_type: monetary options: null subfields: - field_code: value field_name: Amount of Value field_type: double - field_code: currency field_name: Currency of Value field_type: varchar is_custom_field: false is_optional_response_field: false ui_visibility: add_visible_flag: true details_visible_flag: true projects_detail_visible_flag: true show_in_pipelines: show_in_all: true pipeline_ids: [] important_fields: enabled: true stage_ids: - 1 - 2 - 3 required_fields: enabled: false stage_ids: [] statuses: {} - field_name: Priority field_code: 40characterhashforcustomfieldidentifier description: Priority level for the deal field_type: enum options: - id: 1 label: Low color: green - id: 2 label: Medium color: yellow - id: 3 label: High color: red subfields: null is_custom_field: true is_optional_response_field: false ui_visibility: add_visible_flag: true details_visible_flag: true projects_detail_visible_flag: false show_in_pipelines: show_in_all: false pipeline_ids: - 1 - 2 important_fields: enabled: true stage_ids: - 5 - 6 required_fields: enabled: true stage_ids: - 5 - 6 statuses: '1': - won - lost '2': - won additional_data: next_cursor: eyJmaWVsZCI6ImlkIiwiZmllbGRWYWx1ZSI6Nywic29ydERpcmVjdGlvbiI6ImFzYyIsImlkIjo3fQ post: summary: Create one deal field description: Creates a new deal custom field. x-token-cost: 5 operationId: addDealField tags: - DealFields security: - api_key: [] - oauth2: - admin - 'deal-fields:full' requestBody: required: true content: application/json: schema: type: object required: - field_name - field_type properties: field_name: type: string minLength: 1 maxLength: 255 description: Field name field_type: type: string description: 'The type of the field
ValueDescription
`varchar`Text (up to 255 characters)
`varchar_auto`Autocomplete text (up to 255 characters)
`text`Long text (up to 65k characters)
`double`Numeric value
`monetary`Monetary field (has a numeric value and a currency value)
`date`Date (format YYYY-MM-DD)
`set`Options field with a possibility of having multiple chosen options
`enum`Options field with a single possible chosen option
`user`User field (contains a user ID of another Pipedrive user)
`org`Organization field (contains an organization ID which is stored on the same account)
`people`Person field (contains a person ID which is stored on the same account)
`phone`Phone field (up to 255 numbers and/or characters)
`time`Time field (format HH:MM:SS)
`timerange`Time-range field (has a start time and end time value, both HH:MM:SS)
`daterange`Date-range field (has a start date and end date value, both YYYY-MM-DD)
`address`Address field
' enum: - varchar - text - double - phone - date - daterange - time - timerange - set - enum - varchar_auto - address - monetary - org - people - user options: type: array description: Field options (required for enum and set field types) items: type: object required: - label properties: label: type: string description: The option label ui_visibility: type: object description: UI visibility settings for the field. Controls where the field appears in the Pipedrive web UI. additionalProperties: true properties: add_visible_flag: type: boolean description: 'Whether the field is shown in the add deal modal. Default is false. Cannot be set to false for required system fields (title, pipeline, stage_id, probability).' default: false details_visible_flag: type: boolean description: Whether the field is shown in the deal details view. Default is true. default: true projects_detail_visible_flag: type: boolean description: Whether the field is shown in the project details view when the deal is linked to a project. Default is false. default: false show_in_pipelines: type: object description: Controls which pipelines display this field. Default is show_in_all=true. Note that fields marked as important or required must be visible in the pipelines where they are configured. properties: show_in_all: type: boolean description: 'When true, the field is visible in all pipelines. When false, visibility is controlled by pipeline_ids. Default is true.' default: true pipeline_ids: type: array items: type: integer description: 'Array of pipeline IDs where the field should be visible. Only used when show_in_all is false. Must reference valid, active pipelines.' important_fields: type: object description: Configuration for highlighting the field at specific stages. additionalProperties: true properties: enabled: type: boolean description: 'Whether the field is marked as important. When false, the field is not highlighted. When true with empty stage_ids, the field is important everywhere. When true with specific stage_ids, the field is important only at those stages. Default is false.' default: false stage_ids: type: array items: type: integer description: 'Array of deal stage IDs where this field should be highlighted as important. Must reference valid, active deal stages. Empty array when enabled is false. The stages must be in pipelines where this field is visible (show_in_pipelines).' default: [] required_fields: type: object description: Required fields configuration for marking the field as mandatory when interacted with in the Pipedrive web UI. additionalProperties: true properties: enabled: type: boolean description: 'Whether the field is required. When false, the field is optional. When true with empty stage_ids, the field is required everywhere. When true with specific stage_ids, the field is required only at those stages. Default is false.' default: false stage_ids: type: array items: type: integer description: 'Array of deal stage IDs where this field is required. Must reference valid, active deal stages. Empty array when enabled is false. The stages must be in pipelines where this field is visible (show_in_pipelines).' default: [] statuses: type: object description: 'Pipeline-specific status requirements for when deals are won or lost. Keys are pipeline IDs (as strings), values are arrays of status strings (''won'', ''lost''). Example - {"1":["won","lost"],"2":["won"]} means the field is required when marking deals as won or lost in pipeline 1, and only when won in pipeline 2. Must reference valid, active pipelines.' default: {} additionalProperties: type: array items: type: string enum: - won - lost description: type: string nullable: true description: Field description responses: '200': description: Create one deal field content: application/json: schema: type: object properties: success: type: boolean description: Whether the request was successful data: type: object required: - field_name - field_code - description - field_type - is_custom_field - is_optional_response_field properties: field_name: type: string description: The display name/label of the field field_code: type: string description: The unique identifier for the field (40-character hash for custom fields) description: type: string description: The description of the field field_type: type: string description: The type of the field enum: - int - double - boolean - varchar - text - phone - varchar_options - varchar_auto - date - daterange - time - timerange - enum - set - address - monetary - deal - deals - lead - org - people - project - stage - user - activity - json - picture - status - visible_to - price_list - billing_frequency - projects_board - projects_phase options: type: array nullable: true description: 'Array of available options for enum/set fields, null for other field types' items: type: object properties: id: type: integer description: The option ID label: type: string description: The option display label color: type: string nullable: true description: Optional color code for the option update_time: type: string format: date-time nullable: true description: When the option was last updated add_time: type: string format: date-time nullable: true description: When the option was created subfields: type: array nullable: true description: 'Array of subfields for complex field types (address, monetary), null for simple field types' items: type: object properties: field_code: type: string description: The subfield identifier field_name: type: string description: The subfield display name field_type: type: string description: The subfield type is_custom_field: type: boolean description: Whether this is a user-created custom field is_optional_response_field: type: boolean description: Whether this field is not returned by default in entity responses ui_visibility: type: object description: UI visibility settings (only included when requested via include_fields parameter) properties: add_visible_flag: type: boolean description: Whether the field is shown in the add modal details_visible_flag: type: boolean description: Whether the field is shown in the details view projects_detail_visible_flag: type: boolean description: Whether the field is shown in project details view show_in_pipelines: type: object description: Pipeline visibility configuration properties: show_in_all: type: boolean description: Whether the field is shown in all pipelines pipeline_ids: type: array items: type: integer description: Specific pipeline IDs where the field is shown (if show_in_all is false) important_fields: type: object description: Important fields configuration properties: enabled: type: boolean description: Whether the field is marked as important stage_ids: type: array items: type: integer description: Array of stage IDs where the field is important required_fields: type: object description: Required fields configuration properties: enabled: type: boolean description: Whether the field is required stage_ids: type: array items: type: integer description: Array of stage IDs where the field is required statuses: type: object description: 'Pipeline-specific status requirements, mapping pipeline ID to array of statuses' additionalProperties: type: array items: type: string enum: - won - lost example: success: true data: field_name: Priority field_code: 946947d1b02fd3ef20798d6112ec5d895a686a21 description: Priority level for the deal field_type: enum options: - id: 1 label: Low color: green - id: 2 label: Medium color: yellow - id: 3 label: High color: red subfields: null is_custom_field: true is_optional_response_field: false ui_visibility: add_visible_flag: true details_visible_flag: true projects_detail_visible_flag: false show_in_pipelines: show_in_all: false pipeline_ids: - 1 - 2 important_fields: enabled: true stage_ids: - 5 - 6 required_fields: enabled: true stage_ids: - 5 - 6 '/dealFields/{field_code}': get: summary: Get one deal field description: Returns metadata about a specific deal field. x-token-cost: 1 operationId: getDealField tags: - DealFields security: - api_key: [] - oauth2: - 'deals:read' - 'deals:full' - admin - 'deal-fields:full' parameters: - in: path name: field_code description: The unique code identifying the field required: true schema: type: string - in: query name: include_fields description: Optional comma separated string array of additional data namespaces to include in response schema: type: string enum: - ui_visibility - important_fields - required_fields - 'ui_visibility,important_fields' - 'ui_visibility,required_fields' - 'important_fields,required_fields' - 'ui_visibility,important_fields,required_fields' responses: '200': description: Get one deal field content: application/json: schema: type: object properties: success: type: boolean description: Whether the request was successful data: type: object required: - field_name - field_code - description - field_type - is_custom_field - is_optional_response_field properties: field_name: type: string description: The display name/label of the field field_code: type: string description: The unique identifier for the field (40-character hash for custom fields) description: type: string description: The description of the field field_type: type: string description: The type of the field enum: - int - double - boolean - varchar - text - phone - varchar_options - varchar_auto - date - daterange - time - timerange - enum - set - address - monetary - deal - deals - lead - org - people - project - stage - user - activity - json - picture - status - visible_to - price_list - billing_frequency - projects_board - projects_phase options: type: array nullable: true description: 'Array of available options for enum/set fields, null for other field types' items: type: object properties: id: type: integer description: The option ID label: type: string description: The option display label color: type: string nullable: true description: Optional color code for the option update_time: type: string format: date-time nullable: true description: When the option was last updated add_time: type: string format: date-time nullable: true description: When the option was created subfields: type: array nullable: true description: 'Array of subfields for complex field types (address, monetary), null for simple field types' items: type: object properties: field_code: type: string description: The subfield identifier field_name: type: string description: The subfield display name field_type: type: string description: The subfield type is_custom_field: type: boolean description: Whether this is a user-created custom field is_optional_response_field: type: boolean description: Whether this field is not returned by default in entity responses ui_visibility: type: object description: UI visibility settings (only included when requested via include_fields parameter) properties: add_visible_flag: type: boolean description: Whether the field is shown in the add modal details_visible_flag: type: boolean description: Whether the field is shown in the details view projects_detail_visible_flag: type: boolean description: Whether the field is shown in project details view show_in_pipelines: type: object description: Pipeline visibility configuration properties: show_in_all: type: boolean description: Whether the field is shown in all pipelines pipeline_ids: type: array items: type: integer description: Specific pipeline IDs where the field is shown (if show_in_all is false) important_fields: type: object description: Important fields configuration properties: enabled: type: boolean description: Whether the field is marked as important stage_ids: type: array items: type: integer description: Array of stage IDs where the field is important required_fields: type: object description: Required fields configuration properties: enabled: type: boolean description: Whether the field is required stage_ids: type: array items: type: integer description: Array of stage IDs where the field is required statuses: type: object description: 'Pipeline-specific status requirements, mapping pipeline ID to array of statuses' additionalProperties: type: array items: type: string enum: - won - lost example: success: true data: field_name: Deal Title field_code: title description: The title or name of the deal field_type: varchar options: null subfields: null is_custom_field: false is_optional_response_field: false ui_visibility: add_visible_flag: true details_visible_flag: true projects_detail_visible_flag: true show_in_pipelines: show_in_all: true pipeline_ids: [] important_fields: enabled: false stage_ids: [] required_fields: enabled: false stage_ids: [] statuses: {} patch: summary: Update one deal field description: Updates a deal custom field. The field_code and field_type cannot be changed. At least one field must be provided in the request body. x-token-cost: 5 operationId: updateDealField tags: - DealFields security: - api_key: [] - oauth2: - 'deals:full' - admin - 'deal-fields:full' parameters: - in: path name: field_code description: The unique code identifying the field required: true schema: type: string requestBody: required: true content: application/json: schema: type: object minProperties: 1 properties: field_name: type: string minLength: 1 maxLength: 255 description: Field name ui_visibility: type: object description: UI visibility settings for the field. Controls where the field appears in the Pipedrive web UI. additionalProperties: true properties: add_visible_flag: type: boolean description: 'Whether the field is shown in the add deal modal. Default is false. Cannot be set to false for required system fields (title, pipeline, stage_id, probability).' default: false details_visible_flag: type: boolean description: Whether the field is shown in the deal details view. Default is true. default: true projects_detail_visible_flag: type: boolean description: Whether the field is shown in the project details view when the deal is linked to a project. Default is false. default: false show_in_pipelines: type: object description: Controls which pipelines display this field. Default is show_in_all=true. Note that fields marked as important or required must be visible in the pipelines where they are configured. properties: show_in_all: type: boolean description: 'When true, the field is visible in all pipelines. When false, visibility is controlled by pipeline_ids. Default is true.' default: true pipeline_ids: type: array items: type: integer description: 'Array of pipeline IDs where the field should be visible. Only used when show_in_all is false. Must reference valid, active pipelines.' important_fields: type: object description: Configuration for highlighting the field at specific stages. additionalProperties: true properties: enabled: type: boolean description: 'Whether the field is marked as important. When false, the field is not highlighted. When true with empty stage_ids, the field is important everywhere. When true with specific stage_ids, the field is important only at those stages. Default is false.' default: false stage_ids: type: array items: type: integer description: 'Array of deal stage IDs where this field should be highlighted as important. Must reference valid, active deal stages. Empty array when enabled is false. The stages must be in pipelines where this field is visible (show_in_pipelines).' default: [] required_fields: type: object description: Required fields configuration for marking the field as mandatory when interacted with in the Pipedrive web UI. additionalProperties: true properties: enabled: type: boolean description: 'Whether the field is required. When false, the field is optional. When true with empty stage_ids, the field is required everywhere. When true with specific stage_ids, the field is required only at those stages. Default is false.' default: false stage_ids: type: array items: type: integer description: 'Array of deal stage IDs where this field is required. Must reference valid, active deal stages. Empty array when enabled is false. The stages must be in pipelines where this field is visible (show_in_pipelines).' default: [] statuses: type: object description: 'Pipeline-specific status requirements for when deals are won or lost. Keys are pipeline IDs (as strings), values are arrays of status strings (''won'', ''lost''). Example - {"1":["won","lost"],"2":["won"]} means the field is required when marking deals as won or lost in pipeline 1, and only when won in pipeline 2. Must reference valid, active pipelines.' default: {} additionalProperties: type: array items: type: string enum: - won - lost description: type: string nullable: true description: Field description responses: '200': description: Get one deal field content: application/json: schema: type: object properties: success: type: boolean description: Whether the request was successful data: type: object required: - field_name - field_code - description - field_type - is_custom_field - is_optional_response_field properties: field_name: type: string description: The display name/label of the field field_code: type: string description: The unique identifier for the field (40-character hash for custom fields) description: type: string description: The description of the field field_type: type: string description: The type of the field enum: - int - double - boolean - varchar - text - phone - varchar_options - varchar_auto - date - daterange - time - timerange - enum - set - address - monetary - deal - deals - lead - org - people - project - stage - user - activity - json - picture - status - visible_to - price_list - billing_frequency - projects_board - projects_phase options: type: array nullable: true description: 'Array of available options for enum/set fields, null for other field types' items: type: object properties: id: type: integer description: The option ID label: type: string description: The option display label color: type: string nullable: true description: Optional color code for the option update_time: type: string format: date-time nullable: true description: When the option was last updated add_time: type: string format: date-time nullable: true description: When the option was created subfields: type: array nullable: true description: 'Array of subfields for complex field types (address, monetary), null for simple field types' items: type: object properties: field_code: type: string description: The subfield identifier field_name: type: string description: The subfield display name field_type: type: string description: The subfield type is_custom_field: type: boolean description: Whether this is a user-created custom field is_optional_response_field: type: boolean description: Whether this field is not returned by default in entity responses ui_visibility: type: object description: UI visibility settings (only included when requested via include_fields parameter) properties: add_visible_flag: type: boolean description: Whether the field is shown in the add modal details_visible_flag: type: boolean description: Whether the field is shown in the details view projects_detail_visible_flag: type: boolean description: Whether the field is shown in project details view show_in_pipelines: type: object description: Pipeline visibility configuration properties: show_in_all: type: boolean description: Whether the field is shown in all pipelines pipeline_ids: type: array items: type: integer description: Specific pipeline IDs where the field is shown (if show_in_all is false) important_fields: type: object description: Important fields configuration properties: enabled: type: boolean description: Whether the field is marked as important stage_ids: type: array items: type: integer description: Array of stage IDs where the field is important required_fields: type: object description: Required fields configuration properties: enabled: type: boolean description: Whether the field is required stage_ids: type: array items: type: integer description: Array of stage IDs where the field is required statuses: type: object description: 'Pipeline-specific status requirements, mapping pipeline ID to array of statuses' additionalProperties: type: array items: type: string enum: - won - lost example: success: true data: field_name: Deal Title field_code: title description: The title or name of the deal field_type: varchar options: null subfields: null is_custom_field: false is_optional_response_field: false ui_visibility: add_visible_flag: true details_visible_flag: true projects_detail_visible_flag: true show_in_pipelines: show_in_all: true pipeline_ids: [] important_fields: enabled: false stage_ids: [] required_fields: enabled: false stage_ids: [] statuses: {} delete: summary: Delete one deal field description: Marks a custom field as deleted. x-token-cost: 3 operationId: deleteDealField tags: - DealFields security: - api_key: [] - oauth2: - admin - 'deal-fields:full' parameters: - in: path name: field_code description: The unique code identifying the field required: true schema: type: string responses: '200': description: Delete one deal field content: application/json: schema: type: object properties: success: type: boolean description: Whether the request was successful data: type: object required: - field_name - field_code - description - field_type - is_custom_field - is_optional_response_field properties: field_name: type: string description: The display name/label of the field field_code: type: string description: The unique identifier for the field (40-character hash for custom fields) description: type: string description: The description of the field field_type: type: string description: The type of the field options: type: array nullable: true description: 'Array of available options for enum/set fields, null for other field types' items: type: object subfields: type: array nullable: true description: 'Array of subfields for complex field types (address, monetary), null for simple field types' items: type: object is_custom_field: type: boolean description: Whether this is a user-created custom field is_optional_response_field: type: boolean description: Whether this field is not returned by default in entity responses example: success: true data: field_name: Custom text field field_code: 946947d1b02fd3ef20798d6112ec5d895a686a21 description: A custom text field field_type: varchar options: null subfields: null is_custom_field: true is_optional_response_field: false '/dealFields/{field_code}/options': post: summary: Add deal field options in bulk description: Adds new options to a deal custom field that supports options (enum or set field types). This operation is atomic - all options are added or none are added. Returns only the newly added options. x-token-cost: 5 operationId: addDealFieldOptions tags: - DealFields security: - api_key: [] - oauth2: - 'deals:full' - admin - 'deal-fields:full' parameters: - in: path name: field_code description: The unique code identifying the field required: true schema: type: string requestBody: required: true content: application/json: schema: type: array description: Array of options to add. Each item must contain a label. At least one option is required. items: type: object required: - label properties: label: type: string minLength: 1 maxLength: 255 description: The display label for the new option responses: '200': description: Field options operation result content: application/json: schema: type: object properties: success: type: boolean data: type: array items: type: object required: - id - label properties: id: type: integer description: The unique identifier of the option label: type: string description: The display label of the option additional_data: type: object nullable: true example: success: true data: - id: 4 label: Critical additional_data: null delete: summary: Delete deal field options in bulk description: Removes existing options from a deal custom field. This operation is atomic and fails if any of the specified option IDs do not exist. Returns only the deleted options. x-token-cost: 3 operationId: deleteDealFieldOptions tags: - DealFields security: - api_key: [] - oauth2: - 'deals:full' - admin - 'deal-fields:full' parameters: - in: path name: field_code description: The unique code identifying the field required: true schema: type: string requestBody: required: true content: application/json: schema: type: array description: Array of option IDs to delete. Each item must contain an ID of the option to delete. At least one option ID is required. The entire request fails if any option does not exist. items: type: object required: - id properties: id: type: integer description: The unique identifier of the option to delete responses: '200': description: Field options operation result content: application/json: schema: type: object properties: success: type: boolean data: type: array items: type: object required: - id - label properties: id: type: integer description: The unique identifier of the option label: type: string description: The display label of the option additional_data: type: object nullable: true example: success: true data: - id: 4 label: Critical additional_data: null patch: summary: Update deal field options in bulk description: Updates existing options for a deal custom field. This operation is atomic and fails if any of the specified option IDs do not exist. Returns only the updated options. x-token-cost: 5 operationId: updateDealFieldOptions tags: - DealFields security: - api_key: [] - oauth2: - 'deals:full' - admin - 'deal-fields:full' parameters: - in: path name: field_code description: The unique code identifying the field required: true schema: type: string requestBody: required: true content: application/json: schema: type: array description: Array of options to update. Each item must contain an ID and the updated label. At least one option is required. The entire request fails if any option does not exist. items: type: object required: - id - label properties: id: type: integer description: The unique identifier of the option to update label: type: string minLength: 1 maxLength: 255 description: The new display label for the option responses: '200': description: Field options operation result content: application/json: schema: type: object properties: success: type: boolean data: type: array items: type: object required: - id - label properties: id: type: integer description: The unique identifier of the option label: type: string description: The display label of the option additional_data: type: object nullable: true example: success: true data: - id: 4 label: Critical additional_data: null '/deals/{id}/convert/status/{conversion_id}': get: security: - api_key: [] - oauth2: - 'deals:full' - 'deals:read' tags: - Deals summary: Get Deal conversion status description: 'Returns information about the conversion. Status is always present and its value (not_started, running, completed, failed, rejected) represents the current state of the conversion. Lead ID is only present if the conversion was successfully finished. This data is only temporary and removed after a few days.' operationId: getDealConversionStatus x-token-cost: 1 parameters: - in: path name: id required: true schema: type: integer description: The ID of a deal - in: path name: conversion_id required: true schema: type: string format: uuid description: The ID of the conversion responses: '200': description: Successful response containing payload in the `data` field content: application/json: example: success: true data: lead_id: 9f3e6e50-9d99-11ee-9538-29c81a92c0d1 conversion_id: 4b40248b-945a-4802-b996-60fdff8c5c69 status: completed additional_data: null schema: title: GetConvertResponse type: object required: - success - data properties: success: type: boolean data: type: object description: An object containing conversion status. After successful conversion the converted entity ID is also present. required: - conversion_id - status properties: lead_id: description: The ID of the new lead. type: string format: uuid deal_id: description: The ID of the new deal. type: integer conversion_id: description: The ID of the conversion job. The ID can be used to retrieve conversion status and details. The ID has UUID format. type: string format: uuid status: description: Status of the conversion job. type: string enum: - not_started - running - completed - failed - rejected additional_data: type: object nullable: true example: null '404': description: A resource describing an error content: application/json: schema: type: object title: GetConvertResponse properties: success: type: boolean example: false error: type: string description: The description of the error error_info: type: string description: A message describing how to solve the problem data: type: object nullable: true example: null additional_data: type: object nullable: true example: null example: success: false error: Entity was not found error_info: Object was not found. data: null additional_data: null /persons: get: summary: Get all persons description: 'Returns data about all persons. Fields `ims`, `postal_address`, `notes`, `birthday`, and `job_title` are only included if contact sync is enabled for the company.' x-token-cost: 10 operationId: getPersons tags: - Persons security: - api_key: [] - oauth2: - 'contacts:read' - 'contacts:full' parameters: - in: query name: filter_id schema: type: integer description: 'If supplied, only persons matching the specified filter are returned' - in: query name: ids description: 'Optional comma separated string array of up to 100 entity ids to fetch. If filter_id is provided, this is ignored. If any of the requested entities do not exist or are not visible, they are not included in the response.' schema: type: string - in: query name: owner_id schema: type: integer description: 'If supplied, only persons owned by the specified user are returned. If filter_id is provided, this is ignored.' - in: query name: org_id schema: type: integer description: 'If supplied, only persons linked to the specified organization are returned. If filter_id is provided, this is ignored.' - in: query name: deal_id schema: type: integer description: 'If supplied, only persons linked to the specified deal are returned. If filter_id is provided, this is ignored.' - in: query name: updated_since schema: type: string description: 'If set, only persons with an `update_time` later than or equal to this time are returned. In RFC3339 format, e.g. 2025-01-01T10:20:00Z.' - in: query name: updated_until schema: type: string description: 'If set, only persons with an `update_time` earlier than this time are returned. In RFC3339 format, e.g. 2025-01-01T10:20:00Z.' - in: query name: sort_by description: 'The field to sort by. Supported fields: `id`, `update_time`, `add_time`.' schema: type: string default: id enum: - id - update_time - add_time - in: query name: sort_direction description: 'The sorting direction. Supported values: `asc`, `desc`.' schema: type: string default: asc enum: - asc - desc - in: query name: include_fields description: Optional comma separated string array of additional fields to include. `marketing_status` and `doi_status` can only be included if the company has marketing app enabled. schema: type: string enum: - next_activity_id - last_activity_id - open_deals_count - related_open_deals_count - closed_deals_count - related_closed_deals_count - participant_open_deals_count - participant_closed_deals_count - email_messages_count - activities_count - done_activities_count - undone_activities_count - files_count - notes_count - followers_count - won_deals_count - related_won_deals_count - lost_deals_count - related_lost_deals_count - last_incoming_mail_time - last_outgoing_mail_time - marketing_status - doi_status - smart_bcc_email - in: query name: custom_fields description: 'Optional comma separated string array of custom fields keys to include. If you are only interested in a particular set of custom fields, please use this parameter for faster results and smaller response.
A maximum of 15 keys is allowed.' schema: type: string - in: query name: include_option_labels description: 'When provided with a ''true'' value, single option and multiple option custom fields values contain objects in the form of ''{ id: number, label: string }'' instead of plain id' schema: type: boolean - in: query name: include_labels description: 'When provided with ''true'' value, response will include an array of label objects in the form of ''{ id: number, label: string }''' schema: type: boolean - in: query name: limit description: 'For pagination, the limit of entries to be returned. If not provided, 100 items will be returned. Please note that a maximum value of 500 is allowed.' schema: type: integer example: 100 - in: query name: cursor required: false schema: type: string description: 'For pagination, the marker (an opaque string value) representing the first item on the next page' responses: '200': description: Get all persons content: application/json: schema: type: object title: GetPersonsResponse allOf: - title: baseResponse type: object properties: success: type: boolean description: If the response is successful or not - type: object properties: data: type: array description: Persons array items: type: object properties: id: type: integer description: The ID of the person name: type: string description: The name of the person first_name: type: string description: The first name of the person last_name: type: string description: The last name of the person owner_id: type: integer description: The ID of the user who owns the person org_id: type: integer description: The ID of the organization linked to the person add_time: type: string description: The creation date and time of the person update_time: type: string description: The last updated date and time of the person emails: type: array description: The emails of the person items: type: object properties: value: type: string description: The email address of the person primary: type: boolean description: Whether the email is primary or not label: type: string description: The email address classification label phones: type: array description: The phones of the person items: type: object properties: value: type: string description: The phone number of the person primary: type: boolean description: Whether the phone number is primary or not label: type: string description: The phone number classification label is_deleted: type: boolean description: Whether the person is deleted or not visible_to: type: integer description: The visibility of the person label_ids: type: array description: The IDs of labels assigned to the person items: type: integer picture_id: type: integer description: The ID of the picture associated with the person postal_address: type: object description: 'Postal address of the person, included if contact sync is enabled for the company' properties: value: type: string description: The full address of the person country: type: string description: Country of the person admin_area_level_1: type: string description: Admin area level 1 (e.g. state) of the person admin_area_level_2: type: string description: Admin area level 2 (e.g. county) of the person locality: type: string description: Locality (e.g. city) of the person sublocality: type: string description: Sublocality (e.g. neighborhood) of the person route: type: string description: Route (e.g. street) of the person street_number: type: string description: Street number of the person subpremise: type: string description: Subpremise (e.g. apartment/suite number) of the person postal_code: type: string description: Postal code of the person notes: type: string description: 'Contact sync notes of the person, maximum 10 000 characters, included if contact sync is enabled for the company' im: type: array description: 'The instant messaging accounts of the person, included if contact sync is enabled for the company' items: type: object properties: value: type: string description: The instant messaging account of the person primary: type: boolean description: Whether the instant messaging account is primary or not label: type: string description: The instant messaging account classification label birthday: type: string description: 'The birthday of the person, included if contact sync is enabled for the company' job_title: type: string description: 'The job title of the person, included if contact sync is enabled for the company' custom_fields: type: object additionalProperties: true description: 'An object where each key represents a custom field. All custom fields are referenced as randomly generated 40-character hashes. To clear a custom field value, set it to `null`. For multi-option fields (field type `set`), use `null` to clear the selection — sending an empty array `[]` is not supported and will result in a validation error.' additional_data: type: object description: The additional data of the list properties: next_cursor: type: string description: The first item on the next page. The value of the `next_cursor` field will be `null` if you have reached the end of the dataset and there’s no more pages to be returned. example: success: true data: - id: 1 name: Person Name first_name: Person last_name: Name owner_id: 1 org_id: 1 add_time: '2021-01-01T00:00:00Z' update_time: '2021-01-01T00:00:00Z' emails: - value: email1@email.com primary: true label: work - value: email2@email.com primary: false label: home phones: - value: '12345' primary: true label: work - value: '54321' primary: false label: home is_deleted: false visible_to: 7 label_ids: - 1 - 2 - 3 picture_id: 1 custom_fields: {} notes: Notes from contact sync im: - value: skypeusername primary: true label: skype - value: whatsappusername primary: false label: whatsapp birthday: '2000-12-31' job_title: Manager postal_address: value: 123 Main St country: USA admin_area_level_1: CA admin_area_level_2: Santa Clara locality: Sunnyvale sublocality: Downtown route: Main St street_number: '123' subpremise: Apt 1 postal_code: '94085' additional_data: next_cursor: eyJmaWVsZCI6ImlkIiwiZmllbGRWYWx1ZSI6Nywic29ydERpcmVjdGlvbiI6ImFzYyIsImlkIjo3fQ post: summary: Add a new person description: 'Adds a new person. If the company uses the [Campaigns product](https://pipedrive.readme.io/docs/campaigns-in-pipedrive-api), then this endpoint will also accept and return the `marketing_status` field.' x-token-cost: 5 operationId: addPerson tags: - Persons security: - api_key: [] - oauth2: - 'contacts:full' requestBody: content: application/json: schema: type: object properties: name: type: string description: The name of the person owner_id: type: integer description: The ID of the user who owns the person org_id: type: integer description: The ID of the organization linked to the person add_time: type: string description: The creation date and time of the person update_time: type: string description: The last updated date and time of the person emails: type: array description: The emails of the person items: type: object properties: value: type: string description: The email address of the person primary: type: boolean description: Whether the email is primary or not label: type: string description: The email address classification label phones: type: array description: The phones of the person items: type: object properties: value: type: string description: The phone number of the person primary: type: boolean description: Whether the phone number is primary or not label: type: string description: The phone number classification label visible_to: type: integer description: The visibility of the person label_ids: type: array description: The IDs of labels assigned to the person items: type: integer marketing_status: type: string description: 'If the person does not have a valid email address, then the marketing status is **not set** and `no_consent` is returned for the `marketing_status` value when the new person is created. If the change is forbidden, the status will remain unchanged for every call that tries to modify the marketing status. Please be aware that it is only allowed **once** to change the marketing status from an old status to a new one.
ValueDescription
`no_consent`The customer has not given consent to receive any marketing communications
`unsubscribed`The customers have unsubscribed from ALL marketing communications
`subscribed`The customers are subscribed and are counted towards marketing caps
`archived`The customers with `subscribed` status can be moved to `archived` to save consent, but they are not paid for
' enum: - no_consent - unsubscribed - subscribed - archived custom_fields: type: object additionalProperties: true description: 'An object where each key represents a custom field. All custom fields are referenced as randomly generated 40-character hashes. To clear a custom field value, set it to `null`. For multi-option fields (field type `set`), use `null` to clear the selection — sending an empty array `[]` is not supported and will result in a validation error.' responses: '200': description: Add person content: application/json: schema: type: object title: UpsertPersonResponse allOf: - title: baseResponse type: object properties: success: type: boolean description: If the response is successful or not - type: object title: UpsertPersonResponseData properties: data: type: object properties: id: type: integer description: The ID of the person name: type: string description: The name of the person first_name: type: string description: The first name of the person last_name: type: string description: The last name of the person owner_id: type: integer description: The ID of the user who owns the person org_id: type: integer description: The ID of the organization linked to the person add_time: type: string description: The creation date and time of the person update_time: type: string description: The last updated date and time of the person emails: type: array description: The emails of the person items: type: object properties: value: type: string description: The email address of the person primary: type: boolean description: Whether the email is primary or not label: type: string description: The email address classification label phones: type: array description: The phones of the person items: type: object properties: value: type: string description: The phone number of the person primary: type: boolean description: Whether the phone number is primary or not label: type: string description: The phone number classification label is_deleted: type: boolean description: Whether the person is deleted or not visible_to: type: integer description: The visibility of the person label_ids: type: array description: The IDs of labels assigned to the person items: type: integer picture_id: type: integer description: The ID of the picture associated with the person postal_address: type: object description: 'Postal address of the person, included if contact sync is enabled for the company' properties: value: type: string description: The full address of the person country: type: string description: Country of the person admin_area_level_1: type: string description: Admin area level 1 (e.g. state) of the person admin_area_level_2: type: string description: Admin area level 2 (e.g. county) of the person locality: type: string description: Locality (e.g. city) of the person sublocality: type: string description: Sublocality (e.g. neighborhood) of the person route: type: string description: Route (e.g. street) of the person street_number: type: string description: Street number of the person subpremise: type: string description: Subpremise (e.g. apartment/suite number) of the person postal_code: type: string description: Postal code of the person notes: type: string description: 'Contact sync notes of the person, maximum 10 000 characters, included if contact sync is enabled for the company' im: type: array description: 'The instant messaging accounts of the person, included if contact sync is enabled for the company' items: type: object properties: value: type: string description: The instant messaging account of the person primary: type: boolean description: Whether the instant messaging account is primary or not label: type: string description: The instant messaging account classification label birthday: type: string description: 'The birthday of the person, included if contact sync is enabled for the company' job_title: type: string description: 'The job title of the person, included if contact sync is enabled for the company' custom_fields: type: object additionalProperties: true description: 'An object where each key represents a custom field. All custom fields are referenced as randomly generated 40-character hashes. To clear a custom field value, set it to `null`. For multi-option fields (field type `set`), use `null` to clear the selection — sending an empty array `[]` is not supported and will result in a validation error.' example: success: true data: id: 1 name: Person Name first_name: Person last_name: Name owner_id: 1 org_id: 1 add_time: '2021-01-01T00:00:00Z' update_time: '2021-01-01T00:00:00Z' emails: - value: email1@email.com primary: true label: work - value: email2@email.com primary: false label: home phones: - value: '12345' primary: true label: work - value: '54321' primary: false label: home is_deleted: false visible_to: 7 label_ids: - 1 - 2 - 3 picture_id: 1 custom_fields: {} notes: Notes from contact sync im: - value: skypeusername primary: true label: skype - value: whatsappusername primary: false label: whatsapp birthday: '2000-12-31' job_title: Manager postal_address: value: 123 Main St country: USA admin_area_level_1: CA admin_area_level_2: Santa Clara locality: Sunnyvale sublocality: Downtown route: Main St street_number: '123' subpremise: Apt 1 postal_code: '94085' '/persons/{id}': delete: summary: Delete a person description: 'Marks a person as deleted. After 30 days, the person will be permanently deleted.' x-token-cost: 3 operationId: deletePerson tags: - Persons security: - api_key: [] - oauth2: - 'contacts:full' parameters: - in: path name: id description: The ID of the person required: true schema: type: integer responses: '200': description: Delete person content: application/json: schema: title: DeletePersonResponse type: object properties: success: type: boolean description: If the response is successful or not data: type: object properties: id: type: integer description: Deleted person ID example: success: true data: id: 1 get: summary: Get details of a person description: 'Returns the details of a specific person. Fields `ims`, `postal_address`, `notes`, `birthday`, and `job_title` are only included if contact sync is enabled for the company.' x-token-cost: 1 operationId: getPerson tags: - Persons security: - api_key: [] - oauth2: - 'contacts:read' - 'contacts:full' parameters: - in: path name: id description: The ID of the person required: true schema: type: integer - in: query name: include_fields description: Optional comma separated string array of additional fields to include. `marketing_status` and `doi_status` can only be included if the company has marketing app enabled. schema: type: string enum: - next_activity_id - last_activity_id - open_deals_count - related_open_deals_count - closed_deals_count - related_closed_deals_count - participant_open_deals_count - participant_closed_deals_count - email_messages_count - activities_count - done_activities_count - undone_activities_count - files_count - notes_count - followers_count - won_deals_count - related_won_deals_count - lost_deals_count - related_lost_deals_count - last_incoming_mail_time - last_outgoing_mail_time - marketing_status - doi_status - smart_bcc_email - in: query name: custom_fields description: 'Optional comma separated string array of custom fields keys to include. If you are only interested in a particular set of custom fields, please use this parameter for faster results and smaller response.
A maximum of 15 keys is allowed.' schema: type: string - in: query name: include_option_labels description: 'When provided with a ''true'' value, single option and multiple option custom fields values contain objects in the form of ''{ id: number, label: string }'' instead of plain id' schema: type: boolean - in: query name: include_labels description: 'When provided with ''true'' value, response will include an array of label objects in the form of ''{ id: number, label: string }''' schema: type: boolean responses: '200': description: Get person content: application/json: schema: type: object title: UpsertPersonResponse allOf: - title: baseResponse type: object properties: success: type: boolean description: If the response is successful or not - type: object title: UpsertPersonResponseData properties: data: type: object properties: id: type: integer description: The ID of the person name: type: string description: The name of the person first_name: type: string description: The first name of the person last_name: type: string description: The last name of the person owner_id: type: integer description: The ID of the user who owns the person org_id: type: integer description: The ID of the organization linked to the person add_time: type: string description: The creation date and time of the person update_time: type: string description: The last updated date and time of the person emails: type: array description: The emails of the person items: type: object properties: value: type: string description: The email address of the person primary: type: boolean description: Whether the email is primary or not label: type: string description: The email address classification label phones: type: array description: The phones of the person items: type: object properties: value: type: string description: The phone number of the person primary: type: boolean description: Whether the phone number is primary or not label: type: string description: The phone number classification label is_deleted: type: boolean description: Whether the person is deleted or not visible_to: type: integer description: The visibility of the person label_ids: type: array description: The IDs of labels assigned to the person items: type: integer picture_id: type: integer description: The ID of the picture associated with the person postal_address: type: object description: 'Postal address of the person, included if contact sync is enabled for the company' properties: value: type: string description: The full address of the person country: type: string description: Country of the person admin_area_level_1: type: string description: Admin area level 1 (e.g. state) of the person admin_area_level_2: type: string description: Admin area level 2 (e.g. county) of the person locality: type: string description: Locality (e.g. city) of the person sublocality: type: string description: Sublocality (e.g. neighborhood) of the person route: type: string description: Route (e.g. street) of the person street_number: type: string description: Street number of the person subpremise: type: string description: Subpremise (e.g. apartment/suite number) of the person postal_code: type: string description: Postal code of the person notes: type: string description: 'Contact sync notes of the person, maximum 10 000 characters, included if contact sync is enabled for the company' im: type: array description: 'The instant messaging accounts of the person, included if contact sync is enabled for the company' items: type: object properties: value: type: string description: The instant messaging account of the person primary: type: boolean description: Whether the instant messaging account is primary or not label: type: string description: The instant messaging account classification label birthday: type: string description: 'The birthday of the person, included if contact sync is enabled for the company' job_title: type: string description: 'The job title of the person, included if contact sync is enabled for the company' custom_fields: type: object additionalProperties: true description: 'An object where each key represents a custom field. All custom fields are referenced as randomly generated 40-character hashes. To clear a custom field value, set it to `null`. For multi-option fields (field type `set`), use `null` to clear the selection — sending an empty array `[]` is not supported and will result in a validation error.' example: success: true data: id: 1 name: Person Name first_name: Person last_name: Name owner_id: 1 org_id: 1 add_time: '2021-01-01T00:00:00Z' update_time: '2021-01-01T00:00:00Z' emails: - value: email1@email.com primary: true label: work - value: email2@email.com primary: false label: home phones: - value: '12345' primary: true label: work - value: '54321' primary: false label: home is_deleted: false visible_to: 7 label_ids: - 1 - 2 - 3 picture_id: 1 custom_fields: {} notes: Notes from contact sync im: - value: skypeusername primary: true label: skype - value: whatsappusername primary: false label: whatsapp birthday: '2000-12-31' job_title: Manager postal_address: value: 123 Main St country: USA admin_area_level_1: CA admin_area_level_2: Santa Clara locality: Sunnyvale sublocality: Downtown route: Main St street_number: '123' subpremise: Apt 1 postal_code: '94085' patch: summary: Update a person description: 'Updates the properties of a person.
If the company uses the [Campaigns product](https://pipedrive.readme.io/docs/campaigns-in-pipedrive-api), then this endpoint will also accept and return the `marketing_status` field.' x-token-cost: 5 operationId: updatePerson tags: - Persons security: - api_key: [] - oauth2: - 'contacts:full' parameters: - in: path name: id description: The ID of the person required: true schema: type: integer requestBody: content: application/json: schema: type: object properties: name: type: string description: The name of the person owner_id: type: integer description: The ID of the user who owns the person org_id: type: integer description: The ID of the organization linked to the person add_time: type: string description: The creation date and time of the person update_time: type: string description: The last updated date and time of the person emails: type: array description: The emails of the person items: type: object properties: value: type: string description: The email address of the person primary: type: boolean description: Whether the email is primary or not label: type: string description: The email address classification label phones: type: array description: The phones of the person items: type: object properties: value: type: string description: The phone number of the person primary: type: boolean description: Whether the phone number is primary or not label: type: string description: The phone number classification label visible_to: type: integer description: The visibility of the person label_ids: type: array description: The IDs of labels assigned to the person items: type: integer marketing_status: type: string description: 'If the person does not have a valid email address, then the marketing status is **not set** and `no_consent` is returned for the `marketing_status` value when the new person is created. If the change is forbidden, the status will remain unchanged for every call that tries to modify the marketing status. Please be aware that it is only allowed **once** to change the marketing status from an old status to a new one.
ValueDescription
`no_consent`The customer has not given consent to receive any marketing communications
`unsubscribed`The customers have unsubscribed from ALL marketing communications
`subscribed`The customers are subscribed and are counted towards marketing caps
`archived`The customers with `subscribed` status can be moved to `archived` to save consent, but they are not paid for
' enum: - no_consent - unsubscribed - subscribed - archived custom_fields: type: object additionalProperties: true description: 'An object where each key represents a custom field. All custom fields are referenced as randomly generated 40-character hashes. To clear a custom field value, set it to `null`. For multi-option fields (field type `set`), use `null` to clear the selection — sending an empty array `[]` is not supported and will result in a validation error.' responses: '200': description: Edit person content: application/json: schema: type: object title: UpsertPersonResponse allOf: - title: baseResponse type: object properties: success: type: boolean description: If the response is successful or not - type: object title: UpsertPersonResponseData properties: data: type: object properties: id: type: integer description: The ID of the person name: type: string description: The name of the person first_name: type: string description: The first name of the person last_name: type: string description: The last name of the person owner_id: type: integer description: The ID of the user who owns the person org_id: type: integer description: The ID of the organization linked to the person add_time: type: string description: The creation date and time of the person update_time: type: string description: The last updated date and time of the person emails: type: array description: The emails of the person items: type: object properties: value: type: string description: The email address of the person primary: type: boolean description: Whether the email is primary or not label: type: string description: The email address classification label phones: type: array description: The phones of the person items: type: object properties: value: type: string description: The phone number of the person primary: type: boolean description: Whether the phone number is primary or not label: type: string description: The phone number classification label is_deleted: type: boolean description: Whether the person is deleted or not visible_to: type: integer description: The visibility of the person label_ids: type: array description: The IDs of labels assigned to the person items: type: integer picture_id: type: integer description: The ID of the picture associated with the person postal_address: type: object description: 'Postal address of the person, included if contact sync is enabled for the company' properties: value: type: string description: The full address of the person country: type: string description: Country of the person admin_area_level_1: type: string description: Admin area level 1 (e.g. state) of the person admin_area_level_2: type: string description: Admin area level 2 (e.g. county) of the person locality: type: string description: Locality (e.g. city) of the person sublocality: type: string description: Sublocality (e.g. neighborhood) of the person route: type: string description: Route (e.g. street) of the person street_number: type: string description: Street number of the person subpremise: type: string description: Subpremise (e.g. apartment/suite number) of the person postal_code: type: string description: Postal code of the person notes: type: string description: 'Contact sync notes of the person, maximum 10 000 characters, included if contact sync is enabled for the company' im: type: array description: 'The instant messaging accounts of the person, included if contact sync is enabled for the company' items: type: object properties: value: type: string description: The instant messaging account of the person primary: type: boolean description: Whether the instant messaging account is primary or not label: type: string description: The instant messaging account classification label birthday: type: string description: 'The birthday of the person, included if contact sync is enabled for the company' job_title: type: string description: 'The job title of the person, included if contact sync is enabled for the company' custom_fields: type: object additionalProperties: true description: 'An object where each key represents a custom field. All custom fields are referenced as randomly generated 40-character hashes. To clear a custom field value, set it to `null`. For multi-option fields (field type `set`), use `null` to clear the selection — sending an empty array `[]` is not supported and will result in a validation error.' example: success: true data: id: 1 name: Person Name first_name: Person last_name: Name owner_id: 1 org_id: 1 add_time: '2021-01-01T00:00:00Z' update_time: '2021-01-01T00:00:00Z' emails: - value: email1@email.com primary: true label: work - value: email2@email.com primary: false label: home phones: - value: '12345' primary: true label: work - value: '54321' primary: false label: home is_deleted: false visible_to: 7 label_ids: - 1 - 2 - 3 picture_id: 1 custom_fields: {} notes: Notes from contact sync im: - value: skypeusername primary: true label: skype - value: whatsappusername primary: false label: whatsapp birthday: '2000-12-31' job_title: Manager postal_address: value: 123 Main St country: USA admin_area_level_1: CA admin_area_level_2: Santa Clara locality: Sunnyvale sublocality: Downtown route: Main St street_number: '123' subpremise: Apt 1 postal_code: '94085' '/persons/{id}/followers': get: summary: List followers of a person description: Lists users who are following the person. x-token-cost: 10 operationId: getPersonFollowers tags: - Persons security: - api_key: [] - oauth2: - 'contacts:read' - 'contacts:full' parameters: - in: path name: id description: The ID of the person required: true schema: type: integer - in: query name: limit description: 'For pagination, the limit of entries to be returned. If not provided, 100 items will be returned. Please note that a maximum value of 500 is allowed.' schema: type: integer example: 100 - in: query name: cursor required: false schema: type: string description: 'For pagination, the marker (an opaque string value) representing the first item on the next page' responses: '200': description: List entity followers content: application/json: schema: type: object title: GetFollowersResponse allOf: - title: baseResponse type: object properties: success: type: boolean description: If the response is successful or not - type: object properties: data: type: array description: Followers array items: type: object properties: user_id: type: integer description: The ID of the user following the entity add_time: type: string description: The add time of the following additional_data: type: object description: The additional data of the list properties: next_cursor: type: string description: The first item on the next page. The value of the `next_cursor` field will be `null` if you have reached the end of the dataset and there’s no more pages to be returned. example: success: true data: - user_id: 1 add_time: '2021-01-01T00:00:00Z' additional_data: next_cursor: eyJmaWVsZCI6ImlkIiwiZmllbGRWYWx1ZSI6Nywic29ydERpcmVjdGlvbiI6ImFzYyIsImlkIjo3fQ post: summary: Add a follower to a person description: Adds a user as a follower to the person. x-token-cost: 5 operationId: addPersonFollower tags: - Persons security: - api_key: [] - oauth2: - 'contacts:full' parameters: - in: path name: id description: The ID of the person required: true schema: type: integer requestBody: content: application/json: schema: required: - user_id type: object properties: user_id: type: integer description: The ID of the user to add as a follower responses: '201': description: Add a follower content: application/json: schema: type: object title: AddFollowerResponse allOf: - title: baseResponse type: object properties: success: type: boolean description: If the response is successful or not - type: object properties: data: type: object properties: user_id: type: integer description: The ID of the user following the entity add_time: type: string description: The add time of the following example: success: true data: user_id: 1 add_time: '2021-01-01T00:00:00Z' '/persons/{id}/followers/changelog': get: summary: List followers changelog of a person description: Lists changelogs about users have followed the person. x-token-cost: 10 operationId: getPersonFollowersChangelog tags: - Persons security: - api_key: [] - oauth2: - 'contacts:read' - 'contacts:full' parameters: - in: path name: id description: The ID of the person required: true schema: type: integer - in: query name: limit description: 'For pagination, the limit of entries to be returned. If not provided, 100 items will be returned. Please note that a maximum value of 500 is allowed.' schema: type: integer example: 100 - in: query name: cursor required: false schema: type: string description: 'For pagination, the marker (an opaque string value) representing the first item on the next page' responses: '200': description: List entity followers content: application/json: schema: type: object title: GetFollowerChangelogsResponse allOf: - title: baseResponse type: object properties: success: type: boolean description: If the response is successful or not - type: object properties: data: type: array description: Follower changelogs array items: type: object title: FollowerChangelogItem properties: action: type: string description: The type of change actor_user_id: type: integer description: The ID of the user who did the change follower_user_id: type: integer description: The ID of the user who was following the entity time: type: string description: The time at which the change happened additional_data: type: object description: The additional data of the list properties: next_cursor: type: string description: The first item on the next page. The value of the `next_cursor` field will be `null` if you have reached the end of the dataset and there’s no more pages to be returned. example: success: true data: - action: added actor_user_id: 1 follower_user_id: 1 time: '2024-01-01T00:00:00Z' additional_data: next_cursor: eyJmaWVsZCI6ImlkIiwiZmllbGRWYWx1ZSI6Nywic29ydERpcmVjdGlvbiI6ImFzYyIsImlkIjo3fQ '/persons/{id}/followers/{follower_id}': delete: summary: Delete a follower from a person description: Deletes a user follower from the person. x-token-cost: 3 operationId: deletePersonFollower tags: - Persons security: - api_key: [] - oauth2: - 'contacts:full' parameters: - in: path name: id description: The ID of the person required: true schema: type: integer - in: path name: follower_id required: true schema: type: integer description: The ID of the following user responses: '200': description: Remove a follower content: application/json: schema: title: DeleteFollowerResponse type: object properties: success: type: boolean description: If the response is successful or not data: type: object properties: user_id: type: integer description: Deleted follower user ID example: success: true data: user_id: 1 '/persons/{id}/picture': get: summary: Get picture of a person description: Returns the picture associated with a person. The picture URLs include both 128x128 and 512x512 pixel versions. x-token-cost: 1 operationId: getPersonPicture x-tool-description: 'Retrieves the profile picture for a specific person, including URLs for both thumbnail (128x128) and full-size (512x512) versions. Use for displaying contact pictures in UI or exporting contact data. Returns 404 if the person has no picture.' tags: - Persons security: - api_key: [] - oauth2: - 'contacts:read' - 'contacts:full' parameters: - in: path name: id description: The ID of the person required: true schema: type: integer responses: '200': description: Get person picture content: application/json: schema: title: GetPersonPictureResponse type: object properties: success: type: boolean description: If the response is successful or not data: type: object properties: id: type: integer description: The ID of the picture. item_type: type: string description: The type of item the picture is associated with. item_id: type: integer description: The ID of the person this picture belongs to. added_by_user_id: type: integer description: The ID of the user who added the picture. active_flag: type: boolean description: Whether the picture is active or not. file_size: type: integer description: The file size in bytes. pictures: type: object description: Picture URLs indexed by size. properties: '128': type: string description: The URL of the 128x128 picture. '512': type: string description: The URL of the 512x512 picture. example: success: true data: id: 1 item_type: person item_id: 25 added_by_user_id: 967055 active_flag: true file_size: 524288 pictures: '128': 'https://pipedrive-profile-pics.s3.example.com/f8893852574273f2747bf6ef09d11cfb4ac8f269_128.jpg' '512': 'https://pipedrive-profile-pics.s3.example.com/f8893852574273f2747bf6ef09d11cfb4ac8f269_512.jpg' /personFields: get: summary: Get all person fields description: Returns metadata about all person fields in the company. x-token-cost: 10 operationId: getPersonFields tags: - PersonFields security: - api_key: [] - oauth2: - 'contacts:read' - 'contacts:full' - admin - 'contact-fields:full' parameters: - in: query name: include_fields description: Optional comma separated string array of additional data namespaces to include in response schema: type: string enum: - ui_visibility - important_fields - required_fields - 'ui_visibility,important_fields' - 'ui_visibility,required_fields' - 'important_fields,required_fields' - 'ui_visibility,important_fields,required_fields' - in: query name: limit description: 'For pagination, the limit of entries to be returned. If not provided, 100 items will be returned. Please note that a maximum value of 500 is allowed.' schema: type: integer example: 100 - in: query name: cursor required: false schema: type: string description: 'For pagination, the marker (an opaque string value) representing the first item on the next page' responses: '200': description: Get all person fields content: application/json: schema: type: object properties: success: type: boolean description: Whether the request was successful data: type: array items: type: object required: - field_name - field_code - field_type - is_custom_field - is_optional_response_field properties: field_name: type: string description: The display name/label of the field field_code: type: string description: The unique identifier for the field (40-character hash for custom fields) field_type: type: string description: The type of the field enum: - int - double - boolean - varchar - text - phone - varchar_options - varchar_auto - date - daterange - time - timerange - enum - set - address - monetary - deal - deals - lead - org - people - project - stage - user - activity - json - picture - status - visible_to - price_list - billing_frequency - projects_board - projects_phase options: type: array nullable: true description: 'Array of available options for enum/set fields, null for other field types' items: type: object properties: id: type: integer description: The option ID label: type: string description: The option display label color: type: string nullable: true description: Optional color code for the option update_time: type: string format: date-time nullable: true description: When the option was last updated add_time: type: string format: date-time nullable: true description: When the option was created subfields: type: array nullable: true description: 'Array of subfields for complex field types (address, monetary), null for simple field types' items: type: object properties: field_code: type: string description: The subfield identifier field_name: type: string description: The subfield display name field_type: type: string description: The subfield type is_custom_field: type: boolean description: Whether this is a user-created custom field is_optional_response_field: type: boolean description: Whether this field is not returned by default in entity responses ui_visibility: type: object description: UI visibility settings (only included when requested via include_fields parameter) properties: add_visible_flag: type: boolean description: Whether the field is shown in the add modal details_visible_flag: type: boolean description: Whether the field is shown in the details view show_in_add_deal_dialog: type: object description: Configuration for showing the field in the add deal dialog properties: show: type: boolean description: Whether the field is shown in the add deal dialog order: type: integer nullable: true description: Display order in the add deal dialog (null if not shown) important_fields: type: object description: Important fields configuration properties: enabled: type: boolean description: Whether the field is marked as important stage_ids: type: array items: type: integer description: Array of deal stage IDs where the field is important required_fields: type: object description: Required fields configuration properties: enabled: type: boolean description: Whether the field is required additional_data: type: object properties: next_cursor: type: string nullable: true description: 'Base64url-encoded cursor for fetching the next page of results, null if no more pages' example: success: true data: - field_name: Person Name field_code: name description: The name of the person field_type: varchar options: null subfields: null is_custom_field: false is_optional_response_field: false ui_visibility: add_visible_flag: true details_visible_flag: true show_in_add_deal_dialog: show: true order: 1 important_fields: enabled: false stage_ids: [] required_fields: enabled: true - field_name: Phone field_code: phone description: Phone number for the person field_type: phone options: null subfields: null is_custom_field: false is_optional_response_field: false ui_visibility: add_visible_flag: true details_visible_flag: true show_in_add_deal_dialog: show: true order: 2 important_fields: enabled: true stage_ids: - 1 - 2 - 3 required_fields: enabled: false - field_name: Lead Source field_code: 40characterhashforcustomfieldidentifier description: The source where the lead came from field_type: enum options: - id: 1 label: Inbound - id: 2 label: Outbound subfields: null is_custom_field: true is_optional_response_field: false ui_visibility: add_visible_flag: true details_visible_flag: true show_in_add_deal_dialog: show: false order: null important_fields: enabled: false stage_ids: [] required_fields: enabled: false additional_data: next_cursor: eyJmaWVsZCI6ImlkIiwiZmllbGRWYWx1ZSI6Nywic29ydERpcmVjdGlvbiI6ImFzYyIsImlkIjo3fQ post: summary: Create one person field description: Creates a new person custom field. x-token-cost: 5 operationId: addPersonField tags: - PersonFields security: - api_key: [] - oauth2: - admin - 'contact-fields:full' requestBody: required: true content: application/json: schema: type: object required: - field_name - field_type properties: field_name: type: string minLength: 1 maxLength: 255 description: Field name field_type: type: string description: 'The type of the field
ValueDescription
`varchar`Text (up to 255 characters)
`varchar_auto`Autocomplete text (up to 255 characters)
`text`Long text (up to 65k characters)
`double`Numeric value
`monetary`Monetary field (has a numeric value and a currency value)
`date`Date (format YYYY-MM-DD)
`set`Options field with a possibility of having multiple chosen options
`enum`Options field with a single possible chosen option
`user`User field (contains a user ID of another Pipedrive user)
`org`Organization field (contains an organization ID which is stored on the same account)
`people`Person field (contains a person ID which is stored on the same account)
`phone`Phone field (up to 255 numbers and/or characters)
`time`Time field (format HH:MM:SS)
`timerange`Time-range field (has a start time and end time value, both HH:MM:SS)
`daterange`Date-range field (has a start date and end date value, both YYYY-MM-DD)
`address`Address field
' enum: - varchar - text - double - phone - date - daterange - time - timerange - set - enum - varchar_auto - address - monetary - org - people - user options: type: array description: Field options (required for enum and set field types) items: type: object required: - label properties: label: type: string description: The option label ui_visibility: type: object description: UI visibility settings for the field. Controls where the field appears in the Pipedrive web UI. additionalProperties: true properties: add_visible_flag: type: boolean description: 'Whether the field is shown in the add person modal. Default is false. Cannot be set to false for required system fields (''name'', ''org_id'').' default: false details_visible_flag: type: boolean description: Whether the field is shown in the person details view. Default is true. default: true show_in_add_deal_dialog: type: object description: 'Configuration for showing this person field when adding a new deal. Only available for custom fields or specific eligible system fields. Default is show=false, order=null.' properties: show: type: boolean description: Whether the field is shown in the add deal dialog. Default is false. default: false order: type: integer nullable: true description: 'Display order in the add deal dialog. This value is auto-calculated and managed by the system. When show is set to false, order is automatically set to null. When show changes from false to true, order is automatically assigned the next available position.' default: null important_fields: type: object description: Configuration for highlighting the field at specific stages. additionalProperties: true properties: enabled: type: boolean description: 'Whether the field is marked as important. When false, the field is not highlighted. When true with empty stage_ids, the field is important everywhere. When true with specific stage_ids, the field is important only at those deal stages. Default is false.' default: false stage_ids: type: array items: type: integer description: 'Array of deal stage IDs where this person field should be highlighted as important. Must reference valid, active deal stages. Empty array when enabled is false.' default: [] required_fields: type: object description: Required fields configuration for marking the field as mandatory when interacted with in the Pipedrive web UI. additionalProperties: true properties: enabled: type: boolean description: 'Whether the field is required. When false, the field is optional. When true, the field is required when creating or updating persons. Default is false.' default: false responses: '200': description: Create one person field content: application/json: schema: type: object properties: success: type: boolean description: Whether the request was successful data: type: object required: - field_name - field_code - field_type - is_custom_field - is_optional_response_field properties: field_name: type: string description: The display name/label of the field field_code: type: string description: The unique identifier for the field (40-character hash for custom fields) field_type: type: string description: The type of the field enum: - int - double - boolean - varchar - text - phone - varchar_options - varchar_auto - date - daterange - time - timerange - enum - set - address - monetary - deal - deals - lead - org - people - project - stage - user - activity - json - picture - status - visible_to - price_list - billing_frequency - projects_board - projects_phase options: type: array nullable: true description: 'Array of available options for enum/set fields, null for other field types' items: type: object properties: id: type: integer description: The option ID label: type: string description: The option display label color: type: string nullable: true description: Optional color code for the option update_time: type: string format: date-time nullable: true description: When the option was last updated add_time: type: string format: date-time nullable: true description: When the option was created subfields: type: array nullable: true description: 'Array of subfields for complex field types (address, monetary), null for simple field types' items: type: object properties: field_code: type: string description: The subfield identifier field_name: type: string description: The subfield display name field_type: type: string description: The subfield type is_custom_field: type: boolean description: Whether this is a user-created custom field is_optional_response_field: type: boolean description: Whether this field is not returned by default in entity responses ui_visibility: type: object description: UI visibility settings (only included when requested via include_fields parameter) properties: add_visible_flag: type: boolean description: Whether the field is shown in the add modal details_visible_flag: type: boolean description: Whether the field is shown in the details view show_in_add_deal_dialog: type: object description: Configuration for showing the field in the add deal dialog properties: show: type: boolean description: Whether the field is shown in the add deal dialog order: type: integer nullable: true description: Display order in the add deal dialog (null if not shown) important_fields: type: object description: Important fields configuration properties: enabled: type: boolean description: Whether the field is marked as important stage_ids: type: array items: type: integer description: Array of deal stage IDs where the field is important required_fields: type: object description: Required fields configuration properties: enabled: type: boolean description: Whether the field is required example: success: true data: field_name: Lead Source field_code: 946947d1b02fd3ef20798d6112ec5d895a686a21 description: The source where the lead came from field_type: enum options: - id: 1 label: Inbound - id: 2 label: Outbound subfields: null is_custom_field: true is_optional_response_field: false ui_visibility: add_visible_flag: true details_visible_flag: true show_in_add_deal_dialog: show: false order: null important_fields: enabled: false stage_ids: [] required_fields: enabled: false '/personFields/{field_code}': get: summary: Get one person field description: Returns metadata about a specific person field. x-token-cost: 1 operationId: getPersonField tags: - PersonFields security: - api_key: [] - oauth2: - 'contacts:read' - 'contacts:full' - admin - 'contact-fields:full' parameters: - in: path name: field_code description: The unique code identifying the field required: true schema: type: string - in: query name: include_fields description: Optional comma separated string array of additional data namespaces to include in response schema: type: string enum: - ui_visibility - important_fields - required_fields - 'ui_visibility,important_fields' - 'ui_visibility,required_fields' - 'important_fields,required_fields' - 'ui_visibility,important_fields,required_fields' responses: '200': description: Get one person field content: application/json: schema: type: object properties: success: type: boolean description: Whether the request was successful data: type: object required: - field_name - field_code - field_type - is_custom_field - is_optional_response_field properties: field_name: type: string description: The display name/label of the field field_code: type: string description: The unique identifier for the field (40-character hash for custom fields) field_type: type: string description: The type of the field enum: - int - double - boolean - varchar - text - phone - varchar_options - varchar_auto - date - daterange - time - timerange - enum - set - address - monetary - deal - deals - lead - org - people - project - stage - user - activity - json - picture - status - visible_to - price_list - billing_frequency - projects_board - projects_phase options: type: array nullable: true description: 'Array of available options for enum/set fields, null for other field types' items: type: object properties: id: type: integer description: The option ID label: type: string description: The option display label color: type: string nullable: true description: Optional color code for the option update_time: type: string format: date-time nullable: true description: When the option was last updated add_time: type: string format: date-time nullable: true description: When the option was created subfields: type: array nullable: true description: 'Array of subfields for complex field types (address, monetary), null for simple field types' items: type: object properties: field_code: type: string description: The subfield identifier field_name: type: string description: The subfield display name field_type: type: string description: The subfield type is_custom_field: type: boolean description: Whether this is a user-created custom field is_optional_response_field: type: boolean description: Whether this field is not returned by default in entity responses ui_visibility: type: object description: UI visibility settings (only included when requested via include_fields parameter) properties: add_visible_flag: type: boolean description: Whether the field is shown in the add modal details_visible_flag: type: boolean description: Whether the field is shown in the details view show_in_add_deal_dialog: type: object description: Configuration for showing the field in the add deal dialog properties: show: type: boolean description: Whether the field is shown in the add deal dialog order: type: integer nullable: true description: Display order in the add deal dialog (null if not shown) important_fields: type: object description: Important fields configuration properties: enabled: type: boolean description: Whether the field is marked as important stage_ids: type: array items: type: integer description: Array of deal stage IDs where the field is important required_fields: type: object description: Required fields configuration properties: enabled: type: boolean description: Whether the field is required example: success: true data: field_name: Person Name field_code: name description: The name of the person field_type: varchar options: null subfields: null is_custom_field: false is_optional_response_field: false ui_visibility: add_visible_flag: true details_visible_flag: true show_in_add_deal_dialog: show: true order: 1 important_fields: enabled: false stage_ids: [] required_fields: enabled: true patch: summary: Update one person field description: Updates a person custom field. The field_code and field_type cannot be changed. At least one field must be provided in the request body. x-token-cost: 5 operationId: updatePersonField tags: - PersonFields security: - api_key: [] - oauth2: - 'contacts:full' - admin - 'contact-fields:full' parameters: - in: path name: field_code description: The unique code identifying the field required: true schema: type: string requestBody: required: true content: application/json: schema: type: object minProperties: 1 properties: field_name: type: string minLength: 1 maxLength: 255 description: Field name ui_visibility: type: object description: UI visibility settings for the field. Controls where the field appears in the Pipedrive web UI. additionalProperties: true properties: add_visible_flag: type: boolean description: 'Whether the field is shown in the add person modal. Default is false. Cannot be set to false for required system fields (''name'', ''org_id'').' default: false details_visible_flag: type: boolean description: Whether the field is shown in the person details view. Default is true. default: true show_in_add_deal_dialog: type: object description: 'Configuration for showing this person field when adding a new deal. Only available for custom fields or specific eligible system fields. Default is show=false, order=null.' properties: show: type: boolean description: Whether the field is shown in the add deal dialog. Default is false. default: false order: type: integer nullable: true description: 'Display order in the add deal dialog. This value is auto-calculated and managed by the system. When show is set to false, order is automatically set to null. When show changes from false to true, order is automatically assigned the next available position.' default: null important_fields: type: object description: Configuration for highlighting the field at specific stages. additionalProperties: true properties: enabled: type: boolean description: 'Whether the field is marked as important. When false, the field is not highlighted. When true with empty stage_ids, the field is important everywhere. When true with specific stage_ids, the field is important only at those deal stages. Default is false.' default: false stage_ids: type: array items: type: integer description: 'Array of deal stage IDs where this person field should be highlighted as important. Must reference valid, active deal stages. Empty array when enabled is false.' default: [] required_fields: type: object description: Required fields configuration for marking the field as mandatory when interacted with in the Pipedrive web UI. additionalProperties: true properties: enabled: type: boolean description: 'Whether the field is required. When false, the field is optional. When true, the field is required when creating or updating persons. Default is false.' default: false responses: '200': description: Get one person field content: application/json: schema: type: object properties: success: type: boolean description: Whether the request was successful data: type: object required: - field_name - field_code - field_type - is_custom_field - is_optional_response_field properties: field_name: type: string description: The display name/label of the field field_code: type: string description: The unique identifier for the field (40-character hash for custom fields) field_type: type: string description: The type of the field enum: - int - double - boolean - varchar - text - phone - varchar_options - varchar_auto - date - daterange - time - timerange - enum - set - address - monetary - deal - deals - lead - org - people - project - stage - user - activity - json - picture - status - visible_to - price_list - billing_frequency - projects_board - projects_phase options: type: array nullable: true description: 'Array of available options for enum/set fields, null for other field types' items: type: object properties: id: type: integer description: The option ID label: type: string description: The option display label color: type: string nullable: true description: Optional color code for the option update_time: type: string format: date-time nullable: true description: When the option was last updated add_time: type: string format: date-time nullable: true description: When the option was created subfields: type: array nullable: true description: 'Array of subfields for complex field types (address, monetary), null for simple field types' items: type: object properties: field_code: type: string description: The subfield identifier field_name: type: string description: The subfield display name field_type: type: string description: The subfield type is_custom_field: type: boolean description: Whether this is a user-created custom field is_optional_response_field: type: boolean description: Whether this field is not returned by default in entity responses ui_visibility: type: object description: UI visibility settings (only included when requested via include_fields parameter) properties: add_visible_flag: type: boolean description: Whether the field is shown in the add modal details_visible_flag: type: boolean description: Whether the field is shown in the details view show_in_add_deal_dialog: type: object description: Configuration for showing the field in the add deal dialog properties: show: type: boolean description: Whether the field is shown in the add deal dialog order: type: integer nullable: true description: Display order in the add deal dialog (null if not shown) important_fields: type: object description: Important fields configuration properties: enabled: type: boolean description: Whether the field is marked as important stage_ids: type: array items: type: integer description: Array of deal stage IDs where the field is important required_fields: type: object description: Required fields configuration properties: enabled: type: boolean description: Whether the field is required example: success: true data: field_name: Person Name field_code: name description: The name of the person field_type: varchar options: null subfields: null is_custom_field: false is_optional_response_field: false ui_visibility: add_visible_flag: true details_visible_flag: true show_in_add_deal_dialog: show: true order: 1 important_fields: enabled: false stage_ids: [] required_fields: enabled: true delete: summary: Delete one person field description: Marks a custom field as deleted. x-token-cost: 3 operationId: deletePersonField tags: - PersonFields security: - api_key: [] - oauth2: - admin - 'contact-fields:full' parameters: - in: path name: field_code description: The unique code identifying the field required: true schema: type: string responses: '200': description: Delete one person field content: application/json: schema: type: object properties: success: type: boolean description: Whether the request was successful data: type: object required: - field_name - field_code - field_type - is_custom_field - is_optional_response_field properties: field_name: type: string description: The display name/label of the field field_code: type: string description: The unique identifier for the field (40-character hash for custom fields) field_type: type: string description: The type of the field options: type: array nullable: true description: 'Array of available options for enum/set fields, null for other field types' items: type: object subfields: type: array nullable: true description: 'Array of subfields for complex field types (address, monetary), null for simple field types' items: type: object is_custom_field: type: boolean description: Whether this is a user-created custom field is_optional_response_field: type: boolean description: Whether this field is not returned by default in entity responses example: success: true data: field_name: Custom text field field_code: 946947d1b02fd3ef20798d6112ec5d895a686a21 description: A custom text field field_type: varchar options: null subfields: null is_custom_field: true is_optional_response_field: false '/personFields/{field_code}/options': post: summary: Add person field options in bulk description: Adds new options to a person custom field that supports options (enum or set field types). This operation is atomic - all options are added or none are added. Returns only the newly added options. x-token-cost: 5 operationId: addPersonFieldOptions tags: - PersonFields security: - api_key: [] - oauth2: - 'contacts:full' - admin - 'contact-fields:full' parameters: - in: path name: field_code description: The unique code identifying the field required: true schema: type: string requestBody: required: true content: application/json: schema: type: array description: Array of options to add. Each item must contain a label. At least one option is required. items: type: object required: - label properties: label: type: string minLength: 1 maxLength: 255 description: The display label for the new option responses: '200': description: Field options operation result content: application/json: schema: type: object properties: success: type: boolean data: type: array items: type: object required: - id - label properties: id: type: integer description: The unique identifier of the option label: type: string description: The display label of the option additional_data: type: object nullable: true example: success: true data: - id: 3 label: Referral additional_data: null delete: summary: Delete person field options in bulk description: Removes existing options from a person custom field. This operation is atomic and fails if any of the specified option IDs do not exist. Returns only the deleted options. x-token-cost: 3 operationId: deletePersonFieldOptions tags: - PersonFields security: - api_key: [] - oauth2: - 'contacts:full' - admin - 'contact-fields:full' parameters: - in: path name: field_code description: The unique code identifying the field required: true schema: type: string requestBody: required: true content: application/json: schema: type: array description: Array of option IDs to delete. Each item must contain an ID of the option to delete. At least one option ID is required. The entire request fails if any option does not exist. items: type: object required: - id properties: id: type: integer description: The unique identifier of the option to delete responses: '200': description: Field options operation result content: application/json: schema: type: object properties: success: type: boolean data: type: array items: type: object required: - id - label properties: id: type: integer description: The unique identifier of the option label: type: string description: The display label of the option additional_data: type: object nullable: true example: success: true data: - id: 3 label: Referral additional_data: null patch: summary: Update person field options in bulk description: Updates existing options for a person custom field. This operation is atomic and fails if any of the specified option IDs do not exist. Returns only the updated options. x-token-cost: 5 operationId: updatePersonFieldOptions tags: - PersonFields security: - api_key: [] - oauth2: - 'contacts:full' - admin - 'contact-fields:full' parameters: - in: path name: field_code description: The unique code identifying the field required: true schema: type: string requestBody: required: true content: application/json: schema: type: array description: Array of options to update. Each item must contain an ID and the updated label. At least one option is required. The entire request fails if any option does not exist. items: type: object required: - id - label properties: id: type: integer description: The unique identifier of the option to update label: type: string minLength: 1 maxLength: 255 description: The new display label for the option responses: '200': description: Field options operation result content: application/json: schema: type: object properties: success: type: boolean data: type: array items: type: object required: - id - label properties: id: type: integer description: The unique identifier of the option label: type: string description: The display label of the option additional_data: type: object nullable: true example: success: true data: - id: 3 label: Referral additional_data: null /organizations: get: summary: Get all organizations description: Returns data about all organizations. x-token-cost: 10 operationId: getOrganizations tags: - Organizations security: - api_key: [] - oauth2: - 'contacts:read' - 'contacts:full' parameters: - in: query name: filter_id schema: type: integer description: 'If supplied, only organizations matching the specified filter are returned' - in: query name: ids description: 'Optional comma separated string array of up to 100 entity ids to fetch. If filter_id is provided, this is ignored. If any of the requested entities do not exist or are not visible, they are not included in the response.' schema: type: string - in: query name: owner_id schema: type: integer description: 'If supplied, only organizations owned by the specified user are returned. If filter_id is provided, this is ignored.' - in: query name: updated_since schema: type: string description: 'If set, only organizations with an `update_time` later than or equal to this time are returned. In RFC3339 format, e.g. 2025-01-01T10:20:00Z.' - in: query name: updated_until schema: type: string description: 'If set, only organizations with an `update_time` earlier than this time are returned. In RFC3339 format, e.g. 2025-01-01T10:20:00Z.' - in: query name: sort_by description: 'The field to sort by. Supported fields: `id`, `update_time`, `add_time`.' schema: type: string default: id enum: - id - update_time - add_time - in: query name: sort_direction description: 'The sorting direction. Supported values: `asc`, `desc`.' schema: type: string default: asc enum: - asc - desc - in: query name: include_fields description: Optional comma separated string array of additional fields to include schema: type: string enum: - next_activity_id - last_activity_id - open_deals_count - related_open_deals_count - closed_deals_count - related_closed_deals_count - email_messages_count - people_count - activities_count - done_activities_count - undone_activities_count - files_count - notes_count - followers_count - won_deals_count - related_won_deals_count - lost_deals_count - related_lost_deals_count - smart_bcc_email - in: query name: custom_fields description: 'Optional comma separated string array of custom fields keys to include. If you are only interested in a particular set of custom fields, please use this parameter for faster results and smaller response.
A maximum of 15 keys is allowed.' schema: type: string - in: query name: include_option_labels description: 'When provided with a ''true'' value, single option and multiple option custom fields values contain objects in the form of ''{ id: number, label: string }'' instead of plain id' schema: type: boolean - in: query name: include_labels description: 'When provided with ''true'' value, response will include an array of label objects in the form of ''{ id: number, label: string }''' schema: type: boolean - in: query name: limit description: 'For pagination, the limit of entries to be returned. If not provided, 100 items will be returned. Please note that a maximum value of 500 is allowed.' schema: type: integer example: 100 - in: query name: cursor required: false schema: type: string description: 'For pagination, the marker (an opaque string value) representing the first item on the next page' responses: '200': description: Get all organizations content: application/json: schema: type: object title: GetOrganizationsResponse allOf: - title: baseResponse type: object properties: success: type: boolean description: If the response is successful or not - type: object properties: data: type: array description: Organizations array items: type: object properties: id: type: integer description: The ID of the organization name: type: string description: The name of the organization owner_id: type: integer description: The ID of the user who owns the organization add_time: type: string description: The creation date and time of the organization update_time: type: string description: The last updated date and time of the organization is_deleted: type: boolean description: Whether the organization is deleted or not visible_to: type: integer description: The visibility of the organization address: description: The address of the organization type: object title: OrganizationItemAddress properties: value: type: string description: The full address of the organization country: type: string description: Country of the organization admin_area_level_1: type: string description: Admin area level 1 (e.g. state) of the organization admin_area_level_2: type: string description: Admin area level 2 (e.g. county) of the organization locality: type: string description: Locality (e.g. city) of the organization sublocality: type: string description: Sublocality (e.g. neighborhood) of the organization route: type: string description: Route (e.g. street) of the organization street_number: type: string description: Street number of the organization subpremise: type: string description: Subpremise (e.g. apartment/suite number) of the organization postal_code: type: string description: Postal code of the organization label_ids: type: array description: The IDs of labels assigned to the organization items: type: integer custom_fields: type: object additionalProperties: true description: 'An object where each key represents a custom field. All custom fields are referenced as randomly generated 40-character hashes. To clear a custom field value, set it to `null`. For multi-option fields (field type `set`), use `null` to clear the selection — sending an empty array `[]` is not supported and will result in a validation error.' additional_data: type: object description: The additional data of the list properties: next_cursor: type: string description: The first item on the next page. The value of the `next_cursor` field will be `null` if you have reached the end of the dataset and there’s no more pages to be returned. example: success: true data: - id: 1 name: Organization Name owner_id: 1 org_id: 1 add_time: '2021-01-01T00:00:00Z' update_time: '2021-01-01T00:00:00Z' address: value: 123 Main St country: USA admin_area_level_1: CA admin_area_level_2: Santa Clara locality: Sunnyvale sublocality: Downtown route: Main St street_number: '123' subpremise: 123A postal_code: '94085' is_deleted: false visible_to: 7 label_ids: - 1 - 2 - 3 custom_fields: {} additional_data: next_cursor: eyJmaWVsZCI6ImlkIiwiZmllbGRWYWx1ZSI6Nywic29ydERpcmVjdGlvbiI6ImFzYyIsImlkIjo3fQ post: summary: Add a new organization description: Adds a new organization. x-token-cost: 5 operationId: addOrganization tags: - Organizations security: - api_key: [] - oauth2: - 'contacts:full' requestBody: content: application/json: schema: required: - title type: object properties: name: type: string description: The name of the organization owner_id: type: integer description: The ID of the user who owns the organization add_time: type: string description: The creation date and time of the organization update_time: type: string description: The last updated date and time of the organization visible_to: type: integer description: The visibility of the organization label_ids: type: array description: The IDs of labels assigned to the organization items: type: integer address: description: The address of the organization type: object title: OrganizationItemAddress properties: value: type: string description: The full address of the organization country: type: string description: Country of the organization admin_area_level_1: type: string description: Admin area level 1 (e.g. state) of the organization admin_area_level_2: type: string description: Admin area level 2 (e.g. county) of the organization locality: type: string description: Locality (e.g. city) of the organization sublocality: type: string description: Sublocality (e.g. neighborhood) of the organization route: type: string description: Route (e.g. street) of the organization street_number: type: string description: Street number of the organization subpremise: type: string description: Subpremise (e.g. apartment/suite number) of the organization postal_code: type: string description: Postal code of the organization custom_fields: type: object additionalProperties: true description: 'An object where each key represents a custom field. All custom fields are referenced as randomly generated 40-character hashes. To clear a custom field value, set it to `null`. For multi-option fields (field type `set`), use `null` to clear the selection — sending an empty array `[]` is not supported and will result in a validation error.' responses: '200': description: Add organization content: application/json: schema: type: object title: UpsertOrganizationResponse allOf: - title: baseResponse type: object properties: success: type: boolean description: If the response is successful or not - type: object title: UpsertOrganizationResponseData properties: data: type: object properties: id: type: integer description: The ID of the organization name: type: string description: The name of the organization owner_id: type: integer description: The ID of the user who owns the organization add_time: type: string description: The creation date and time of the organization update_time: type: string description: The last updated date and time of the organization is_deleted: type: boolean description: Whether the organization is deleted or not visible_to: type: integer description: The visibility of the organization address: description: The address of the organization type: object title: OrganizationItemAddress properties: value: type: string description: The full address of the organization country: type: string description: Country of the organization admin_area_level_1: type: string description: Admin area level 1 (e.g. state) of the organization admin_area_level_2: type: string description: Admin area level 2 (e.g. county) of the organization locality: type: string description: Locality (e.g. city) of the organization sublocality: type: string description: Sublocality (e.g. neighborhood) of the organization route: type: string description: Route (e.g. street) of the organization street_number: type: string description: Street number of the organization subpremise: type: string description: Subpremise (e.g. apartment/suite number) of the organization postal_code: type: string description: Postal code of the organization label_ids: type: array description: The IDs of labels assigned to the organization items: type: integer custom_fields: type: object additionalProperties: true description: 'An object where each key represents a custom field. All custom fields are referenced as randomly generated 40-character hashes. To clear a custom field value, set it to `null`. For multi-option fields (field type `set`), use `null` to clear the selection — sending an empty array `[]` is not supported and will result in a validation error.' example: success: true data: id: 1 name: Organization Name owner_id: 1 org_id: 1 add_time: '2021-01-01T00:00:00Z' update_time: '2021-01-01T00:00:00Z' address: value: 123 Main St country: USA admin_area_level_1: CA admin_area_level_2: Santa Clara locality: Sunnyvale sublocality: Downtown route: Main St street_number: '123' subpremise: 123A postal_code: '94085' is_deleted: false visible_to: 7 label_ids: - 1 - 2 - 3 custom_fields: {} '/organizations/{id}': delete: summary: Delete a organization description: 'Marks a organization as deleted. After 30 days, the organization will be permanently deleted.' x-token-cost: 3 operationId: deleteOrganization tags: - Organizations security: - api_key: [] - oauth2: - 'contacts:full' parameters: - in: path name: id description: The ID of the organization required: true schema: type: integer responses: '200': description: Delete organization content: application/json: schema: title: DeleteOrganizationResponse type: object properties: success: type: boolean description: If the response is successful or not data: type: object properties: id: type: integer description: Deleted organization ID example: success: true data: id: 1 get: summary: Get details of a organization description: Returns the details of a specific organization. x-token-cost: 1 operationId: getOrganization tags: - Organizations security: - api_key: [] - oauth2: - 'contacts:read' - 'contacts:full' parameters: - in: path name: id description: The ID of the organization required: true schema: type: integer - in: query name: include_fields description: Optional comma separated string array of additional fields to include schema: type: string enum: - next_activity_id - last_activity_id - open_deals_count - related_open_deals_count - closed_deals_count - related_closed_deals_count - email_messages_count - people_count - activities_count - done_activities_count - undone_activities_count - files_count - notes_count - followers_count - won_deals_count - related_won_deals_count - lost_deals_count - related_lost_deals_count - smart_bcc_email - in: query name: custom_fields description: 'Optional comma separated string array of custom fields keys to include. If you are only interested in a particular set of custom fields, please use this parameter for faster results and smaller response.
A maximum of 15 keys is allowed.' schema: type: string - in: query name: include_option_labels description: 'When provided with a ''true'' value, single option and multiple option custom fields values contain objects in the form of ''{ id: number, label: string }'' instead of plain id' schema: type: boolean - in: query name: include_labels description: 'When provided with ''true'' value, response will include an array of label objects in the form of ''{ id: number, label: string }''' schema: type: boolean responses: '200': description: Get organization content: application/json: schema: type: object title: UpsertOrganizationResponse allOf: - title: baseResponse type: object properties: success: type: boolean description: If the response is successful or not - type: object title: UpsertOrganizationResponseData properties: data: type: object properties: id: type: integer description: The ID of the organization name: type: string description: The name of the organization owner_id: type: integer description: The ID of the user who owns the organization add_time: type: string description: The creation date and time of the organization update_time: type: string description: The last updated date and time of the organization is_deleted: type: boolean description: Whether the organization is deleted or not visible_to: type: integer description: The visibility of the organization address: description: The address of the organization type: object title: OrganizationItemAddress properties: value: type: string description: The full address of the organization country: type: string description: Country of the organization admin_area_level_1: type: string description: Admin area level 1 (e.g. state) of the organization admin_area_level_2: type: string description: Admin area level 2 (e.g. county) of the organization locality: type: string description: Locality (e.g. city) of the organization sublocality: type: string description: Sublocality (e.g. neighborhood) of the organization route: type: string description: Route (e.g. street) of the organization street_number: type: string description: Street number of the organization subpremise: type: string description: Subpremise (e.g. apartment/suite number) of the organization postal_code: type: string description: Postal code of the organization label_ids: type: array description: The IDs of labels assigned to the organization items: type: integer custom_fields: type: object additionalProperties: true description: 'An object where each key represents a custom field. All custom fields are referenced as randomly generated 40-character hashes. To clear a custom field value, set it to `null`. For multi-option fields (field type `set`), use `null` to clear the selection — sending an empty array `[]` is not supported and will result in a validation error.' example: success: true data: id: 1 name: Organization Name owner_id: 1 org_id: 1 add_time: '2021-01-01T00:00:00Z' update_time: '2021-01-01T00:00:00Z' address: value: 123 Main St country: USA admin_area_level_1: CA admin_area_level_2: Santa Clara locality: Sunnyvale sublocality: Downtown route: Main St street_number: '123' subpremise: 123A postal_code: '94085' is_deleted: false visible_to: 7 label_ids: - 1 - 2 - 3 custom_fields: {} patch: summary: Update a organization description: Updates the properties of a organization. x-token-cost: 5 operationId: updateOrganization tags: - Organizations security: - api_key: [] - oauth2: - 'contacts:full' parameters: - in: path name: id description: The ID of the organization required: true schema: type: integer requestBody: content: application/json: schema: type: object properties: name: type: string description: The name of the organization owner_id: type: integer description: The ID of the user who owns the organization add_time: type: string description: The creation date and time of the organization update_time: type: string description: The last updated date and time of the organization visible_to: type: integer description: The visibility of the organization label_ids: type: array description: The IDs of labels assigned to the organization items: type: integer address: description: The address of the organization type: object title: OrganizationItemAddress properties: value: type: string description: The full address of the organization country: type: string description: Country of the organization admin_area_level_1: type: string description: Admin area level 1 (e.g. state) of the organization admin_area_level_2: type: string description: Admin area level 2 (e.g. county) of the organization locality: type: string description: Locality (e.g. city) of the organization sublocality: type: string description: Sublocality (e.g. neighborhood) of the organization route: type: string description: Route (e.g. street) of the organization street_number: type: string description: Street number of the organization subpremise: type: string description: Subpremise (e.g. apartment/suite number) of the organization postal_code: type: string description: Postal code of the organization custom_fields: type: object additionalProperties: true description: 'An object where each key represents a custom field. All custom fields are referenced as randomly generated 40-character hashes. To clear a custom field value, set it to `null`. For multi-option fields (field type `set`), use `null` to clear the selection — sending an empty array `[]` is not supported and will result in a validation error.' responses: '200': description: Edit organization content: application/json: schema: type: object title: UpsertOrganizationResponse allOf: - title: baseResponse type: object properties: success: type: boolean description: If the response is successful or not - type: object title: UpsertOrganizationResponseData properties: data: type: object properties: id: type: integer description: The ID of the organization name: type: string description: The name of the organization owner_id: type: integer description: The ID of the user who owns the organization add_time: type: string description: The creation date and time of the organization update_time: type: string description: The last updated date and time of the organization is_deleted: type: boolean description: Whether the organization is deleted or not visible_to: type: integer description: The visibility of the organization address: description: The address of the organization type: object title: OrganizationItemAddress properties: value: type: string description: The full address of the organization country: type: string description: Country of the organization admin_area_level_1: type: string description: Admin area level 1 (e.g. state) of the organization admin_area_level_2: type: string description: Admin area level 2 (e.g. county) of the organization locality: type: string description: Locality (e.g. city) of the organization sublocality: type: string description: Sublocality (e.g. neighborhood) of the organization route: type: string description: Route (e.g. street) of the organization street_number: type: string description: Street number of the organization subpremise: type: string description: Subpremise (e.g. apartment/suite number) of the organization postal_code: type: string description: Postal code of the organization label_ids: type: array description: The IDs of labels assigned to the organization items: type: integer custom_fields: type: object additionalProperties: true description: 'An object where each key represents a custom field. All custom fields are referenced as randomly generated 40-character hashes. To clear a custom field value, set it to `null`. For multi-option fields (field type `set`), use `null` to clear the selection — sending an empty array `[]` is not supported and will result in a validation error.' example: success: true data: id: 1 name: Organization Name owner_id: 1 org_id: 1 add_time: '2021-01-01T00:00:00Z' update_time: '2021-01-01T00:00:00Z' address: value: 123 Main St country: USA admin_area_level_1: CA admin_area_level_2: Santa Clara locality: Sunnyvale sublocality: Downtown route: Main St street_number: '123' subpremise: 123A postal_code: '94085' is_deleted: false visible_to: 7 label_ids: - 1 - 2 - 3 custom_fields: {} '/organizations/{id}/followers': get: summary: List followers of an organization description: Lists users who are following the organization. x-token-cost: 10 operationId: getOrganizationFollowers tags: - Organizations security: - api_key: [] - oauth2: - 'contacts:read' - 'contacts:full' parameters: - in: path name: id description: The ID of the organization required: true schema: type: integer - in: query name: limit description: 'For pagination, the limit of entries to be returned. If not provided, 100 items will be returned. Please note that a maximum value of 500 is allowed.' schema: type: integer example: 100 - in: query name: cursor required: false schema: type: string description: 'For pagination, the marker (an opaque string value) representing the first item on the next page' responses: '200': description: List entity followers content: application/json: schema: type: object title: GetFollowersResponse allOf: - title: baseResponse type: object properties: success: type: boolean description: If the response is successful or not - type: object properties: data: type: array description: Followers array items: type: object properties: user_id: type: integer description: The ID of the user following the entity add_time: type: string description: The add time of the following additional_data: type: object description: The additional data of the list properties: next_cursor: type: string description: The first item on the next page. The value of the `next_cursor` field will be `null` if you have reached the end of the dataset and there’s no more pages to be returned. example: success: true data: - user_id: 1 add_time: '2021-01-01T00:00:00Z' additional_data: next_cursor: eyJmaWVsZCI6ImlkIiwiZmllbGRWYWx1ZSI6Nywic29ydERpcmVjdGlvbiI6ImFzYyIsImlkIjo3fQ post: summary: Add a follower to an organization description: Adds a user as a follower to the organization. x-token-cost: 5 operationId: addOrganizationFollower tags: - Organizations security: - api_key: [] - oauth2: - 'contacts:full' parameters: - in: path name: id description: The ID of the organization required: true schema: type: integer requestBody: content: application/json: schema: required: - user_id type: object properties: user_id: type: integer description: The ID of the user to add as a follower responses: '201': description: Add a follower content: application/json: schema: type: object title: AddFollowerResponse allOf: - title: baseResponse type: object properties: success: type: boolean description: If the response is successful or not - type: object properties: data: type: object properties: user_id: type: integer description: The ID of the user following the entity add_time: type: string description: The add time of the following example: success: true data: user_id: 1 add_time: '2021-01-01T00:00:00Z' '/organizations/{id}/followers/changelog': get: summary: List followers changelog of an organization description: Lists changelogs about users have followed the organization. x-token-cost: 10 operationId: getOrganizationFollowersChangelog tags: - Organizations security: - api_key: [] - oauth2: - 'contacts:read' - 'contacts:full' parameters: - in: path name: id description: The ID of the organization required: true schema: type: integer - in: query name: limit description: 'For pagination, the limit of entries to be returned. If not provided, 100 items will be returned. Please note that a maximum value of 500 is allowed.' schema: type: integer example: 100 - in: query name: cursor required: false schema: type: string description: 'For pagination, the marker (an opaque string value) representing the first item on the next page' responses: '200': description: List entity followers content: application/json: schema: type: object title: GetFollowerChangelogsResponse allOf: - title: baseResponse type: object properties: success: type: boolean description: If the response is successful or not - type: object properties: data: type: array description: Follower changelogs array items: type: object title: FollowerChangelogItem properties: action: type: string description: The type of change actor_user_id: type: integer description: The ID of the user who did the change follower_user_id: type: integer description: The ID of the user who was following the entity time: type: string description: The time at which the change happened additional_data: type: object description: The additional data of the list properties: next_cursor: type: string description: The first item on the next page. The value of the `next_cursor` field will be `null` if you have reached the end of the dataset and there’s no more pages to be returned. example: success: true data: - action: added actor_user_id: 1 follower_user_id: 1 time: '2024-01-01T00:00:00Z' additional_data: next_cursor: eyJmaWVsZCI6ImlkIiwiZmllbGRWYWx1ZSI6Nywic29ydERpcmVjdGlvbiI6ImFzYyIsImlkIjo3fQ '/organizations/{id}/followers/{follower_id}': delete: summary: Delete a follower from an organization description: Deletes a user follower from the organization. x-token-cost: 3 operationId: deleteOrganizationFollower tags: - Organizations security: - api_key: [] - oauth2: - 'contacts:full' parameters: - in: path name: id description: The ID of the organization required: true schema: type: integer - in: path name: follower_id required: true schema: type: integer description: The ID of the following user responses: '200': description: Remove a follower content: application/json: schema: title: DeleteFollowerResponse type: object properties: success: type: boolean description: If the response is successful or not data: type: object properties: user_id: type: integer description: Deleted follower user ID example: success: true data: user_id: 1 /organizationFields: get: summary: Get all organization fields description: Returns metadata about all organization fields in the company. x-token-cost: 10 operationId: getOrganizationFields tags: - OrganizationFields security: - api_key: [] - oauth2: - 'contacts:read' - 'contacts:full' - admin - 'contact-fields:full' parameters: - in: query name: include_fields description: Optional comma separated string array of additional data namespaces to include in response schema: type: string enum: - ui_visibility - important_fields - required_fields - 'ui_visibility,important_fields' - 'ui_visibility,required_fields' - 'important_fields,required_fields' - 'ui_visibility,important_fields,required_fields' - in: query name: limit description: 'For pagination, the limit of entries to be returned. If not provided, 100 items will be returned. Please note that a maximum value of 500 is allowed.' schema: type: integer example: 100 - in: query name: cursor required: false schema: type: string description: 'For pagination, the marker (an opaque string value) representing the first item on the next page' responses: '200': description: Get all organization fields content: application/json: schema: type: object properties: success: type: boolean description: Whether the request was successful data: type: array items: type: object required: - field_name - field_code - field_type - is_custom_field - is_optional_response_field properties: field_name: type: string description: The display name/label of the field field_code: type: string description: The unique identifier for the field (40-character hash for custom fields) field_type: type: string description: The type of the field enum: - int - double - boolean - varchar - text - phone - varchar_options - varchar_auto - date - daterange - time - timerange - enum - set - address - monetary - deal - deals - lead - org - people - project - stage - user - activity - json - picture - status - visible_to - price_list - billing_frequency - projects_board - projects_phase options: type: array nullable: true description: 'Array of available options for enum/set fields, null for other field types' items: type: object properties: id: type: integer description: The option ID label: type: string description: The option display label color: type: string nullable: true description: Optional color code for the option update_time: type: string format: date-time nullable: true description: When the option was last updated add_time: type: string format: date-time nullable: true description: When the option was created subfields: type: array nullable: true description: 'Array of subfields for complex field types (address, monetary), null for simple field types' items: type: object properties: field_code: type: string description: The subfield identifier field_name: type: string description: The subfield display name field_type: type: string description: The subfield type is_custom_field: type: boolean description: Whether this is a user-created custom field is_optional_response_field: type: boolean description: Whether this field is not returned by default in entity responses ui_visibility: type: object description: UI visibility settings (only included when requested via include_fields parameter) properties: add_visible_flag: type: boolean description: Whether the field is shown in the add modal details_visible_flag: type: boolean description: Whether the field is shown in the details view org_detail_visible_flag: type: boolean description: Whether the field is shown in the organization details view person_detail_visible_flag: type: boolean description: Whether the field is shown in the person details view deal_detail_visible_flag: type: boolean description: Whether the field is shown in the deal details view show_in_add_deal_dialog: type: object description: Configuration for showing the field in the add deal dialog properties: show: type: boolean description: Whether the field is shown in the add deal dialog order: type: integer nullable: true description: Display order in the add deal dialog (null if not shown) show_in_add_person_dialog: type: object description: Configuration for showing the field in the add person dialog properties: show: type: boolean description: Whether the field is shown in the add person dialog order: type: integer nullable: true description: Display order in the add person dialog (null if not shown) important_fields: type: object description: Important fields configuration properties: enabled: type: boolean description: Whether the field is marked as important stage_ids: type: array items: type: integer description: Array of deal stage IDs where the field is important required_fields: type: object description: Required fields configuration properties: enabled: type: boolean description: Whether the field is required additional_data: type: object properties: next_cursor: type: string nullable: true description: 'Base64url-encoded cursor for fetching the next page of results, null if no more pages' example: success: true data: - field_name: Organization Name field_code: name field_type: varchar options: null subfields: null is_custom_field: false is_optional_response_field: false ui_visibility: add_visible_flag: true details_visible_flag: true org_detail_visible_flag: true person_detail_visible_flag: true deal_detail_visible_flag: true show_in_add_deal_dialog: show: true order: 1 show_in_add_person_dialog: show: true order: 1 important_fields: enabled: false stage_ids: [] required_fields: enabled: true - field_name: Address field_code: address field_type: address options: null subfields: - field_code: value field_name: Address value of Address field_type: varchar - field_code: street_number field_name: House number of Address field_type: varchar - field_code: route field_name: Street/road name of Address field_type: varchar - field_code: subpremise field_name: Apartment/suite of Address field_type: varchar - field_code: locality field_name: District of Address field_type: varchar - field_code: admin_area_level_1 field_name: State/province of Address field_type: varchar - field_code: admin_area_level_2 field_name: County of Address field_type: varchar - field_code: country field_name: Country of Address field_type: varchar - field_code: postal_code field_name: Postal code of Address field_type: varchar - field_code: formatted_address field_name: Formatted address of Address field_type: varchar is_custom_field: false is_optional_response_field: false ui_visibility: add_visible_flag: true details_visible_flag: true org_detail_visible_flag: true person_detail_visible_flag: true deal_detail_visible_flag: false show_in_add_deal_dialog: show: true order: 2 show_in_add_person_dialog: show: false order: null important_fields: enabled: true stage_ids: - 1 - 2 required_fields: enabled: false - field_name: Industry field_code: 40characterhashforcustomfieldidentifier field_type: enum options: - id: 1 label: Technology - id: 2 label: Finance - id: 3 label: Healthcare subfields: null is_custom_field: true is_optional_response_field: false ui_visibility: add_visible_flag: true details_visible_flag: true org_detail_visible_flag: false person_detail_visible_flag: true deal_detail_visible_flag: true show_in_add_deal_dialog: show: false order: null show_in_add_person_dialog: show: true order: 2 important_fields: enabled: false stage_ids: [] required_fields: enabled: false additional_data: next_cursor: eyJmaWVsZCI6ImlkIiwiZmllbGRWYWx1ZSI6Nywic29ydERpcmVjdGlvbiI6ImFzYyIsImlkIjo3fQ post: summary: Create one organization field description: Creates a new organization custom field. x-token-cost: 5 operationId: addOrganizationField tags: - OrganizationFields security: - api_key: [] - oauth2: - admin - 'contact-fields:full' requestBody: required: true content: application/json: schema: type: object required: - field_name - field_type properties: field_name: type: string minLength: 1 maxLength: 255 description: Field name field_type: type: string description: 'The type of the field
ValueDescription
`varchar`Text (up to 255 characters)
`varchar_auto`Autocomplete text (up to 255 characters)
`text`Long text (up to 65k characters)
`double`Numeric value
`monetary`Monetary field (has a numeric value and a currency value)
`date`Date (format YYYY-MM-DD)
`set`Options field with a possibility of having multiple chosen options
`enum`Options field with a single possible chosen option
`user`User field (contains a user ID of another Pipedrive user)
`org`Organization field (contains an organization ID which is stored on the same account)
`people`Person field (contains a person ID which is stored on the same account)
`phone`Phone field (up to 255 numbers and/or characters)
`time`Time field (format HH:MM:SS)
`timerange`Time-range field (has a start time and end time value, both HH:MM:SS)
`daterange`Date-range field (has a start date and end date value, both YYYY-MM-DD)
`address`Address field
' enum: - varchar - text - double - phone - date - daterange - time - timerange - set - enum - varchar_auto - address - monetary - org - people - user options: type: array description: Field options (required for enum and set field types) items: type: object required: - label properties: label: type: string description: The option label ui_visibility: type: object description: UI visibility settings for the field. Controls where the field appears in the Pipedrive web UI. additionalProperties: true properties: add_visible_flag: type: boolean description: Whether the field is shown in the add organization modal. Default is false. Cannot be set to false for the 'name' system field. default: false details_visible_flag: type: boolean description: Whether the field is shown in the organization details view. Default is true. default: true show_in_add_deal_dialog: type: object description: 'Configuration for showing this organization field when adding a new deal. Only available for custom fields or specific eligible system fields. Default is show=false, order=null.' properties: show: type: boolean description: Whether the field is shown in the add deal dialog. Default is false. default: false order: type: integer nullable: true description: 'Display order in the add deal dialog. This value is auto-calculated and managed by the system. When show is set to false, order is automatically set to null. When show changes from false to true, order is automatically assigned the next available position.' default: null show_in_add_person_dialog: type: object description: 'Configuration for showing this organization field when adding a new person. Only available for custom fields or specific eligible system fields. Default is show=false, order=null.' properties: show: type: boolean description: Whether the field is shown in the add person dialog. Default is false. default: false order: type: integer nullable: true description: 'Display order in the add person dialog. This value is auto-calculated and managed by the system. When show is set to false, order is automatically set to null. When show changes from false to true, order is automatically assigned the next available position.' default: null important_fields: type: object description: Configuration for highlighting the field at specific stages. additionalProperties: true properties: enabled: type: boolean description: 'Whether the field is marked as important. When false, the field is not highlighted. When true with empty stage_ids, the field is important everywhere. When true with specific stage_ids, the field is important only at those deal stages. Default is false.' default: false stage_ids: type: array items: type: integer description: 'Array of deal stage IDs where this organization field should be highlighted as important. Must reference valid, active deal stages. Empty array when enabled is false.' default: [] required_fields: type: object description: Required fields configuration for marking the field as mandatory when interacted with in the Pipedrive web UI. additionalProperties: true properties: enabled: type: boolean description: 'Whether the field is required. When false, the field is optional. When true, the field is required when creating or updating organizations. Default is false.' default: false responses: '200': description: Create one organization field content: application/json: schema: type: object properties: success: type: boolean description: Whether the request was successful data: type: object required: - field_name - field_code - field_type - is_custom_field - is_optional_response_field properties: field_name: type: string description: The display name/label of the field field_code: type: string description: The unique identifier for the field (40-character hash for custom fields) field_type: type: string description: The type of the field enum: - int - double - boolean - varchar - text - phone - varchar_options - varchar_auto - date - daterange - time - timerange - enum - set - address - monetary - deal - deals - lead - org - people - project - stage - user - activity - json - picture - status - visible_to - price_list - billing_frequency - projects_board - projects_phase options: type: array nullable: true description: 'Array of available options for enum/set fields, null for other field types' items: type: object properties: id: type: integer description: The option ID label: type: string description: The option display label color: type: string nullable: true description: Optional color code for the option update_time: type: string format: date-time nullable: true description: When the option was last updated add_time: type: string format: date-time nullable: true description: When the option was created subfields: type: array nullable: true description: 'Array of subfields for complex field types (address, monetary), null for simple field types' items: type: object properties: field_code: type: string description: The subfield identifier field_name: type: string description: The subfield display name field_type: type: string description: The subfield type is_custom_field: type: boolean description: Whether this is a user-created custom field is_optional_response_field: type: boolean description: Whether this field is not returned by default in entity responses ui_visibility: type: object description: UI visibility settings (only included when requested via include_fields parameter) properties: add_visible_flag: type: boolean description: Whether the field is shown in the add modal details_visible_flag: type: boolean description: Whether the field is shown in the details view org_detail_visible_flag: type: boolean description: Whether the field is shown in the organization details view person_detail_visible_flag: type: boolean description: Whether the field is shown in the person details view deal_detail_visible_flag: type: boolean description: Whether the field is shown in the deal details view show_in_add_deal_dialog: type: object description: Configuration for showing the field in the add deal dialog properties: show: type: boolean description: Whether the field is shown in the add deal dialog order: type: integer nullable: true description: Display order in the add deal dialog (null if not shown) show_in_add_person_dialog: type: object description: Configuration for showing the field in the add person dialog properties: show: type: boolean description: Whether the field is shown in the add person dialog order: type: integer nullable: true description: Display order in the add person dialog (null if not shown) important_fields: type: object description: Important fields configuration properties: enabled: type: boolean description: Whether the field is marked as important stage_ids: type: array items: type: integer description: Array of deal stage IDs where the field is important required_fields: type: object description: Required fields configuration properties: enabled: type: boolean description: Whether the field is required example: success: true data: field_name: Industry field_code: 946947d1b02fd3ef20798d6112ec5d895a686a21 field_type: enum options: - id: 1 label: Technology - id: 2 label: Finance - id: 3 label: Healthcare subfields: null is_custom_field: true is_optional_response_field: false ui_visibility: add_visible_flag: true details_visible_flag: true org_detail_visible_flag: true person_detail_visible_flag: false deal_detail_visible_flag: false show_in_add_deal_dialog: show: false order: null show_in_add_person_dialog: show: true order: 2 important_fields: enabled: false stage_ids: [] required_fields: enabled: false '/organizationFields/{field_code}': get: summary: Get one organization field description: Returns metadata about a specific organization field. x-token-cost: 1 operationId: getOrganizationField tags: - OrganizationFields security: - api_key: [] - oauth2: - 'contacts:read' - 'contacts:full' - admin - 'contact-fields:full' parameters: - in: path name: field_code description: The unique code identifying the field required: true schema: type: string - in: query name: include_fields description: Optional comma separated string array of additional data namespaces to include in response schema: type: string enum: - ui_visibility - important_fields - required_fields - 'ui_visibility,important_fields' - 'ui_visibility,required_fields' - 'important_fields,required_fields' - 'ui_visibility,important_fields,required_fields' responses: '200': description: Get one organization field content: application/json: schema: type: object properties: success: type: boolean description: Whether the request was successful data: type: object required: - field_name - field_code - field_type - is_custom_field - is_optional_response_field properties: field_name: type: string description: The display name/label of the field field_code: type: string description: The unique identifier for the field (40-character hash for custom fields) field_type: type: string description: The type of the field enum: - int - double - boolean - varchar - text - phone - varchar_options - varchar_auto - date - daterange - time - timerange - enum - set - address - monetary - deal - deals - lead - org - people - project - stage - user - activity - json - picture - status - visible_to - price_list - billing_frequency - projects_board - projects_phase options: type: array nullable: true description: 'Array of available options for enum/set fields, null for other field types' items: type: object properties: id: type: integer description: The option ID label: type: string description: The option display label color: type: string nullable: true description: Optional color code for the option update_time: type: string format: date-time nullable: true description: When the option was last updated add_time: type: string format: date-time nullable: true description: When the option was created subfields: type: array nullable: true description: 'Array of subfields for complex field types (address, monetary), null for simple field types' items: type: object properties: field_code: type: string description: The subfield identifier field_name: type: string description: The subfield display name field_type: type: string description: The subfield type is_custom_field: type: boolean description: Whether this is a user-created custom field is_optional_response_field: type: boolean description: Whether this field is not returned by default in entity responses ui_visibility: type: object description: UI visibility settings (only included when requested via include_fields parameter) properties: add_visible_flag: type: boolean description: Whether the field is shown in the add modal details_visible_flag: type: boolean description: Whether the field is shown in the details view org_detail_visible_flag: type: boolean description: Whether the field is shown in the organization details view person_detail_visible_flag: type: boolean description: Whether the field is shown in the person details view deal_detail_visible_flag: type: boolean description: Whether the field is shown in the deal details view show_in_add_deal_dialog: type: object description: Configuration for showing the field in the add deal dialog properties: show: type: boolean description: Whether the field is shown in the add deal dialog order: type: integer nullable: true description: Display order in the add deal dialog (null if not shown) show_in_add_person_dialog: type: object description: Configuration for showing the field in the add person dialog properties: show: type: boolean description: Whether the field is shown in the add person dialog order: type: integer nullable: true description: Display order in the add person dialog (null if not shown) important_fields: type: object description: Important fields configuration properties: enabled: type: boolean description: Whether the field is marked as important stage_ids: type: array items: type: integer description: Array of deal stage IDs where the field is important required_fields: type: object description: Required fields configuration properties: enabled: type: boolean description: Whether the field is required example: success: true data: field_name: Organization Name field_code: name field_type: varchar options: null subfields: null is_custom_field: false is_optional_response_field: false ui_visibility: add_visible_flag: true details_visible_flag: true org_detail_visible_flag: true person_detail_visible_flag: true deal_detail_visible_flag: true show_in_add_deal_dialog: show: true order: 1 show_in_add_person_dialog: show: true order: 1 important_fields: enabled: false stage_ids: [] required_fields: enabled: true patch: summary: Update one organization field description: Updates an organization custom field. The field_code and field_type cannot be changed. At least one field must be provided in the request body. x-token-cost: 5 operationId: updateOrganizationField tags: - OrganizationFields security: - api_key: [] - oauth2: - 'contacts:full' - admin - 'contact-fields:full' parameters: - in: path name: field_code description: The unique code identifying the field required: true schema: type: string requestBody: required: true content: application/json: schema: type: object minProperties: 1 properties: field_name: type: string minLength: 1 maxLength: 255 description: Field name ui_visibility: type: object description: UI visibility settings for the field. Controls where the field appears in the Pipedrive web UI. additionalProperties: true properties: add_visible_flag: type: boolean description: Whether the field is shown in the add organization modal. Default is false. Cannot be set to false for the 'name' system field. default: false details_visible_flag: type: boolean description: Whether the field is shown in the organization details view. Default is true. default: true show_in_add_deal_dialog: type: object description: 'Configuration for showing this organization field when adding a new deal. Only available for custom fields or specific eligible system fields. Default is show=false, order=null.' properties: show: type: boolean description: Whether the field is shown in the add deal dialog. Default is false. default: false order: type: integer nullable: true description: 'Display order in the add deal dialog. This value is auto-calculated and managed by the system. When show is set to false, order is automatically set to null. When show changes from false to true, order is automatically assigned the next available position.' default: null show_in_add_person_dialog: type: object description: 'Configuration for showing this organization field when adding a new person. Only available for custom fields or specific eligible system fields. Default is show=false, order=null.' properties: show: type: boolean description: Whether the field is shown in the add person dialog. Default is false. default: false order: type: integer nullable: true description: 'Display order in the add person dialog. This value is auto-calculated and managed by the system. When show is set to false, order is automatically set to null. When show changes from false to true, order is automatically assigned the next available position.' default: null important_fields: type: object description: Configuration for highlighting the field at specific stages. additionalProperties: true properties: enabled: type: boolean description: 'Whether the field is marked as important. When false, the field is not highlighted. When true with empty stage_ids, the field is important everywhere. When true with specific stage_ids, the field is important only at those deal stages. Default is false.' default: false stage_ids: type: array items: type: integer description: 'Array of deal stage IDs where this organization field should be highlighted as important. Must reference valid, active deal stages. Empty array when enabled is false.' default: [] required_fields: type: object description: Required fields configuration for marking the field as mandatory when interacted with in the Pipedrive web UI. additionalProperties: true properties: enabled: type: boolean description: 'Whether the field is required. When false, the field is optional. When true, the field is required when creating or updating organizations. Default is false.' default: false responses: '200': description: Get one organization field content: application/json: schema: type: object properties: success: type: boolean description: Whether the request was successful data: type: object required: - field_name - field_code - field_type - is_custom_field - is_optional_response_field properties: field_name: type: string description: The display name/label of the field field_code: type: string description: The unique identifier for the field (40-character hash for custom fields) field_type: type: string description: The type of the field enum: - int - double - boolean - varchar - text - phone - varchar_options - varchar_auto - date - daterange - time - timerange - enum - set - address - monetary - deal - deals - lead - org - people - project - stage - user - activity - json - picture - status - visible_to - price_list - billing_frequency - projects_board - projects_phase options: type: array nullable: true description: 'Array of available options for enum/set fields, null for other field types' items: type: object properties: id: type: integer description: The option ID label: type: string description: The option display label color: type: string nullable: true description: Optional color code for the option update_time: type: string format: date-time nullable: true description: When the option was last updated add_time: type: string format: date-time nullable: true description: When the option was created subfields: type: array nullable: true description: 'Array of subfields for complex field types (address, monetary), null for simple field types' items: type: object properties: field_code: type: string description: The subfield identifier field_name: type: string description: The subfield display name field_type: type: string description: The subfield type is_custom_field: type: boolean description: Whether this is a user-created custom field is_optional_response_field: type: boolean description: Whether this field is not returned by default in entity responses ui_visibility: type: object description: UI visibility settings (only included when requested via include_fields parameter) properties: add_visible_flag: type: boolean description: Whether the field is shown in the add modal details_visible_flag: type: boolean description: Whether the field is shown in the details view org_detail_visible_flag: type: boolean description: Whether the field is shown in the organization details view person_detail_visible_flag: type: boolean description: Whether the field is shown in the person details view deal_detail_visible_flag: type: boolean description: Whether the field is shown in the deal details view show_in_add_deal_dialog: type: object description: Configuration for showing the field in the add deal dialog properties: show: type: boolean description: Whether the field is shown in the add deal dialog order: type: integer nullable: true description: Display order in the add deal dialog (null if not shown) show_in_add_person_dialog: type: object description: Configuration for showing the field in the add person dialog properties: show: type: boolean description: Whether the field is shown in the add person dialog order: type: integer nullable: true description: Display order in the add person dialog (null if not shown) important_fields: type: object description: Important fields configuration properties: enabled: type: boolean description: Whether the field is marked as important stage_ids: type: array items: type: integer description: Array of deal stage IDs where the field is important required_fields: type: object description: Required fields configuration properties: enabled: type: boolean description: Whether the field is required example: success: true data: field_name: Organization Name field_code: name field_type: varchar options: null subfields: null is_custom_field: false is_optional_response_field: false ui_visibility: add_visible_flag: true details_visible_flag: true org_detail_visible_flag: true person_detail_visible_flag: true deal_detail_visible_flag: true show_in_add_deal_dialog: show: true order: 1 show_in_add_person_dialog: show: true order: 1 important_fields: enabled: false stage_ids: [] required_fields: enabled: true delete: summary: Delete one organization field description: Marks a custom field as deleted. x-token-cost: 3 operationId: deleteOrganizationField tags: - OrganizationFields security: - api_key: [] - oauth2: - admin - 'contact-fields:full' parameters: - in: path name: field_code description: The unique code identifying the field required: true schema: type: string responses: '200': description: Delete one organization field content: application/json: schema: type: object properties: success: type: boolean description: Whether the request was successful data: type: object required: - field_name - field_code - field_type - is_custom_field - is_optional_response_field properties: field_name: type: string description: The display name/label of the field field_code: type: string description: The unique identifier for the field (40-character hash for custom fields) field_type: type: string description: The type of the field options: type: array nullable: true description: 'Array of available options for enum/set fields, null for other field types' items: type: object subfields: type: array nullable: true description: 'Array of subfields for complex field types (address, monetary), null for simple field types' items: type: object is_custom_field: type: boolean description: Whether this is a user-created custom field is_optional_response_field: type: boolean description: Whether this field is not returned by default in entity responses example: success: true data: field_name: Custom text field field_code: 946947d1b02fd3ef20798d6112ec5d895a686a21 field_type: varchar options: null subfields: null is_custom_field: true is_optional_response_field: false '/organizationFields/{field_code}/options': post: summary: Add organization field options in bulk description: Adds new options to an organization custom field that supports options (enum or set field types). This operation is atomic - all options are added or none are added. Returns only the newly added options. x-token-cost: 5 operationId: addOrganizationFieldOptions tags: - OrganizationFields security: - api_key: [] - oauth2: - 'contacts:full' - admin - 'contact-fields:full' parameters: - in: path name: field_code description: The unique code identifying the field required: true schema: type: string requestBody: required: true content: application/json: schema: type: array description: Array of options to add. Each item must contain a label. At least one option is required. items: type: object required: - label properties: label: type: string minLength: 1 maxLength: 255 description: The display label for the new option responses: '200': description: Field options operation result content: application/json: schema: type: object properties: success: type: boolean data: type: array items: type: object required: - id - label properties: id: type: integer description: The unique identifier of the option label: type: string description: The display label of the option additional_data: type: object nullable: true example: success: true data: - id: 4 label: Manufacturing additional_data: null delete: summary: Delete organization field options in bulk description: Removes existing options from an organization custom field. This operation is atomic and fails if any of the specified option IDs do not exist. Returns only the deleted options. x-token-cost: 3 operationId: deleteOrganizationFieldOptions tags: - OrganizationFields security: - api_key: [] - oauth2: - 'contacts:full' - admin - 'contact-fields:full' parameters: - in: path name: field_code description: The unique code identifying the field required: true schema: type: string requestBody: required: true content: application/json: schema: type: array description: Array of option IDs to delete. Each item must contain an ID of the option to delete. At least one option ID is required. The entire request fails if any option does not exist. items: type: object required: - id properties: id: type: integer description: The unique identifier of the option to delete responses: '200': description: Field options operation result content: application/json: schema: type: object properties: success: type: boolean data: type: array items: type: object required: - id - label properties: id: type: integer description: The unique identifier of the option label: type: string description: The display label of the option additional_data: type: object nullable: true example: success: true data: - id: 4 label: Manufacturing additional_data: null patch: summary: Update organization field options in bulk description: Updates existing options for an organization custom field. This operation is atomic and fails if any of the specified option IDs do not exist. Returns only the updated options. x-token-cost: 5 operationId: updateOrganizationFieldOptions tags: - OrganizationFields security: - api_key: [] - oauth2: - 'contacts:full' - admin - 'contact-fields:full' parameters: - in: path name: field_code description: The unique code identifying the field required: true schema: type: string requestBody: required: true content: application/json: schema: type: array description: Array of options to update. Each item must contain an ID and the updated label. At least one option is required. The entire request fails if any option does not exist. items: type: object required: - id - label properties: id: type: integer description: The unique identifier of the option to update label: type: string minLength: 1 maxLength: 255 description: The new display label for the option responses: '200': description: Field options operation result content: application/json: schema: type: object properties: success: type: boolean data: type: array items: type: object required: - id - label properties: id: type: integer description: The unique identifier of the option label: type: string description: The display label of the option additional_data: type: object nullable: true example: success: true data: - id: 4 label: Manufacturing additional_data: null /products: get: summary: Get all products description: Returns data about all products. x-token-cost: 10 operationId: getProducts tags: - Products security: - api_key: [] - oauth2: - 'products:read' - 'products:full' parameters: - in: query name: owner_id schema: type: integer description: 'If supplied, only products owned by the given user will be returned' - in: query name: ids description: 'Optional comma separated string array of up to 100 entity ids to fetch. If filter_id is provided, this is ignored. If any of the requested entities do not exist or are not visible, they are not included in the response.' schema: type: string - in: query name: filter_id schema: type: integer description: The ID of the filter to use - in: query name: cursor required: false schema: type: string description: 'For pagination, the marker (an opaque string value) representing the first item on the next page' - in: query name: limit description: 'For pagination, the limit of entries to be returned. If not provided, 100 items will be returned. Please note that a maximum value of 500 is allowed.' schema: type: integer example: 100 - in: query name: sort_by description: 'The field to sort by. Supported fields: `id`, `name`, `add_time`, `update_time`.' schema: type: string default: id enum: - id - name - add_time - update_time - in: query name: sort_direction description: 'The sorting direction. Supported values: `asc`, `desc`.' schema: type: string default: asc enum: - asc - desc - in: query name: custom_fields description: 'Comma separated string array of custom fields keys to include. If you are only interested in a particular set of custom fields, please use this parameter for a smaller response.
A maximum of 15 keys is allowed.' schema: type: string responses: '200': description: List of products content: application/json: schema: title: GetProductsResponse type: object properties: success: type: boolean description: If the response is successful or not data: type: array description: Array containing data for all products items: title: GetProductResponse type: object properties: success: type: boolean description: If the response is successful or not data: allOf: - title: BaseProduct allOf: - type: object properties: id: type: number description: The ID of the product name: type: string description: The name of the product code: type: string description: The product code unit: type: string description: The unit in which this product is sold tax: type: number description: The tax percentage default: 0 is_deleted: type: boolean description: Whether this product will be marked as deleted or not default: false is_linkable: type: boolean description: Whether this product can be added to a deal or not default: true visible_to: allOf: - type: number enum: - 1 - 3 - 5 - 7 description: Visibility of the product owner_id: type: integer description: Information about the Pipedrive user who owns the product custom_fields: type: object additionalProperties: true description: 'An object where each key represents a custom field. All custom fields are referenced as randomly generated 40-character hashes. To clear a custom field value, set it to `null`. For multi-option fields (field type `set`), use `null` to clear the selection — sending an empty array `[]` is not supported and will result in a validation error.' - type: object properties: billing_frequency: default: one-time type: string enum: - one-time - annually - semi-annually - quarterly - monthly - weekly description: | Only available in Growth and above plans How often a customer is billed for access to a service or product - type: object properties: billing_frequency_cycles: default: null type: integer nullable: true description: | Only available in Growth and above plans The number of times the billing frequency repeats for a product in a deal When `billing_frequency` is set to `one-time`, this field must be `null` When `billing_frequency` is set to `weekly`, this field cannot be `null` For all the other values of `billing_frequency`, `null` represents a product billed indefinitely Must be a positive integer less or equal to 208 - type: object title: PricesArray properties: prices: type: array items: type: object description: 'Array of objects, each containing: product_id (number), currency (string), price (number), cost (number), direct_cost (number | null), notes (string)' additional_data: type: object description: Pagination related data properties: next_cursor: type: string description: The first item on the next page. The value of the `next_cursor` field will be `null` if you have reached the end of the dataset and there’s no more pages to be returned. example: success: true data: - id: 1 name: Mechanical Pencil code: MPENCIL description: Product description unit: '' tax: 0 category: Retail is_linkable: true is_deleted: false visible_to: 3 owner_id: 1234 add_time: '2019-12-19T11:36:49Z' update_time: '2019-12-19T11:36:49Z' billing_frequency: monthly billing_frequency_cycles: 4 prices: - product_id: 1 price: 5 currency: EUR cost: 2 direct_cost: 1 notes: this is a note custom_fields: type: object description: A map of custom fields with hash-based keys additionalProperties: oneOf: - type: string - type: number - type: object additionalProperties: true additional_data: next_cursor: eyJmaWVsZCI6ImlkIiwiZmllbGRWYWx1ZSI6Nywic29ydERpcmVjdGlvbiI6ImFzYyIsImlkIjo3fQ post: summary: Add a product description: 'Adds a new product to the Products inventory. For more information, see the tutorial for adding a product.' x-token-cost: 5 operationId: addProduct tags: - Products security: - api_key: [] - oauth2: - 'products:full' requestBody: content: application/json: schema: title: addProductRequest allOf: - required: - name type: object properties: name: type: string description: The name of the product. Cannot be an empty string - title: productRequest type: object properties: code: type: string description: The product code description: type: string description: The product description unit: type: string description: The unit in which this product is sold tax: type: number description: The tax percentage default: 0 category: type: number description: The category of the product owner_id: type: integer description: 'The ID of the user who will be marked as the owner of this product. When omitted, the authorized user ID will be used' is_linkable: type: boolean description: Whether this product can be added to a deal or not default: true visible_to: type: number allOf: - type: number enum: - 1 - 3 - 5 - 7 description: 'The visibility of the product. If omitted, the visibility will be set to the default visibility setting of this item type for the authorized user. Read more about visibility groups here.

Light / Growth and Professional plans

ValueDescription
`1`Owner & followers
`3`Entire company

Premium / Ultimate plan

ValueDescription
`1`Owner only
`3`Owner''s visibility group
`5`Owner''s visibility group and sub-groups
`7`Entire company
' prices: type: array items: type: object description: 'An array of objects, each containing: `currency` (string), `price` (number), `cost` (number, optional), `direct_cost` (number, optional). Note that there can only be one price per product per currency. When `prices` is omitted altogether, a default price of 0 and the user''s default currency will be assigned.' custom_fields: type: object additionalProperties: true description: 'An object where each key represents a custom field. All custom fields are referenced as randomly generated 40-character hashes. To clear a custom field value, set it to `null`. For multi-option fields (field type `set`), use `null` to clear the selection — sending an empty array `[]` is not supported and will result in a validation error.' - type: object properties: billing_frequency: default: one-time type: string enum: - one-time - annually - semi-annually - quarterly - monthly - weekly description: | Only available in Growth and above plans How often a customer is billed for access to a service or product - type: object properties: billing_frequency_cycles: default: null type: integer nullable: true description: | Only available in Growth and above plans The number of times the billing frequency repeats for a product in a deal When `billing_frequency` is set to `one-time`, this field must be `null` When `billing_frequency` is set to `weekly`, this field cannot be `null` For all the other values of `billing_frequency`, `null` represents a product billed indefinitely Must be a positive integer less or equal to 208 responses: '201': description: Add product data content: application/json: schema: title: GetProductResponse type: object properties: success: type: boolean description: If the response is successful or not data: allOf: - title: BaseProduct allOf: - type: object properties: id: type: number description: The ID of the product name: type: string description: The name of the product code: type: string description: The product code unit: type: string description: The unit in which this product is sold tax: type: number description: The tax percentage default: 0 is_deleted: type: boolean description: Whether this product will be marked as deleted or not default: false is_linkable: type: boolean description: Whether this product can be added to a deal or not default: true visible_to: allOf: - type: number enum: - 1 - 3 - 5 - 7 description: Visibility of the product owner_id: type: integer description: Information about the Pipedrive user who owns the product custom_fields: type: object additionalProperties: true description: 'An object where each key represents a custom field. All custom fields are referenced as randomly generated 40-character hashes. To clear a custom field value, set it to `null`. For multi-option fields (field type `set`), use `null` to clear the selection — sending an empty array `[]` is not supported and will result in a validation error.' - type: object properties: billing_frequency: default: one-time type: string enum: - one-time - annually - semi-annually - quarterly - monthly - weekly description: | Only available in Growth and above plans How often a customer is billed for access to a service or product - type: object properties: billing_frequency_cycles: default: null type: integer nullable: true description: | Only available in Growth and above plans The number of times the billing frequency repeats for a product in a deal When `billing_frequency` is set to `one-time`, this field must be `null` When `billing_frequency` is set to `weekly`, this field cannot be `null` For all the other values of `billing_frequency`, `null` represents a product billed indefinitely Must be a positive integer less or equal to 208 - type: object title: PricesArray properties: prices: type: array items: type: object description: 'Array of objects, each containing: product_id (number), currency (string), price (number), cost (number), direct_cost (number | null), notes (string)' example: success: true data: id: 1 name: Mechanical Pencil code: MPENCIL description: Product description unit: '' tax: 0 category: Retail is_linkable: true is_deleted: false visible_to: 3 owner_id: 1234 add_time: '2019-12-19T11:36:49Z' update_time: '2019-12-19T11:36:49Z' billing_frequency: monthly billing_frequency_cycles: 4 prices: - product_id: 1 price: 5 currency: EUR cost: 2 direct_cost: 1 notes: this is a note custom_fields: type: object description: A map of custom fields with hash-based keys additionalProperties: oneOf: - type: string - type: number - type: object additionalProperties: true '/products/{id}/followers': get: summary: List followers of a product description: Lists users who are following the product. x-token-cost: 10 operationId: getProductFollowers tags: - Products security: - api_key: [] - oauth2: - 'products:read' - 'products:full' parameters: - in: path name: id description: The ID of the product required: true schema: type: integer - in: query name: limit description: 'For pagination, the limit of entries to be returned. If not provided, 100 items will be returned. Please note that a maximum value of 500 is allowed.' schema: type: integer example: 100 - in: query name: cursor required: false schema: type: string description: 'For pagination, the marker (an opaque string value) representing the first item on the next page' responses: '200': description: List entity followers content: application/json: schema: type: object title: GetFollowersResponse allOf: - title: baseResponse type: object properties: success: type: boolean description: If the response is successful or not - type: object properties: data: type: array description: Followers array items: type: object properties: user_id: type: integer description: The ID of the user following the entity add_time: type: string description: The add time of the following additional_data: type: object description: The additional data of the list properties: next_cursor: type: string description: The first item on the next page. The value of the `next_cursor` field will be `null` if you have reached the end of the dataset and there’s no more pages to be returned. example: success: true data: - user_id: 1 add_time: '2021-01-01T00:00:00Z' additional_data: next_cursor: eyJmaWVsZCI6ImlkIiwiZmllbGRWYWx1ZSI6Nywic29ydERpcmVjdGlvbiI6ImFzYyIsImlkIjo3fQ post: summary: Add a follower to a product description: Adds a user as a follower to the product. x-token-cost: 5 operationId: addProductFollower tags: - Products security: - api_key: [] - oauth2: - 'products:full' parameters: - in: path name: id description: The ID of the product required: true schema: type: integer requestBody: content: application/json: schema: required: - user_id type: object properties: user_id: type: integer description: The ID of the user to add as a follower responses: '201': description: Add a follower content: application/json: schema: type: object title: AddFollowerResponse allOf: - title: baseResponse type: object properties: success: type: boolean description: If the response is successful or not - type: object properties: data: type: object properties: user_id: type: integer description: The ID of the user following the entity add_time: type: string description: The add time of the following example: success: true data: user_id: 1 add_time: '2021-01-01T00:00:00Z' '/products/{id}/followers/changelog': get: summary: List followers changelog of a product description: Lists changelogs about users have followed the product. x-token-cost: 10 operationId: getProductFollowersChangelog tags: - Products security: - api_key: [] - oauth2: - 'products:read' - 'products:full' parameters: - in: path name: id description: The ID of the product required: true schema: type: integer - in: query name: limit description: 'For pagination, the limit of entries to be returned. If not provided, 100 items will be returned. Please note that a maximum value of 500 is allowed.' schema: type: integer example: 100 - in: query name: cursor required: false schema: type: string description: 'For pagination, the marker (an opaque string value) representing the first item on the next page' responses: '200': description: List entity followers content: application/json: schema: type: object title: GetFollowerChangelogsResponse allOf: - title: baseResponse type: object properties: success: type: boolean description: If the response is successful or not - type: object properties: data: type: array description: Follower changelogs array items: type: object title: FollowerChangelogItem properties: action: type: string description: The type of change actor_user_id: type: integer description: The ID of the user who did the change follower_user_id: type: integer description: The ID of the user who was following the entity time: type: string description: The time at which the change happened additional_data: type: object description: The additional data of the list properties: next_cursor: type: string description: The first item on the next page. The value of the `next_cursor` field will be `null` if you have reached the end of the dataset and there’s no more pages to be returned. example: success: true data: - action: added actor_user_id: 1 follower_user_id: 1 time: '2024-01-01T00:00:00Z' additional_data: next_cursor: eyJmaWVsZCI6ImlkIiwiZmllbGRWYWx1ZSI6Nywic29ydERpcmVjdGlvbiI6ImFzYyIsImlkIjo3fQ '/products/{id}/followers/{follower_id}': delete: summary: Delete a follower from a product description: Deletes a user follower from the product. x-token-cost: 3 operationId: deleteProductFollower tags: - Products security: - api_key: [] - oauth2: - 'products:full' parameters: - in: path name: id description: The ID of the product required: true schema: type: integer - in: path name: follower_id required: true schema: type: integer description: The ID of the following user responses: '200': description: Remove a follower content: application/json: schema: title: DeleteFollowerResponse type: object properties: success: type: boolean description: If the response is successful or not data: type: object properties: user_id: type: integer description: Deleted follower user ID example: success: true data: user_id: 1 /products/search: get: summary: Search products description: 'Searches all products by name, code and/or custom fields. This endpoint is a wrapper of /v1/itemSearch with a narrower OAuth scope.' x-token-cost: 20 operationId: searchProducts tags: - Products security: - api_key: [] - oauth2: - 'products:read' - 'products:full' - 'search:read' parameters: - in: query name: term required: true schema: type: string description: The search term to look for. Minimum 2 characters (or 1 if using `exact_match`). Please note that the search term has to be URL encoded. - in: query name: fields schema: type: string enum: - code - custom_fields - name description: 'A comma-separated string array. The fields to perform the search from. Defaults to all of them. Only the following custom field types are searchable: `address`, `varchar`, `text`, `varchar_auto`, `double`, `monetary` and `phone`. Read more about searching by custom fields here.' - in: query name: exact_match schema: type: boolean description: 'When enabled, only full exact matches against the given term are returned. It is not case sensitive.' - in: query name: include_fields schema: type: string enum: - product.price description: Supports including optional fields in the results which are not provided by default - in: query name: limit description: 'For pagination, the limit of entries to be returned. If not provided, 100 items will be returned. Please note that a maximum value of 500 is allowed.' schema: type: integer example: 100 - in: query name: cursor required: false schema: type: string description: 'For pagination, the marker (an opaque string value) representing the first item on the next page' responses: '200': description: Success content: application/json: schema: title: GetProductSearchResponse allOf: - title: baseResponse type: object properties: success: type: boolean description: If the response is successful or not - type: object properties: data: type: object properties: items: type: array description: The array of found items items: type: object properties: result_score: type: number description: Search result relevancy item: type: object properties: id: type: integer description: The ID of the product type: type: string description: The type of the item name: type: string description: The name of the product code: type: integer description: The code of the product visible_to: type: integer description: The visibility of the product owner: type: object properties: id: type: integer description: The ID of the owner of the product custom_fields: type: array items: type: string description: The custom fields additional_data: type: object description: Pagination related data properties: next_cursor: type: string description: The first item on the next page. The value of the `next_cursor` field will be `null` if you have reached the end of the dataset and there’s no more pages to be returned. example: success: true data: items: - result_score: 0.8766 item: id: 1 type: product name: Some product code: 123 visible_to: 3 owner: id: 1 custom_fields: [] additional_data: next_cursor: eyJmaWVsZCI6ImlkIiwiZmllbGRWYWx1ZSI6Nywic29ydERpcmVjdGlvbiI6ImFzYyIsImlkIjo3fQ '/products/{id}': delete: summary: Delete a product description: 'Marks a product as deleted. After 30 days, the product will be permanently deleted.' x-token-cost: 3 operationId: deleteProduct tags: - Products security: - api_key: [] - oauth2: - 'products:full' parameters: - in: path name: id description: The ID of the product required: true schema: type: integer responses: '200': description: Deletes a product content: application/json: schema: title: DeleteProductResponse type: object properties: success: type: boolean description: If the response is successful or not data: type: object properties: id: description: The ID of the removed product type: integer example: success: true data: id: 1 get: summary: Get one product description: Returns data about a specific product. x-token-cost: 1 operationId: getProduct tags: - Products security: - api_key: [] - oauth2: - 'products:read' - 'products:full' parameters: - in: path name: id description: The ID of the product required: true schema: type: integer responses: '200': description: Get product information by id content: application/json: schema: title: GetProductResponse type: object properties: success: type: boolean description: If the response is successful or not data: allOf: - title: BaseProduct allOf: - type: object properties: id: type: number description: The ID of the product name: type: string description: The name of the product code: type: string description: The product code unit: type: string description: The unit in which this product is sold tax: type: number description: The tax percentage default: 0 is_deleted: type: boolean description: Whether this product will be marked as deleted or not default: false is_linkable: type: boolean description: Whether this product can be added to a deal or not default: true visible_to: allOf: - type: number enum: - 1 - 3 - 5 - 7 description: Visibility of the product owner_id: type: integer description: Information about the Pipedrive user who owns the product custom_fields: type: object additionalProperties: true description: 'An object where each key represents a custom field. All custom fields are referenced as randomly generated 40-character hashes. To clear a custom field value, set it to `null`. For multi-option fields (field type `set`), use `null` to clear the selection — sending an empty array `[]` is not supported and will result in a validation error.' - type: object properties: billing_frequency: default: one-time type: string enum: - one-time - annually - semi-annually - quarterly - monthly - weekly description: | Only available in Growth and above plans How often a customer is billed for access to a service or product - type: object properties: billing_frequency_cycles: default: null type: integer nullable: true description: | Only available in Growth and above plans The number of times the billing frequency repeats for a product in a deal When `billing_frequency` is set to `one-time`, this field must be `null` When `billing_frequency` is set to `weekly`, this field cannot be `null` For all the other values of `billing_frequency`, `null` represents a product billed indefinitely Must be a positive integer less or equal to 208 - type: object title: PricesArray properties: prices: type: array items: type: object description: 'Array of objects, each containing: product_id (number), currency (string), price (number), cost (number), direct_cost (number | null), notes (string)' example: success: true data: id: 1 name: Mechanical Pencil code: MPENCIL description: Product description unit: '' tax: 0 category: Retail is_linkable: true is_deleted: false visible_to: 3 owner_id: 1234 add_time: '2019-12-19T11:36:49Z' update_time: '2019-12-19T11:36:49Z' billing_frequency: monthly billing_frequency_cycles: 4 prices: - product_id: 1 price: 5 currency: EUR cost: 2 direct_cost: 1 notes: this is a note custom_fields: type: object description: A map of custom fields with hash-based keys additionalProperties: oneOf: - type: string - type: number - type: object additionalProperties: true patch: summary: Update a product description: Updates product data. x-token-cost: 5 operationId: updateProduct tags: - Products security: - api_key: [] - oauth2: - 'products:full' parameters: - in: path name: id description: The ID of the product required: true schema: type: integer requestBody: content: application/json: schema: title: updateProductRequest allOf: - type: object properties: name: type: string description: The name of the product. Cannot be an empty string - title: productRequest type: object properties: code: type: string description: The product code description: type: string description: The product description unit: type: string description: The unit in which this product is sold tax: type: number description: The tax percentage default: 0 category: type: number description: The category of the product owner_id: type: integer description: 'The ID of the user who will be marked as the owner of this product. When omitted, the authorized user ID will be used' is_linkable: type: boolean description: Whether this product can be added to a deal or not default: true visible_to: type: number allOf: - type: number enum: - 1 - 3 - 5 - 7 description: 'The visibility of the product. If omitted, the visibility will be set to the default visibility setting of this item type for the authorized user. Read more about visibility groups here.

Light / Growth and Professional plans

ValueDescription
`1`Owner & followers
`3`Entire company

Premium / Ultimate plan

ValueDescription
`1`Owner only
`3`Owner''s visibility group
`5`Owner''s visibility group and sub-groups
`7`Entire company
' prices: type: array items: type: object description: 'An array of objects, each containing: `currency` (string), `price` (number), `cost` (number, optional), `direct_cost` (number, optional). Note that there can only be one price per product per currency. When `prices` is omitted altogether, a default price of 0 and the user''s default currency will be assigned.' custom_fields: type: object additionalProperties: true description: 'An object where each key represents a custom field. All custom fields are referenced as randomly generated 40-character hashes. To clear a custom field value, set it to `null`. For multi-option fields (field type `set`), use `null` to clear the selection — sending an empty array `[]` is not supported and will result in a validation error.' - type: object properties: billing_frequency: type: string enum: - one-time - annually - semi-annually - quarterly - monthly - weekly description: | Only available in Growth and above plans How often a customer is billed for access to a service or product - type: object properties: billing_frequency_cycles: type: integer nullable: true description: | Only available in Growth and above plans The number of times the billing frequency repeats for a product in a deal When `billing_frequency` is set to `one-time`, this field must be `null` When `billing_frequency` is set to `weekly`, this field cannot be `null` For all the other values of `billing_frequency`, `null` represents a product billed indefinitely Must be a positive integer less or equal to 208 responses: '200': description: Updates product data content: application/json: schema: title: UpdateProductResponse type: object properties: success: type: boolean description: If the response is successful or not data: allOf: - title: BaseProduct allOf: - type: object properties: id: type: number description: The ID of the product name: type: string description: The name of the product code: type: string description: The product code unit: type: string description: The unit in which this product is sold tax: type: number description: The tax percentage default: 0 is_deleted: type: boolean description: Whether this product will be marked as deleted or not default: false is_linkable: type: boolean description: Whether this product can be added to a deal or not default: true visible_to: allOf: - type: number enum: - 1 - 3 - 5 - 7 description: Visibility of the product owner_id: type: integer description: Information about the Pipedrive user who owns the product custom_fields: type: object additionalProperties: true description: 'An object where each key represents a custom field. All custom fields are referenced as randomly generated 40-character hashes. To clear a custom field value, set it to `null`. For multi-option fields (field type `set`), use `null` to clear the selection — sending an empty array `[]` is not supported and will result in a validation error.' - type: object properties: billing_frequency: default: one-time type: string enum: - one-time - annually - semi-annually - quarterly - monthly - weekly description: | Only available in Growth and above plans How often a customer is billed for access to a service or product - type: object properties: billing_frequency_cycles: default: null type: integer nullable: true description: | Only available in Growth and above plans The number of times the billing frequency repeats for a product in a deal When `billing_frequency` is set to `one-time`, this field must be `null` When `billing_frequency` is set to `weekly`, this field cannot be `null` For all the other values of `billing_frequency`, `null` represents a product billed indefinitely Must be a positive integer less or equal to 208 - type: object title: PricesArray properties: prices: type: array items: type: object description: 'Array of objects, each containing: product_id (number), currency (string), price (number), cost (number), direct_cost (number | null), notes (string)' example: success: true data: id: 1 name: Mechanical Pencil code: MPENCIL description: Product description unit: '' tax: 0 category: Retail is_linkable: true is_deleted: false visible_to: 3 owner_id: 1234 add_time: '2019-12-19T11:36:49Z' update_time: '2019-12-19T11:36:49Z' billing_frequency: monthly billing_frequency_cycles: 4 prices: - product_id: 1 price: 5 currency: EUR cost: 2 direct_cost: 1 notes: this is a note custom_fields: type: object description: A map of custom fields with hash-based keys additionalProperties: oneOf: - type: string - type: number - type: object additionalProperties: true '/products/{id}/duplicate': post: summary: Duplicate a product description: 'Creates a duplicate of an existing product including all variations, prices, and custom fields.' x-token-cost: 5 operationId: duplicateProduct tags: - Products security: - api_key: [] - oauth2: - 'products:full' parameters: - in: path name: id description: The ID of the product required: true schema: type: integer responses: '201': description: Duplicate product data content: application/json: schema: title: GetProductResponse type: object properties: success: type: boolean description: If the response is successful or not data: allOf: - title: BaseProduct allOf: - type: object properties: id: type: number description: The ID of the product name: type: string description: The name of the product code: type: string description: The product code unit: type: string description: The unit in which this product is sold tax: type: number description: The tax percentage default: 0 is_deleted: type: boolean description: Whether this product will be marked as deleted or not default: false is_linkable: type: boolean description: Whether this product can be added to a deal or not default: true visible_to: allOf: - type: number enum: - 1 - 3 - 5 - 7 description: Visibility of the product owner_id: type: integer description: Information about the Pipedrive user who owns the product custom_fields: type: object additionalProperties: true description: 'An object where each key represents a custom field. All custom fields are referenced as randomly generated 40-character hashes. To clear a custom field value, set it to `null`. For multi-option fields (field type `set`), use `null` to clear the selection — sending an empty array `[]` is not supported and will result in a validation error.' - type: object properties: billing_frequency: default: one-time type: string enum: - one-time - annually - semi-annually - quarterly - monthly - weekly description: | Only available in Growth and above plans How often a customer is billed for access to a service or product - type: object properties: billing_frequency_cycles: default: null type: integer nullable: true description: | Only available in Growth and above plans The number of times the billing frequency repeats for a product in a deal When `billing_frequency` is set to `one-time`, this field must be `null` When `billing_frequency` is set to `weekly`, this field cannot be `null` For all the other values of `billing_frequency`, `null` represents a product billed indefinitely Must be a positive integer less or equal to 208 - type: object title: PricesArray properties: prices: type: array items: type: object description: 'Array of objects, each containing: product_id (number), currency (string), price (number), cost (number), direct_cost (number | null), notes (string)' example: success: true data: id: 1 name: Mechanical Pencil code: MPENCIL description: Product description unit: '' tax: 0 category: Retail is_linkable: true is_deleted: false visible_to: 3 owner_id: 1234 add_time: '2019-12-19T11:36:49Z' update_time: '2019-12-19T11:36:49Z' billing_frequency: monthly billing_frequency_cycles: 4 prices: - product_id: 1 price: 5 currency: EUR cost: 2 direct_cost: 1 notes: this is a note custom_fields: type: object description: A map of custom fields with hash-based keys additionalProperties: oneOf: - type: string - type: number - type: object additionalProperties: true '/products/{id}/variations': get: summary: Get all product variations description: Returns data about all product variations. x-token-cost: 10 operationId: getProductVariations tags: - Products security: - api_key: [] - oauth2: - 'products:read' - 'products:full' parameters: - in: path name: id description: The ID of the product required: true schema: type: integer - in: query name: cursor required: false schema: type: string description: 'For pagination, the marker (an opaque string value) representing the first item on the next page' - in: query name: limit description: 'For pagination, the limit of entries to be returned. If not provided, 100 items will be returned. Please note that a maximum value of 500 is allowed.' schema: type: integer example: 100 responses: '200': description: List of product variations content: application/json: schema: title: GetProductVariationsResponse type: object properties: success: type: boolean description: If the response is successful or not data: type: array description: Array containing data for all products items: type: object properties: id: type: number description: The ID of the product variation name: type: string description: The name of the product variation product_id: type: integer description: The ID of the product prices: type: array items: type: object description: 'Array of objects, each containing: product_variation_id (number), currency (string), price (number), cost (number), direct_cost (number) , notes (string)' additional_data: type: object description: Pagination related data properties: next_cursor: type: string description: The first item on the next page. The value of the `next_cursor` field will be `null` if you have reached the end of the dataset and there’s no more pages to be returned. example: success: true data: - id: 2 name: Upgraded Mechanical Pencil product_id: 1 prices: - product_variation_id: 2 price: 5 currency: EUR cost: 2 direct_cost: 3 notes: This is the price for the upgraded mechanical pencil additional_data: next_cursor: eyJmaWVsZCI6ImlkIiwiZmllbGRWYWx1ZSI6Nywic29ydERpcmVjdGlvbiI6ImFzYyIsImlkIjo3fQ post: summary: Add a product variation description: Adds a new product variation. x-token-cost: 5 operationId: addProductVariation tags: - Products security: - api_key: [] - oauth2: - 'products:full' parameters: - in: path name: id description: The ID of the product required: true schema: type: integer requestBody: content: application/json: schema: title: addProductVariationRequest required: - name type: object properties: name: type: string description: The name of the product variation. The maximum length is 255 characters. prices: type: array items: type: object description: 'Array of objects, each containing: currency (string), price (number), cost (number, optional), direct_cost (number, optional), notes (string, optional). When prices is omitted altogether, a default price of 0, a default cost of 0, a default direct_cost of 0 and the user''s default currency will be assigned.' responses: '201': description: Add a product variation content: application/json: schema: title: GetProductVariationResponse type: object properties: success: type: boolean description: If the response is successful or not data: type: object properties: id: type: number description: The ID of the product variation name: type: string description: The name of the product variation product_id: type: integer description: The ID of the product prices: type: array items: type: object description: 'Array of objects, each containing: product_variation_id (number), currency (string), price (number), cost (number), direct_cost (number) , notes (string)' example: success: true data: id: 2 name: Upgraded Mechanical Pencil product_id: 1 prices: - product_variation_id: 2 price: 5 currency: EUR cost: 2 direct_cost: 3 notes: This is the price for the upgraded mechanical pencil '/products/{id}/variations/{product_variation_id}': patch: summary: Update a product variation description: Updates product variation data. x-token-cost: 5 operationId: updateProductVariation tags: - Products security: - api_key: [] - oauth2: - 'products:full' parameters: - in: path name: id description: The ID of the product required: true schema: type: integer - in: path name: product_variation_id description: The ID of the product variation required: true schema: type: integer requestBody: content: application/json: schema: title: updateProductVariationRequest type: object properties: name: type: string description: The name of the product variation. The maximum length is 255 characters. prices: type: array items: type: object description: 'Array of objects, each containing: currency (string), price (number), cost (number, optional), direct_cost (number, optional), notes (string, optional). When prices is omitted altogether, a default price of 0, a default cost of 0, a default direct_cost of 0 and the user''s default currency will be assigned.' responses: '200': description: Update product variation data content: application/json: schema: title: GetProductVariationResponse type: object properties: success: type: boolean description: If the response is successful or not data: type: object properties: id: type: number description: The ID of the product variation name: type: string description: The name of the product variation product_id: type: integer description: The ID of the product prices: type: array items: type: object description: 'Array of objects, each containing: product_variation_id (number), currency (string), price (number), cost (number), direct_cost (number) , notes (string)' example: success: true data: id: 2 name: Upgraded Mechanical Pencil product_id: 1 prices: - product_variation_id: 2 price: 5 currency: EUR cost: 2 direct_cost: 3 notes: This is the price for the upgraded mechanical pencil delete: summary: Delete a product variation description: Deletes a product variation. x-token-cost: 3 operationId: deleteProductVariation tags: - Products security: - api_key: [] - oauth2: - 'products:full' parameters: - in: path name: id description: The ID of the product required: true schema: type: integer - in: path name: product_variation_id description: The ID of the product variation required: true schema: type: integer responses: '200': description: Delete a product variation content: application/json: schema: title: DeleteProductVariationResponse type: object properties: success: type: boolean description: If the response is successful or not data: type: object properties: id: type: integer description: The ID of a deleted product variant example: success: true data: id: 123 '/products/{id}/images': get: summary: Get image of a product description: Retrieves the image of a product. The public URL has a limited lifetime of 7 days. x-token-cost: 10 operationId: getProductImage tags: - Products security: - api_key: [] - oauth2: - 'products:read' - 'products:full' parameters: - in: path name: id description: The ID of the product required: true schema: type: integer responses: '200': description: Retrieves the image of a product. The public URL has a limited lifetime of 7 days. content: application/json: schema: title: GetProductImageResponse type: object properties: success: type: boolean description: If the response is successful or not data: type: object description: The product image data and the respective public URL properties: id: type: integer description: The ID of the product image product_id: type: integer description: The ID of the product associated company_id: type: string description: The ID of the company public_url: type: string description: The public URL of the product image add_time: type: string description: The date of image upload. mime_type: type: string description: The MIME type of the product image name: type: string description: The name of the product image file example: success: true data: id: 1 product_id: 1 company_id: '1' public_url: 'http://my-server.com/images/b0369d1d-6b6a-4293-88b9-e2924782d47e.png' add_time: '2025-03-10' mime_type: image/png name: product-image.png post: summary: Upload an image for a product description: Uploads an image for a product. x-token-cost: 20 operationId: uploadProductImage tags: - Products security: - api_key: [] - oauth2: - 'products:full' parameters: - in: path name: id description: The ID of the product required: true schema: type: integer requestBody: content: multipart/form-data: schema: title: AddProductImageRequestBody type: object required: - data properties: data: type: string format: binary description: One image supplied in the multipart/form-data encoding responses: '201': description: Image added to product. content: application/json: schema: title: AddProductImageResponse type: object properties: success: type: boolean description: If the response is successful or not data: type: object properties: id: type: integer description: The ID of the product image product_id: type: number description: The ID of the product associated company_id: type: string description: The ID of the company add_time: type: string description: The date of image upload. example: success: true data: id: 1 product_id: 1 company_id: '1' add_time: '2025-03-10' put: summary: Update an image for a product description: Updates the image of a product. x-token-cost: 20 operationId: updateProductImage tags: - Products security: - api_key: [] - oauth2: - 'products:full' parameters: - in: path name: id description: The ID of the product required: true schema: type: integer requestBody: content: multipart/form-data: schema: title: UpdateProductImageRequestBody type: object required: - data properties: data: type: string format: binary description: One image supplied in the multipart/form-data encoding responses: '200': description: Edited product image. content: application/json: schema: title: UpdateProductImageResponse type: object properties: success: type: boolean description: If the response is successful or not data: type: object properties: id: type: integer description: The ID of the product image product_id: type: number description: The ID of the product associated company_id: type: string description: The ID of the company add_time: type: string description: The date of image upload. example: success: true data: id: 1 product_id: 1 company_id: '1' add_time: '2025-03-10' delete: summary: Delete an image of a product description: Deletes the image of a product. x-token-cost: 6 operationId: deleteProductImage tags: - Products security: - api_key: [] - oauth2: - 'products:full' parameters: - in: path name: id description: The ID of the product required: true schema: type: integer responses: '200': description: The ID of the deleted product image. content: application/json: schema: title: DeleteProductImageResponse type: object properties: success: type: boolean description: If the response is successful or not data: type: object properties: id: type: integer description: The ID of the image that was deleted from the product. example: success: true data: id: 1 /productFields: get: summary: Get all product fields description: Returns metadata about all product fields in the company. x-token-cost: 10 operationId: getProductFields tags: - ProductFields security: - api_key: [] - oauth2: - 'products:read' - 'products:full' - 'product-fields:full' parameters: - in: query name: include_fields description: Optional comma separated string array of additional data namespaces to include in response schema: type: string enum: - ui_visibility - in: query name: limit description: 'For pagination, the limit of entries to be returned. If not provided, 100 items will be returned. Please note that a maximum value of 500 is allowed.' schema: type: integer example: 100 - in: query name: cursor required: false schema: type: string description: 'For pagination, the marker (an opaque string value) representing the first item on the next page' responses: '200': description: Get all product fields content: application/json: schema: type: object properties: success: type: boolean description: Whether the request was successful data: type: array items: type: object required: - field_name - field_code - field_type - is_custom_field - is_optional_response_field properties: field_name: type: string description: The display name/label of the field field_code: type: string description: The unique identifier for the field (40-character hash for custom fields) field_type: type: string description: The type of the field enum: - int - double - boolean - varchar - text - phone - varchar_options - varchar_auto - date - daterange - time - timerange - enum - set - address - monetary - deal - deals - lead - org - people - project - stage - user - activity - json - picture - status - visible_to - price_list - billing_frequency - projects_board - projects_phase options: type: array nullable: true description: 'Array of available options for enum/set fields, null for other field types' items: type: object properties: id: type: integer description: The option ID label: type: string description: The option display label color: type: string nullable: true description: Optional color code for the option update_time: type: string format: date-time nullable: true description: When the option was last updated add_time: type: string format: date-time nullable: true description: When the option was created subfields: type: array nullable: true description: 'Array of subfields for complex field types (address, monetary), null for simple field types' items: type: object properties: field_code: type: string description: The subfield identifier field_name: type: string description: The subfield display name field_type: type: string description: The subfield type is_custom_field: type: boolean description: Whether this is a user-created custom field is_optional_response_field: type: boolean description: Whether this field is not returned by default in entity responses ui_visibility: type: object description: UI visibility settings (only included when requested via include_fields parameter) properties: add_visible_flag: type: boolean description: Whether the field is shown in the add modal details_visible_flag: type: boolean description: Whether the field is shown in the details view (read-only) additional_data: type: object properties: next_cursor: type: string nullable: true description: 'Base64url-encoded cursor for fetching the next page of results, null if no more pages' example: success: true data: - field_name: Product Name field_code: name field_type: varchar options: null subfields: null is_custom_field: false is_optional_response_field: false ui_visibility: add_visible_flag: true details_visible_flag: true - field_name: Price field_code: 40characterhashforcustomfieldidentifier field_type: monetary options: null subfields: - field_code: value field_name: Amount of Price field_type: double - field_code: currency field_name: Currency of Price field_type: varchar is_custom_field: true is_optional_response_field: false ui_visibility: add_visible_flag: true details_visible_flag: true - field_name: Categories field_code: 40characterhashforcustomfieldcategories field_type: set options: - id: 1 label: Software color: blue - id: 2 label: Hardware color: green - id: 3 label: Services color: orange subfields: null is_custom_field: true is_optional_response_field: false ui_visibility: add_visible_flag: true details_visible_flag: true additional_data: next_cursor: eyJmaWVsZCI6ImlkIiwiZmllbGRWYWx1ZSI6Nywic29ydERpcmVjdGlvbiI6ImFzYyIsImlkIjo3fQ post: summary: Create one product field description: Creates a new product custom field. x-token-cost: 5 operationId: addProductField tags: - ProductFields security: - api_key: [] - oauth2: - 'products:full' - 'product-fields:full' requestBody: required: true content: application/json: schema: type: object required: - field_name - field_type properties: field_name: type: string minLength: 1 maxLength: 255 description: Field name field_type: type: string description: 'The type of the field
ValueDescription
`varchar`Text (up to 255 characters)
`varchar_auto`Autocomplete text (up to 255 characters)
`text`Long text (up to 65k characters)
`double`Numeric value
`monetary`Monetary field (has a numeric value and a currency value)
`date`Date (format YYYY-MM-DD)
`set`Options field with a possibility of having multiple chosen options
`enum`Options field with a single possible chosen option
`user`User field (contains a user ID of another Pipedrive user)
`org`Organization field (contains an organization ID which is stored on the same account)
`people`Person field (contains a person ID which is stored on the same account)
`phone`Phone field (up to 255 numbers and/or characters)
`time`Time field (format HH:MM:SS)
`timerange`Time-range field (has a start time and end time value, both HH:MM:SS)
`daterange`Date-range field (has a start date and end date value, both YYYY-MM-DD)
`address`Address field
' enum: - varchar - text - double - phone - date - daterange - time - timerange - set - enum - varchar_auto - address - monetary - org - people - user options: type: array description: Field options (required for enum and set field types) items: type: object required: - label properties: label: type: string description: The option label ui_visibility: type: object description: UI visibility settings for the field. Controls where the field appears in the Pipedrive web UI. Note that products have a simpler visibility model than other entity types. additionalProperties: true properties: add_visible_flag: type: boolean description: Whether the field is shown in the add product modal. Default is false. Cannot be set to false for the 'name' system field. default: false details_visible_flag: type: boolean description: Whether the field is shown in the product details view. Default is true. default: true responses: '200': description: Create one product field content: application/json: schema: type: object properties: success: type: boolean description: Whether the request was successful data: type: object required: - field_name - field_code - field_type - is_custom_field - is_optional_response_field properties: field_name: type: string description: The display name/label of the field field_code: type: string description: The unique identifier for the field (40-character hash for custom fields) field_type: type: string description: The type of the field enum: - int - double - boolean - varchar - text - phone - varchar_options - varchar_auto - date - daterange - time - timerange - enum - set - address - monetary - deal - deals - lead - org - people - project - stage - user - activity - json - picture - status - visible_to - price_list - billing_frequency - projects_board - projects_phase options: type: array nullable: true description: 'Array of available options for enum/set fields, null for other field types' items: type: object properties: id: type: integer description: The option ID label: type: string description: The option display label color: type: string nullable: true description: Optional color code for the option update_time: type: string format: date-time nullable: true description: When the option was last updated add_time: type: string format: date-time nullable: true description: When the option was created subfields: type: array nullable: true description: 'Array of subfields for complex field types (address, monetary), null for simple field types' items: type: object properties: field_code: type: string description: The subfield identifier field_name: type: string description: The subfield display name field_type: type: string description: The subfield type is_custom_field: type: boolean description: Whether this is a user-created custom field is_optional_response_field: type: boolean description: Whether this field is not returned by default in entity responses ui_visibility: type: object description: UI visibility settings (only included when requested via include_fields parameter) properties: add_visible_flag: type: boolean description: Whether the field is shown in the add modal details_visible_flag: type: boolean description: Whether the field is shown in the details view (read-only) example: success: true data: field_name: Categories field_code: 946947d1b02fd3ef20798d6112ec5d895a686a21 field_type: set options: - id: 1 label: Software color: blue - id: 2 label: Hardware color: green - id: 3 label: Services color: orange subfields: null is_custom_field: true is_optional_response_field: false ui_visibility: add_visible_flag: true details_visible_flag: true '/productFields/{field_code}': get: summary: Get one product field description: Returns metadata about a specific product field. x-token-cost: 1 operationId: getProductField tags: - ProductFields security: - api_key: [] - oauth2: - 'products:read' - 'products:full' - 'product-fields:full' parameters: - in: path name: field_code description: The unique code identifying the field required: true schema: type: string - in: query name: include_fields description: Optional comma separated string array of additional data namespaces to include in response schema: type: string enum: - ui_visibility responses: '200': description: Get one product field content: application/json: schema: type: object properties: success: type: boolean description: Whether the request was successful data: type: object required: - field_name - field_code - field_type - is_custom_field - is_optional_response_field properties: field_name: type: string description: The display name/label of the field field_code: type: string description: The unique identifier for the field (40-character hash for custom fields) field_type: type: string description: The type of the field enum: - int - double - boolean - varchar - text - phone - varchar_options - varchar_auto - date - daterange - time - timerange - enum - set - address - monetary - deal - deals - lead - org - people - project - stage - user - activity - json - picture - status - visible_to - price_list - billing_frequency - projects_board - projects_phase options: type: array nullable: true description: 'Array of available options for enum/set fields, null for other field types' items: type: object properties: id: type: integer description: The option ID label: type: string description: The option display label color: type: string nullable: true description: Optional color code for the option update_time: type: string format: date-time nullable: true description: When the option was last updated add_time: type: string format: date-time nullable: true description: When the option was created subfields: type: array nullable: true description: 'Array of subfields for complex field types (address, monetary), null for simple field types' items: type: object properties: field_code: type: string description: The subfield identifier field_name: type: string description: The subfield display name field_type: type: string description: The subfield type is_custom_field: type: boolean description: Whether this is a user-created custom field is_optional_response_field: type: boolean description: Whether this field is not returned by default in entity responses ui_visibility: type: object description: UI visibility settings (only included when requested via include_fields parameter) properties: add_visible_flag: type: boolean description: Whether the field is shown in the add modal details_visible_flag: type: boolean description: Whether the field is shown in the details view (read-only) example: success: true data: field_name: Product Name field_code: name field_type: varchar options: null subfields: null is_custom_field: false is_optional_response_field: false ui_visibility: add_visible_flag: true details_visible_flag: true patch: summary: Update one product field description: Updates a product custom field. The field_code and field_type cannot be changed. At least one field must be provided in the request body. x-token-cost: 5 operationId: updateProductField tags: - ProductFields security: - api_key: [] - oauth2: - 'products:full' - 'product-fields:full' parameters: - in: path name: field_code description: The unique code identifying the field required: true schema: type: string requestBody: required: true content: application/json: schema: type: object minProperties: 1 properties: field_name: type: string minLength: 1 maxLength: 255 description: Field name ui_visibility: type: object description: UI visibility settings for the field. Controls where the field appears in the Pipedrive web UI. Note that products have a simpler visibility model than other entity types. additionalProperties: true properties: add_visible_flag: type: boolean description: Whether the field is shown in the add product modal. Default is false. Cannot be set to false for the 'name' system field. default: false details_visible_flag: type: boolean description: Whether the field is shown in the product details view. Default is true. default: true responses: '200': description: Get one product field content: application/json: schema: type: object properties: success: type: boolean description: Whether the request was successful data: type: object required: - field_name - field_code - field_type - is_custom_field - is_optional_response_field properties: field_name: type: string description: The display name/label of the field field_code: type: string description: The unique identifier for the field (40-character hash for custom fields) field_type: type: string description: The type of the field enum: - int - double - boolean - varchar - text - phone - varchar_options - varchar_auto - date - daterange - time - timerange - enum - set - address - monetary - deal - deals - lead - org - people - project - stage - user - activity - json - picture - status - visible_to - price_list - billing_frequency - projects_board - projects_phase options: type: array nullable: true description: 'Array of available options for enum/set fields, null for other field types' items: type: object properties: id: type: integer description: The option ID label: type: string description: The option display label color: type: string nullable: true description: Optional color code for the option update_time: type: string format: date-time nullable: true description: When the option was last updated add_time: type: string format: date-time nullable: true description: When the option was created subfields: type: array nullable: true description: 'Array of subfields for complex field types (address, monetary), null for simple field types' items: type: object properties: field_code: type: string description: The subfield identifier field_name: type: string description: The subfield display name field_type: type: string description: The subfield type is_custom_field: type: boolean description: Whether this is a user-created custom field is_optional_response_field: type: boolean description: Whether this field is not returned by default in entity responses ui_visibility: type: object description: UI visibility settings (only included when requested via include_fields parameter) properties: add_visible_flag: type: boolean description: Whether the field is shown in the add modal details_visible_flag: type: boolean description: Whether the field is shown in the details view (read-only) example: success: true data: field_name: Product Name field_code: name field_type: varchar options: null subfields: null is_custom_field: false is_optional_response_field: false ui_visibility: add_visible_flag: true details_visible_flag: true delete: summary: Delete one product field description: Marks a custom field as deleted. x-token-cost: 3 operationId: deleteProductField tags: - ProductFields security: - api_key: [] - oauth2: - 'products:full' - 'product-fields:full' parameters: - in: path name: field_code description: The unique code identifying the field required: true schema: type: string responses: '200': description: Delete one product field content: application/json: schema: type: object properties: success: type: boolean description: Whether the request was successful data: type: object required: - field_name - field_code - field_type - is_custom_field - is_optional_response_field properties: field_name: type: string description: The display name/label of the field field_code: type: string description: The unique identifier for the field (40-character hash for custom fields) field_type: type: string description: The type of the field options: type: array nullable: true description: 'Array of available options for enum/set fields, null for other field types' items: type: object subfields: type: array nullable: true description: 'Array of subfields for complex field types (address, monetary), null for simple field types' items: type: object is_custom_field: type: boolean description: Whether this is a user-created custom field is_optional_response_field: type: boolean description: Whether this field is not returned by default in entity responses example: success: true data: field_name: Custom text field field_code: 946947d1b02fd3ef20798d6112ec5d895a686a21 field_type: varchar options: null subfields: null is_custom_field: true is_optional_response_field: false '/productFields/{field_code}/options': post: summary: Add product field options in bulk description: Adds new options to a product custom field that supports options (enum or set field types). This operation is atomic - all options are added or none are added. Returns only the newly added options. x-token-cost: 5 operationId: addProductFieldOptions tags: - ProductFields security: - api_key: [] - oauth2: - 'products:full' - 'product-fields:full' parameters: - in: path name: field_code description: The unique code identifying the field required: true schema: type: string requestBody: required: true content: application/json: schema: type: array description: Array of options to add. Each item must contain a label. At least one option is required. items: type: object required: - label properties: label: type: string minLength: 1 maxLength: 255 description: The display label for the new option responses: '200': description: Field options operation result content: application/json: schema: type: object properties: success: type: boolean data: type: array items: type: object required: - id - label properties: id: type: integer description: The unique identifier of the option label: type: string description: The display label of the option additional_data: type: object nullable: true example: success: true data: - id: 4 label: Consulting additional_data: null delete: summary: Delete product field options in bulk description: Removes existing options from a product custom field. This operation is atomic and fails if any of the specified option IDs do not exist. Returns only the deleted options. x-token-cost: 3 operationId: deleteProductFieldOptions tags: - ProductFields security: - api_key: [] - oauth2: - 'products:full' - 'product-fields:full' parameters: - in: path name: field_code description: The unique code identifying the field required: true schema: type: string requestBody: required: true content: application/json: schema: type: array description: Array of option IDs to delete. Each item must contain an ID of the option to delete. At least one option ID is required. The entire request fails if any option does not exist. items: type: object required: - id properties: id: type: integer description: The unique identifier of the option to delete responses: '200': description: Field options operation result content: application/json: schema: type: object properties: success: type: boolean data: type: array items: type: object required: - id - label properties: id: type: integer description: The unique identifier of the option label: type: string description: The display label of the option additional_data: type: object nullable: true example: success: true data: - id: 4 label: Consulting additional_data: null patch: summary: Update product field options in bulk description: Updates existing options for a product custom field. This operation is atomic and fails if any of the specified option IDs do not exist. Returns only the updated options. x-token-cost: 5 operationId: updateProductFieldOptions tags: - ProductFields security: - api_key: [] - oauth2: - 'products:full' - 'product-fields:full' parameters: - in: path name: field_code description: The unique code identifying the field required: true schema: type: string requestBody: required: true content: application/json: schema: type: array description: Array of options to update. Each item must contain an ID and the updated label. At least one option is required. The entire request fails if any option does not exist. items: type: object required: - id - label properties: id: type: integer description: The unique identifier of the option to update label: type: string minLength: 1 maxLength: 255 description: The new display label for the option responses: '200': description: Field options operation result content: application/json: schema: type: object properties: success: type: boolean data: type: array items: type: object required: - id - label properties: id: type: integer description: The unique identifier of the option label: type: string description: The display label of the option additional_data: type: object nullable: true example: success: true data: - id: 4 label: Consulting additional_data: null /leads/search: get: summary: Search leads description: '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.' x-token-cost: 20 operationId: searchLeads tags: - Leads security: - api_key: [] - oauth2: - 'leads:read' - 'leads:full' - 'search:read' parameters: - in: query name: term required: true schema: type: string description: The search term to look for. Minimum 2 characters (or 1 if using `exact_match`). Please note that the search term has to be URL encoded. - in: query name: fields schema: type: string enum: - custom_fields - notes - title description: A comma-separated string array. The fields to perform the search from. Defaults to all of them. - in: query name: exact_match schema: type: boolean description: 'When enabled, only full exact matches against the given term are returned. It is not case sensitive.' - in: query name: person_id schema: type: integer description: Will filter leads by the provided person ID. The upper limit of found leads associated with the person is 2000. - in: query name: organization_id schema: type: integer description: Will filter leads by the provided organization ID. The upper limit of found leads associated with the organization is 2000. - in: query name: include_fields schema: type: string enum: - lead.was_seen description: Supports including optional fields in the results which are not provided by default - in: query name: limit description: 'For pagination, the limit of entries to be returned. If not provided, 100 items will be returned. Please note that a maximum value of 500 is allowed.' schema: type: integer example: 100 - in: query name: cursor required: false schema: type: string description: 'For pagination, the marker (an opaque string value) representing the first item on the next page' responses: '200': description: Success content: application/json: schema: title: GetLeadSearchResponse allOf: - title: baseResponse type: object properties: success: type: boolean description: If the response is successful or not - type: object title: GetLeadSearchResponseData properties: data: type: object properties: items: type: array description: The array of leads items: type: object title: LeadSearchItem properties: result_score: type: number description: Search result relevancy item: type: object properties: id: type: string description: The ID of the lead type: type: string description: The type of the item title: type: string description: The title of the lead owner: type: object properties: id: type: integer description: The ID of the owner of the lead person: type: object properties: id: type: integer description: The ID of the person the lead is associated with name: type: string description: The name of the person the lead is associated with organization: type: object properties: id: type: integer description: The ID of the organization the lead is associated with name: type: string description: The name of the organization the lead is associated with phones: type: array items: type: string emails: type: array items: type: string custom_fields: type: array items: type: string description: Custom fields notes: type: array description: An array of notes items: type: string value: type: integer description: The value of the lead currency: type: string description: The currency of the lead visible_to: type: integer description: The visibility of the lead is_archived: type: boolean description: A flag indicating whether the lead is archived or not additional_data: type: object description: Pagination related data properties: next_cursor: type: string description: The first item on the next page. The value of the `next_cursor` field will be `null` if you have reached the end of the dataset and there’s no more pages to be returned. example: success: true data: items: - result_score: 0.29 item: id: 39c433f0-8a4c-11ec-8728-09968f0a1ca0 type: lead title: John Doe lead owner: id: 1 person: id: 1 name: John Doe organization: id: 1 name: John company phones: [] emails: - john@doe.com custom_fields: [] notes: [] value: 100 currency: USD visible_to: 3 is_archived: false additional_data: next_cursor: eyJmaWVsZCI6ImlkIiwiZmllbGRWYWx1ZSI6Nywic29ydERpcmVjdGlvbiI6ImFzYyIsImlkIjo3fQ '/leads/{id}/convert/deal': post: security: - api_key: [] - oauth2: - 'leads:full' tags: - Leads summary: Convert a lead to a deal description: 'Initiates a conversion of a lead to a deal. The return value is an ID of a job that was assigned to perform the conversion. Related entities (notes, files, emails, activities, ...) are transferred during the process to the target entity. If the conversion is successful, the lead is marked as deleted. To retrieve the created entity ID and the result of the conversion, call the /api/v2/leads/{lead_id}/convert/status/{conversion_id} endpoint.' operationId: convertLeadToDeal x-token-cost: 40 parameters: - in: path name: id required: true schema: type: string format: uuid description: The ID of the lead to convert requestBody: content: application/json: schema: additionalProperties: false type: object properties: stage_id: description: 'The ID of a stage the created deal will be added to. Please note that a pipeline will be assigned automatically based on the `stage_id`. If omitted, the deal will be placed in the first stage of the default pipeline.' type: integer pipeline_id: description: 'The ID of a pipeline the created deal will be added to. By default, the deal will be added to the first stage of the specified pipeline. Please note that `pipeline_id` and `stage_id` should not be used together as `pipeline_id` will be ignored.' type: integer responses: '200': description: Successful response containing payload in the `data` field content: application/json: schema: title: AddConvertLeadToDealResponse type: object properties: success: type: boolean data: type: object description: An object containing conversion job id that performs the conversion required: - conversion_id properties: conversion_id: description: The ID of the conversion job that can be used to retrieve conversion status and details. The ID has UUID format. type: string format: uuid additional_data: type: object nullable: true example: null example: success: true data: conversion_id: 4b40248b-945a-4802-b996-60fdff8c5c69 additional_data: null '404': description: A resource describing an error content: application/json: schema: type: object title: GetConvertResponse properties: success: type: boolean example: false error: type: string description: The description of the error error_info: type: string description: A message describing how to solve the problem data: type: object nullable: true example: null additional_data: type: object nullable: true example: null example: success: false error: Entity was not found error_info: Object was not found. data: null additional_data: null '/leads/{id}/convert/status/{conversion_id}': get: security: - api_key: [] - oauth2: - 'leads:full' - 'leads:read' tags: - Leads summary: Get Lead conversion status description: 'Returns data about the conversion. Status is always present and its value (not_started, running, completed, failed, rejected) represents the current state of the conversion. Deal ID is only present if the conversion was successfully finished. This data is only temporary and removed after a few days.' operationId: getLeadConversionStatus x-token-cost: 1 parameters: - in: path name: id required: true schema: type: string format: uuid description: The ID of a lead - in: path name: conversion_id required: true schema: type: string format: uuid description: The ID of the conversion responses: '200': description: Successful response containing payload in the `data` field content: application/json: example: success: true data: deal_id: 33 conversion_id: 4b40248b-945a-4802-b996-60fdff8c5c69 status: completed additional_data: null schema: title: GetConvertResponse type: object required: - success - data properties: success: type: boolean data: type: object description: An object containing conversion status. After successful conversion the converted entity ID is also present. required: - conversion_id - status properties: lead_id: description: The ID of the new lead. type: string format: uuid deal_id: description: The ID of the new deal. type: integer conversion_id: description: The ID of the conversion job. The ID can be used to retrieve conversion status and details. The ID has UUID format. type: string format: uuid status: description: Status of the conversion job. type: string enum: - not_started - running - completed - failed - rejected additional_data: type: object nullable: true example: null '404': description: A resource describing an error content: application/json: schema: type: object title: GetConvertResponse properties: success: type: boolean example: false error: type: string description: The description of the error error_info: type: string description: A message describing how to solve the problem data: type: object nullable: true example: null additional_data: type: object nullable: true example: null example: success: false error: Entity was not found error_info: Object was not found. data: null additional_data: null /organizations/search: get: summary: Search organizations description: 'Searches all organizations by name, address, notes and/or custom fields. This endpoint is a wrapper of /v1/itemSearch with a narrower OAuth scope.' x-token-cost: 20 operationId: searchOrganization tags: - Organizations security: - api_key: [] - oauth2: - 'contacts:read' - 'contacts:full' - 'search:read' parameters: - in: query name: term required: true schema: type: string description: The search term to look for. Minimum 2 characters (or 1 if using `exact_match`). Please note that the search term has to be URL encoded. - in: query name: fields schema: type: string enum: - address - custom_fields - notes - name description: 'A comma-separated string array. The fields to perform the search from. Defaults to all of them. Only the following custom field types are searchable: `address`, `varchar`, `text`, `varchar_auto`, `double`, `monetary` and `phone`. Read more about searching by custom fields here.' - in: query name: exact_match schema: type: boolean description: 'When enabled, only full exact matches against the given term are returned. It is not case sensitive.' - in: query name: limit description: 'For pagination, the limit of entries to be returned. If not provided, 100 items will be returned. Please note that a maximum value of 500 is allowed.' schema: type: integer example: 100 - in: query name: cursor required: false schema: type: string description: 'For pagination, the marker (an opaque string value) representing the first item on the next page' responses: '200': description: Success content: application/json: schema: title: GetOrganizationSearchResponse allOf: - title: baseResponse type: object properties: success: type: boolean description: If the response is successful or not - type: object properties: data: type: object properties: items: type: array description: The array of found items items: type: object properties: result_score: type: number description: Search result relevancy item: type: object properties: id: type: integer description: The ID of the organization type: type: string description: The type of the item name: type: string description: The name of the organization address: type: string description: The address of the organization visible_to: type: integer description: The visibility of the organization owner: type: object properties: id: type: integer description: The ID of the owner of the deal custom_fields: type: array items: type: string description: Custom fields notes: type: array description: An array of notes items: type: string additional_data: type: object description: Pagination related data properties: next_cursor: type: string description: The first item on the next page. The value of the `next_cursor` field will be `null` if you have reached the end of the dataset and there’s no more pages to be returned. example: success: true data: items: - result_score: 0.316 item: id: 1 type: organization name: Organization name address: 'Mustamäe tee 3a, 10615 Tallinn' visible_to: 3 owner: id: 1 custom_fields: [] notes: [] additional_data: next_cursor: eyJmaWVsZCI6ImlkIiwiZmllbGRWYWx1ZSI6Nywic29ydERpcmVjdGlvbiI6ImFzYyIsImlkIjo3fQ /persons/search: get: summary: Search persons description: 'Searches all persons by name, email, phone, notes and/or custom fields. This endpoint is a wrapper of /v1/itemSearch with a narrower OAuth scope. Found persons can be filtered by organization ID.' x-token-cost: 20 operationId: searchPersons tags: - Persons security: - api_key: [] - oauth2: - 'contacts:read' - 'contacts:full' - 'search:read' parameters: - in: query name: term required: true schema: type: string description: The search term to look for. Minimum 2 characters (or 1 if using `exact_match`). Please note that the search term has to be URL encoded. - in: query name: fields schema: type: string enum: - custom_fields - email - notes - phone - name description: 'A comma-separated string array. The fields to perform the search from. Defaults to all of them. Only the following custom field types are searchable: `address`, `varchar`, `text`, `varchar_auto`, `double`, `monetary` and `phone`. Read more about searching by custom fields here.' - in: query name: exact_match schema: type: boolean description: 'When enabled, only full exact matches against the given term are returned. It is not case sensitive.' - in: query name: organization_id schema: type: integer description: Will filter persons by the provided organization ID. The upper limit of found persons associated with the organization is 2000. - in: query name: include_fields schema: type: string enum: - person.picture description: Supports including optional fields in the results which are not provided by default - in: query name: limit description: 'For pagination, the limit of entries to be returned. If not provided, 100 items will be returned. Please note that a maximum value of 500 is allowed.' schema: type: integer example: 100 - in: query name: cursor required: false schema: type: string description: 'For pagination, the marker (an opaque string value) representing the first item on the next page' responses: '200': description: Success content: application/json: schema: title: GetPersonSearchResponse allOf: - title: baseResponse type: object properties: success: type: boolean description: If the response is successful or not - type: object properties: data: type: object properties: items: type: array description: The array of found items items: type: object properties: result_score: type: number description: Search result relevancy item: type: object properties: id: type: integer description: The ID of the person type: type: string description: The type of the item name: type: string description: The name of the person phones: type: array description: An array of phone numbers items: type: string emails: type: array description: An array of email addresses items: type: string visible_to: type: integer description: The visibility of the person owner: type: object properties: id: type: integer description: The ID of the owner of the person organization: type: object properties: id: type: integer description: The ID of the organization the person is associated with name: type: string description: The name of the organization the person is associated with custom_fields: type: array items: type: string description: Custom fields notes: type: array description: An array of notes items: type: string additional_data: type: object description: Pagination related data properties: next_cursor: type: string description: The first item on the next page. The value of the `next_cursor` field will be `null` if you have reached the end of the dataset and there’s no more pages to be returned. example: success: true data: items: - result_score: 0.5092 item: id: 1 type: person name: Jane Doe phones: - +372 555555555 emails: - jane@pipedrive.com visible_to: 3 owner: id: 1 organization: id: 1 name: Organization name address: null custom_fields: [] notes: [] additional_data: next_cursor: eyJmaWVsZCI6ImlkIiwiZmllbGRWYWx1ZSI6Nywic29ydERpcmVjdGlvbiI6ImFzYyIsImlkIjo3fQ /itemSearch: get: summary: Perform a search from multiple item types description: Performs a search from your choice of item types and fields. x-token-cost: 20 operationId: searchItem tags: - ItemSearch security: - api_key: [] - oauth2: - 'search:read' parameters: - in: query name: term required: true schema: type: string description: The search term to look for. Minimum 2 characters (or 1 if using `exact_match`). Please note that the search term has to be URL encoded. - in: query name: item_types schema: type: string enum: - deal - person - organization - product - lead - file - mail_attachment - project description: A comma-separated string array. The type of items to perform the search from. Defaults to all. - in: query name: fields schema: type: string enum: - address - code - custom_fields - email - name - notes - phone - title - description description: 'A comma-separated string array. The fields to perform the search from. Defaults to all. Relevant for each item type are:
Item typeField
Deal`custom_fields`, `notes`, `title`
Person`custom_fields`, `email`, `name`, `notes`, `phone`
Organization`address`, `custom_fields`, `name`, `notes`
Product`code`, `custom_fields`, `name`
Lead`custom_fields`, `notes`, `title`
File`name`
Mail attachment`name`
Project `custom_fields`, `notes`, `title`, `description`

Only the following custom field types are searchable: `address`, `varchar`, `text`, `varchar_auto`, `double`, `monetary` and `phone`. Read more about searching by custom fields here.' - in: query name: search_for_related_items schema: type: boolean description: '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' - in: query name: exact_match schema: type: boolean description: 'When enabled, only full exact matches against the given term are returned. It is not case sensitive.' - in: query name: include_fields schema: type: string enum: - deal.cc_email - person.picture - product.price description: A comma-separated string array. Supports including optional fields in the results which are not provided by default. - in: query name: limit description: 'For pagination, the limit of entries to be returned. If not provided, 100 items will be returned. Please note that a maximum value of 100 is allowed.' schema: type: integer example: 100 - in: query name: cursor required: false schema: type: string description: 'For pagination, the marker (an opaque string value) representing the first item on the next page' responses: '200': description: Success content: application/json: schema: title: GetItemSearchResponse allOf: - title: baseResponse type: object properties: success: type: boolean description: If the response is successful or not - type: object title: GetItemSearchResponseData properties: data: type: object properties: items: type: array description: The array of found items items: type: object title: ItemSearchItem properties: result_score: type: number description: Search result relevancy item: type: object description: Item related_items: type: array description: The array of related items if `search_for_related_items` was enabled items: type: object title: ItemSearchItem properties: result_score: type: number description: Search result relevancy item: type: object description: Item additional_data: type: object description: Pagination related data properties: next_cursor: type: string description: The first item on the next page. The value of the `next_cursor` field will be `null` if you have reached the end of the dataset and there’s no more pages to be returned. example: success: true data: items: - result_score: 1.22724 item: id: 42 type: deal title: Sample Deal value: 53883 currency: USD status: open visible_to: 3 owner: id: 69 stage: id: 3 name: Demo Scheduled person: id: 6 name: Sample Person organization: id: 9 name: Sample Organization address: 'Dabas, Hungary' custom_fields: - Sample text notes: - Sample note is_archived: false - result_score: 0.31335002 item: id: 9 type: organization name: Sample Organization address: 'Dabas, Hungary' visible_to: 3 owner: id: 69 custom_fields: [] notes: [] - result_score: 0.29955 item: id: 6 type: person name: Sample Person phones: - '555123123' - +372 (55) 123468 - '0231632772' emails: - primary@email.com - secondary@email.com visible_to: 1 owner: id: 69 organization: id: 9 name: Sample Organization address: 'Dabas, Hungary' custom_fields: - Custom Field Text notes: - Person note - result_score: 0.0093 item: id: 4 type: mail_attachment name: Sample mail attachment.txt url: /files/4/download - result_score: 0.0093 item: id: 3 type: file name: Sample file attachment.txt url: /files/3/download deal: id: 42 title: Sample Deal person: id: 6 name: Sample Person organization: id: 9 name: Sample Organization address: 'Dabas, Hungary' - result_score: 0.0011999999 item: id: 1 type: product name: Sample Product code: product-code visible_to: 3 owner: id: 69 custom_fields: [] related_items: - result_score: 0 item: id: 2 type: deal title: Other deal value: 100 currency: USD status: open visible_to: 3 owner: id: 1 stage: id: 1 name: Lead In person: id: 1 name: Sample Person is_archived: false additional_data: next_cursor: eyJmaWVsZCI6ImlkIiwiZmllbGRWYWx1ZSI6Nywic29ydERpcmVjdGlvbiI6ImFzYyIsImlkIjo3fQ /itemSearch/field: get: summary: Perform a search using a specific field from an item type description: '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).' x-token-cost: 20 operationId: searchItemByField tags: - ItemSearch security: - api_key: [] - oauth2: - 'search:read' parameters: - in: query name: term required: true schema: type: string description: The search term to look for. Minimum 2 characters (or 1 if `match` is `exact`). Please note that the search term has to be URL encoded. - in: query name: entity_type required: true schema: type: string enum: - deal - lead - person - organization - product - project description: The type of the field to perform the search from - in: query name: match schema: type: string default: exact enum: - exact - beginning - middle description: 'The type of match used against the term. The search is case sensitive.

E.g. in case of searching for a value `monkey`, .' - in: query name: field required: true schema: type: string description: '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: `address`, `varchar`, `text`, `varchar_auto`, `double`, `monetary` and `phone`. Read more about searching by custom fields here.' - in: query name: limit description: 'For pagination, the limit of entries to be returned. If not provided, 100 items will be returned. Please note that a maximum value of 500 is allowed.' schema: type: integer example: 100 - in: query name: cursor required: false schema: type: string description: 'For pagination, the marker (an opaque string value) representing the first item on the next page' responses: '200': description: Success content: application/json: schema: title: GetItemSearchFieldResponse allOf: - title: baseResponse type: object properties: success: type: boolean description: If the response is successful or not - type: object properties: data: type: array description: The array of found fields items: type: object title: ItemSearchItem properties: result_score: type: number description: Search result relevancy item: type: object description: Item additional_data: type: object description: Pagination related data properties: next_cursor: type: string description: The first item on the next page. The value of the `next_cursor` field will be `null` if you have reached the end of the dataset and there’s no more pages to be returned. example: success: true data: - id: 1 name: Jane Doe - id: 2 name: John Doe additional_data: next_cursor: eyJmaWVsZCI6ImlkIiwiZmllbGRWYWx1ZSI6Nywic29ydERpcmVjdGlvbiI6ImFzYyIsImlkIjo3fQ /stages: get: summary: Get all stages description: Returns data about all stages. x-token-cost: 5 operationId: getStages tags: - Stages security: - api_key: [] - oauth2: - 'deals:read' - 'deals:full' - admin parameters: - in: query name: pipeline_id schema: type: integer description: 'The ID of the pipeline to fetch stages for. If omitted, stages for all pipelines will be fetched.' - in: query name: sort_by description: 'The field to sort by. Supported fields: `id`, `update_time`, `add_time`, `order_nr`.' schema: type: string default: id enum: - id - update_time - add_time - order_nr - in: query name: sort_direction description: 'The sorting direction. Supported values: `asc`, `desc`.' schema: type: string default: asc enum: - asc - desc - in: query name: limit description: 'For pagination, the limit of entries to be returned. If not provided, 100 items will be returned. Please note that a maximum value of 500 is allowed.' schema: type: integer example: 100 - in: query name: cursor required: false schema: type: string description: 'For pagination, the marker (an opaque string value) representing the first item on the next page' responses: '200': description: Get all stages content: application/json: schema: title: GetStagesResponse type: object properties: success: type: boolean description: If the response is successful or not data: type: array description: The array of stages items: type: object title: StageItem properties: id: type: integer description: The ID of the stage order_nr: type: integer description: Defines the order of the stage name: type: string description: The name of the stage is_deleted: type: boolean description: Whether the stage is marked as deleted or not deal_probability: type: integer description: The success probability percentage of the deal. Used/shown when the deal weighted values are used. pipeline_id: type: integer description: The ID of the pipeline to add the stage to is_deal_rot_enabled: type: boolean description: Whether deals in this stage can become rotten days_to_rotten: type: integer nullable: true description: The number of days the deals not updated in this stage would become rotten. Applies only if the `is_deal_rot_enabled` is set. add_time: type: string description: The stage creation time update_time: type: string description: The stage update time additional_data: type: object description: The additional data of the list properties: next_cursor: type: string description: The first item on the next page. The value of the `next_cursor` field will be `null` if you have reached the end of the dataset and there’s no more pages to be returned. example: success: true data: - id: 1 order_nr: 1 name: Stage Name is_deleted: false deal_probability: 100 pipeline_id: 1 is_deal_rot_enabled: true days_to_rotten: 2 add_time: '2024-01-01T00:00:00Z' update_time: '2024-01-01T00:00:00Z' additional_data: next_cursor: eyJmaWVsZCI6ImlkIiwiZmllbGRWYWx1ZSI6Nywic29ydERpcmVjdGlvbiI6ImFzYyIsImlkIjo3fQ post: summary: Add a new stage description: 'Adds a new stage, returns the ID upon success.' x-token-cost: 5 operationId: addStage tags: - Stages security: - api_key: [] - oauth2: - admin requestBody: content: application/json: schema: title: addStageRequest required: - name - pipeline_id type: object properties: name: type: string description: The name of the stage pipeline_id: type: integer description: The ID of the pipeline to add stage to deal_probability: type: integer description: The success probability percentage of the deal. Used/shown when deal weighted values are used. is_deal_rot_enabled: type: boolean description: Whether deals in this stage can become rotten days_to_rotten: type: integer description: The number of days the deals not updated in this stage would become rotten. Applies only if the `is_deal_rot_enabled` is set. responses: '200': description: Add a new stage content: application/json: schema: title: UpsertStageResponse type: object properties: success: type: boolean description: If the response is successful or not data: type: object title: StageItem properties: id: type: integer description: The ID of the stage order_nr: type: integer description: Defines the order of the stage name: type: string description: The name of the stage is_deleted: type: boolean description: Whether the stage is marked as deleted or not deal_probability: type: integer description: The success probability percentage of the deal. Used/shown when the deal weighted values are used. pipeline_id: type: integer description: The ID of the pipeline to add the stage to is_deal_rot_enabled: type: boolean description: Whether deals in this stage can become rotten days_to_rotten: type: integer nullable: true description: The number of days the deals not updated in this stage would become rotten. Applies only if the `is_deal_rot_enabled` is set. add_time: type: string description: The stage creation time update_time: type: string description: The stage update time description: The stage object example: success: true data: id: 1 order_nr: 1 name: Stage Name is_deleted: false deal_probability: 100 pipeline_id: 1 is_deal_rot_enabled: true days_to_rotten: 2 add_time: '2024-01-01T00:00:00Z' update_time: '2024-01-01T00:00:00Z' '/stages/{id}': delete: summary: Delete a stage description: Marks a stage as deleted. x-token-cost: 3 operationId: deleteStage tags: - Stages security: - api_key: [] - oauth2: - admin parameters: - in: path name: id description: The ID of the stage required: true schema: type: integer responses: '200': description: Delete stage content: application/json: schema: title: DeleteStageResponse type: object properties: success: type: boolean description: If the response is successful or not data: type: object properties: id: type: integer description: Deleted stage ID example: success: true data: id: 1 get: summary: Get one stage description: Returns data about a specific stage. x-token-cost: 1 operationId: getStage tags: - Stages security: - api_key: [] - oauth2: - 'deals:read' - 'deals:full' - admin parameters: - in: path name: id description: The ID of the stage required: true schema: type: integer responses: '200': description: Get one stages content: application/json: schema: title: UpsertStageResponse type: object properties: success: type: boolean description: If the response is successful or not data: type: object title: StageItem properties: id: type: integer description: The ID of the stage order_nr: type: integer description: Defines the order of the stage name: type: string description: The name of the stage is_deleted: type: boolean description: Whether the stage is marked as deleted or not deal_probability: type: integer description: The success probability percentage of the deal. Used/shown when the deal weighted values are used. pipeline_id: type: integer description: The ID of the pipeline to add the stage to is_deal_rot_enabled: type: boolean description: Whether deals in this stage can become rotten days_to_rotten: type: integer nullable: true description: The number of days the deals not updated in this stage would become rotten. Applies only if the `is_deal_rot_enabled` is set. add_time: type: string description: The stage creation time update_time: type: string description: The stage update time description: The stage object example: success: true data: id: 1 order_nr: 1 name: Stage Name is_deleted: false deal_probability: 100 pipeline_id: 1 is_deal_rot_enabled: true days_to_rotten: 2 add_time: '2024-01-01T00:00:00Z' update_time: '2024-01-01T00:00:00Z' patch: summary: Update stage details description: Updates the properties of a stage. x-token-cost: 5 operationId: updateStage tags: - Stages security: - api_key: [] - oauth2: - admin parameters: - in: path name: id description: The ID of the stage required: true schema: type: integer requestBody: content: application/json: schema: title: updateStageRequest type: object properties: name: type: string description: The name of the stage pipeline_id: type: integer description: The ID of the pipeline to add stage to deal_probability: type: integer description: The success probability percentage of the deal. Used/shown when deal weighted values are used. is_deal_rot_enabled: type: boolean description: Whether deals in this stage can become rotten days_to_rotten: type: integer description: The number of days the deals not updated in this stage would become rotten. Applies only if the `is_deal_rot_enabled` is set. responses: '200': description: Update an existing stage content: application/json: schema: title: UpsertStageResponse type: object properties: success: type: boolean description: If the response is successful or not data: type: object title: StageItem properties: id: type: integer description: The ID of the stage order_nr: type: integer description: Defines the order of the stage name: type: string description: The name of the stage is_deleted: type: boolean description: Whether the stage is marked as deleted or not deal_probability: type: integer description: The success probability percentage of the deal. Used/shown when the deal weighted values are used. pipeline_id: type: integer description: The ID of the pipeline to add the stage to is_deal_rot_enabled: type: boolean description: Whether deals in this stage can become rotten days_to_rotten: type: integer nullable: true description: The number of days the deals not updated in this stage would become rotten. Applies only if the `is_deal_rot_enabled` is set. add_time: type: string description: The stage creation time update_time: type: string description: The stage update time description: The stage object example: success: true data: id: 1 order_nr: 1 name: Stage Name is_deleted: false deal_probability: 100 pipeline_id: 1 is_deal_rot_enabled: true days_to_rotten: 2 add_time: '2024-01-01T00:00:00Z' update_time: '2024-01-01T00:00:00Z' /pipelines: get: summary: Get all pipelines description: Returns data about all pipelines. x-token-cost: 5 operationId: getPipelines tags: - Pipelines security: - api_key: [] - oauth2: - 'deals:read' - 'deals:full' - admin parameters: - in: query name: sort_by description: 'The field to sort by. Supported fields: `id`, `update_time`, `add_time`.' schema: type: string default: id enum: - id - update_time - add_time - in: query name: sort_direction description: 'The sorting direction. Supported values: `asc`, `desc`.' schema: type: string default: asc enum: - asc - desc - in: query name: limit description: 'For pagination, the limit of entries to be returned. If not provided, 100 items will be returned. Please note that a maximum value of 500 is allowed.' schema: type: integer example: 100 - in: query name: cursor required: false schema: type: string description: 'For pagination, the marker (an opaque string value) representing the first item on the next page' responses: '200': description: Get all pipelines content: application/json: schema: type: object title: GetPipelinesResponse allOf: - title: baseResponse type: object properties: success: type: boolean description: If the response is successful or not - type: object properties: data: type: array description: Pipelines array items: type: object properties: id: type: integer description: The ID of the pipeline name: type: string description: The name of the pipeline order_nr: type: integer description: Defines the order of pipelines. The pipeline with the lowest `order_nr` is considered the default. is_deleted: type: boolean description: Whether this pipeline is marked as deleted or not is_deal_probability_enabled: type: boolean description: Whether deal probability is disabled or enabled for this pipeline add_time: type: string description: The pipeline creation time update_time: type: string description: The pipeline update time additional_data: type: object description: The additional data of the list properties: next_cursor: type: string description: The first item on the next page. The value of the `next_cursor` field will be `null` if you have reached the end of the dataset and there’s no more pages to be returned. example: success: true data: - id: 1 name: Pipeline Name order_nr: 1 is_deleted: false is_deal_probability_enabled: true add_time: '2024-01-01T00:00:00Z' update_time: '2024-01-01T00:00:00Z' additional_data: next_cursor: eyJmaWVsZCI6ImlkIiwiZmllbGRWYWx1ZSI6Nywic29ydERpcmVjdGlvbiI6ImFzYyIsImlkIjo3fQ post: summary: Add a new pipeline description: Adds a new pipeline. x-token-cost: 5 operationId: addPipeline tags: - Pipelines security: - api_key: [] - oauth2: - admin requestBody: content: application/json: schema: required: - name type: object properties: name: type: string description: The name of the pipeline is_deal_probability_enabled: type: boolean default: false description: Whether deal probability is disabled or enabled for this pipeline responses: '200': description: Add pipeline content: application/json: schema: type: object title: UpsertPipelineResponse allOf: - title: baseResponse type: object properties: success: type: boolean description: If the response is successful or not - type: object title: UpsertPipelineResponseData properties: data: type: object properties: id: type: integer description: The ID of the pipeline name: type: string description: The name of the pipeline order_nr: type: integer description: Defines the order of pipelines. The pipeline with the lowest `order_nr` is considered the default. is_deleted: type: boolean description: Whether this pipeline is marked as deleted or not is_deal_probability_enabled: type: boolean description: Whether deal probability is disabled or enabled for this pipeline add_time: type: string description: The pipeline creation time update_time: type: string description: The pipeline update time description: The pipeline object example: success: true data: id: 1 name: Pipeline Name order_nr: 1 is_deleted: false is_deal_probability_enabled: true add_time: '2024-01-01T00:00:00Z' update_time: '2024-01-01T00:00:00Z' '/pipelines/{id}': delete: summary: Delete a pipeline description: Marks a pipeline as deleted. x-token-cost: 3 operationId: deletePipeline tags: - Pipelines security: - api_key: [] - oauth2: - admin parameters: - in: path name: id description: The ID of the pipeline required: true schema: type: integer responses: '200': description: Delete pipeline content: application/json: schema: title: DeletePipelineResponse type: object properties: success: type: boolean description: If the response is successful or not data: type: object properties: id: type: integer description: Deleted Pipeline ID example: success: true data: id: 1 get: summary: Get one pipeline description: Returns data about a specific pipeline. x-token-cost: 1 operationId: getPipeline tags: - Pipelines security: - api_key: [] - oauth2: - 'deals:read' - 'deals:full' - admin parameters: - in: path name: id description: The ID of the pipeline required: true schema: type: integer responses: '200': description: Get pipeline content: application/json: schema: type: object title: UpsertPipelineResponse allOf: - title: baseResponse type: object properties: success: type: boolean description: If the response is successful or not - type: object title: UpsertPipelineResponseData properties: data: type: object properties: id: type: integer description: The ID of the pipeline name: type: string description: The name of the pipeline order_nr: type: integer description: Defines the order of pipelines. The pipeline with the lowest `order_nr` is considered the default. is_deleted: type: boolean description: Whether this pipeline is marked as deleted or not is_deal_probability_enabled: type: boolean description: Whether deal probability is disabled or enabled for this pipeline add_time: type: string description: The pipeline creation time update_time: type: string description: The pipeline update time description: The pipeline object example: success: true data: id: 1 name: Pipeline Name order_nr: 1 is_deleted: false is_deal_probability_enabled: true add_time: '2024-01-01T00:00:00Z' update_time: '2024-01-01T00:00:00Z' patch: summary: Update a pipeline description: Updates the properties of a pipeline. x-token-cost: 5 operationId: updatePipeline tags: - Pipelines security: - api_key: [] - oauth2: - admin parameters: - in: path name: id description: The ID of the pipeline required: true schema: type: integer requestBody: content: application/json: schema: type: object properties: name: type: string description: The name of the pipeline is_deal_probability_enabled: type: boolean default: false description: Whether deal probability is disabled or enabled for this pipeline responses: '200': description: Edit pipeline content: application/json: schema: type: object title: UpsertPipelineResponse allOf: - title: baseResponse type: object properties: success: type: boolean description: If the response is successful or not - type: object title: UpsertPipelineResponseData properties: data: type: object properties: id: type: integer description: The ID of the pipeline name: type: string description: The name of the pipeline order_nr: type: integer description: Defines the order of pipelines. The pipeline with the lowest `order_nr` is considered the default. is_deleted: type: boolean description: Whether this pipeline is marked as deleted or not is_deal_probability_enabled: type: boolean description: Whether deal probability is disabled or enabled for this pipeline add_time: type: string description: The pipeline creation time update_time: type: string description: The pipeline update time description: The pipeline object example: success: true data: id: 1 name: Pipeline Name order_nr: 1 is_deleted: false is_deal_probability_enabled: true add_time: '2024-01-01T00:00:00Z' update_time: '2024-01-01T00:00:00Z' /projectFields: get: summary: Get all project fields description: Returns metadata about all project fields in the company. x-token-cost: 10 operationId: getProjectFields tags: - ProjectFields - Beta security: - api_key: [] - oauth2: - 'projects:read' - 'projects:full' - 'project-fields:full' parameters: - in: query name: limit description: 'For pagination, the limit of entries to be returned. If not provided, 100 items will be returned. Please note that a maximum value of 500 is allowed.' schema: type: integer example: 100 - in: query name: cursor required: false schema: type: string description: 'For pagination, the marker (an opaque string value) representing the first item on the next page' responses: '200': description: Get all project fields content: application/json: schema: type: object properties: success: type: boolean description: Whether the request was successful data: type: array items: type: object required: - field_name - field_code - field_type - is_custom_field - is_optional_response_field properties: field_name: type: string description: The display name/label of the field field_code: type: string description: The unique identifier for the field (40-character hash for custom fields) field_type: type: string description: The type of the field enum: - int - double - boolean - varchar - text - phone - varchar_options - varchar_auto - date - daterange - time - timerange - enum - set - address - monetary - deal - deals - lead - org - people - project - stage - user - activity - json - picture - status - visible_to - price_list - billing_frequency - projects_board - projects_phase options: type: array nullable: true description: 'Array of available options for enum/set fields, null for other field types' items: type: object properties: id: type: integer description: The option ID label: type: string description: The option display label color: type: string nullable: true description: Optional color code for the option update_time: type: string format: date-time nullable: true description: When the option was last updated add_time: type: string format: date-time nullable: true description: When the option was created subfields: type: array nullable: true description: 'Array of subfields for complex field types (address, monetary), null for simple field types' items: type: object properties: field_code: type: string description: The subfield identifier field_name: type: string description: The subfield display name field_type: type: string description: The subfield type is_custom_field: type: boolean description: Whether this is a user-created custom field is_optional_response_field: type: boolean description: Whether this field is not returned by default in entity responses ui_visibility: type: object description: UI visibility settings (only included when requested via include_fields parameter) properties: add_visible_flag: type: boolean description: Whether the field is shown in the add modal details_visible_flag: type: boolean description: Whether the field is shown in the details view important_fields: type: object description: Important fields configuration properties: enabled: type: boolean description: Whether the field is marked as important stage_ids: type: array items: type: integer description: Array of deal stage IDs where the field is important required_fields: type: object description: Required fields configuration properties: enabled: type: boolean description: Whether the field is required additional_data: type: object properties: next_cursor: type: string nullable: true description: 'Base64url-encoded cursor for fetching the next page of results, null if no more pages' example: success: true data: - field_name: Project Name field_code: name field_type: varchar options: null subfields: null is_custom_field: false is_optional_response_field: false ui_visibility: add_visible_flag: true details_visible_flag: true important_fields: enabled: false stage_ids: [] required_fields: enabled: true - field_name: Category field_code: 40characterhashforcustomfieldidentifier field_type: enum options: - id: 1 label: Internal - id: 2 label: External - id: 3 label: Research subfields: null is_custom_field: true is_optional_response_field: false ui_visibility: add_visible_flag: true details_visible_flag: true important_fields: enabled: false stage_ids: [] required_fields: enabled: false additional_data: next_cursor: eyJmaWVsZCI6ImlkIiwiZmllbGRWYWx1ZSI6Nywic29ydERpcmVjdGlvbiI6ImFzYyIsImlkIjo3fQ post: summary: Create one project field description: Creates a new project custom field. x-token-cost: 5 operationId: addProjectField tags: - ProjectFields - Beta security: - api_key: [] - oauth2: - 'project-fields:full' requestBody: required: true content: application/json: schema: type: object required: - field_name - field_type properties: field_name: type: string minLength: 1 maxLength: 255 description: Field name field_type: type: string description: 'The type of the field
ValueDescription
`varchar`Text (up to 255 characters)
`varchar_auto`Autocomplete text (up to 255 characters)
`text`Long text (up to 65k characters)
`double`Numeric value
`monetary`Monetary field (has a numeric value and a currency value)
`date`Date (format YYYY-MM-DD)
`set`Options field with a possibility of having multiple chosen options
`enum`Options field with a single possible chosen option
`user`User field (contains a user ID of another Pipedrive user)
`org`Organization field (contains an organization ID which is stored on the same account)
`people`Person field (contains a person ID which is stored on the same account)
`phone`Phone field (up to 255 numbers and/or characters)
`time`Time field (format HH:MM:SS)
`timerange`Time-range field (has a start time and end time value, both HH:MM:SS)
`daterange`Date-range field (has a start date and end date value, both YYYY-MM-DD)
`address`Address field
' enum: - varchar - text - double - phone - date - daterange - time - timerange - set - enum - varchar_auto - address - monetary - org - people - user options: type: array description: Field options (required for enum and set field types) items: type: object required: - label properties: label: type: string description: The option label ui_visibility: type: object description: UI visibility settings for the field. Controls where the field appears in the Pipedrive web UI. additionalProperties: true properties: add_visible_flag: type: boolean description: Whether the field is shown in the add project modal. Default is false. default: false details_visible_flag: type: boolean description: Whether the field is shown in the project details view. Default is true. default: true important_fields: type: object description: Configuration for highlighting the field at specific stages. additionalProperties: true properties: enabled: type: boolean description: 'Whether the field is marked as important. When false, the field is not highlighted. When true with empty stage_ids, the field is important everywhere. When true with specific stage_ids, the field is important only at those deal stages. Default is false.' default: false stage_ids: type: array items: type: integer description: 'Array of deal stage IDs where this project field should be highlighted as important. Must reference valid, active deal stages. Empty array when enabled is false.' default: [] required_fields: type: object description: Required fields configuration for marking the field as mandatory when interacted with in the Pipedrive web UI. additionalProperties: true properties: enabled: type: boolean description: 'Whether the field is required. When false, the field is optional. When true, the field is required when creating or updating projects. Default is false.' default: false responses: '200': description: Create one project field content: application/json: schema: type: object properties: success: type: boolean description: Whether the request was successful data: type: object required: - field_name - field_code - field_type - is_custom_field - is_optional_response_field properties: field_name: type: string description: The display name/label of the field field_code: type: string description: The unique identifier for the field (40-character hash for custom fields) field_type: type: string description: The type of the field enum: - int - double - boolean - varchar - text - phone - varchar_options - varchar_auto - date - daterange - time - timerange - enum - set - address - monetary - deal - deals - lead - org - people - project - stage - user - activity - json - picture - status - visible_to - price_list - billing_frequency - projects_board - projects_phase options: type: array nullable: true description: 'Array of available options for enum/set fields, null for other field types' items: type: object properties: id: type: integer description: The option ID label: type: string description: The option display label color: type: string nullable: true description: Optional color code for the option update_time: type: string format: date-time nullable: true description: When the option was last updated add_time: type: string format: date-time nullable: true description: When the option was created subfields: type: array nullable: true description: 'Array of subfields for complex field types (address, monetary), null for simple field types' items: type: object properties: field_code: type: string description: The subfield identifier field_name: type: string description: The subfield display name field_type: type: string description: The subfield type is_custom_field: type: boolean description: Whether this is a user-created custom field is_optional_response_field: type: boolean description: Whether this field is not returned by default in entity responses ui_visibility: type: object description: UI visibility settings (only included when requested via include_fields parameter) properties: add_visible_flag: type: boolean description: Whether the field is shown in the add modal details_visible_flag: type: boolean description: Whether the field is shown in the details view important_fields: type: object description: Important fields configuration properties: enabled: type: boolean description: Whether the field is marked as important stage_ids: type: array items: type: integer description: Array of deal stage IDs where the field is important required_fields: type: object description: Required fields configuration properties: enabled: type: boolean description: Whether the field is required example: success: true data: field_name: Category field_code: 946947d1b02fd3ef20798d6112ec5d895a686a21 field_type: enum options: - id: 1 label: Internal - id: 2 label: External - id: 3 label: Research subfields: null is_custom_field: true is_optional_response_field: false ui_visibility: add_visible_flag: true details_visible_flag: true important_fields: enabled: false stage_ids: [] required_fields: enabled: false '/projectFields/{field_code}': get: summary: Get one project field description: Returns metadata about a specific project field. x-token-cost: 1 operationId: getProjectField tags: - ProjectFields - Beta security: - api_key: [] - oauth2: - 'projects:read' - 'projects:full' - 'project-fields:full' parameters: - in: path name: field_code description: The unique code identifying the field required: true schema: type: string responses: '200': description: Get one project field content: application/json: schema: type: object properties: success: type: boolean description: Whether the request was successful data: type: object required: - field_name - field_code - field_type - is_custom_field - is_optional_response_field properties: field_name: type: string description: The display name/label of the field field_code: type: string description: The unique identifier for the field (40-character hash for custom fields) field_type: type: string description: The type of the field enum: - int - double - boolean - varchar - text - phone - varchar_options - varchar_auto - date - daterange - time - timerange - enum - set - address - monetary - deal - deals - lead - org - people - project - stage - user - activity - json - picture - status - visible_to - price_list - billing_frequency - projects_board - projects_phase options: type: array nullable: true description: 'Array of available options for enum/set fields, null for other field types' items: type: object properties: id: type: integer description: The option ID label: type: string description: The option display label color: type: string nullable: true description: Optional color code for the option update_time: type: string format: date-time nullable: true description: When the option was last updated add_time: type: string format: date-time nullable: true description: When the option was created subfields: type: array nullable: true description: 'Array of subfields for complex field types (address, monetary), null for simple field types' items: type: object properties: field_code: type: string description: The subfield identifier field_name: type: string description: The subfield display name field_type: type: string description: The subfield type is_custom_field: type: boolean description: Whether this is a user-created custom field is_optional_response_field: type: boolean description: Whether this field is not returned by default in entity responses ui_visibility: type: object description: UI visibility settings (only included when requested via include_fields parameter) properties: add_visible_flag: type: boolean description: Whether the field is shown in the add modal details_visible_flag: type: boolean description: Whether the field is shown in the details view important_fields: type: object description: Important fields configuration properties: enabled: type: boolean description: Whether the field is marked as important stage_ids: type: array items: type: integer description: Array of deal stage IDs where the field is important required_fields: type: object description: Required fields configuration properties: enabled: type: boolean description: Whether the field is required example: success: true data: field_name: Project Name field_code: name field_type: varchar options: null subfields: null is_custom_field: false is_optional_response_field: false ui_visibility: add_visible_flag: true details_visible_flag: true important_fields: enabled: false stage_ids: [] required_fields: enabled: true patch: summary: Update one project field description: Updates a project custom field. The field_code and field_type cannot be changed. At least one field must be provided in the request body. x-token-cost: 5 operationId: updateProjectField tags: - ProjectFields - Beta security: - api_key: [] - oauth2: - 'project-fields:full' parameters: - in: path name: field_code description: The unique code identifying the field required: true schema: type: string requestBody: required: true content: application/json: schema: type: object minProperties: 1 properties: field_name: type: string minLength: 1 maxLength: 255 description: Field name ui_visibility: type: object description: UI visibility settings for the field. Controls where the field appears in the Pipedrive web UI. additionalProperties: true properties: add_visible_flag: type: boolean description: Whether the field is shown in the add project modal. Default is false. default: false details_visible_flag: type: boolean description: Whether the field is shown in the project details view. Default is true. default: true important_fields: type: object description: Configuration for highlighting the field at specific stages. additionalProperties: true properties: enabled: type: boolean description: 'Whether the field is marked as important. When false, the field is not highlighted. When true with empty stage_ids, the field is important everywhere. When true with specific stage_ids, the field is important only at those deal stages. Default is false.' default: false stage_ids: type: array items: type: integer description: 'Array of deal stage IDs where this project field should be highlighted as important. Must reference valid, active deal stages. Empty array when enabled is false.' default: [] required_fields: type: object description: Required fields configuration for marking the field as mandatory when interacted with in the Pipedrive web UI. additionalProperties: true properties: enabled: type: boolean description: 'Whether the field is required. When false, the field is optional. When true, the field is required when creating or updating projects. Default is false.' default: false responses: '200': description: Get one project field content: application/json: schema: type: object properties: success: type: boolean description: Whether the request was successful data: type: object required: - field_name - field_code - field_type - is_custom_field - is_optional_response_field properties: field_name: type: string description: The display name/label of the field field_code: type: string description: The unique identifier for the field (40-character hash for custom fields) field_type: type: string description: The type of the field enum: - int - double - boolean - varchar - text - phone - varchar_options - varchar_auto - date - daterange - time - timerange - enum - set - address - monetary - deal - deals - lead - org - people - project - stage - user - activity - json - picture - status - visible_to - price_list - billing_frequency - projects_board - projects_phase options: type: array nullable: true description: 'Array of available options for enum/set fields, null for other field types' items: type: object properties: id: type: integer description: The option ID label: type: string description: The option display label color: type: string nullable: true description: Optional color code for the option update_time: type: string format: date-time nullable: true description: When the option was last updated add_time: type: string format: date-time nullable: true description: When the option was created subfields: type: array nullable: true description: 'Array of subfields for complex field types (address, monetary), null for simple field types' items: type: object properties: field_code: type: string description: The subfield identifier field_name: type: string description: The subfield display name field_type: type: string description: The subfield type is_custom_field: type: boolean description: Whether this is a user-created custom field is_optional_response_field: type: boolean description: Whether this field is not returned by default in entity responses ui_visibility: type: object description: UI visibility settings (only included when requested via include_fields parameter) properties: add_visible_flag: type: boolean description: Whether the field is shown in the add modal details_visible_flag: type: boolean description: Whether the field is shown in the details view important_fields: type: object description: Important fields configuration properties: enabled: type: boolean description: Whether the field is marked as important stage_ids: type: array items: type: integer description: Array of deal stage IDs where the field is important required_fields: type: object description: Required fields configuration properties: enabled: type: boolean description: Whether the field is required example: success: true data: field_name: Project Name field_code: name field_type: varchar options: null subfields: null is_custom_field: false is_optional_response_field: false ui_visibility: add_visible_flag: true details_visible_flag: true important_fields: enabled: false stage_ids: [] required_fields: enabled: true delete: summary: Delete one project field description: Marks a custom field as deleted. x-token-cost: 3 operationId: deleteProjectField tags: - ProjectFields - Beta security: - api_key: [] - oauth2: - 'project-fields:full' parameters: - in: path name: field_code description: The unique code identifying the field required: true schema: type: string responses: '200': description: Delete one project field content: application/json: schema: type: object properties: success: type: boolean description: Whether the request was successful data: type: object required: - field_name - field_code - field_type - is_custom_field - is_optional_response_field properties: field_name: type: string description: The display name/label of the field field_code: type: string description: The unique identifier for the field (40-character hash for custom fields) field_type: type: string description: The type of the field options: type: array nullable: true description: 'Array of available options for enum/set fields, null for other field types' items: type: object subfields: type: array nullable: true description: 'Array of subfields for complex field types, null for simple field types' items: type: object is_custom_field: type: boolean description: Whether this is a user-created custom field is_optional_response_field: type: boolean description: Whether this field is not returned by default in entity responses example: success: true data: field_name: Custom text field field_code: 946947d1b02fd3ef20798d6112ec5d895a686a21 field_type: varchar options: null subfields: null is_custom_field: true is_optional_response_field: false '/projectFields/{field_code}/options': post: summary: Add project field options in bulk description: Adds new options to a project custom field that supports options (enum or set field types). This operation is atomic - all options are added or none are added. Returns only the newly added options. x-token-cost: 5 operationId: addProjectFieldOptions tags: - ProjectFields - Beta security: - api_key: [] - oauth2: - 'project-fields:full' parameters: - in: path name: field_code description: The unique code identifying the field required: true schema: type: string requestBody: required: true content: application/json: schema: type: array description: Array of options to add. Each item must contain a label. At least one option is required. items: type: object required: - label properties: label: type: string minLength: 1 maxLength: 255 description: The display label for the new option responses: '200': description: Field options operation result content: application/json: schema: type: object properties: success: type: boolean data: type: array items: type: object required: - id - label properties: id: type: integer description: The unique identifier of the option label: type: string description: The display label of the option additional_data: type: object nullable: true example: success: true data: - id: 4 label: Research & Development additional_data: null delete: summary: Delete project field options in bulk description: Removes existing options from a project custom field. This operation is atomic and fails if any of the specified option IDs do not exist. Returns only the deleted options. x-token-cost: 3 operationId: deleteProjectFieldOptions tags: - ProjectFields - Beta security: - api_key: [] - oauth2: - 'project-fields:full' parameters: - in: path name: field_code description: The unique code identifying the field required: true schema: type: string requestBody: required: true content: application/json: schema: type: array description: Array of option IDs to delete. Each item must contain an ID of the option to delete. At least one option ID is required. The entire request fails if any option does not exist. items: type: object required: - id properties: id: type: integer description: The unique identifier of the option to delete responses: '200': description: Field options operation result content: application/json: schema: type: object properties: success: type: boolean data: type: array items: type: object required: - id - label properties: id: type: integer description: The unique identifier of the option label: type: string description: The display label of the option additional_data: type: object nullable: true example: success: true data: - id: 4 label: Research & Development additional_data: null patch: summary: Update project field options in bulk description: Updates existing options for a project custom field. This operation is atomic and fails if any of the specified option IDs do not exist. Returns only the updated options. x-token-cost: 5 operationId: updateProjectFieldOptions tags: - ProjectFields - Beta security: - api_key: [] - oauth2: - 'project-fields:full' parameters: - in: path name: field_code description: The unique code identifying the field required: true schema: type: string requestBody: required: true content: application/json: schema: type: array description: Array of options to update. Each item must contain an ID and the updated label. At least one option is required. The entire request fails if any option does not exist. items: type: object required: - id - label properties: id: type: integer description: The unique identifier of the option to update label: type: string minLength: 1 maxLength: 255 description: The new display label for the option responses: '200': description: Field options operation result content: application/json: schema: type: object properties: success: type: boolean data: type: array items: type: object required: - id - label properties: id: type: integer description: The unique identifier of the option label: type: string description: The display label of the option additional_data: type: object nullable: true example: success: true data: - id: 4 label: Research & Development additional_data: null /projects: get: summary: Get all projects description: Returns all non-archived projects. x-token-cost: 10 operationId: getProjects tags: - Projects security: - api_key: [] - oauth2: - 'projects:read' - 'projects:full' parameters: - in: query name: filter_id schema: type: integer description: 'If supplied, only projects matching the specified filter are returned' - in: query name: status schema: type: string example: 'open,completed' description: 'If supplied, includes only projects with the specified statuses. Possible values are `open`, `completed`, `canceled` and `deleted`. By default `deleted` projects are not returned.' - in: query name: phase_id schema: type: integer description: 'If supplied, only projects in the specified phase are returned' - in: query name: limit description: 'For pagination, the limit of entries to be returned. If not provided, 100 items will be returned. Please note that a maximum value of 500 is allowed.' schema: type: integer example: 100 - in: query name: cursor required: false schema: type: string description: 'For pagination, the marker (an opaque string value) representing the first item on the next page' responses: '200': description: Get all projects content: application/json: schema: type: object title: GetProjectsResponse allOf: - title: baseResponse type: object properties: success: type: boolean description: If the response is successful or not - type: object properties: data: type: array description: Projects array items: title: Project type: object properties: id: type: integer description: The ID of the project title: type: string description: The title of the project description: type: string description: The description of the project status: type: string description: The status of the project board_id: type: integer description: The ID of the board this project is associated with phase_id: type: integer description: The ID of the phase this project is associated with owner_id: type: integer description: The ID of the user who owns the project start_date: type: string format: date description: 'The start date of the project. Format: YYYY-MM-DD' end_date: type: string format: date description: 'The end date of the project. Format: YYYY-MM-DD' deal_ids: type: array description: An array of IDs of the deals this project is associated with items: type: integer person_ids: type: array description: An array of IDs of the persons this project is associated with items: type: integer org_ids: type: array description: An array of IDs of the organizations this project is associated with items: type: integer label_ids: type: array description: An array of IDs of the labels this project has items: type: integer health_status: type: string nullable: true description: The health status of the project add_time: type: string description: The creation date and time of the project in ISO 8601 format update_time: type: string description: The last updated date and time of the project in ISO 8601 format status_change_time: type: string description: The date and time of the last status change of the project in ISO 8601 format archive_time: type: string nullable: true description: 'The date and time the project was archived in ISO 8601 format. If not archived, this field is null.' custom_fields: type: object additionalProperties: true description: 'An object where each key represents a custom field. All custom fields are referenced as randomly generated 40-character hashes. To clear a custom field value, set it to `null`. For multi-option fields (field type `set`), use `null` to clear the selection — sending an empty array `[]` is not supported and will result in a validation error.' additional_data: type: object description: The additional data of the list properties: next_cursor: type: string description: The first item on the next page. The value of the `next_cursor` field will be `null` if you have reached the end of the dataset and there’s no more pages to be returned. example: success: true data: - id: 3 title: Project description: Description status: open board_id: 1 phase_id: 1 owner_id: 1 start_date: '2026-04-15' end_date: '2026-04-23' deal_ids: - 1 person_ids: - 1 org_ids: - 1 label_ids: - 1 health_status: null add_time: '2026-04-14T10:45:20.852Z' update_time: '2026-04-14T10:45:20.852Z' status_change_time: '2026-04-14T10:45:20.852Z' archive_time: null custom_fields: {} additional_data: next_cursor: eyJmaWVsZCI6ImlkIiwiZmllbGRWYWx1ZSI6Nywic29ydERpcmVjdGlvbiI6ImFzYyIsImlkIjo3fQ post: summary: Add a project description: Adds a new project. Custom fields should be wrapped in the `custom_fields` object. x-token-cost: 5 operationId: addProject tags: - Projects security: - api_key: [] - oauth2: - 'projects:full' requestBody: required: true content: application/json: schema: required: - title type: object properties: title: type: string description: The title of the project description: type: string description: The description of the project status: type: string description: The status of the project board_id: type: integer description: The ID of the board this project is associated with phase_id: type: integer description: The ID of the phase this project is associated with owner_id: type: integer description: The ID of the user who owns the project start_date: type: string format: date description: 'The start date of the project. Format: YYYY-MM-DD' end_date: type: string format: date description: 'The end date of the project. Format: YYYY-MM-DD' deal_ids: type: array description: An array of IDs of the deals this project is associated with items: type: integer person_ids: type: array description: An array of IDs of the persons this project is associated with items: type: integer org_ids: type: array description: An array of IDs of the organizations this project is associated with items: type: integer label_ids: type: array description: An array of IDs of the labels this project has items: type: integer template_id: type: integer description: The ID of the template the project will be based on. Only used when creating a new project. custom_fields: type: object additionalProperties: true description: 'An object where each key represents a custom field. All custom fields are referenced as randomly generated 40-character hashes. To clear a custom field value, set it to `null`. For multi-option fields (field type `set`), use `null` to clear the selection — sending an empty array `[]` is not supported and will result in a validation error.' responses: '201': description: Add project content: application/json: schema: type: object title: UpsertProjectResponse allOf: - title: baseResponse type: object properties: success: type: boolean description: If the response is successful or not - type: object properties: data: title: Project type: object properties: id: type: integer description: The ID of the project title: type: string description: The title of the project description: type: string description: The description of the project status: type: string description: The status of the project board_id: type: integer description: The ID of the board this project is associated with phase_id: type: integer description: The ID of the phase this project is associated with owner_id: type: integer description: The ID of the user who owns the project start_date: type: string format: date description: 'The start date of the project. Format: YYYY-MM-DD' end_date: type: string format: date description: 'The end date of the project. Format: YYYY-MM-DD' deal_ids: type: array description: An array of IDs of the deals this project is associated with items: type: integer person_ids: type: array description: An array of IDs of the persons this project is associated with items: type: integer org_ids: type: array description: An array of IDs of the organizations this project is associated with items: type: integer label_ids: type: array description: An array of IDs of the labels this project has items: type: integer health_status: type: string nullable: true description: The health status of the project add_time: type: string description: The creation date and time of the project in ISO 8601 format update_time: type: string description: The last updated date and time of the project in ISO 8601 format status_change_time: type: string description: The date and time of the last status change of the project in ISO 8601 format archive_time: type: string nullable: true description: 'The date and time the project was archived in ISO 8601 format. If not archived, this field is null.' custom_fields: type: object additionalProperties: true description: 'An object where each key represents a custom field. All custom fields are referenced as randomly generated 40-character hashes. To clear a custom field value, set it to `null`. For multi-option fields (field type `set`), use `null` to clear the selection — sending an empty array `[]` is not supported and will result in a validation error.' example: success: true data: id: 3 title: Project description: Description status: open board_id: 1 phase_id: 1 owner_id: 1 start_date: '2026-04-15' end_date: '2026-04-23' deal_ids: - 1 person_ids: - 1 org_ids: - 1 label_ids: - 1 health_status: null add_time: '2026-04-14T10:45:20.852Z' update_time: '2026-04-14T10:45:20.852Z' status_change_time: '2026-04-14T10:45:20.852Z' archive_time: null custom_fields: {} /projects/archived: get: summary: Get all archived projects description: Returns all archived projects. x-token-cost: 10 operationId: getArchivedProjects tags: - Projects security: - api_key: [] - oauth2: - 'projects:read' - 'projects:full' parameters: - in: query name: filter_id schema: type: integer description: 'If supplied, only projects matching the specified filter are returned' - in: query name: status schema: type: string example: 'open,completed' description: 'If supplied, includes only projects with the specified statuses. Possible values are `open`, `completed`, `canceled` and `deleted`. By default `deleted` projects are not returned.' - in: query name: phase_id schema: type: integer description: 'If supplied, only projects in the specified phase are returned' - in: query name: limit description: 'For pagination, the limit of entries to be returned. If not provided, 100 items will be returned. Please note that a maximum value of 500 is allowed.' schema: type: integer example: 100 - in: query name: cursor required: false schema: type: string description: 'For pagination, the marker (an opaque string value) representing the first item on the next page' responses: '200': description: Get all projects content: application/json: schema: type: object title: GetProjectsResponse allOf: - title: baseResponse type: object properties: success: type: boolean description: If the response is successful or not - type: object properties: data: type: array description: Projects array items: title: Project type: object properties: id: type: integer description: The ID of the project title: type: string description: The title of the project description: type: string description: The description of the project status: type: string description: The status of the project board_id: type: integer description: The ID of the board this project is associated with phase_id: type: integer description: The ID of the phase this project is associated with owner_id: type: integer description: The ID of the user who owns the project start_date: type: string format: date description: 'The start date of the project. Format: YYYY-MM-DD' end_date: type: string format: date description: 'The end date of the project. Format: YYYY-MM-DD' deal_ids: type: array description: An array of IDs of the deals this project is associated with items: type: integer person_ids: type: array description: An array of IDs of the persons this project is associated with items: type: integer org_ids: type: array description: An array of IDs of the organizations this project is associated with items: type: integer label_ids: type: array description: An array of IDs of the labels this project has items: type: integer health_status: type: string nullable: true description: The health status of the project add_time: type: string description: The creation date and time of the project in ISO 8601 format update_time: type: string description: The last updated date and time of the project in ISO 8601 format status_change_time: type: string description: The date and time of the last status change of the project in ISO 8601 format archive_time: type: string nullable: true description: 'The date and time the project was archived in ISO 8601 format. If not archived, this field is null.' custom_fields: type: object additionalProperties: true description: 'An object where each key represents a custom field. All custom fields are referenced as randomly generated 40-character hashes. To clear a custom field value, set it to `null`. For multi-option fields (field type `set`), use `null` to clear the selection — sending an empty array `[]` is not supported and will result in a validation error.' additional_data: type: object description: The additional data of the list properties: next_cursor: type: string description: The first item on the next page. The value of the `next_cursor` field will be `null` if you have reached the end of the dataset and there’s no more pages to be returned. example: success: true data: - id: 3 title: Project description: Description status: open board_id: 1 phase_id: 1 owner_id: 1 start_date: '2026-04-15' end_date: '2026-04-23' deal_ids: - 1 person_ids: - 1 org_ids: - 1 label_ids: - 1 health_status: null add_time: '2026-04-14T10:45:20.852Z' update_time: '2026-04-14T10:45:20.852Z' status_change_time: '2026-04-14T10:45:20.852Z' archive_time: null custom_fields: {} additional_data: next_cursor: eyJmaWVsZCI6ImlkIiwiZmllbGRWYWx1ZSI6Nywic29ydERpcmVjdGlvbiI6ImFzYyIsImlkIjo3fQ '/projects/{id}': get: summary: Get details of a project description: Returns the details of a specific project. Custom fields appear as keys inside the `custom_fields` object. x-token-cost: 1 operationId: getProject tags: - Projects security: - api_key: [] - oauth2: - 'projects:read' - 'projects:full' parameters: - in: path name: id description: The ID of the project required: true schema: type: integer responses: '200': description: Get project content: application/json: schema: type: object title: UpsertProjectResponse allOf: - title: baseResponse type: object properties: success: type: boolean description: If the response is successful or not - type: object properties: data: title: Project type: object properties: id: type: integer description: The ID of the project title: type: string description: The title of the project description: type: string description: The description of the project status: type: string description: The status of the project board_id: type: integer description: The ID of the board this project is associated with phase_id: type: integer description: The ID of the phase this project is associated with owner_id: type: integer description: The ID of the user who owns the project start_date: type: string format: date description: 'The start date of the project. Format: YYYY-MM-DD' end_date: type: string format: date description: 'The end date of the project. Format: YYYY-MM-DD' deal_ids: type: array description: An array of IDs of the deals this project is associated with items: type: integer person_ids: type: array description: An array of IDs of the persons this project is associated with items: type: integer org_ids: type: array description: An array of IDs of the organizations this project is associated with items: type: integer label_ids: type: array description: An array of IDs of the labels this project has items: type: integer health_status: type: string nullable: true description: The health status of the project add_time: type: string description: The creation date and time of the project in ISO 8601 format update_time: type: string description: The last updated date and time of the project in ISO 8601 format status_change_time: type: string description: The date and time of the last status change of the project in ISO 8601 format archive_time: type: string nullable: true description: 'The date and time the project was archived in ISO 8601 format. If not archived, this field is null.' custom_fields: type: object additionalProperties: true description: 'An object where each key represents a custom field. All custom fields are referenced as randomly generated 40-character hashes. To clear a custom field value, set it to `null`. For multi-option fields (field type `set`), use `null` to clear the selection — sending an empty array `[]` is not supported and will result in a validation error.' example: success: true data: id: 3 title: Project description: Description status: open board_id: 1 phase_id: 1 owner_id: 1 start_date: '2026-04-15' end_date: '2026-04-23' deal_ids: - 1 person_ids: - 1 org_ids: - 1 label_ids: - 1 health_status: null add_time: '2026-04-14T10:45:20.852Z' update_time: '2026-04-14T10:45:20.852Z' status_change_time: '2026-04-14T10:45:20.852Z' archive_time: null custom_fields: {} patch: summary: Update a project description: Updates the properties of a project. x-token-cost: 5 operationId: updateProject tags: - Projects security: - api_key: [] - oauth2: - 'projects:full' parameters: - in: path name: id description: The ID of the project required: true schema: type: integer requestBody: content: application/json: schema: type: object properties: title: type: string description: The title of the project description: type: string description: The description of the project status: type: string description: The status of the project board_id: type: integer description: The ID of the board this project is associated with phase_id: type: integer description: The ID of the phase this project is associated with owner_id: type: integer description: The ID of the user who owns the project start_date: type: string format: date description: 'The start date of the project. Format: YYYY-MM-DD' end_date: type: string format: date description: 'The end date of the project. Format: YYYY-MM-DD' deal_ids: type: array description: An array of IDs of the deals this project is associated with items: type: integer person_ids: type: array description: An array of IDs of the persons this project is associated with items: type: integer org_ids: type: array description: An array of IDs of the organizations this project is associated with items: type: integer label_ids: type: array description: An array of IDs of the labels this project has items: type: integer template_id: type: integer description: The ID of the template the project will be based on. Only used when creating a new project. custom_fields: type: object additionalProperties: true description: 'An object where each key represents a custom field. All custom fields are referenced as randomly generated 40-character hashes. To clear a custom field value, set it to `null`. For multi-option fields (field type `set`), use `null` to clear the selection — sending an empty array `[]` is not supported and will result in a validation error.' responses: '200': description: Update project content: application/json: schema: type: object title: UpsertProjectResponse allOf: - title: baseResponse type: object properties: success: type: boolean description: If the response is successful or not - type: object properties: data: title: Project type: object properties: id: type: integer description: The ID of the project title: type: string description: The title of the project description: type: string description: The description of the project status: type: string description: The status of the project board_id: type: integer description: The ID of the board this project is associated with phase_id: type: integer description: The ID of the phase this project is associated with owner_id: type: integer description: The ID of the user who owns the project start_date: type: string format: date description: 'The start date of the project. Format: YYYY-MM-DD' end_date: type: string format: date description: 'The end date of the project. Format: YYYY-MM-DD' deal_ids: type: array description: An array of IDs of the deals this project is associated with items: type: integer person_ids: type: array description: An array of IDs of the persons this project is associated with items: type: integer org_ids: type: array description: An array of IDs of the organizations this project is associated with items: type: integer label_ids: type: array description: An array of IDs of the labels this project has items: type: integer health_status: type: string nullable: true description: The health status of the project add_time: type: string description: The creation date and time of the project in ISO 8601 format update_time: type: string description: The last updated date and time of the project in ISO 8601 format status_change_time: type: string description: The date and time of the last status change of the project in ISO 8601 format archive_time: type: string nullable: true description: 'The date and time the project was archived in ISO 8601 format. If not archived, this field is null.' custom_fields: type: object additionalProperties: true description: 'An object where each key represents a custom field. All custom fields are referenced as randomly generated 40-character hashes. To clear a custom field value, set it to `null`. For multi-option fields (field type `set`), use `null` to clear the selection — sending an empty array `[]` is not supported and will result in a validation error.' example: success: true data: id: 3 title: Project description: Description status: open board_id: 1 phase_id: 1 owner_id: 1 start_date: '2026-04-15' end_date: '2026-04-23' deal_ids: - 1 person_ids: - 1 org_ids: - 1 label_ids: - 1 health_status: null add_time: '2026-04-14T10:45:20.852Z' update_time: '2026-04-14T10:45:20.852Z' status_change_time: '2026-04-14T10:45:20.852Z' archive_time: null custom_fields: {} delete: summary: Delete a project description: Marks a project as deleted. x-token-cost: 3 operationId: deleteProject tags: - Projects security: - api_key: [] - oauth2: - 'projects:full' parameters: - in: path name: id description: The ID of the project required: true schema: type: integer responses: '200': description: Delete project content: application/json: schema: title: DeleteProjectResponse type: object properties: success: type: boolean description: If the response is successful or not data: type: object properties: id: type: integer description: The ID of the deleted project example: success: true data: id: 3 /projectTemplates: get: summary: Get all project templates description: Returns all not deleted project templates. x-token-cost: 10 operationId: getProjectTemplates tags: - ProjectTemplates security: - api_key: [] - oauth2: - 'projects:read' - 'projects:full' parameters: - in: query name: cursor required: false schema: type: string description: 'For pagination, the marker (an opaque string value) representing the first item on the next page' - in: query name: limit description: 'For pagination, the limit of entries to be returned. If not provided, 100 items will be returned. Please note that a maximum value of 500 is allowed.' schema: type: integer example: 100 responses: '200': description: A list of project templates. content: application/json: schema: title: GetProjectTemplatesResponse type: object properties: success: type: boolean description: If the response is successful or not data: type: array items: title: ProjectTemplate type: object properties: id: type: integer description: The ID of the project template title: type: string description: The title of the project template description: type: string description: The description of the project template projects_board_id: type: integer description: The ID of the project board this template is associated with owner_id: type: integer description: The ID of the owner of the project template add_time: type: string description: The creation date and time of the project template in ISO 8601 format update_time: type: string description: The update date and time of the project template in ISO 8601 format additional_data: description: The additional data of the list type: object properties: next_cursor: type: string description: The first item on the next page. The value of the `next_cursor` field will be `null` if you have reached the end of the dataset and there’s no more pages to be returned. example: success: true data: - id: 1 title: Office Renovation description: Template for office renovation projects projects_board_id: 2 owner_id: 3 add_time: '2023-09-14T08:14:40.000Z' update_time: '2023-09-14T08:14:40.000Z' additional_data: next_cursor: eyJhY3Rpdml0aWVzIjoyN30 '/projectTemplates/{id}': get: summary: Get details of a template description: Returns the details of a specific project template. x-token-cost: 1 operationId: getProjectTemplate tags: - ProjectTemplates security: - api_key: [] - oauth2: - 'projects:read' - 'projects:full' parameters: - in: path name: id description: The ID of the project template required: true schema: type: integer responses: '200': description: Get a project template. content: application/json: schema: title: GetProjectTemplateResponse type: object properties: success: type: boolean description: If the response is successful or not data: title: ProjectTemplate type: object properties: id: type: integer description: The ID of the project template title: type: string description: The title of the project template description: type: string description: The description of the project template projects_board_id: type: integer description: The ID of the project board this template is associated with owner_id: type: integer description: The ID of the owner of the project template add_time: type: string description: The creation date and time of the project template in ISO 8601 format update_time: type: string description: The update date and time of the project template in ISO 8601 format additional_data: type: object nullable: true example: null example: success: true data: id: 1 title: Office Renovation description: Template for office renovation projects projects_board_id: 2 owner_id: 3 add_time: '2023-09-14T08:14:40.000Z' update_time: '2023-09-14T08:14:40.000Z' additional_data: null /projects/search: get: summary: Search projects description: 'Searches all projects by title, description, notes and/or custom fields. This endpoint is a wrapper of /v1/itemSearch with a narrower OAuth scope. Found projects can be filtered by person ID or organization ID.' x-token-cost: 20 operationId: searchProjects tags: - Projects - Beta security: - api_key: [] - oauth2: - 'projects:read' - 'projects:full' - 'search:read' parameters: - in: query name: term required: true schema: type: string description: The search term to look for. Minimum 2 characters (or 1 if using `exact_match`). Please note that the search term has to be URL encoded. - in: query name: fields schema: type: string enum: - custom_fields - notes - title - description description: 'A comma-separated string array. The fields to perform the search from. Defaults to all of them. Only the following custom field types are searchable: `address`, `varchar`, `text`, `varchar_auto`, `double`, `monetary` and `phone`. Read more about searching by custom fields here.' - in: query name: exact_match schema: type: boolean description: 'When enabled, only full exact matches against the given term are returned. It is not case sensitive.' - in: query name: person_id schema: type: integer description: Will filter projects by the provided person ID - in: query name: organization_id schema: type: integer description: Will filter projects by the provided organization ID - in: query name: limit description: 'For pagination, the limit of entries to be returned. If not provided, 100 items will be returned. Please note that a maximum value of 500 is allowed.' schema: type: integer example: 100 - in: query name: cursor required: false schema: type: string description: 'For pagination, the marker (an opaque string value) representing the first item on the next page' responses: '200': description: Success content: application/json: schema: title: GetProjectSearchResponse allOf: - title: baseResponse type: object properties: success: type: boolean description: If the response is successful or not - type: object properties: data: type: object properties: items: type: array description: The array of found projects items: type: object properties: result_score: type: number description: Search result relevancy item: type: object properties: id: type: integer description: The ID of the project type: type: string description: The type of the item title: type: string description: The title of the project status: type: string nullable: true description: The status of the project owner: type: object properties: id: type: integer nullable: true description: The ID of the owner of the project board_id: type: integer nullable: true description: The ID of the board the project belongs to phase: type: object nullable: true properties: id: type: integer description: The ID of the phase name: type: string description: The name of the phase person: type: object nullable: true properties: id: type: integer description: The ID of the person the project is associated with name: type: string nullable: true description: The name of the person the project is associated with organization: type: object nullable: true properties: id: type: integer description: The ID of the organization the project is associated with name: type: string nullable: true description: The name of the organization the project is associated with address: type: string nullable: true description: The address of the organization the project is associated with deal: type: object nullable: true properties: id: type: integer description: The ID of the deal the project is associated with title: type: string nullable: true description: The title of the deal the project is associated with deal_count: type: integer description: The number of deals associated with the project description: type: string nullable: true description: The description of the project end_date: type: string nullable: true description: The end date of the project custom_fields: type: array items: type: string description: Custom fields notes: type: array description: An array of notes items: type: string additional_data: description: The additional data of the list type: object properties: next_cursor: type: string description: The first item on the next page. The value of the `next_cursor` field will be `null` if you have reached the end of the dataset and there’s no more pages to be returned. example: success: true data: items: - result_score: 0.8412 item: id: 1 type: project title: Office renovation status: open owner: id: 1 board_id: 2 phase: id: 3 name: In progress person: id: 10 name: Jane Doe organization: id: 5 name: Pipedrive address: null deal: id: 42 title: Renovation deal deal_count: 1 description: Full office renovation project end_date: '2025-12-31' custom_fields: [] notes: [] additional_data: next_cursor: eyJmaWVsZCI6ImlkIiwiZmllbGRWYWx1ZSI6Nywic29ydERpcmVjdGlvbiI6ImFzYyIsImlkIjo3fQ '/projects/{id}/archive': post: summary: Archive a project description: Archives a project. x-token-cost: 3 operationId: archiveProject tags: - Projects security: - api_key: [] - oauth2: - 'projects:full' parameters: - in: path name: id description: The ID of the project required: true schema: type: integer responses: '200': description: Update project content: application/json: schema: type: object title: UpsertProjectResponse allOf: - title: baseResponse type: object properties: success: type: boolean description: If the response is successful or not - type: object properties: data: title: Project type: object properties: id: type: integer description: The ID of the project title: type: string description: The title of the project description: type: string description: The description of the project status: type: string description: The status of the project board_id: type: integer description: The ID of the board this project is associated with phase_id: type: integer description: The ID of the phase this project is associated with owner_id: type: integer description: The ID of the user who owns the project start_date: type: string format: date description: 'The start date of the project. Format: YYYY-MM-DD' end_date: type: string format: date description: 'The end date of the project. Format: YYYY-MM-DD' deal_ids: type: array description: An array of IDs of the deals this project is associated with items: type: integer person_ids: type: array description: An array of IDs of the persons this project is associated with items: type: integer org_ids: type: array description: An array of IDs of the organizations this project is associated with items: type: integer label_ids: type: array description: An array of IDs of the labels this project has items: type: integer health_status: type: string nullable: true description: The health status of the project add_time: type: string description: The creation date and time of the project in ISO 8601 format update_time: type: string description: The last updated date and time of the project in ISO 8601 format status_change_time: type: string description: The date and time of the last status change of the project in ISO 8601 format archive_time: type: string nullable: true description: 'The date and time the project was archived in ISO 8601 format. If not archived, this field is null.' custom_fields: type: object additionalProperties: true description: 'An object where each key represents a custom field. All custom fields are referenced as randomly generated 40-character hashes. To clear a custom field value, set it to `null`. For multi-option fields (field type `set`), use `null` to clear the selection — sending an empty array `[]` is not supported and will result in a validation error.' example: success: true data: id: 3 title: Project description: Description status: open board_id: 1 phase_id: 1 owner_id: 1 start_date: '2026-04-15' end_date: '2026-04-23' deal_ids: - 1 person_ids: - 1 org_ids: - 1 label_ids: - 1 health_status: null add_time: '2026-04-14T10:45:20.852Z' update_time: '2026-04-14T10:45:20.852Z' status_change_time: '2026-04-14T10:45:20.852Z' archive_time: null custom_fields: {} '/projects/{id}/permittedUsers': get: summary: List permitted users description: Lists the users permitted to access a project. x-token-cost: 5 operationId: getProjectUsers tags: - Projects security: - api_key: [] - oauth2: - 'projects:read' - 'projects:full' parameters: - in: path name: id description: The ID of the project required: true schema: type: integer responses: '200': description: Success content: application/json: schema: title: GetProjectPermittedUsersResponse type: object properties: success: type: boolean description: If the response is successful or not data: type: array items: type: integer description: The list of permitted user IDs example: success: true data: - 123 - 456 '/projects/{id}/changelog': get: summary: List updates about project field values description: Lists updates about field values of a project. x-token-cost: 10 operationId: getProjectChangelog tags: - Projects security: - api_key: [] - oauth2: - 'projects:read' - 'projects:full' parameters: - in: path name: id description: The ID of the project required: true schema: type: integer - in: query name: limit description: 'For pagination, the limit of entries to be returned. If not provided, 100 items will be returned. Please note that a maximum value of 500 is allowed.' schema: type: integer example: 100 - in: query name: cursor required: false schema: type: string description: 'For pagination, the marker (an opaque string value) representing the first item on the next page' responses: '200': description: Get changelog of a project content: application/json: schema: title: GetProjectChangelogResponse type: object properties: success: type: boolean example: true data: type: array items: type: object properties: change_source: type: string nullable: true description: 'The source of change, for example ''app'', ''mobile'', ''api'', etc.' change_source_user_agent: type: string nullable: true description: The user agent from which the change was made time: type: string description: The date and time of the change in ISO 8601 format new_values: type: object additionalProperties: true description: A map of field keys to their new values after the change old_values: type: object additionalProperties: true description: A map of field keys to their previous values before the change actor_user_id: type: integer description: The ID of the user who made the change additional_data: description: The additional data of the list type: object properties: next_cursor: type: string description: The first item on the next page. The value of the `next_cursor` field will be `null` if you have reached the end of the dataset and there’s no more pages to be returned. example: success: true data: - change_source: app change_source_user_agent: 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36' time: '2024-02-12T09:14:35.000Z' new_values: title: New Project Title old_values: title: Old Project Title actor_user_id: 26 - change_source: api change_source_user_agent: null time: '2024-02-12T09:10:12.000Z' new_values: status: open board_id: 2 old_values: status: closed board_id: 1 actor_user_id: 42 additional_data: next_cursor: aWQ6NTQ0 /tasks: get: summary: Get all tasks description: Returns all tasks. x-token-cost: 10 operationId: getTasks tags: - Tasks - Beta security: - api_key: [] - oauth2: - 'projects:read' - 'projects:full' parameters: - in: query name: cursor required: false schema: type: string description: 'For pagination, the marker (an opaque string value) representing the first item on the next page' - in: query name: limit description: 'For pagination, the limit of entries to be returned. If not provided, 100 items will be returned. Please note that a maximum value of 500 is allowed.' schema: type: integer example: 100 - in: query name: is_done required: false schema: type: boolean description: 'Whether the task is done or not. If omitted, both done and not done tasks are returned.' - in: query name: is_milestone required: false schema: type: boolean description: 'Whether the task is a milestone or not. If omitted, both milestone and non-milestone tasks are returned.' - in: query name: assignee_id required: false schema: type: integer description: 'If supplied, only tasks assigned to this user are returned' - in: query name: project_id required: false schema: type: integer description: 'If supplied, only tasks belonging to this project are returned' - in: query name: parent_task_id required: false schema: type: string description: 'If `null` is supplied, only root-level tasks (without a parent) are returned. If an integer is supplied, only subtasks of that specific task are returned. By default all tasks are returned.' responses: '200': description: A list of tasks. content: application/json: schema: title: GetTasksResponse type: object properties: success: type: boolean description: If the response is successful or not data: type: array items: type: object properties: id: type: integer description: The ID of the task title: type: string minLength: 1 maxLength: 255 description: The title of the task creator_id: type: integer description: The ID of the user who created the task description: type: string nullable: true description: The description of the task project_id: type: integer description: The ID of the project this task is associated with is_done: type: boolean description: Whether the task is done or not. is_milestone: type: boolean description: Whether the task is a milestone or not. due_date: type: string format: date nullable: true description: 'The due date of the task. Format: YYYY-MM-DD.' start_date: type: string format: date nullable: true description: 'The start date of the task. Format: YYYY-MM-DD.' parent_task_id: type: integer nullable: true description: 'The ID of the parent task. If `null`, the task is a root-level task.' assignee_ids: type: array items: type: integer description: The IDs of users assigned to the task priority: type: integer minimum: 0 nullable: true description: The priority of the task add_time: type: string description: The creation date and time of the task in ISO 8601 format update_time: type: string description: The update date and time of the task in ISO 8601 format marked_as_done_time: type: string nullable: true description: The date and time the task was marked as done in ISO 8601 format additional_data: description: The additional data of the list type: object properties: next_cursor: type: string description: The first item on the next page. The value of the `next_cursor` field will be `null` if you have reached the end of the dataset and there’s no more pages to be returned. example: success: true data: - id: 1 title: Task 1 creator_id: 2 description: Task description project_id: 1 is_done: false is_milestone: false due_date: '2026-10-11' start_date: '2026-09-01' parent_task_id: null assignee_ids: - 2 - 3 priority: null add_time: '2026-09-14T08:14:40.000Z' update_time: '2026-09-14T08:14:40.000Z' marked_as_done_time: null additional_data: next_cursor: eyJhY3Rpdml0aWVzIjoyN30 post: summary: Add a task description: Adds a new task. x-token-cost: 5 operationId: addTask tags: - Tasks - Beta security: - api_key: [] - oauth2: - 'projects:full' requestBody: required: true content: application/json: schema: title: addTaskRequest type: object required: - title - project_id properties: title: type: string minLength: 1 maxLength: 255 description: The title of the task project_id: type: integer description: The ID of the project this task is associated with parent_task_id: type: integer nullable: true description: The ID of the parent task. Cannot be the ID of a task that is already a subtask. description: type: string nullable: true description: The description of the task done: type: integer enum: - 0 - 1 description: 'Whether the task is done or not. `0` = Not done, `1` = Done.' milestone: type: integer enum: - 0 - 1 description: 'Whether the task is a milestone or not. `0` = Not a milestone, `1` = Milestone.' due_date: type: string format: date nullable: true description: 'The due date of the task. Format: YYYY-MM-DD.' start_date: type: string format: date nullable: true description: 'The start date of the task. Format: YYYY-MM-DD.' assignee_id: type: integer nullable: true description: 'The ID of the user assigned to the task. When set, the `assignee_ids` field will be overwritten with this value.' assignee_ids: type: array items: type: integer maxItems: 10 description: 'The IDs of users assigned to the task. When set, the `assignee_id` field will be set to the first value in this array, or `null` if empty.' priority: type: integer minimum: 0 nullable: true description: The priority of the task responses: '201': description: Created task. content: application/json: schema: title: AddTaskResponse type: object properties: success: type: boolean description: If the response is successful or not data: type: object properties: id: type: integer description: The ID of the task title: type: string minLength: 1 maxLength: 255 description: The title of the task creator_id: type: integer description: The ID of the user who created the task description: type: string nullable: true description: The description of the task project_id: type: integer description: The ID of the project this task is associated with is_done: type: boolean description: Whether the task is done or not. is_milestone: type: boolean description: Whether the task is a milestone or not. due_date: type: string format: date nullable: true description: 'The due date of the task. Format: YYYY-MM-DD.' start_date: type: string format: date nullable: true description: 'The start date of the task. Format: YYYY-MM-DD.' parent_task_id: type: integer nullable: true description: 'The ID of the parent task. If `null`, the task is a root-level task.' assignee_ids: type: array items: type: integer description: The IDs of users assigned to the task priority: type: integer minimum: 0 nullable: true description: The priority of the task add_time: type: string description: The creation date and time of the task in ISO 8601 format update_time: type: string description: The update date and time of the task in ISO 8601 format marked_as_done_time: type: string nullable: true description: The date and time the task was marked as done in ISO 8601 format additional_data: type: object nullable: true example: null example: success: true data: id: 1 title: Task 1 creator_id: 2 description: Task description project_id: 1 is_done: false is_milestone: false due_date: '2026-10-11' start_date: '2026-09-01' parent_task_id: null assignee_ids: - 2 - 3 priority: null add_time: '2026-09-14T08:14:40.000Z' update_time: '2026-09-14T08:14:40.000Z' marked_as_done_time: null additional_data: null '/tasks/{id}': get: summary: Get details of a task description: Returns the details of a specific task. x-token-cost: 1 operationId: getTask tags: - Tasks - Beta security: - api_key: [] - oauth2: - 'projects:read' - 'projects:full' parameters: - in: path name: id description: The ID of the task required: true schema: type: integer responses: '200': description: Get a task. content: application/json: schema: title: GetTaskResponse type: object properties: success: type: boolean description: If the response is successful or not data: type: object properties: id: type: integer description: The ID of the task title: type: string minLength: 1 maxLength: 255 description: The title of the task creator_id: type: integer description: The ID of the user who created the task description: type: string nullable: true description: The description of the task project_id: type: integer description: The ID of the project this task is associated with is_done: type: boolean description: Whether the task is done or not. is_milestone: type: boolean description: Whether the task is a milestone or not. due_date: type: string format: date nullable: true description: 'The due date of the task. Format: YYYY-MM-DD.' start_date: type: string format: date nullable: true description: 'The start date of the task. Format: YYYY-MM-DD.' parent_task_id: type: integer nullable: true description: 'The ID of the parent task. If `null`, the task is a root-level task.' assignee_ids: type: array items: type: integer description: The IDs of users assigned to the task priority: type: integer minimum: 0 nullable: true description: The priority of the task add_time: type: string description: The creation date and time of the task in ISO 8601 format update_time: type: string description: The update date and time of the task in ISO 8601 format marked_as_done_time: type: string nullable: true description: The date and time the task was marked as done in ISO 8601 format additional_data: type: object nullable: true example: null example: success: true data: id: 1 title: Task 1 creator_id: 2 description: Task description project_id: 1 is_done: false is_milestone: false due_date: '2026-10-11' start_date: '2026-09-01' parent_task_id: null assignee_ids: - 2 - 3 priority: null add_time: '2026-09-14T08:14:40.000Z' update_time: '2026-09-14T08:14:40.000Z' marked_as_done_time: null additional_data: null patch: summary: Update a task description: Updates a task. x-token-cost: 5 operationId: updateTask tags: - Tasks - Beta security: - api_key: [] - oauth2: - 'projects:full' parameters: - in: path name: id description: The ID of the task required: true schema: type: integer requestBody: content: application/json: schema: title: updateTaskRequest type: object properties: title: type: string minLength: 1 maxLength: 255 description: The title of the task project_id: type: integer description: The ID of the project this task is associated with parent_task_id: type: integer nullable: true description: The ID of the parent task. Cannot be the ID of a task that is already a subtask. description: type: string nullable: true description: The description of the task done: type: integer enum: - 0 - 1 description: 'Whether the task is done or not. `0` = Not done, `1` = Done.' milestone: type: integer enum: - 0 - 1 description: 'Whether the task is a milestone or not. `0` = Not a milestone, `1` = Milestone.' due_date: type: string format: date nullable: true description: 'The due date of the task. Format: YYYY-MM-DD.' start_date: type: string format: date nullable: true description: 'The start date of the task. Format: YYYY-MM-DD.' assignee_id: type: integer nullable: true description: 'The ID of the user assigned to the task. When set, the `assignee_ids` field will be overwritten with this value.' assignee_ids: type: array items: type: integer maxItems: 10 description: 'The IDs of users assigned to the task. When set, the `assignee_id` field will be set to the first value in this array, or `null` if empty.' priority: type: integer minimum: 0 nullable: true description: The priority of the task responses: '200': description: Updated task. content: application/json: schema: title: UpdateTaskResponse type: object properties: success: type: boolean description: If the response is successful or not data: type: object properties: id: type: integer description: The ID of the task title: type: string minLength: 1 maxLength: 255 description: The title of the task creator_id: type: integer description: The ID of the user who created the task description: type: string nullable: true description: The description of the task project_id: type: integer description: The ID of the project this task is associated with is_done: type: boolean description: Whether the task is done or not. is_milestone: type: boolean description: Whether the task is a milestone or not. due_date: type: string format: date nullable: true description: 'The due date of the task. Format: YYYY-MM-DD.' start_date: type: string format: date nullable: true description: 'The start date of the task. Format: YYYY-MM-DD.' parent_task_id: type: integer nullable: true description: 'The ID of the parent task. If `null`, the task is a root-level task.' assignee_ids: type: array items: type: integer description: The IDs of users assigned to the task priority: type: integer minimum: 0 nullable: true description: The priority of the task add_time: type: string description: The creation date and time of the task in ISO 8601 format update_time: type: string description: The update date and time of the task in ISO 8601 format marked_as_done_time: type: string nullable: true description: The date and time the task was marked as done in ISO 8601 format additional_data: type: object nullable: true example: null example: success: true data: id: 1 title: Task 1 creator_id: 2 description: Task description project_id: 1 is_done: false is_milestone: false due_date: '2026-10-11' start_date: '2026-09-01' parent_task_id: null assignee_ids: - 2 - 3 priority: null add_time: '2026-09-14T08:14:40.000Z' update_time: '2026-09-14T08:14:40.000Z' marked_as_done_time: null additional_data: null delete: summary: Delete a task description: 'Marks a task as deleted. If the task has subtasks, those will also be deleted.' x-token-cost: 3 operationId: deleteTask tags: - Tasks - Beta security: - api_key: [] - oauth2: - 'projects:full' parameters: - in: path name: id description: The ID of the task required: true schema: type: integer responses: '200': description: Deleted task. content: application/json: schema: title: DeleteTaskResponse type: object properties: success: type: boolean description: If the response is successful or not data: type: object properties: id: type: integer description: The ID of the deleted task additional_data: type: object nullable: true example: null example: success: true data: id: 1 additional_data: null /boards: get: summary: Get all project boards description: Returns all active project boards. x-token-cost: 10 operationId: getProjectsBoards tags: - ProjectBoards - Beta security: - api_key: [] - oauth2: - 'projects:read' - 'projects:full' responses: '200': description: Get all project boards content: application/json: schema: title: GetProjectBoardsResponse type: object properties: success: type: boolean description: If the response is successful or not data: type: array description: The array of project boards items: type: object properties: id: type: integer description: The ID of the project board name: type: string description: The name of the project board order_nr: type: integer description: The order of the board add_time: type: string description: The creation date and time of the board in ISO 8601 format update_time: type: string description: The update date and time of the board in ISO 8601 format additional_data: type: object nullable: true example: success: true data: - id: 1 name: Project Board order_nr: 1 add_time: '2024-01-01T00:00:00.000Z' update_time: '2024-01-01T00:00:00.000Z' additional_data: null post: summary: Add a project board description: Adds a new project board. x-token-cost: 5 operationId: addProjectBoard tags: - ProjectBoards - Beta security: - api_key: [] - oauth2: - 'projects:full' requestBody: required: true content: application/json: schema: title: addProjectBoardRequest required: - name type: object properties: name: type: string description: The name of the project board order_nr: type: integer minimum: 1 description: The order of the board. Must be between 1 and the total number of boards + 1. responses: '200': description: Add a project board content: application/json: schema: title: UpsertProjectBoardResponse type: object properties: success: type: boolean description: If the response is successful or not data: type: object properties: id: type: integer description: The ID of the project board name: type: string description: The name of the project board order_nr: type: integer description: The order of the board add_time: type: string description: The creation date and time of the board in ISO 8601 format update_time: type: string description: The update date and time of the board in ISO 8601 format example: success: true data: id: 1 name: Project Board order_nr: 1 add_time: '2024-01-01T00:00:00.000Z' update_time: '2024-01-01T00:00:00.000Z' '/boards/{id}': get: summary: Get details of a project board description: Returns the details of a specific project board. x-token-cost: 10 operationId: getProjectsBoard tags: - ProjectBoards - Beta security: - api_key: [] - oauth2: - 'projects:read' - 'projects:full' parameters: - in: path name: id description: The ID of the project board required: true schema: type: integer responses: '200': description: Get a project board content: application/json: schema: title: UpsertProjectBoardResponse type: object properties: success: type: boolean description: If the response is successful or not data: type: object properties: id: type: integer description: The ID of the project board name: type: string description: The name of the project board order_nr: type: integer description: The order of the board add_time: type: string description: The creation date and time of the board in ISO 8601 format update_time: type: string description: The update date and time of the board in ISO 8601 format example: success: true data: id: 1 name: Project Board order_nr: 1 add_time: '2024-01-01T00:00:00.000Z' update_time: '2024-01-01T00:00:00.000Z' patch: summary: Update a project board description: Updates the properties of a project board. x-token-cost: 5 operationId: updateProjectBoard tags: - ProjectBoards - Beta security: - api_key: [] - oauth2: - 'projects:full' parameters: - in: path name: id description: The ID of the project board required: true schema: type: integer requestBody: content: application/json: schema: title: updateProjectBoardRequest type: object properties: name: type: string description: The name of the project board order_nr: type: integer minimum: 1 description: The order of the board. Must be between 1 and the total number of boards + 1. responses: '200': description: Update a project board content: application/json: schema: title: UpsertProjectBoardResponse type: object properties: success: type: boolean description: If the response is successful or not data: type: object properties: id: type: integer description: The ID of the project board name: type: string description: The name of the project board order_nr: type: integer description: The order of the board add_time: type: string description: The creation date and time of the board in ISO 8601 format update_time: type: string description: The update date and time of the board in ISO 8601 format example: success: true data: id: 1 name: Project Board order_nr: 1 add_time: '2024-01-01T00:00:00.000Z' update_time: '2024-01-01T00:00:00.000Z' delete: summary: Delete a project board description: Marks a project board as deleted. x-token-cost: 3 operationId: deleteProjectBoard tags: - ProjectBoards - Beta security: - api_key: [] - oauth2: - 'projects:full' parameters: - in: path name: id description: The ID of the project board required: true schema: type: integer responses: '200': description: Delete a project board content: application/json: schema: title: DeleteProjectBoardResponse type: object properties: success: type: boolean description: If the response is successful or not data: type: object properties: id: type: integer description: The ID of the deleted project board example: success: true data: id: 1 /phases: get: summary: Get project phases description: Returns all active project phases under a specific board. x-token-cost: 10 operationId: getProjectsPhases tags: - ProjectPhases - Beta security: - api_key: [] - oauth2: - 'projects:read' - 'projects:full' parameters: - in: query name: board_id required: true description: The ID of the board for which phases are requested schema: type: integer example: 1 responses: '200': description: Get all project phases for a board content: application/json: schema: title: GetProjectPhasesResponse type: object properties: success: type: boolean description: If the response is successful or not data: type: array description: The array of project phases items: type: object properties: id: type: integer description: The ID of the project phase name: type: string description: The name of the project phase board_id: type: integer description: The ID of the project board this phase belongs to order_nr: type: integer description: The order of the phase within its board add_time: type: string description: The creation date and time of the phase in ISO 8601 format update_time: type: string description: The update date and time of the phase in ISO 8601 format additional_data: type: object nullable: true example: success: true data: - id: 2 name: Project Phase board_id: 1 order_nr: 1 add_time: '2024-01-01T00:00:00.000Z' update_time: '2024-01-01T00:00:00.000Z' additional_data: null post: summary: Add a project phase description: Adds a new project phase to a board. x-token-cost: 5 operationId: addProjectPhase tags: - ProjectPhases - Beta security: - api_key: [] - oauth2: - 'projects:full' requestBody: required: true content: application/json: schema: title: addProjectPhaseRequest required: - name - board_id type: object properties: name: type: string description: The name of the project phase board_id: type: integer description: The ID of the project board to add the phase to order_nr: type: integer minimum: 1 description: The order of the phase within its board. Must be between 1 and the total number of phases on the board + 1. responses: '200': description: Add a project phase content: application/json: schema: title: UpsertProjectPhaseResponse type: object properties: success: type: boolean description: If the response is successful or not data: type: object properties: id: type: integer description: The ID of the project phase name: type: string description: The name of the project phase board_id: type: integer description: The ID of the project board this phase belongs to order_nr: type: integer description: The order of the phase within its board add_time: type: string description: The creation date and time of the phase in ISO 8601 format update_time: type: string description: The update date and time of the phase in ISO 8601 format example: success: true data: id: 2 name: Project Phase board_id: 1 order_nr: 1 add_time: '2024-01-01T00:00:00.000Z' update_time: '2024-01-01T00:00:00.000Z' '/phases/{id}': get: summary: Get details of a project phase description: Returns the details of a specific project phase. x-token-cost: 10 operationId: getProjectsPhase tags: - ProjectPhases - Beta security: - api_key: [] - oauth2: - 'projects:read' - 'projects:full' parameters: - in: path name: id description: The ID of the project phase required: true schema: type: integer responses: '200': description: Get a project phase content: application/json: schema: title: UpsertProjectPhaseResponse type: object properties: success: type: boolean description: If the response is successful or not data: type: object properties: id: type: integer description: The ID of the project phase name: type: string description: The name of the project phase board_id: type: integer description: The ID of the project board this phase belongs to order_nr: type: integer description: The order of the phase within its board add_time: type: string description: The creation date and time of the phase in ISO 8601 format update_time: type: string description: The update date and time of the phase in ISO 8601 format example: success: true data: id: 2 name: Project Phase board_id: 1 order_nr: 1 add_time: '2024-01-01T00:00:00.000Z' update_time: '2024-01-01T00:00:00.000Z' patch: summary: Update a project phase description: Updates the properties of a project phase. x-token-cost: 5 operationId: updateProjectPhase tags: - ProjectPhases - Beta security: - api_key: [] - oauth2: - 'projects:full' parameters: - in: path name: id description: The ID of the project phase required: true schema: type: integer requestBody: content: application/json: schema: title: updateProjectPhaseRequest type: object properties: name: type: string description: The name of the project phase board_id: type: integer description: The ID of the project board to add the phase to order_nr: type: integer minimum: 1 description: The order of the phase within its board. Must be between 1 and the total number of phases on the board + 1. responses: '200': description: Update a project phase content: application/json: schema: title: UpsertProjectPhaseResponse type: object properties: success: type: boolean description: If the response is successful or not data: type: object properties: id: type: integer description: The ID of the project phase name: type: string description: The name of the project phase board_id: type: integer description: The ID of the project board this phase belongs to order_nr: type: integer description: The order of the phase within its board add_time: type: string description: The creation date and time of the phase in ISO 8601 format update_time: type: string description: The update date and time of the phase in ISO 8601 format example: success: true data: id: 2 name: Project Phase board_id: 1 order_nr: 1 add_time: '2024-01-01T00:00:00.000Z' update_time: '2024-01-01T00:00:00.000Z' delete: summary: Delete a project phase description: Marks a project phase as deleted. x-token-cost: 3 operationId: deleteProjectPhase tags: - ProjectPhases - Beta security: - api_key: [] - oauth2: - 'projects:full' parameters: - in: path name: id description: The ID of the project phase required: true schema: type: integer responses: '200': description: Delete a project phase content: application/json: schema: title: DeleteProjectPhaseResponse type: object properties: success: type: boolean description: If the response is successful or not data: type: object properties: id: type: integer description: The ID of the deleted project phase example: success: true data: id: 2 '/users/{id}/followers': get: summary: List followers of a user description: Lists users who are following the user. x-token-cost: 10 operationId: getUserFollowers tags: - Users security: - api_key: [] - oauth2: - 'users:read' parameters: - in: path name: id description: The ID of the user required: true schema: type: integer - in: query name: limit description: 'For pagination, the limit of entries to be returned. If not provided, 100 items will be returned. Please note that a maximum value of 500 is allowed.' schema: type: integer example: 100 - in: query name: cursor required: false schema: type: string description: 'For pagination, the marker (an opaque string value) representing the first item on the next page' responses: '200': description: List entity followers content: application/json: schema: type: object title: GetFollowersResponse allOf: - title: baseResponse type: object properties: success: type: boolean description: If the response is successful or not - type: object properties: data: type: array description: Followers array items: type: object properties: user_id: type: integer description: The ID of the user following the entity add_time: type: string description: The add time of the following additional_data: type: object description: The additional data of the list properties: next_cursor: type: string description: The first item on the next page. The value of the `next_cursor` field will be `null` if you have reached the end of the dataset and there’s no more pages to be returned. example: success: true data: - user_id: 1 add_time: '2021-01-01T00:00:00Z' additional_data: next_cursor: eyJmaWVsZCI6ImlkIiwiZmllbGRWYWx1ZSI6Nywic29ydERpcmVjdGlvbiI6ImFzYyIsImlkIjo3fQ components: schemas: ActivityItem: type: object properties: id: type: integer description: The ID of the activity subject: type: string description: The subject of the activity type: type: string description: The type of the activity owner_id: type: integer description: The ID of the user who owns the activity creator_user_id: type: integer description: The ID of the user who created the activity is_deleted: type: boolean description: Whether the activity is deleted or not add_time: type: string description: The creation date and time of the activity update_time: type: string description: The last updated date and time of the activity deal_id: type: integer description: The ID of the deal linked to the activity lead_id: type: string description: The ID of the lead linked to the activity person_id: type: integer description: The ID of the person linked to the activity org_id: type: integer description: The ID of the organization linked to the activity project_id: type: integer description: The ID of the project linked to the activity due_date: type: string description: The due date of the activity due_time: type: string description: The due time of the activity duration: type: string description: The duration of the activity busy: type: boolean description: Whether the activity marks the assignee as busy or not in their calendar done: type: boolean description: Whether the activity is marked as done or not marked_as_done_time: type: string description: The date and time when the activity was marked as done location: type: object description: Location of the activity properties: value: type: string description: The full address of the activity country: type: string description: Country of the activity admin_area_level_1: type: string description: Admin area level 1 (e.g. state) of the activity admin_area_level_2: type: string description: Admin area level 2 (e.g. county) of the activity locality: type: string description: Locality (e.g. city) of the activity sublocality: type: string description: Sublocality (e.g. neighborhood) of the activity route: type: string description: Route (e.g. street) of the activity street_number: type: string description: Street number of the activity subpremise: type: string description: Subpremise (e.g. apartment/suite number) of the activity postal_code: type: string description: Postal code of the activity participants: type: array description: The participants of the activity items: type: object properties: person_id: type: integer description: The ID of the person primary: type: boolean description: Whether the person is the primary participant or not attendees: type: array description: The attendees of the activity items: type: object properties: email: type: string description: The email address of the attendee name: type: string description: The name of the attendee status: type: string description: The status of the attendee is_organizer: type: boolean description: Whether the attendee is the organizer or not person_id: type: integer description: The ID of the person if the attendee has a person record user_id: type: integer description: The ID of the user if the attendee is a user conference_meeting_client: type: string description: The client used for the conference meeting conference_meeting_url: type: string description: The URL of the conference meeting conference_meeting_id: type: string description: The ID of the conference meeting public_description: type: string description: The public description of the activity priority: type: integer description: The priority of the activity. Mappable to a specific string using activityFields API. note: type: string description: The note of the activity Deal: type: object properties: id: type: integer description: The ID of the deal title: type: string description: The title of the deal owner_id: type: integer description: The ID of the user who owns the deal person_id: type: integer description: The ID of the person linked to the deal org_id: type: integer description: The ID of the organization linked to the deal pipeline_id: type: integer description: The ID of the pipeline associated with the deal stage_id: type: integer description: The ID of the deal stage value: type: number description: The value of the deal currency: type: string description: The currency associated with the deal add_time: type: string description: The creation date and time of the deal update_time: type: string description: The last updated date and time of the deal stage_change_time: type: string description: The last updated date and time of the deal stage is_deleted: type: boolean description: Whether the deal is deleted or not is_archived: type: boolean description: Whether the deal is archived or not status: type: string description: The status of the deal probability: type: number nullable: true description: The success probability percentage of the deal lost_reason: type: string nullable: true description: The reason for losing the deal visible_to: type: integer description: The visibility of the deal close_time: type: string nullable: true description: The date and time of closing the deal won_time: type: string description: The date and time of changing the deal status as won lost_time: type: string description: The date and time of changing the deal status as lost expected_close_date: type: string format: date description: The expected close date of the deal label_ids: type: array description: The IDs of labels assigned to the deal items: type: integer origin: type: string description: The way this Deal was created. `origin` field is set by Pipedrive when Deal is created and cannot be changed. origin_id: type: string nullable: true description: The optional ID to further distinguish the origin of the deal - e.g. Which API integration created this Deal. channel: type: integer nullable: true description: 'The ID of your Marketing channel this Deal was created from. Recognized Marketing channels can be configured in your Company settings.' channel_id: type: string nullable: true description: The optional ID to further distinguish the Marketing channel. source_lead_id: type: string format: uuid nullable: true description: The ID of the lead if the deal was converted from a lead. Only included when requested via include_fields parameter. arr: type: number nullable: true description: | Only available in Growth and above plans The Annual Recurring Revenue of the deal Null if there are no products attached to the deal mrr: type: number nullable: true description: | Only available in Growth and above plans The Monthly Recurring Revenue of the deal Null if there are no products attached to the deal acv: type: number nullable: true description: | Only available in Growth and above plans The Annual Contract Value of the deal Null if there are no products attached to the deal custom_fields: type: object additionalProperties: true description: 'An object where each key represents a custom field. All custom fields are referenced as randomly generated 40-character hashes. To clear a custom field value, set it to `null`. For multi-option fields (field type `set`), use `null` to clear the selection — sending an empty array `[]` is not supported and will result in a validation error.' FollowerItem: type: object properties: user_id: type: integer description: The ID of the user following the entity add_time: type: string description: The add time of the following OrganizationItem: type: object properties: id: type: integer description: The ID of the organization name: type: string description: The name of the organization owner_id: type: integer description: The ID of the user who owns the organization add_time: type: string description: The creation date and time of the organization update_time: type: string description: The last updated date and time of the organization is_deleted: type: boolean description: Whether the organization is deleted or not visible_to: type: integer description: The visibility of the organization address: description: The address of the organization type: object title: OrganizationItemAddress properties: value: type: string description: The full address of the organization country: type: string description: Country of the organization admin_area_level_1: type: string description: Admin area level 1 (e.g. state) of the organization admin_area_level_2: type: string description: Admin area level 2 (e.g. county) of the organization locality: type: string description: Locality (e.g. city) of the organization sublocality: type: string description: Sublocality (e.g. neighborhood) of the organization route: type: string description: Route (e.g. street) of the organization street_number: type: string description: Street number of the organization subpremise: type: string description: Subpremise (e.g. apartment/suite number) of the organization postal_code: type: string description: Postal code of the organization label_ids: type: array description: The IDs of labels assigned to the organization items: type: integer custom_fields: type: object additionalProperties: true description: 'An object where each key represents a custom field. All custom fields are referenced as randomly generated 40-character hashes. To clear a custom field value, set it to `null`. For multi-option fields (field type `set`), use `null` to clear the selection — sending an empty array `[]` is not supported and will result in a validation error.' Person: type: object properties: id: type: integer description: The ID of the person name: type: string description: The name of the person first_name: type: string description: The first name of the person last_name: type: string description: The last name of the person owner_id: type: integer description: The ID of the user who owns the person org_id: type: integer description: The ID of the organization linked to the person add_time: type: string description: The creation date and time of the person update_time: type: string description: The last updated date and time of the person emails: type: array description: The emails of the person items: type: object properties: value: type: string description: The email address of the person primary: type: boolean description: Whether the email is primary or not label: type: string description: The email address classification label phones: type: array description: The phones of the person items: type: object properties: value: type: string description: The phone number of the person primary: type: boolean description: Whether the phone number is primary or not label: type: string description: The phone number classification label is_deleted: type: boolean description: Whether the person is deleted or not visible_to: type: integer description: The visibility of the person label_ids: type: array description: The IDs of labels assigned to the person items: type: integer picture_id: type: integer description: The ID of the picture associated with the person postal_address: type: object description: 'Postal address of the person, included if contact sync is enabled for the company' properties: value: type: string description: The full address of the person country: type: string description: Country of the person admin_area_level_1: type: string description: Admin area level 1 (e.g. state) of the person admin_area_level_2: type: string description: Admin area level 2 (e.g. county) of the person locality: type: string description: Locality (e.g. city) of the person sublocality: type: string description: Sublocality (e.g. neighborhood) of the person route: type: string description: Route (e.g. street) of the person street_number: type: string description: Street number of the person subpremise: type: string description: Subpremise (e.g. apartment/suite number) of the person postal_code: type: string description: Postal code of the person notes: type: string description: 'Contact sync notes of the person, maximum 10 000 characters, included if contact sync is enabled for the company' im: type: array description: 'The instant messaging accounts of the person, included if contact sync is enabled for the company' items: type: object properties: value: type: string description: The instant messaging account of the person primary: type: boolean description: Whether the instant messaging account is primary or not label: type: string description: The instant messaging account classification label birthday: type: string description: 'The birthday of the person, included if contact sync is enabled for the company' job_title: type: string description: 'The job title of the person, included if contact sync is enabled for the company' custom_fields: type: object additionalProperties: true description: 'An object where each key represents a custom field. All custom fields are referenced as randomly generated 40-character hashes. To clear a custom field value, set it to `null`. For multi-option fields (field type `set`), use `null` to clear the selection — sending an empty array `[]` is not supported and will result in a validation error.' securitySchemes: basic_authentication: type: http scheme: basic description: 'Base 64 encoded string containing the `client_id` and `client_secret` values. The header value should be `Basic `.' api_key: type: apiKey name: x-api-token in: header oauth2: type: oauth2 description: 'For more information, see https://pipedrive.readme.io/docs/marketplace-oauth-authorization' flows: authorizationCode: authorizationUrl: 'https://oauth.pipedrive.com/oauth/authorize' tokenUrl: 'https://oauth.pipedrive.com/oauth/token' refreshUrl: 'https://oauth.pipedrive.com/oauth/token' scopes: base: Read settings of the authorized user and currencies in an account 'deals:read': 'Read most of the data about deals and related entities - deal fields, products, followers, participants; all notes, files, filters, pipelines, stages, and statistics. Does not include access to activities (except the last and next activity related to a deal)' 'deals:full': 'Create, read, update and delete deals, its participants and followers; all files, notes, and filters. It also includes read access to deal fields, pipelines, stages, and statistics. Does not include access to activities (except the last and next activity related to a deal)' 'mail:read': Read mail threads and messages 'mail:full': 'Read, update and delete mail threads. Also grants read access to mail messages' 'activities:read': 'Read activities, its fields and types; all files and filters' 'activities:full': 'Create, read, update and delete activities and all files and filters. Also includes read access to activity fields and types' 'contacts:read': 'Read the data about persons and organizations, their related fields and followers; also all notes, files, filters' 'contacts:full': 'Create, read, update and delete persons and organizations and their followers; all notes, files, filters. Also grants read access to contacts-related fields' 'products:read': 'Read products, its fields, files, followers and products connected to a deal' 'products:full': 'Create, read, update and delete products and its fields; add products to deals' 'projects:read': 'Read projects and its fields, tasks and project templates' 'projects:full': 'Create, read, update and delete projects and its fields; add projects templates and project related tasks' 'users:read': 'Read data about users (people with access to a Pipedrive account), their permissions, roles and followers' 'recents:read': 'Read all recent changes occurred in an account. Includes data about activities, activity types, deals, files, filters, notes, persons, organizations, pipelines, stages, products and users' 'search:read': 'Search across the account for deals, persons, organizations, files and products, and see details about the returned results' admin: 'Allows to do many things that an administrator can do in a Pipedrive company account - create, read, update and delete pipelines and its stages; deal, person and organization fields; activity types; users and permissions, etc. It also allows the app to create webhooks and fetch and delete webhooks that are created by the app' 'leads:read': Read data about leads and lead labels 'leads:full': 'Create, read, update and delete leads and lead labels' phone-integration: 'Enables advanced call integration features like logging call duration and other metadata, and play call recordings inside Pipedrive' 'goals:read': Read data on all goals 'goals:full': 'Create, read, update and delete goals' video-calls: Allows application to register as a video call integration provider and create conference links messengers-integration: Allows application to register as a messengers integration provider and allows them to deliver incoming messages and their statuses 'deal-fields:full': 'Create, read, update and delete deal fields' 'product-fields:full': 'Create, read, update and delete product fields' 'contact-fields:full': 'Create, read, update and delete person and organization fields' 'project-fields:full': 'Create, read, update and delete project fields'