# Create a Label from a Sales Order

This guide explains how to create a shipping label from a sales order ID using the ShipEngine API beta endpoint.

## Requirements

Before using this endpoint, you need to be familiar with:

- [Getting started with orders](/apis/shipengine/docs/sales-orders/get-started-with-orders) and the Sales Order API
- How to obtain a `carrier_id` by listing carriers
- How to get a `service_code` by listing carrier services


## API Endpoint

**POST /v-beta/labels/sales_order/:sales_order_id**

## Example Request


```http
POST /v-beta/labels/sales_order/:sales_order_id HTTP/1.1
Host: api.shipengine.com
API-Key: __YOUR_API_KEY_HERE__
Content-Type: application/json
```


```json
{
  "label_format": "pdf",
  "shipment": {
    "carrier_id": "se-123890",
    "service_code": "usps_priority_mail",
    "ship_from": {
      "company_name": "Example Corp.",
      "name": "John Doe",
      "phone": "111-111-1111",
      "address_line1": "4009 Marathon Blvd",
      "city_locality": "Austin",
      "state_province": "TX",
      "postal_code": "78756",
      "country_code": "US"
    },
    "packages": [{
      "package_code": "package",
      "weight": {
        "value": 2,
        "unit": "pound"
      }
    }]
  }
}
```

## Response Structure

The API returns a comprehensive label object containing:

- `label_id` and `shipment_id`
- Shipment and insurance costs in USD
- Tracking number
- Label format and layout specifications
- Download link for the label PDF
- Package details with dimensions and weight
- Status information (completed, voided, trackable, etc.)


## Key Response Fields

The response includes boolean flags like:

- `is_return_label`
- `is_international`
- `voided`
- `trackable`


And detailed cost breakdowns for both shipment and insurance.