---
schema_version: "1"
id: 075749653b4627a2571e2815d799aef7dfb043aae68c8d0410fd1c1acaa5c733
title: Unbundle
collection: developer
version: current
locale: en-us
portal_url: https://docs.salesforce.com/developer/current/en-us/service-cloud/field-service-dev/guides/field-service/source-files/fsl-rest-unbundle.md
canonical_url: https://developer.salesforce.com/docs/service/field-service-dev/guide/fsl-rest-unbundle.html
source_site: developer.salesforce.com
content_type: documentation
content_hash: 39b91bab5c8b5438dcab0475f59b59ea3952afef883c53da3b9ceafa8f82e33b
products:
  - Field Service Developer Guide
  - Service Cloud Developer Content
---

# Unbundle

Unbundle a bundle of service appointments. This resource accepts a bundle ID. This API is not supported in Gov Cloud. This endpoint is available in version 54.0 and later of the Salesforce API.

## Add a Remote Site

1. From Setup, in the Quick Find box, enter `Security`, and then select **Remote Site Settings**.

2. Click **New Remote Site**.

3. Enter a name.

4. For Remote Site URL, enter `https://api.salesforce.com/`

5. Save your changes.

## Syntax

**URI**: `HOST/bundleflow/api/v1.0/bundle/<ID>?initiate=manual`

Where `HOST` is a variable.

**Format**: JSON

**HTTP Method**: DELETE

**Authentication**: `Authorization: Bearer TOKEN`

Where `TOKEN` is a variable.

If the authentication token isn’t valid, a 401 HTTP status is returned.

**Headers**:

-   `request.setHeader('x-sfdc-tenant-id', 'core/prod/ORG-ID_18_Characters');`—Field Service functional domain
-   `sf_api_version`—Salesforce API version. Minimum version is 53.0.
-   `Authorization`—Authorization token.
-   `Content-Type`—File format. Valid value is `JSON`.
-   `Referer`—Org domain URL.

**Parameters**:

|Parameter|Description|
|---------|-----------|
|`ID`|Unique ID of the bundle.|

## Response Body

The response body contains these properties.

