# Options

`Shipments` can have a variety of additional `options` which you can specify when creating
a shipment. The
`Options` object can be populated with the keys below.

  Carrier specific support for each option is added as needed. To request support for a specific carrier option,
  Contact Support.

---

## Options object

| Property | Type | Description |
|----------|------|-------------|
| additional_handling | boolean | Indicates whether the package requires special handling. When set to true, an additional_handling charge may apply based on the following conditions: Any article encased in an outer shipping container made of metal or wood. Any item not fully encased in a corrugated cardboard container (e.g., barrel, drum, pail, or tire). Any package with the longest side exceeding 60 inches, or the second-longest side exceeding 30 inches. Any package with an actual weight greater than 70 pounds. Note: Some carriers, including USPS, may apply additional_handling fees based on criteria such as nonstandard package characteristics, dimensions, or contents. For USPS-specific information, refer to the help center article Understanding Additional Handling Fees. |
| address_validation_level | string | Setting this option to "0" will allow the minimum amount of address information to pass the validation check. Only for USPS postage. |
| alcohol | boolean | Set this option to true if your shipment contains alcohol. UPS - only supported for U.S. domestic shipments FedEx - only supported for U.S. domestic shipments Canada Post - Requires adult signature 19 years or older. If you want adult signature 18 years or older, instead use delivery_confirmation: "ADULT_SIGNATURE" |
| by_drone | boolean | Setting this option to true will indicate to the carrier to prefer delivery by drone, if the carrier supports drone delivery. |
| carbon_neutral | boolean | Setting this to true will add a charge to reduce carbon emissions by carriers who support this option. |
| carrier_notification_email | string | Assign an email address to receive carrier notifications. |
| carrier_notification_sms | string | Assign a phone number to receive carrier notifications. |
| cod_amount | string | Adding an amount will have the carrier collect the specified amount from the recipient. |
| cod_method | string | Method for payment. Possible values: "CASH" "CHECK" "MONEY_ORDER" |
| cod_address_id | string | The ID of the Address to which the C.O.D payment should be returned. Defaults to the origin address. Only available on FedEx shipments. |
| content_description | string | A description of the content of the shipment. |
| currency | string | Which currency this shipment will show for rates if carrier allows. |
| delivery_confirmation | string | If requesting a signature, pass "ADULT_SIGNATURE" or "SIGNATURE". To leave the package at the door, use "NO_SIGNATURE". "NO_SIGNATURE" is equivalent to releasing liability. Some options may be limited for international shipments. Carrier-specific delivery confirmation options are listed below: FedEx “NO_SIGNATURE” - Leaves the package at the door with no signature required. "INDIRECT_SIGNATURE" - Requires the signature of someone at the delivery address or from someone nearby, such as a neighbor. “SIGNATURE” - Requires a signature from someone at the delivery address. “DIRECT” - Requires a signature from someone at the delivery address. “ADULT_SIGNATURE” - Requires the signature of an adult at the delivery address. "SERVICE_DEFAULT" - Attempts to set the signature requirements based on the shipment details and service level, and recommended for international shipments to maximize rate availability. Unrecognized values - Default to “SERVICE_DEFAULT”. Note: The FedEx SMART_POST service only supports NO_SIGNATURE, null, or SERVICE_DEFAULT values for the delivery_confirmation option. Using unsupported values will result in an error when purchasing a shipment. USPS "ADULT_SIGNATURE_RESTRICTED" - Requires the signature of the specific addressee, or authorized agent, who is 21 years of age or older. "SIGNATURE_RESTRICTED" - Requires the signature of the specified addressee, or authorized agent. Canada Post "DO_NOT_SAFE_DROP" - Tells the carrier to not hide the package ("safe drop"). GSO "STANDARD_SIGNATURE" DHL Express "SIGNATURE" - DHL Express Direct Signature "NO_SIGNATURE" - DHL Express Signature Release |
| delivery_min_datetime | string | The earliest a package should be delivered. Supported carriers vary. |
| delivery_max_datetime | string | The latest a package should be delivered. Supported carriers vary. |
| dropoff_type | string | Method the customer will use to transfer the package to the carrier. Supported dropoff types and their corresponding carrier dropoff codes are below: FedEx "REGULAR_PICKUP" - Customer to transfer package during regular pickup (default) "SCHEDULED_PICKUP" - Customer to transfer package during scheduled pickup "RETAIL_LOCATION" - Customer to transfer package at FedEx retail location "STATION" - "STATION" "DROP_BOX" - Customer to use carrier drop box for package transfer |
| dry_ice | boolean | Package contents contain dry ice. UPS - Need dry_ice_weight to be set UPS MailInnovations - Need dry_ice_weight to be set FedEx - Need dry_ice_weight to be set |
| dry_ice_medical | boolean | If the dry ice is for medical use, set this option to true. UPS - Need dry_ice_weight to be set UPS MailInnovations - Need dry_ice_weight to be set |
| dry_ice_weight | string | Weight of the dry ice in ounces. UPS - Need dry_ice_weight to be set UPS MailInnovations - Need dry_ice_weight to be set FedEx - Need dry_ice_weight to be set |
| duty_payment | object | Specifies how duties and taxes should be billed when purchasing postage. This object is only supported by FedEx and UPS. Note: This option may not be supported for EasyPost Wallet carrier account types. type - (string) Supported values: "SENDER" "THIRD_PARTY" "RECEIVER" account - (string) Account number to be billed. country - (string) Country code of the billing account. postal_code - (string) Postal code of the account location. |
| endorsement | string | Possible values: "ADDRESS_SERVICE_REQUESTED" "FORWARDING_SERVICE_REQUESTED" "CHANGE_SERVICE_REQUESTED" "RETURN_SERVICE_REQUESTED" "LEAVE_IF_NO_RESPONSE" |
| end_shipper_id | string | Specify the responsible EndShipper for the shipment by passing in an EndShipper ID. |
| freight_charge | double | Additional cost to be added to the invoice of this shipment. Only applies to UPS currently. |
| handling_instructions | string | This is to designate special instructions for the carrier like "Do not drop!". |
| hazmat | string | /* TODO: Make this a table instead of bullet points in the future */ Used to identify the type of hazardous materials (HAZMAT) or dangerous goods being shipped. Unidentified HAZMAT can introduce risk to human safety, property and expose the shipper to civil penalties, especially for packages that travel via air. Each carrier may have a different way of identifying HAZMAT and rates will only be retuned for carriers that support the type designated. Refer to carrier documentation to determine how to identify HAZMAT types and for complete rules and regulations. FedEx and DHL eCommerce "PRIMARY_CONTAINED": Primary Contained "PRIMARY_PACKED": Primary Packed "PRIMARY": Primary "SECONDARY_CONTAINED": Secondary Contained "SECONDARY_PACKED": Secondary Packed "SECONDARY": Secondary "ORMD": Other Regulated Materials—Domestic "LITHIUM": Lithium FedEx, DHL eCommerce, and USPS "LIMITED_QUANTITY": Limited Quantity Ground Package USPS : See EasyPost&apos;s USPS HazMat Guide and USPS Pub. 52 for complete regulations. "AIR_ELIGIBLE_ETHANOL": Air Eligible Ethanol Package "CLASS_1": Class 1 - Toy Propellant/Safety Fuse Package "CLASS_3": Class 3 - Package "CLASS_7": Class 7 - Radioactive Materials Package "CLASS_8_CORROSIVE": Class 8 - Corrosive Materials Package "CLASS_8_WET_BATTERY": Class 8 - Nonspillable Wet Battery Package "CLASS_9_NEW_LITHIUM_INDIVIDUAL": Class 9 - Lithium Battery Marked - Ground Only Package "CLASS_9_USED_LITHIUM": Class 9 - Lithium Battery - Returns Package "CLASS_9_NEW_LITHIUM_DEVICE": Class 9 - Lithium batteries, marked package "CLASS_9_DRY_ICE": Class 9 - Dry Ice Package "CLASS_9_UNMARKED_LITHIUM": Class 9 - Lithium batteries, unmarked package "CLASS_9_MAGNETIZED": Class 9 - Magnetized Materials Package "DIVISION_4_1": Division 4.1 - Mailable flammable solids and Safety Matches Package "DIVISION_5_1": Division 5.1 - Oxidizers Package "DIVISION_5_2": Division 5.2 - Organic Peroxides Package "DIVISION_6_1": Division 6.1 - Toxic Materials Package (with an LD50 of 50 mg/kg or less) "DIVISION_6_2": Division 6.2 "EXCEPTED_QUANTITY_PROVISION": Excepted Quantity Provision Package "GROUND_ONLY": Ground Only "ID8000": ID8000 Consumer Commodity Package "LIGHTERS": Lighters Package "SMALL_QUANTITY_PROVISION": Small Quantity Provision Package |
| hold_for_pickup | boolean | Package will wait at carrier facility for pickup. FedEx - Instructs carrier to hold the package for pickup at the destination. A carrier facility address must be used as the destination. |
| incoterm | string | Incoterm negotiated for shipment. Supported values: "CFR" "CIF" "CIP" "CPT" "DAT" "DAP" "DDP" "EXW" "FAS" "FCA" "FOB" Setting this value to anything other than "DDP" will pass the cost and responsibility of duties on to the recipient of the package(s), as specified by Incoterms rules. Note: Supported incoterms may vary by carrier. Refer to the carrier-specific guide for any requirements or exceptions. |
| invoice_number | string | This will print an invoice number on the postage label. |
| label_date | string | Set the date that will appear on the postage label. Accepts ISO 8601 -formatted string including time zone offset. EasyPost stores all dates as UTC time. |
| label_format | string | Specifies the file format of the generated label. Supported values: "PNG" "PDF" "ZPL" "EPL2" Notes: "PNG" is the only format that allows for conversion. If a format is specified without a size, the resulting output may vary (e.g., PDF defaults to a 4x6 label embedded in an 8.5x11 page). |
| label_size | string | Specifies the size of the generated label. Supported values: "PNG": 4x6 "PDF": 8.5x11 "ZPL": 4x6 "EPL2": 4x5 Notes: Must be paired with a compatible label_format. Overrides the default size assigned to the format if provided. Check the carrier guides for carrier-specific label_size values where applicable. |
| live_animal | string | Specifies the type of live animal being shipped. This option is only supported for USPS shipments. Supported values include: "BEES" "DAY_OLD_POULTRY" "ADULT_BIRDS" "OTHER_LIVES" For detailed USPS requirements and restrictions, refer to USPS Publication 52, Section 5: Live Animals. |
| machinable | boolean | Whether or not the parcel can be processed by the carriers equipment |
| merchant_id | string | This is a required field for DHL eCommerce shipments and should be the merchant's name. It will be displayed on the shipping label and associated with the shipment throughout transit. |
| payment | object | Specifies the payment method for billing the correct account when purchasing postage. Not all payment options are supported by all carriers. "SENDER" (default) billing is used if alternate billing methods are not supported by the platform or carrier. It is the shipper's responsibility to confirm with the carrier what billing options are available. Note: Third-party billing is not supported when using EasyPost Wallet carrier accounts. If third-party billing is required, a Bring Your Own Account (BYOA) must be used. type - (string) Supported values: "SENDER" (default) "THIRD_PARTY" "RECEIVER" "COLLECT" account - (string) Account number to be billed. Required if type is "RECEIVER" or "THIRD_PARTY". country - (string) Country code of the billing account. Required if type is "THIRD_PARTY". postal_code - (string) Postal code of the billing account. Required if type is "RECEIVER" or "THIRD_PARTY". |
| perishable | boolean | Indicates whether the shipment contains perishable goods. When set to true, a USPS “Live Animal & Perishable” fee may be applied. This option is only supported for USPS shipments. |
| pickup_min_datetime | string | The earliest a package should be picked up. Supported carriers vary. |
| pickup_max_datetime | string | The latest a package should be picked up. Supported carriers vary. |
| print_custom_1 | string | You can optionally print custom messages on labels. The locations of these fields show up on different spots on the carrier's labels. |
| print_custom_2 | string | An additional message on the label. Same restrictions as print_custom_1. |
| print_custom_3 | string | An additional message on the label. Same restrictions as print_custom_1 |
| print_custom_1_barcode | boolean | Create a barcode for this custom reference if supported by carrier. |
| print_custom_2_barcode | boolean | Create a barcode for this custom reference if supported by carrier. |
| print_custom_3_barcode | boolean | Create a barcode for this custom reference if supported by carrier. |
| print_custom_1_code | string | Specify the type of print_custom_1. FedEx (null) - If print_custom_1_code is not provided it defaults to Customer Reference PO - Purchase Order Number DP - Department Number RMA - Return Merchandise Authorization UPS AJ - Accounts Receivable Customer Account AT - Appropriation Number BM - Bill of Lading Number 9V - Collect on Delivery (COD) Number ON - Dealer Order Number DP - Department Number 3Q - Food and Drug Administration (FDA) Product Code IK - Invoice Number MK - Manifest Key Number MJ - Model Number PM - Part Number PC - Production Code PO - Purchase Order Number RQ - Purchase Request Number RZ - Return Authorization Number SA - Salesperson Number SE - Serial Number ST - Store Number TN - Transaction Reference Number EI - Employer's ID Number TJ - Federal Taxpayer ID Number |
| print_custom_2_code | string | See print_custom_1_code. |
| print_custom_3_code | string | See print_custom_1_code. |
| saturday_delivery | boolean | Set this value to true to make your shipment eligible for Saturday delivery. |
| special_rates_eligibility | string | This option enables the selection of the following USPS mail classes: Media Mail - USPS.MEDIAMAIL Library Mail - USPS.LIBRARYMAIL To request rates for both classes simultaneously, input USPS.MEDIAMAIL,USPS.LIBRARYMAIL. These mail classes are subject to restrictions and eligibility rules as outlined in the DMM . |
| smartpost_hub | string | You can use this to override the hub ID you have on your account. |
| smartpost_manifest | string | The manifest ID is used to group SmartPost packages onto a manifest for each trailer. |
| billing_ref | string | A reference ID for aggregating DHL eCommerce billing data. |
| certified_mail | boolean | Certified Mail provides the sender with a mailing receipt and, upon request, electronic verification that an article was delivered or that a delivery attempt was made. |
| registered_mail | boolean | Registered Mail is the most secure service that the USPS offers. It incorporates a system of receipts to monitor the movement of the mail from the point of acceptance to delivery. |
| registered_mail_amount | double | The value of the package contents |
| return_receipt | boolean | An electronic return receipt may be purchased at the time of mailing and provides a shipper with evidence of delivery (to whom the mail was delivered and date of delivery), and information about the recipient's actual delivery address. Only applies to the USPS. |
| suppress_etd | boolean | When set to "true", EasyPost will not electronically transmit the commercial invoice (ETD) to the carrier. Instead: A generic EasyPost commercial invoice will be generated and returned in the "forms" object. The "submitted_electronically" field in the response will be "false". Physical copies of the invoice must be printed and attached to the parcel. Note: This option is only required when shipping to countries that do not accept electronic commercial invoices. |

