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

# Shipping methods

<Warning>
  This page applies to v2 of the Sendcloud API and is no longer maintained. To learn more about switching to API v3,
  read our [migration guide](/docs/getting-started/migration-guidelines-for-api-v3#parcels/shipments).
</Warning>

Sendcloud partners with [160+ international carriers](https://www.sendcloud.com/how-it-works) to offer a wide variety of flexible **shipping methods**. Some methods are only available when you [connect a direct carrier contract](/docs/getting-started/carrier-contracts), while others can be [enabled in your Sendcloud account](/docs/getting-started/), so you can start shipping with them straight away.

This article serves as a guide on how to make an API call to retrieve a list of available shipping methods. This will allow you to find the `id` for a method and use it to announce a parcel. This `id` is the unique identifier which you need to obtain before you can perform the following activities via the API:

1. [Create a shipping label](/docs/archive/shipping/create-a-parcel): before you can create a shipping label, you first need to specify a shipping method `id` in your request to the [Create a parcel or parcels](/api/v2/parcels/create-a-parcel-or-parcels) or [Update a parcel](/api/v2/parcels/update-a-parcel) endpoints. The parcel will then be announced with the relevant carrier, and the label can be downloaded.
2. [Retrieve shipping rates](/docs/shipping/shipping-rates/): you can check the rates for a specific shipping method by providing the method `id` in your request to the [Retrieve a shipping price](/api/v2/shipping-prices/retrieve-a-shipping-price) endpoint.
3. [Create a return](/docs/returns/return-portal/): you need to specify the `id` for an appropriate return shipping method in order to announce a return parcel.

<Warning>Note: Shipping method `id`s are volatile, and should not be cached for more than an hour.</Warning>

## Retrieve shipping methods

To retrieve a list of shipping methods which can be used to ship a parcel, you need to make a `GET` request to the [Retrieve a list of shipping methods](/api/v2/shipping-methods/retrieve-a-list-of-shipping-methods) endpoint.

The shipping methods that will be retrieved appear based on the following factors:

1. The carriers you have enabled in [your Sendcloud account](/docs/getting-started/);
2. (Optional) The direct [carrier contracts](/docs/getting-started/carrier-contracts/) you have connected; and,
3. Your [sender address](/docs/getting-started/sender-addresses/): if you don't specify a `sender_address` id in the query parameters, then your default sender address will be used. This may affect which shipping methods you can see in the response, as some methods and carriers only operate in certain locations.
   * For example, if your default sender address is in the Netherlands, you will not see shipping methods that only operate from France. To see shipping methods available for shipping from France, you will need to specify a French `sender_address` service\_point\_id in the request.

```http Request method and URL theme={null}
GET https://panel.sendcloud.sc/api/v2/shipping_methods?sender_address=123456
```

### Notes on the shipping methods response

* The shipping method `id` is a top-level field in the response e.g.
  ```json Response body theme={null}
  [
    {
      "id": 123,
      "name": "Example shipping method"
      // ... other fields
    }
  ]
  ```
* Prices for each method are displayed under the `countries` object. Please note that rates will differ depending on your current subscription plan.

<Info>
  **Tip:** Once you're familiar with making API calls to retrieve shipping methods, you may want to filter for shipping
  methods based on their added-value services, known as [shipping
  functionalities](/api/v2/shipping-products/retrieve-a-list-of-shipping-functionalities). An example of this would be
  the ability to only retrieve shipping methods which require a "Signature on receipt". This is possible via the
  [Shipping products](/api/v2/shipping-products/retrieve-a-list-of-shipping-products) endpoint.
</Info>

## Advanced options

### Service point shipping methods

If you want to ship a parcel to a service point, you need to use an applicable service point shipping method.

You can filter the list of results to only display methods which can be used for service point delivery by including a `service_point_id` in the query parameters of your request.

```http Request method and URL theme={null}
GET https://panel.sendcloud.sc/api/v2/shipping_methods?service_point_id=12345678
```

You can obtain a `service_point_id` using the [Retrieve a list of service points](/api/v2/service-points/retrieve-a-list-of-service-points) endpoint.

### Return shipping methods

Return methods are treated differently from methods for outgoing parcels. If you want to only show shipping methods which apply to return parcels, include the argument `is_return=true` in the query parameters of your request.

```http Request method and URL theme={null}
GET https://panel.sendcloud.sc/api/v2/shipping_methods?is_return=true
```

<Note>
  For a more refined way to retrieve return methods, you can refer to the [Returns API](/docs/returns/return-portal/)
  endpoints to filter for shipping products which match a given set of parcel characteristics, such as ship from
  country, ship to country, parcel weight and parcel dimensions.
</Note>

## Troubleshooting: "Invalid shipment id" error

If you try to use the [Create a parcel or parcels](/api/v2/parcels/create-a-parcel-or-parcels) endpoint and receive the error message “Invalid shipment id”, this could be because you're trying to use a shipping method which isn't applicable for the destination address.

For example, if you need to ship a parcel internationally, but the specified shipping method only supports national (domestic) delivery, then you would need to lookup a new `id` for a supporting method and change the request.
