> ## Documentation Index
> Fetch the complete documentation index at: https://developers.hubspot.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

---
id: 9a18ab43-6128-41ed-929f-0f58e7875b70
---

# CRM API | Services

> Use the services API to manage services in the HubSpot CRM.

export const ScopesList = ({scopes = [], description = "This API requires one of the following scopes:"}) => {
  if (!scopes || scopes.length === 0) {
    return null;
  }
  const sortedScopes = scopes.sort((a, b) => a.localeCompare(b));
  return <div>
      <div className="text-sm mb-2">{description}</div>
      <div>
        {sortedScopes.map((scope, index) => <div key={index}>
            <code>
              <span className="text-xs">{scope}</span>
            </code>
          </div>)}
      </div>
    </div>;
};

<Accordion title="Scope requirements">
  <ScopesList
    scopes={[
  'crm.objects.services.read',
  'crm.objects.services.write'
]}
  />
</Accordion>

In HubSpot, services store information about offerings provided to customers, such as onboarding and consulting, repairs and maintenance, and personal care. The services endpoints allow you to create and manage service records in your HubSpot account, as well as sync service data between HubSpot and other systems.

The service object must be [activated in the HubSpot account](https://knowledge.hubspot.com/data-management/use-the-data-model-builder#activate-or-deactivate-an-object) to manage service records. Learn more about objects, records, properties, and associations APIs in the [Understanding the CRM](/guides/crm/understanding-the-crm) guide.

## Create services

To create new services:

* To create one service, make a `POST` request to `/crm/objects/2026-03/services`.
* To create multiple services, make a `POST` request to `/crm/objects/2026-03/services/batch/create`.

In your request, include your service data in a `properties` object. You can also add an `associations` object to associate your new service with existing records (e.g., contacts, companies), or activities (e.g., meetings, notes).

<Info>
  For batch create actions, you can enable multi-status errors which tell you which records were successfully created and which were not. Learn more about [setting up multi-status error handling](/api-reference/error-handling#multi-status-errors).
</Info>

### Create services with property values

When creating a service, include service properties to store the service's details.

For example, to create a new service, your request may look similar to the following:

```json theme={null}
{
  "properties": {
    "hs_name": "Premium Onboarding",
    "hs_pipeline_stage": "intro_meeting_scheduled",
    "hs_pipeline": "onboarding",
    "hs_target_end_date": "2026-12-01T14:30:00"
  }
}
```

To view all available service properties in your account, make a `GET` request to `/crm/properties/2026-03/services`. Learn more about the [properties API](/api-reference/latest/crm/properties/guide).

### Create services with associations

When creating a new service, you can also associate the service with [existing records](https://knowledge.hubspot.com/records/associate-records) or [activities](https://knowledge.hubspot.com/records/associate-activities-with-records) by including an `associations` array.

For example, to associate a new service with an existing contact, your request would look like the following:

```json theme={null}
{
  "properties": {
    "hs_name": "Premium Onboarding",
    "hs_pipeline_stage": "intro_meeting_scheduled",
    "hs_pipeline": "onboarding",
    "hs_target_end_date": "2026-12-01T14:30:00"
  },
  "associations": [
    {
      "to": {
        "id": "123456"
      },
      "types": [
        {
          "associationCategory": "HUBSPOT_DEFINED",
          "associationTypeId": 578
        }
      ]
    }
  ]
}
```

| Parameter | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| :-------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `to`      | The record or activity you want to associate with the service, specified by its unique `id` value.                                                                                                                                                                                                                                                                                                                                                                                        |
| `types`   | The type of the association between the service and the record/activity. Include the `associationCategory` and `associationTypeId`. Default association type IDs are listed on the [associations API guide](/api-reference/latest/crm/associations/associate-records/guide#association-type-id-values), or you can retrieve the value for custom association types via the [associations API](/api-reference/latest/crm/associations/associate-records/guide#retrieve-association-types). |

## Retrieve services

You can retrieve services individually or in batches. Include the following query parameters in your request URLs to retrieve certain data.

| Parameter               | Description                                                                                                                                                                                                                                                 |
| :---------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `properties`            | A comma-separated list of the properties to be returned in the response. If a requested property isn't defined, it won't be included in the response. If a requested property is defined but a service doesn't have a value, it will be returned as `null`. |
| `propertiesWithHistory` | A comma-separated list of the current and historical properties to be returned in the response.                                                                                                                                                             |
| `associations`          | Supported when retrieving an individual service or all services, a comma-separated list of objects to retrieve associated IDs for. Learn more about the [associations API](/api-reference/latest/crm/associations/associate-records/guide).                 |

### Retrieve an individual service

To retrieve an individual service by its record ID, make a `GET` request to `/crm/objects/2026-03/services/{serviceId}`.

### Retrieve all services

To request a list of all services, make a `GET` request to `/crm/objects/2026-03/services`.

You can retrieve up to 100 services in one request.

* To retrieve a specific amount under 100, add a value to the `limit` parameter. For example, `?limit=50`.
* To paginate through results, include the `after` parameter with the `after` value returned from the previous request.

### Retrieve a batch of services

To retrieve services in batches, make a `POST` request to `/crm/objects/2026-03/services/batch/read`. Include the `id` values of the services you want to retrieve.

<Warning>
  **Please note:** the batch endpoint cannot retrieve associations. To view associations for a specific batch of services, retrieve the services' `id` values first, then include them in a request to the batch read associations API endpoint. Learn how to retrieve associations with the [associations API](/api-reference/latest/crm/associations/associate-records/guide).
</Warning>

For example, to retrieve a batch of services by their record ID values:

```json theme={null}
{
  "properties": ["hs_name", "hs_pipeline_stage", "hs_pipeline", "hs_target_end_date"],
  "inputs": [
    {
      "id": "1234567"
    },
    {
      "id": "987456"
    }
  ]
}
```

## Update services

You can update services individually or in batches.

### Update an individual service

To update an individual service by its record ID, make a `PATCH` request to `/crm/objects/2026-03/services/{serviceId}`, and include the data you want to update.

For example:

```json theme={null}
{
  "properties": {
    "hs_target_end_date": "2026-12-15T14:30:00"
  }
}
```

### Update a batch of services

To update multiple services, make a `POST` request to `/crm/objects/2026-03/services/batch/update`. In your request body, include each service's record ID as the `id` and include the properties you want to update.

For example:

```json theme={null}
{
  "inputs": [
    {
      "id": "123456789",
      "properties": {
        "hs_target_end_date": "2026-12-15T14:30:00"
      }
    },
    {
      "id": "56789123",
      "properties": {
        "hs_target_end_date": "2027-01-05T14:30:00"
      }
    }
  ]
}
```

## Upsert services

You can batch create and update services at the same time using the upsert endpoint. Following the request, if the services already exist, they'll be updated; if they don't exist, they'll be created.

To upsert services, make a `POST` request to `/crm/objects/2026-03/services/batch/upsert`.

## Associate existing services with records or activities

To associate a service with other CRM records or an activity, make a `PUT` request to `/crm/objects/2026-03/services/{serviceId}/associations/{toObjectType}/{toObjectId}/{associationTypeId}`.

<Info>
  To retrieve the `associationTypeId` value, refer to the [list of default values](/api-reference/latest/crm/associations/associate-records/guide#association-type-id-values), or make a `GET` request to `/crm/associations/2026-03/{fromObjectType}/{toObjectType}/labels`.
</Info>

Learn more about the [associations API](/api-reference/latest/crm/associations/associate-records/guide).

## Delete services

You can delete services individually or in batches, which will add the service to the recycling bin in HubSpot. You can later [restore the record within HubSpot](https://knowledge.hubspot.com/records/restore-deleted-records).

* To delete an individual service, make a `DELETE` request to `/crm/objects/2026-03/services/{serviceId}`.
* To delete services in batches, make a `POST` request to `/crm/objects/2026-03/services/batch/archive`.
