openapi: 3.0.1
info:
title: Pipedrive API v1 Activities Projects API
version: 1.0.0
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.
'
servers:
- url: https://api.pipedrive.com/v1
tags:
- name: Projects
description: 'Projects represent ongoing, completed or canceled projects attached to an organization, person or to deals. Each project has an owner and must be placed in a phase. Each project 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.
'
paths:
/projects:
get:
summary: Get all projects
description: Returns all projects. This is a cursor-paginated endpoint. For more information, please refer to our documentation on pagination.
x-token-cost: 20
operationId: getProjects
tags:
- Projects
security:
- api_key: []
- oauth2:
- projects:read
- projects:full
parameters:
- in: query
name: cursor
required: false
description: For pagination, the marker (an opaque string value) representing the first item on the next page
schema:
type: string
- in: query
name: limit
required: false
description: For pagination, the limit of entries to be returned. If not provided, 100 items will be returned.
schema:
type: integer
example: 100
- in: query
name: filter_id
required: false
schema:
type: integer
description: The ID of the filter to use
- in: query
name: status
required: false
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.
schema:
type: string
example: open,completed
- in: query
name: phase_id
required: false
schema:
type: integer
description: If supplied, only projects in specified phase are returned
- in: query
name: include_archived
required: false
schema:
type: boolean
description: If supplied with `true` then archived projects are also included in the response. By default only not archived projects are returned.
responses:
'200':
description: A list of projects.
content:
application/json:
schema:
title: GetProjectsResponse
type: object
properties:
success:
type: boolean
data:
type: array
items:
title: projectResponseObject
allOf:
- type: object
title: ProjectId
properties:
id:
type: integer
description: The ID of the project, generated when the task was created
- title: Project
type: object
allOf:
- type: object
properties:
title:
description: The title of the project
type: string
- type: object
properties:
board_id:
description: The ID of the board this project is associated with
type: number
phase_id:
description: The ID of the phase this project is associated with
type: number
description:
description: The description of the project
type: string
status:
description: The status of the project
type: string
owner_id:
description: The ID of a project owner
type: number
start_date:
description: 'The start date of the project. Format: YYYY-MM-DD.'
type: string
format: date
end_date:
description: 'The end date of the project. Format: YYYY-MM-DD.'
type: string
format: date
deal_ids:
description: An array of IDs of the deals this project is associated with
type: array
items:
type: integer
org_id:
description: The ID of the organization this project is associated with
type: number
person_id:
description: The ID of the person this project is associated with
type: number
labels:
description: An array of IDs of the labels this project has
type: array
items:
type: integer
- type: object
properties:
add_time:
type: string
description: 'The creation date and time of the project in UTC. Format: YYYY-MM-DD HH:MM:SS.'
update_time:
type: string
description: 'The update date and time of the project in UTC. Format: YYYY-MM-DD HH:MM:SS.'
status_change_time:
type: string
description: 'The status changed date and time of the project in UTC. Format: YYYY-MM-DD HH:MM:SS.'
archive_time:
type: string
description: 'The archived date and time of the project in UTC. Format: YYYY-MM-DD HH:MM:SS. If not archived then ''null''.'
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: 8
title: Project
description: Project Description
status: open
status_change_time: '2023-09-12 11:12:18.110'
start_date: '2023-09-18'
end_date: '2024-03-04'
owner_id: 19
add_time: '2023-09-12 11:12:18.110'
update_time: '2023-09-14 05:45:40.084'
labels:
- 13
- 14
archive_time: '2023-09-15 11:12:18.110'
deal_ids:
- 1
- 2
person_id: 2
org_id: 3
board_id: 1
phase_id: 1
additional_data:
next_cursor: eyJhY3Rpdml0aWVzIjoyN30
post:
summary: Add a project
description: Adds a new project. Note that you can supply additional custom fields along with the request that are not described here. These custom fields are different for each Pipedrive account and can be recognized by long hashes as keys.
x-token-cost: 10
operationId: addProject
tags:
- Projects
security:
- api_key: []
- oauth2:
- projects:full
requestBody:
content:
application/json:
schema:
title: addProjectRequest
allOf:
- title: requiredPostProjectParameters
type: object
required:
- title
properties:
title:
description: The title of the project
type: string
- type: object
properties:
board_id:
description: The ID of the board this project is associated with
type: number
phase_id:
description: The ID of the phase this project is associated with
type: number
description:
description: The description of the project
type: string
status:
description: The status of the project
type: string
owner_id:
description: The ID of a project owner
type: number
start_date:
description: 'The start date of the project. Format: YYYY-MM-DD.'
type: string
format: date
end_date:
description: 'The end date of the project. Format: YYYY-MM-DD.'
type: string
format: date
deal_ids:
description: An array of IDs of the deals this project is associated with
type: array
items:
type: integer
org_id:
description: The ID of the organization this project is associated with
type: number
person_id:
description: The ID of the person this project is associated with
type: number
labels:
description: An array of IDs of the labels this project has
type: array
items:
type: integer
- type: object
properties:
template_id:
description: The ID of the template the project will be based on
type: number
responses:
'201':
description: Created project.
content:
application/json:
schema:
title: AddProjectResponse
type: object
properties:
success:
type: boolean
data:
title: projectResponseObject
allOf:
- type: object
title: ProjectId
properties:
id:
type: integer
description: The ID of the project, generated when the task was created
- title: Project
type: object
allOf:
- type: object
properties:
title:
description: The title of the project
type: string
- type: object
properties:
board_id:
description: The ID of the board this project is associated with
type: number
phase_id:
description: The ID of the phase this project is associated with
type: number
description:
description: The description of the project
type: string
status:
description: The status of the project
type: string
owner_id:
description: The ID of a project owner
type: number
start_date:
description: 'The start date of the project. Format: YYYY-MM-DD.'
type: string
format: date
end_date:
description: 'The end date of the project. Format: YYYY-MM-DD.'
type: string
format: date
deal_ids:
description: An array of IDs of the deals this project is associated with
type: array
items:
type: integer
org_id:
description: The ID of the organization this project is associated with
type: number
person_id:
description: The ID of the person this project is associated with
type: number
labels:
description: An array of IDs of the labels this project has
type: array
items:
type: integer
- type: object
properties:
add_time:
type: string
description: 'The creation date and time of the project in UTC. Format: YYYY-MM-DD HH:MM:SS.'
update_time:
type: string
description: 'The update date and time of the project in UTC. Format: YYYY-MM-DD HH:MM:SS.'
status_change_time:
type: string
description: 'The status changed date and time of the project in UTC. Format: YYYY-MM-DD HH:MM:SS.'
archive_time:
type: string
description: 'The archived date and time of the project in UTC. Format: YYYY-MM-DD HH:MM:SS. If not archived then ''null''.'
additional_data:
type: object
nullable: true
example: null
example:
success: true
data:
id: 8
title: Project
description: Project Description
status: open
status_change_time: '2023-09-12 11:12:18.110'
start_date: '2023-09-18'
end_date: '2024-03-04'
owner_id: 19
add_time: '2023-09-12 11:12:18.110'
update_time: '2023-09-14 05:45:40.084'
labels:
- 13
- 14
archive_time: '2023-09-15 11:12:18.110'
deal_ids:
- 1
- 2
person_id: 2
org_id: 3
board_id: 1
phase_id: 1
additional_data: null
/projects/{id}:
get:
summary: Get details of a project
description: Returns the details of a specific project. Also note that custom fields appear as long hashes in the resulting data. These hashes can be mapped against the `key` value of project fields.
x-token-cost: 2
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 a project.
content:
application/json:
schema:
title: GetProjectResponse
type: object
properties:
success:
type: boolean
data:
title: projectResponseObject
allOf:
- type: object
title: ProjectId
properties:
id:
type: integer
description: The ID of the project, generated when the task was created
- title: Project
type: object
allOf:
- type: object
properties:
title:
description: The title of the project
type: string
- type: object
properties:
board_id:
description: The ID of the board this project is associated with
type: number
phase_id:
description: The ID of the phase this project is associated with
type: number
description:
description: The description of the project
type: string
status:
description: The status of the project
type: string
owner_id:
description: The ID of a project owner
type: number
start_date:
description: 'The start date of the project. Format: YYYY-MM-DD.'
type: string
format: date
end_date:
description: 'The end date of the project. Format: YYYY-MM-DD.'
type: string
format: date
deal_ids:
description: An array of IDs of the deals this project is associated with
type: array
items:
type: integer
org_id:
description: The ID of the organization this project is associated with
type: number
person_id:
description: The ID of the person this project is associated with
type: number
labels:
description: An array of IDs of the labels this project has
type: array
items:
type: integer
- type: object
properties:
add_time:
type: string
description: 'The creation date and time of the project in UTC. Format: YYYY-MM-DD HH:MM:SS.'
update_time:
type: string
description: 'The update date and time of the project in UTC. Format: YYYY-MM-DD HH:MM:SS.'
status_change_time:
type: string
description: 'The status changed date and time of the project in UTC. Format: YYYY-MM-DD HH:MM:SS.'
archive_time:
type: string
description: 'The archived date and time of the project in UTC. Format: YYYY-MM-DD HH:MM:SS. If not archived then ''null''.'
additional_data:
type: object
nullable: true
example: null
example:
success: true
data:
id: 8
title: Project
description: Project Description
status: open
status_change_time: '2023-09-12 11:12:18.110'
start_date: '2023-09-18'
end_date: '2024-03-04'
owner_id: 19
add_time: '2023-09-12 11:12:18.110'
update_time: '2023-09-14 05:45:40.084'
labels:
- 13
- 14
archive_time: '2023-09-15 11:12:18.110'
deal_ids:
- 1
- 2
person_id: 2
org_id: 3
board_id: 1
phase_id: 1
additional_data: null
put:
summary: Update a project
description: Updates a project.
x-token-cost: 10
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:
title: updateProjectRequest
allOf:
- type: object
properties:
title:
description: The title of the project
type: string
- type: object
properties:
board_id:
description: The ID of the board this project is associated with
type: number
phase_id:
description: The ID of the phase this project is associated with
type: number
description:
description: The description of the project
type: string
status:
description: The status of the project
type: string
owner_id:
description: The ID of a project owner
type: number
start_date:
description: 'The start date of the project. Format: YYYY-MM-DD.'
type: string
format: date
end_date:
description: 'The end date of the project. Format: YYYY-MM-DD.'
type: string
format: date
deal_ids:
description: An array of IDs of the deals this project is associated with
type: array
items:
type: integer
org_id:
description: The ID of the organization this project is associated with
type: number
person_id:
description: The ID of the person this project is associated with
type: number
labels:
description: An array of IDs of the labels this project has
type: array
items:
type: integer
responses:
'200':
description: Updated project.
content:
application/json:
schema:
title: UpdateProjectResponse
type: object
properties:
success:
type: boolean
data:
title: projectResponseObject
allOf:
- type: object
title: ProjectId
properties:
id:
type: integer
description: The ID of the project, generated when the task was created
- title: Project
type: object
allOf:
- type: object
properties:
title:
description: The title of the project
type: string
- type: object
properties:
board_id:
description: The ID of the board this project is associated with
type: number
phase_id:
description: The ID of the phase this project is associated with
type: number
description:
description: The description of the project
type: string
status:
description: The status of the project
type: string
owner_id:
description: The ID of a project owner
type: number
start_date:
description: 'The start date of the project. Format: YYYY-MM-DD.'
type: string
format: date
end_date:
description: 'The end date of the project. Format: YYYY-MM-DD.'
type: string
format: date
deal_ids:
description: An array of IDs of the deals this project is associated with
type: array
items:
type: integer
org_id:
description: The ID of the organization this project is associated with
type: number
person_id:
description: The ID of the person this project is associated with
type: number
labels:
description: An array of IDs of the labels this project has
type: array
items:
type: integer
- type: object
properties:
add_time:
type: string
description: 'The creation date and time of the project in UTC. Format: YYYY-MM-DD HH:MM:SS.'
update_time:
type: string
description: 'The update date and time of the project in UTC. Format: YYYY-MM-DD HH:MM:SS.'
status_change_time:
type: string
description: 'The status changed date and time of the project in UTC. Format: YYYY-MM-DD HH:MM:SS.'
archive_time:
type: string
description: 'The archived date and time of the project in UTC. Format: YYYY-MM-DD HH:MM:SS. If not archived then ''null''.'
additional_data:
type: object
nullable: true
example: null
example:
success: true
data:
id: 8
title: Project
description: Project Description
status: open
status_change_time: '2023-09-12 11:12:18.110'
start_date: '2023-09-18'
end_date: '2024-03-04'
owner_id: 19
add_time: '2023-09-12 11:12:18.110'
update_time: '2023-09-14 05:45:40.084'
labels:
- 13
- 14
archive_time: '2023-09-15 11:12:18.110'
deal_ids:
- 1
- 2
person_id: 2
org_id: 3
board_id: 1
phase_id: 1
additional_data: null
delete:
summary: Delete a project
description: Marks a project as deleted.
x-token-cost: 6
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 a project.
content:
application/json:
schema:
title: DeleteProjectResponse
type: object
properties:
success:
type: boolean
data:
title: deleteProject
type: object
properties:
success:
type: boolean
description: If the request was successful or not
data:
type: object
properties:
id:
type: integer
description: The ID of the project that was deleted
additional_data:
type: object
nullable: true
example: null
example:
success: true
data:
id: 8
additional_data: null
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: {}
/projects/{id}/archive:
post:
summary: Archive a project
description: Archives a project.
x-token-cost: 10
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: Updated project.
content:
application/json:
schema:
title: UpdateProjectResponse
type: object
properties:
success:
type: boolean
data:
title: projectResponseObject
allOf:
- type: object
title: ProjectId
properties:
id:
type: integer
description: The ID of the project, generated when the task was created
- title: Project
type: object
allOf:
- type: object
properties:
title:
description: The title of the project
type: string
- type: object
properties:
board_id:
description: The ID of the board this project is associated with
type: number
phase_id:
description: The ID of the phase this project is associated with
type: number
description:
description: The description of the project
type: string
status:
description: The status of the project
type: string
owner_id:
description: The ID of a project owner
type: number
start_date:
description: 'The start date of the project. Format: YYYY-MM-DD.'
type: string
format: date
end_date:
description: 'The end date of the project. Format: YYYY-MM-DD.'
type: string
format: date
deal_ids:
description: An array of IDs of the deals this project is associated with
type: array
items:
type: integer
org_id:
description: The ID of the organization this project is associated with
type: number
person_id:
description: The ID of the person this project is associated with
type: number
labels:
description: An array of IDs of the labels this project has
type: array
items:
type: integer
- type: object
properties:
add_time:
type: string
description: 'The creation date and time of the project in UTC. Format: YYYY-MM-DD HH:MM:SS.'
update_time:
type: string
description: 'The update date and time of the project in UTC. Format: YYYY-MM-DD HH:MM:SS.'
status_change_time:
type: string
description: 'The status changed date and time of the project in UTC. Format: YYYY-MM-DD HH:MM:SS.'
archive_time:
type: string
description: 'The archived date and time of the project in UTC. Format: YYYY-MM-DD HH:MM:SS. If not archived then ''null''.'
additional_data:
type: object
nullable: true
example: null
example:
success: true
data:
id: 8
title: Project
description: Project Description
status: open
status_change_time: '2023-09-12 11:12:18.110'
start_date: '2023-09-18'
end_date: '2024-03-04'
owner_id: 19
add_time: '2023-09-12 11:12:18.110'
update_time: '2023-09-14 05:45:40.084'
labels:
- 13
- 14
archive_time: '2023-09-15 11:12:18.110'
deal_ids:
- 1
- 2
person_id: 2
org_id: 3
board_id: 1
phase_id: 1
additional_data: null
/projects/{id}/plan:
get:
summary: Returns project plan
description: Returns information about items in a project plan. Items consists of tasks and activities and are linked to specific project phase and group.
x-token-cost: 20
operationId: getProjectPlan
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 a project plan.
content:
application/json:
schema:
title: GetProjectPlanResponse
type: object
properties:
success:
type: boolean
data:
type: array
items:
type: object
properties:
item_id:
description: ID of plan item (either activity or task ID)
type: number
item_type:
description: Type of a plan item (task / activity)
type: string
phase_id:
description: The ID of the board this project is associated with. If null then plan item is not in any phase.
type: number
group_id:
description: The ID of the board this project is associated with. If null then plan item is not in any group.
type: number
additional_data:
type: object
nullable: true
example: null
example:
success: true
data:
- item_id: 1
item_type: task
phase_id: 2
group_id: 3
- item_id: 1
item_type: activity
phase_id: 2
group_id: 3
additional_data: null
/projects/{id}/plan/activities/{activityId}:
put:
summary: Update activity in project plan
description: Updates an activity phase or group in a project.
x-token-cost: 10
operationId: putProjectPlanActivity
tags:
- Projects
security:
- api_key: []
- oauth2:
- projects:full
parameters:
- in: path
name: id
description: The ID of the project
required: true
schema:
type: integer
- in: path
name: activityId
description: The ID of the activity
required: true
schema:
type: integer
requestBody:
content:
application/json:
schema:
title: projectPutPlanItemBodyObject
type: object
properties:
phase_id:
description: The ID of a phase on a project board
type: number
group_id:
description: The ID of a group on a project board
type: number
responses:
'200':
description: Updated activity in plan.
content:
application/json:
schema:
title: UpdateActivityPlanItemResponse
type: object
properties:
success:
type: boolean
data:
type: object
properties:
item_id:
description: ID of plan item (either activity or task ID)
type: number
item_type:
description: Type of a plan item (task / activity)
type: string
phase_id:
description: The ID of the board this project is associated with. If null then plan item is not in any phase.
type: number
group_id:
description: The ID of the board this project is associated with. If null then plan item is not in any group.
type: number
additional_data:
type: object
nullable: true
example: null
example:
success: true
data:
item_id: 1
item_type: activity
phase_id: 2
group_id: 3
additional_data: null
/projects/{id}/plan/tasks/{taskId}:
put:
summary: Update task in project plan
description: Updates a task phase or group in a project.
x-token-cost: 10
operationId: putProjectPlanTask
tags:
- Projects
security:
- api_key: []
- oauth2:
- projects:full
parameters:
- in: path
name: id
description: The ID of the project
required: true
schema:
type: integer
- in: path
name: taskId
description: The ID of the task
required: true
schema:
type: integer
requestBody:
content:
application/json:
schema:
title: projectPutPlanItemBodyObject
type: object
properties:
phase_id:
description: The ID of a phase on a project board
type: number
group_id:
description: The ID of a group on a project board
type: number
responses:
'200':
description: Updated task in plan.
content:
application/json:
schema:
title: UpdateTaskPlanItemResponse
type: object
properties:
success:
type: boolean
data:
type: object
properties:
item_id:
description: ID of plan item (either activity or task ID)
type: number
item_type:
description: Type of a plan item (task / activity)
type: string
phase_id:
description: The ID of the board this project is associated with. If null then plan item is not in any phase.
type: number
group_id:
description: The ID of the board this project is associated with. If null then plan item is not in any group.
type: number
additional_data:
type: object
nullable: true
example: null
example:
success: true
data:
item_id: 1
item_type: task
phase_id: 2
group_id: 3
additional_data: null
/projects/{id}/groups:
get:
summary: Returns project groups
description: Returns all active groups under a specific project.
x-token-cost: 20
operationId: getProjectGroups
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 a project groups.
content:
application/json:
schema:
title: GetProjectGroupsResponse
type: object
properties:
success:
type: boolean
data:
type: array
items:
type: object
properties:
id:
description: ID of the group
type: number
name:
description: Name of the group
type: string
order_nr:
description: Order number of the group
type: number
additional_data:
type: object
nullable: true
example: null
example:
success: true
data:
- id: 1
name: Group one
order_nr: 1
additional_data: null
/projects/{id}/tasks:
get:
summary: Returns project tasks
description: Returns tasks linked to a specific project.
x-token-cost: 20
operationId: getProjectTasks
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: A list of tasks.
content:
application/json:
schema:
title: GetTasksResponse
type: object
properties:
success:
type: boolean
data:
type: array
items:
title: TaskResponseObject
type: object
allOf:
- type: object
properties:
id:
type: integer
description: The ID of the task, generated when the task was created
- title: updateProjectRequest
type: object
allOf:
- type: object
properties:
title:
description: The title of the task
type: string
project_id:
description: The ID of the project this task is associated with
type: number
- type: object
properties:
description:
description: The description of the task
type: string
parent_task_id:
description: The ID of a parent task. Can not be ID of a task which is already a subtask.
type: number
assignee_id:
type: number
description: The ID of the user assigned to the task. When the `assignee_id` field is updated, the `assignee_ids` field value will be overwritten by the `assignee_id` field value.
assignee_ids:
type: array
items:
type: number
maxItems: 10
uniqueItems: true
description: The IDs of users assigned to the task. When the `assignee_ids` field is updated, the `assignee_id` field value will be set to the first value of the `assignee_ids` field, or `null` if the list is empty.
done:
description: Whether the task is done or not. 0 = Not done, 1 = Done.
allOf:
- title: numberBoolean
type: number
enum:
- 0
- 1
due_date:
description: 'The due date of the task. Format: YYYY-MM-DD.'
type: string
format: date
- type: object
properties:
creator_id:
type: number
description: The creator of a task
add_time:
type: string
description: 'The creation date and time of the task in UTC. Format: YYYY-MM-DD HH:MM:SS.'
update_time:
type: string
description: 'The update date and time of the task in UTC. Format: YYYY-MM-DD HH:MM:SS.'
marked_as_done_time:
type: string
description: 'The marked as done date and time of the task in UTC. Format: YYYY-MM-DD HH:MM:SS.'
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
done: 0
due_date: '2023-10-11'
parent_task_id: 2
assignee_id: 2
assignee_ids:
- 2
- 3
- 4
add_time: '2023-09-14 08:14:40.288'
update_time: '2023-09-14 08:14:40.288'
marked_as_done_time: '2023-09-22 08:14:40.288'
project_id: 1
additional_data:
next_cursor: eyJhY3Rpdml0aWVzIjoyN30
/projects/{id}/activities:
get:
summary: Returns project activities
description: Returns activities linked to a specific project.
x-token-cost: 20
operationId: getProjectActivities
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: A collection of activities
content:
application/json:
schema:
title: GetActivitiesCollectionResponse
type: object
properties:
success:
type: boolean
data:
type: array
items:
title: ActivityCollectionResponseObject
allOf:
- type: object
properties:
due_date:
description: 'The due date of the activity. Format: YYYY-MM-DD'
type: string
format: date
due_time:
description: 'The due time of the activity in UTC. Format: HH:MM'
type: string
duration:
description: 'The duration of the activity. Format: HH:MM'
type: string
deal_id:
description: The ID of the deal this activity is associated with
type: integer
lead_id:
description: The ID of the lead in the UUID format this activity is associated with
type: string
format: uuid
nullable: true
person_id:
description: The ID of the person this activity is associated with
type: integer
project_id:
description: The ID of the project this activity is associated with
type: integer
nullable: true
org_id:
description: The ID of the organization this activity is associated with
type: integer
location:
description: The address of the activity.
type: string
public_description:
description: Additional details about the activity that is synced to your external calendar. Unlike the note added to the activity, the description is publicly visible to any guests added to the activity.
type: string
- type: object
properties:
id:
type: integer
description: The ID of the activity, generated when the activity was created
done:
type: boolean
description: Whether the activity is done or not
subject:
description: The subject of the activity
type: string
type:
description: The type of the activity. This is in correlation with the `key_string` parameter of ActivityTypes.
type: string
user_id:
description: The ID of the user whom the activity is assigned to
type: integer
busy_flag:
description: Marks if the activity is set as 'Busy' or 'Free'. If the flag is set to `true`, your customers will not be able to book that time slot through any Scheduler links. The flag can also be unset. When the value of the flag is unset (`null`), the flag defaults to 'Busy' if it has a time set, and 'Free' if it is an all-day event without specified time.
type: boolean
company_id:
type: integer
description: The user's company ID
conference_meeting_client:
type: string
description: The ID of the Marketplace app, which is connected to this activity
conference_meeting_url:
type: string
description: The link to join the meeting which is associated with this activity
conference_meeting_id:
type: string
description: The meeting ID of the meeting provider (Zoom, MS Teams etc.) that is associated with this activity
add_time:
type: string
description: 'The creation date and time of the activity in UTC. Format: YYYY-MM-DD HH:MM:SS.'
marked_as_done_time:
type: string
description: 'The date and time this activity was marked as done. Format: YYYY-MM-DD HH:MM:SS.'
active_flag:
type: boolean
description: Whether the activity is active or not
update_time:
type: string
description: 'The last update date and time of the activity. Format: YYYY-MM-DD HH:MM:SS.'
update_user_id:
description: The ID of the user who was the last to update this activity
type: integer
source_timezone:
type: string
description: The timezone the activity was created in an external calendar
location_subpremise:
type: string
description: A subfield of the location field. Indicates apartment/suite number.
location_street_number:
type: string
description: A subfield of the location field. Indicates house number.
location_route:
type: string
description: A subfield of the location field. Indicates street name.
location_sublocality:
type: string
description: A subfield of the location field. Indicates district/sublocality.
location_locality:
type: string
description: A subfield of the location field. Indicates city/town/village/locality.
location_admin_area_level_1:
type: string
description: A subfield of the location field. Indicates state/county.
location_admin_area_level_2:
type: string
description: A subfield of the location field. Indicates region.
location_country:
type: string
description: A subfield of the location field. Indicates country.
location_postal_code:
type: string
description: A subfield of the location field. Indicates ZIP/postal code.
location_formatted_address:
type: string
description: A subfield of the location field. Indicates full/combined address.
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: 8
company_id: 22122
user_id: 1234
done: false
type: deadline
conference_meeting_client: 871b8bc88d3a1202
conference_meeting_url: https://pipedrive.zoom.us/link
conference_meeting_id: '17058746701'
due_date: '2022-06-09'
due_time: '10:00'
duration: 01:00
busy_flag: true
add_time: '2020-06-08 12:37:56'
marked_as_done_time: '2020-08-08 08:08:38'
subject: Deadline
public_description: This is a description
location: Mustamäe tee 3, Tallinn, Estonia
org_id: 5
person_id: 1101
deal_id: 300
lead_id: 46c3b0e1-db35-59ca-1828-4817378dff71
project_id: null
active_flag: true
update_time: '2020-08-08 12:37:56'
update_user_id: 5596
source_timezone: ''
location_subpremise: ''
location_street_number: '3'
location_route: Mustamäe tee
location_sublocality: Kristiine
location_locality: Tallinn
location_admin_area_level_1: Harju maakond
location_admin_area_level_2: ''
location_country: Estonia
location_postal_code: '10616'
location_formatted_address: Mustamäe tee 3, 10616 Tallinn, Estonia
additional_data:
next_cursor: eyJhY3Rpdml0aWVzIjoyN30
/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/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
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}/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
components:
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
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
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