Example Object:

```json
{
  "id": "shp_7c61909a41584d3f8fa3bd63c3c2c0af",
  "created_at": "2025-05-09T20:39:23Z",
  "is_return": false,
  "messages": [],
  "mode": "test",
  "options": {
    "print_custom_1": "Custom label message",
    "currency": "USD",
    "print_custom": [
      {
        "value": "Custom label message"
      }
    ],
    "payment": {
      "type": "SENDER"
    },
    "date_advance": 0
  },
  "reference": null,
  "status": "unknown",
  "tracking_code": null,
  "updated_at": "2025-05-09T20:39:23Z",
  "batch_id": null,
  "batch_status": null,
  "batch_message": null,
  "customs_info": {
    "id": "cstinfo_34644b53f63c40959fdd19b446e6a8bc",
    "object": "CustomsInfo",
    "created_at": "2025-05-09T20:39:23Z",
    "updated_at": "2025-05-09T20:39:23Z",
    "contents_explanation": "",
    "contents_type": "merchandise",
    "customs_certify": true,
    "customs_signer": "Steve Brule",
    "eel_pfc": "NOEEI 30.37(a)",
    "non_delivery_option": "return",
    "restriction_comments": null,
    "restriction_type": "none",
    "mode": "test",
    "declaration": null,
    "customs_items": [
      {
        "id": "cstitem_3f59190656964a7697f0a366d3d549c9",
        "object": "CustomsItem",
        "created_at": "2025-05-09T20:39:23Z",
        "updated_at": "2025-05-09T20:39:23Z",
        "description": "T-shirt",
        "hs_tariff_number": "123456",
        "origin_country": "US",
        "quantity": 1,
        "value": "10.0",
        "weight": 5.0,
        "code": "123",
        "mode": "test",
        "manufacturer": null,
        "currency": null,
        "eccn": null,
        "printed_commodity_identifier": null
      }
    ]
  },
  "from_address": {
    "id": "adr_b0b977532d1511f083b1ac1f6bc539aa",
    "object": "Address",
    "created_at": "2025-05-09T20:39:23+00:00",
    "updated_at": "2025-05-09T20:39:23+00:00",
    "name": "EasyPost",
    "company": null,
    "street1": "417 Montgomery Street",
    "street2": "5th Floor",
    "city": "San Francisco",
    "state": "CA",
    "zip": "94104",
    "country": "US",
    "phone": "4153334445",
    "email": "support@easypost.com",
    "mode": "test",
    "carrier_facility": null,
    "residential": null,
    "federal_tax_id": null,
    "state_tax_id": null,
    "verifications": {}
  },
  "insurance": null,
  "order_id": null,
  "parcel": {
    "id": "prcl_7218c32c547c451a9f93c0be8efb8328",
    "object": "Parcel",
    "created_at": "2025-05-09T20:39:23Z",
    "updated_at": "2025-05-09T20:39:23Z",
    "length": 20.2,
    "width": 10.9,
    "height": 5.0,
    "predefined_package": null,
    "weight": 65.9,
    "mode": "test"
  },
  "postage_label": null,
  "rates": [
    {
      "id": "rate_799b8c20e3644f6bac47f613062e0bf5",
      "object": "Rate",
      "created_at": "2025-05-09T20:39:23Z",
      "updated_at": "2025-05-09T20:39:23Z",
      "mode": "test",
      "service": "Express",
      "carrier": "USPS",
      "rate": "51.20",
      "currency": "USD",
      "retail_rate": "59.25",
      "retail_currency": "USD",
      "list_rate": "51.20",
      "list_currency": "USD",
      "billing_type": "easypost",
      "delivery_days": 2,
      "delivery_date": null,
      "delivery_date_guaranteed": false,
      "est_delivery_days": 2,
      "shipment_id": "shp_7c61909a41584d3f8fa3bd63c3c2c0af",
      "carrier_account_id": "ca_9685a1198a75477885a3cdca37559bac"
    },
    {
      "id": "rate_a23973392089450d9956b6d84a5f66c2",
      "object": "Rate",
      "created_at": "2025-05-09T20:39:23Z",
      "updated_at": "2025-05-09T20:39:23Z",
      "mode": "test",
      "service": "Priority",
      "carrier": "USPS",
      "rate": "11.01",
      "currency": "USD",
      "retail_rate": "15.40",
      "retail_currency": "USD",
      "list_rate": "11.01",
      "list_currency": "USD",
      "billing_type": "easypost",
      "delivery_days": 2,
      "delivery_date": null,
      "delivery_date_guaranteed": false,
      "est_delivery_days": 2,
      "shipment_id": "shp_7c61909a41584d3f8fa3bd63c3c2c0af",
      "carrier_account_id": "ca_9685a1198a75477885a3cdca37559bac"
    },
    {
      "id": "rate_45b9d1f4e110454397108ca0a9ab8a4e",
      "object": "Rate",
      "created_at": "2025-05-09T20:39:23Z",
      "updated_at": "2025-05-09T20:39:23Z",
      "mode": "test",
      "service": "GroundAdvantage",
      "carrier": "USPS",
      "rate": "8.20",
      "currency": "USD",
      "retail_rate": "13.85",
      "retail_currency": "USD",
      "list_rate": "9.74",
      "list_currency": "USD",
      "billing_type": "easypost",
      "delivery_days": 3,
      "delivery_date": null,
      "delivery_date_guaranteed": false,
      "est_delivery_days": 3,
      "shipment_id": "shp_7c61909a41584d3f8fa3bd63c3c2c0af",
      "carrier_account_id": "ca_9685a1198a75477885a3cdca37559bac"
    }
  ],
  "refund_status": null,
  "scan_form": null,
  "selected_rate": null,
  "tracker": null,
  "to_address": {
    "id": "adr_b0b50f802d1511f083acac1f6bc539aa",
    "object": "Address",
    "created_at": "2025-05-09T20:39:23+00:00",
    "updated_at": "2025-05-09T20:39:23+00:00",
    "name": "Dr. Steve Brule",
    "company": null,
    "street1": "179 N Harbor Dr",
    "street2": null,
    "city": "Redondo Beach",
    "state": "CA",
    "zip": "90277",
    "country": "US",
    "phone": "8573875756",
    "email": "dr_steve_brule@gmail.com",
    "mode": "test",
    "carrier_facility": null,
    "residential": null,
    "federal_tax_id": null,
    "state_tax_id": null,
    "verifications": {}
  },
  "usps_zone": 4,
  "return_address": {
    "id": "adr_b0b977532d1511f083b1ac1f6bc539aa",
    "object": "Address",
    "created_at": "2025-05-09T20:39:23+00:00",
    "updated_at": "2025-05-09T20:39:23+00:00",
    "name": "EasyPost",
    "company": null,
    "street1": "417 Montgomery Street",
    "street2": "5th Floor",
    "city": "San Francisco",
    "state": "CA",
    "zip": "94104",
    "country": "US",
    "phone": "4153334445",
    "email": "support@easypost.com",
    "mode": "test",
    "carrier_facility": null,
    "residential": null,
    "federal_tax_id": null,
    "state_tax_id": null,
    "verifications": {}
  },
  "buyer_address": {
    "id": "adr_b0b50f802d1511f083acac1f6bc539aa",
    "object": "Address",
    "created_at": "2025-05-09T20:39:23+00:00",
    "updated_at": "2025-05-09T20:39:23+00:00",
    "name": "Dr. Steve Brule",
    "company": null,
    "street1": "179 N Harbor Dr",
    "street2": null,
    "city": "Redondo Beach",
    "state": "CA",
    "zip": "90277",
    "country": "US",
    "phone": "8573875756",
    "email": "dr_steve_brule@gmail.com",
    "mode": "test",
    "carrier_facility": null,
    "residential": null,
    "federal_tax_id": null,
    "state_tax_id": null,
    "verifications": {}
  },
  "forms": [],
  "fees": [],
  "object": "Shipment"
}
```

