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

# How do I choose the carrier, service level, and signature confirmation on an order?

> Send a shipping object with carrier, service_level, and signature_confirmation on POST /orders or PATCH /orders/{order_id}. Use a generic service level to let Blend pick the carrier, or name both.

Pass a `shipping` object when you create or update an order. You can specify a `carrier` (`ups`, `usps`, `fedex`), a `service_level`, a `signature_confirmation` (`standard` or `adult`), or any combination. Give a generic service level on its own — `ground`, `2_day`, `next_day` — and Blend selects the most appropriate carrier to meet it.

```json theme={null}
{
  "patient": { "external_id": "clinic-pt-4471" },
  "shipping": {
    "carrier": "usps",
    "service_level": "usps_ground_advantage",
    "signature_confirmation": "adult"
  },
  "products": { "prescription": [{ "product_code": "HC-RAPA31", "quantity": 1 }] }
}
```

<Note>
  Shipping preferences need to be enabled for your account. Confirm with your Blend contact before building against them.
</Note>

## Service levels

| Carrier | Service levels                                                                                                                        |
| ------- | ------------------------------------------------------------------------------------------------------------------------------------- |
| USPS    | `usps_ground_advantage`, `usps_priority`, `usps_priority_express`                                                                     |
| FedEx   | `fedex_ground`, `fedex_2_day`, `fedex_express_saver`, `fedex_standard_overnight`, `fedex_priority_overnight`, `fedex_first_overnight` |
| UPS     | `ups_ground`, `ups_second_day_air`, `ups_3_day_select`, `ups_next_day_air`, `ups_next_day_air_saver`                                  |
| Generic | `ground`, `2_day`, `next_day`                                                                                                         |

<Warning>
  If you send **both** `carrier` and `service_level`, the service level's prefix must match the carrier. `carrier: "usps"` with `service_level: "fedex_ground"` is rejected. Send the generic level alone if you don't care which carrier is used.
</Warning>

`GET /api/v1/orders/shipping_options` returns the carriers and service levels currently available to your account — read it rather than hardcoding this table.

## Signature confirmation

* `standard` — anyone at the address may sign
* `adult` — signature from someone 21 or over

## Updating shipping later

```bash theme={null}
curl -X PATCH https://api.byblend.com/api/v1/orders/ORD250312003548IAU4 \
  -H "Authorization: Bearer {access_token}" \
  -H "Content-Type: application/json" \
  -d '{ "shipping": { "service_level": "next_day" } }'
```

Update semantics are worth reading twice:

* Omitted fields are **left unchanged**.
* Send `"signature_confirmation": null` to **clear** a previously set signature preference.
* Sending `carrier` or `service_level` **does not** clear an existing signature preference.

<Note>
  Shipping stays editable later in the order's life than line items do — a label hasn't been purchased yet at `picked` or `verified`. Once an order is `shipped` or `delivered`, shipping is fixed and the order returns tracking information instead.
</Note>

## Bringing your own label

If you generate labels yourself, send `custom_shipping` instead of `shipping`.

<Note>
  Bringing your own shipping label is only available to pre-authorized accounts. Talk to your Blend contact before building against it.
</Note>

All four fields are required: `label_url` (a printable 4x6), `tracking_number`, `tracking_url`, and `carrier`.

```json theme={null}
{
  "custom_shipping": {
    "label_url": "https://yourcompany.com/labels/abc.pdf",
    "tracking_number": "1Z999AA10123456784",
    "tracking_url": "https://ups.com/track?tracknum=1Z999AA10123456784",
    "carrier": "UPS"
  }
}
```

<Tip>
  Shipping preferences on an individual order can also be changed in the Blend Dashboard while the order is still editable — a quicker path for a single customer-service request than an API call.
</Tip>

<CardGroup cols={2}>
  <Card title="Get shipping options" icon="truck" href="/api-reference/orders/get-shipping-options">
    Live carriers and service levels
  </Card>

  <Card title="Update an order" icon="pen" href="/api-reference/orders/update-an-order">
    PATCH the `shipping` object
  </Card>

  <Card title="Create an order" icon="prescription-bottle" href="/api-reference/orders/create-an-order">
    `shipping` or `custom_shipping`
  </Card>

  <Card title="Get an order's details" icon="magnifying-glass" href="/api-reference/orders/get-an-orders-details">
    Shipments and tracking
  </Card>
</CardGroup>