|Field|Type|Description|
|-----|----|-----------|
|`bundleId`|String|ID of the bundle. If the unbundling fails, it’s `null`.|
|`responsePayloads`|Array|Response details of unbundling the service appointments. If it’s successful, the payload is `null`. If the unbundling fails, the payload shows error details.|
|`status`|String|Status of unbundling the service appointments. Output: `FAIL`.|
|`messageCode`|Number|Error code. The error codes are listed in [Error Responses](#error-responses).|
|`message`|String|Error message.|
|`status`|String|Status of the request. Output: `SUCCESS` or `FAIL`.|
|`messageCode`|Number|Success or error code of the request. 0 means success. The error codes are listed in [Error Responses](#error-responses).|
|`message`|String|Success or error message of the request.|
|`messageAdditionalInfo`|String|More information provided by Salesforce.|

## Example: Successful Response

This example shows the output of service appointments that are unbundled successfully.

```nolang
{
   "bundleId":"08px000000NzdMXAAZ",
   "responsePayloads":null,
   "status":"SUCCESS",
   "messageCode":"NONE",
   "message":"Success"
}
```

## Example: Fail Response

This example shows the output of a request where the user entered a service appointment ID instead of a bundle ID. The request only works with bundle IDs, so the response status is `FAIL`.

```nolang
{
   "bundleId":null,
   "responsePayloads":[
      {
         "status":"FAIL",
         "messageCode":"GET_BUNDLE_INFO_FAILURE",
         "message":"Replace the service appointment with a bundle service appointment.",
         "messageParams":[
            
         ]
      }
   ],
   "status":"FAIL",
   "messageCode":"ERROR_UNBUNDLING",
   "message":"We couldn’t unbundle the service appointment.",
   "messageAdditionalInfo": ""
}
```

## Error Responses

|Code|Name|Message|
|----|----|-------|
|0|NONE|\<Service Appointment ID#>: Success.|
|1|UNSUPPORTED_VERSION|Ask your admin to check the API version, then try again.|
|2|SA_PAYLOAD_SHOULD_CONTAIN_ADD_ACTIONS_ONLY|Create bundles using add actions only.|
|3|EMPTY_BUNDLE_POLICY|Enter an ID for the bundlePolicyId.|
|4|EMPTY_BUNDLE_INITIATE|Specify manual or auto for the initiate entry.|
|5|EMPTY_BUNDLE_SERVICE_APPOINTMENT|Add a bundle service appointment.|
|6|SA_PAYLOAD_DUPLICATED_SAS|Remove duplicate service appointment IDs.|
|7|SA_IS_BUNDLE|\<Service Appointment ID#>: Is already a bundle service appointment.|
|8|SA_ALREADY_BUNDLED|\<Service Appointment ID#>: Is a bundle member service appointment in another bundle.|
|9|STATUS_FORBIDDEN|\<Service Appointment ID#>: Can’t be bundled in the current status.|
|10|SA_PAYLOAD_SHOULD_NOT_CONTAIN_MIX_ACTIONS|Send separate requests for add and remove actions.|
|11|SA_IS_NOT_BUNDLE|Select a bundle service appointment and try again.|
|12|EXCEEDED_BUNDLE_MEMBERS_LIMIT|You reached the maximum number of service appointments for this bundle. Remove some of them and try again.|
|13|SA_PAYLOAD_SHOULD_CONTAIN_ONLY_BUNDLE_MEMBERS|To remove bundle members from a bundle, include only service appointments that are bundle members.|
|14|ERROR_IN_BASIC_VALIDATIONS|We couldn’t bundle the service appointments.|
|15|ERROR_IN_LIMIT_VALIDATIONS|N/A|
|16|ERROR_IN_CRITERIA_VALIDATIONS|N/A|
|17|ERROR_IN_SERVICE_TERRITORY_VALIDATIONS|Confirm or revise the service territories of the selected service appointments. Or ask your admin for help.|
|18|ERROR_IN_RESTRICTION_VALIDATIONS|Confirm or revise the selected service appointments. Or ask your admin to check the restriction policies.|
|19|EXCEEDED_BUNDLE_DURATION_LIMIT|N/A|
|20|EMPTY_BODY|Fill in the request.|
|21|SA_IS_NOT_BUNDLED|\<Service Appointment ID#>: Can’t remove a service appointment that isn’t in the bundle.|
|22|ERROR_IN_AGGREGATION|Confirm or revise the selected service appointments. Or ask your admin to check the aggregation policies.|
|23|ERROR_IN_PROPAGATION|Confirm or revise the selected service appointments. Or ask your admin to check the propagation policies.|
|24|GET_POLICY_FAILURE|Ask your admin to check the bundle policies, then try again.|
|25|GET_CONFIG_FAILURE|Ask your admin to check the bundle config, then try again.|
|26|GET_BUNDLE_INFO_FAILURE|Try again later.|
|27|ERROR_IN_LOGIC|We couldn’t bundle the service appointments.|
|28|EMPTY_BUNDLE_MEMBERS|Add bundle member service appointments.|
|29|EMPTY_BUNDLE_PARENT_WORK_ORDER_ID|Add the work order ID for the bundle service appointment.|
|30|UNBUNDLE_REQUEST_ASSIGNED_RESOURCES_NOT_COMPATiBLE|To unbundle a scheduled bundle, send assigned resources for each service appointment.|
|31|EMPTY_OLD_VALUES|To update a bundle, send the current values.|
|32|EMPTY_NEW_VALUES|To update a bundle, send the new values.|
|33|SA_PAYLOAD_SHOULD_CONTAIN_AT_LEAST_ONE_ADD_OR_REMOVE_ACTION|To update a bundle, send at least one add or remove action.|
|34|FORBIDDEN_FIELDS_IN_POLICY_OBJECT|Confirm or revise the selected service appointments. Or ask your admin to check the field names selected in the related policies.|
|35|EMPTY_SERVICE_TERRITORY|Add a Service Territory ID.|
|36|EMPTY_START_TIME|Add the interval’s start time.|
|37|EMPTY_END_TIME|Add the interval’s end time.|
|38|ERROR_IN_BUNDLE_POLICY_RFC|Confirm or revise the selected service appointments. Or ask your admin to check the recordset filter criteria in the bundle policy.|
|39|ERROR_IN_TIME_ZONE_VALIDATION|Select service appointments that are in the same time zone. Or ask your admin for help.|
|40|ERROR_IN_LOGIC_UNBUNDLE|We couldn’t unbundle the service appointment.|
|41|ERROR_CREATING_BUNDLE|We couldn’t bundle the service appointments.|
|42|ERROR_ADDING_TO_BUNDLE|We couldn’t add the service appointment to the bundle.|
|43|ERROR_REMOVING_FROM_BUNDLE|We couldn’t remove the service appointment from the bundle.|
|44|ERROR_UNBUNDLING|We couldn’t unbundle the service appointment.|
|58|ERROR_IN_MSW_VALIDATIONS|We can’t bundle service appointments with dependencies. Remove the dependencies and try again.|
|-500|http error|Hmm… Something went wrong. Try again.|