---

## Create a Shipment with Options

### Example: POST /shipments

#### cURL

```shell
curl -X POST https://api.easypost.com/v2/shipments \
  -u "EASYPOST_API_KEY": \
  -H 'Content-Type: application/json' \
  -d '{
    "shipment": {
      "to_address": {
        "id": "adr_..."
      },
      "from_address": {
        "id": "adr_..."
      },
      "parcel": {
        "id": "prcl_..."
      },
      "options": {
        "print_custom_1": "Custom label message"
      }
    }
  }'
```

#### Go

```go
package example

import (
	"fmt"

	"github.com/EasyPost/easypost-go/v5"
)

func createWithOptions() {
	client := easypost.New("EASYPOST_API_KEY")

	toAddress, _ := client.GetAddress("shp_...")
	fromAddress, _ := client.GetAddress("adr_...")
	parcel, _ := client.GetParcel("prcl_...")

	shipment, _ := client.CreateShipment(
		&easypost.Shipment{
			ToAddress:   toAddress,
			FromAddress: fromAddress,
			Parcel:      parcel,
			Options: &easypost.ShipmentOptions{
				PrintCustom1: "Custom label message",
			},
		},
	)

	fmt.Println(shipment)
}
```

#### Java

```java
package shipments;

import com.easypost.exception.EasyPostException;
import com.easypost.model.Shipment;
import com.easypost.service.EasyPostClient;

import java.util.HashMap;

public class CreateWithOptions {
    public static void main(String[] args) throws EasyPostException {
        EasyPostClient client = new EasyPostClient("EASYPOST_API_KEY");

        HashMap<String, Object> toAddress = new HashMap<String, Object>();
        toAddress.put("id", "adr_...");

        HashMap<String, Object> fromAddress = new HashMap<String, Object>();
        fromAddress.put("id", "adr_...");

        HashMap<String, Object> parcel = new HashMap<String, Object>();
        parcel.put("id", "prcl_...");

        HashMap<String, Object> options = new HashMap<String, Object>();
        parcel.put("print_custom_1", "Custom label message");

        HashMap<String, Object> params = new HashMap<String, Object>();
        params.put("to_address", toAddress);
        params.put("from_address", fromAddress);
        params.put("parcel", parcel);
        params.put("options", options);

        Shipment shipment = client.shipment.create(params);

        System.out.println(shipment);
    }
}
```

