Last modified: November 4, 2025
In HubSpot, you can use the projects object to help you manage your team’s work in one place. You can then use the projects API to programmatically retrieve and manage projects in your account.
This guide refers to the projects object, not HubSpot projects or developer projects.
Scope requirements
To use the projects API, you’ll need to authorize one of the following scopes for your app, based on the functionality you plan on using:crm.objects.projects.read: Retrieve project data.crm.objects.projects.write: Create, manage, and delete projects.crm.schemas.projects.read: Retrieve property settings for your projects.crm.schemas.projects.write: Update property settings for projects.
crm.objects.projects.highly_sensitive.read: View Highly Sensitive Data properties and values for projects.crm.objects.projects.highly_sensitive.write: Edit Highly Sensitive Data properties and values for projects.crm.objects.projects.sensitive.read: View Sensitive Data properties and values for projects.crm.objects.projects.sensitive.write: Edit Sensitive Data properties and values for projects.
Create projects
To create a project, make aPOST request to /crm/v3/objects/projects, and include any properties for the project as fields within the properties object of your request body.
For example, the following request body would create a new project with a name of Sample Project, along with providing the required project pipeline information.
| Property | Type | Description |
|---|---|---|
hs_name | string | The name of the project. |
hs_pipeline | string | The internal ID of the project pipeline. You can find this ID by navigating to the project object settings page in your account, or by using the pipelines API. |
hs_pipeline_stage | string | The internal ID of the pipeline stage. You can find this ID by navigating to the project object settings page in your account, or by using the pipelines API. |
POST request to /crm/v3/objects/projects/batch/create, and provide the data for each project within an inputs array in the body of your request.
For example, the following request body would create two different projects, including one that specifies an association with an existing task that has an ID of 27771003477.
Retrieve project data
To retrieve existing projects, make aGET request to /crm/v3/objects/projects. To limit the entries returned in the response, you can include the limit query parameter in your request (e.g., ?limit=5 would return up to five projects). You can also retrieve a specific project using its ID by making a GET request to /crm/v3/objects/projects/{id}.
You can provide any properties you want to include in the response using the ?properties query parameter. For example, making a GET request to /crm/v3/objects/projects?properties=hs_name,hs_description would include the name and description of each project in the response.
The table below provides some common project properties:
| Property | Type | Description |
|---|---|---|
id | string | The project’s internal ID. |
hs_name | string | The project’s name. |
hs_description | string | The project’s description. |
hs_status | string | The project’s status. |
hs_type | enumeration | The project’s type. The following values are available by default but can be edited using the properties API or in your account: sales, marketing, service, internal_ops. |
hs_target_due_date | string | The date the project is due, provided as a ISO 8601 timestamp. |
hubspot_owner_id | number | The ID of the HubSpot user. |
Update project data
To update an existing project, make aPATCH request to /crm/v3/objects/projects/{projectId} using the project’s ID as the projectId path parameter, and include the data you want to update within the properties object of the request body.
For example, if you wanted to update the project name, the request body would resemble the following:
Delete projects
To delete an existing project, make aDELETE request to /crm/v3/objects/projects/{projectId} using the project’s ID as the projectId path parameter. If successful, the response will be 204 No Content.