#### C#

```csharp
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using EasyPost;
using Newtonsoft.Json;

namespace EasyPostExamples
{
    public class Examples
    {
        public static async Task Main()
        {
            var client = new EasyPost.Client(new EasyPost.ClientConfiguration("EASYPOST_API_KEY"));

            EasyPost.Parameters.Shipment.Create parameters = new()
            {
                ToAddress = new EasyPost.Parameters.Address.Create
                {
                    Name = "Dr. Steve Brule",
                    Street1 = "417 Montgomery Street",
                    Street2 = "5th Floor",
                    City = "San Francisco",
                    State = "CA",
                    Country = "US",
                    Zip = "94104"
                },
                FromAddress = new EasyPost.Parameters.Address.Create
                {
                    Company = "EasyPost",
                    Street1 = "417 Montgomery Street",
                    Street2 = "Floor 5",
                    City = "San Francisco",
                    State = "CA",
                    Country = "US",
                    Zip = "94104"
                },
                Parcel = new EasyPost.Parameters.Parcel.Create
                {
                    Length = 20.2,
                    Width = 10.9,
                    Height = 5,
                    Weight = 65.9
                },
                Options = new EasyPost.Models.API.Options
                {
                    PrintCustom1 = "Custom label message"
                }
            };

            EasyPost.Models.API.Shipment shipment = await client.Shipment.Create(parameters);

            Console.WriteLine(JsonConvert.SerializeObject(shipment, Formatting.Indented));
        }
    }
}
```

#### Node.js

```javascript
const EasyPostClient = require('@easypost/api');

const client = new EasyPostClient('EASYPOST_API_KEY');

(async () => {
  const shipment = await client.Shipment.create({
    parcel: { id: 'prcl_...' },
    to_address: { id: 'adr_...' },
    from_address: { id: 'adr_...' },
    options: {
      print_custom_1: 'Custom label message',
    },
  });

  console.log(shipment);
})();
```

#### PHP

```php
<?php

$client = new \EasyPost\EasyPostClient('EASYPOST_API_KEY');

$shipment = $client->shipment->create([
    'to_address' => ['id' => 'adr_...'],
    'from_address' => ['id' => 'adr_...'],
    'parcel' => [
        'length' => 20.2,
        'width' => 10.9,
        'height' => 5,
        'weight' => 65.9
    ],
    'options' => ['print_custom_1' => 'Custom label message']
]);

echo $shipment;
```

#### Python

```python
import easypost

client = easypost.EasyPostClient("EASYPOST_API_KEY")

shipment = client.shipment.create(
    to_address={"id": "adr_..."},
    from_address={"id": "adr_..."},
    parcel={"id": "prcl_..."},
    options={"print_custom_1": "Custom label message"},
)

print(shipment)
```

#### Ruby

```ruby
require 'easypost'

client = EasyPost::Client.new(api_key: 'EASYPOST_API_KEY')

shipment = client.shipment.create(
  to_address: {
    id: 'adr_...',
  },
  from_address: {
    id: 'adr_...',
  },
  parcel: {
    id: 'prcl_...',
  },
  options: {
    print_custom_1: 'Custom label message',
  },
)

puts shipment
```

Any number of `options` can be specified during `Shipment` creation.

[Note: This object is immutable after creation. Review the rendered documentation for details.]