# Create custom package type

Create a custom package type to better assist in getting accurate rate estimates

Endpoint: POST /v1/packages
Version: 1.1.202604070904
Security: api_key

## Request fields (application/json):

  - `package_id` (string)
    A string that uniquely identifies the package.
    Example: "se-28529731"

  - `package_code` (string, required)
    A unique, user-defined identifier for the custom package type. Must start with "custom_".
    Example: "custom_laptop_box"

  - `name` (string, required)
    Example: "laptop_box"

  - `dimensions` (object)
    The custom dimensions for the package.

  - `dimensions.unit` (string, required)
    The dimension units that are supported by ShipEngine.
    Enum: "inch", "centimeter"

  - `dimensions.length` (number, required)
    The length of the package, in the specified unit

  - `dimensions.width` (number, required)
    The width of the package, in the specified unit

  - `dimensions.height` (number, required)
    The height of the package, in the specified unit

  - `description` (string,null)
    Provides a helpful description for the custom package.
    Example: "Packaging for laptops"

## Response 200 fields (application/json):

  - `package_id` (string)
    A string that uniquely identifies the package.
    Example: "se-28529731"

  - `package_code` (string, required)
    A unique identifier for the custom package type. API-created packages start with "custom_". UI-created packages may use other codes.
    Example: "package"

  - `name` (string, required)
    Example: "laptop_box"

  - `dimensions` (object)
    The custom dimensions for the package.

  - `dimensions.unit` (string, required)
    The dimension units that are supported by ShipEngine.
    Enum: "inch", "centimeter"

  - `dimensions.length` (number, required)
    The length of the package, in the specified unit

  - `dimensions.width` (number, required)
    The width of the package, in the specified unit

  - `dimensions.height` (number, required)
    The height of the package, in the specified unit

  - `description` (string,null)
    Provides a helpful description for the custom package.
    Example: "Packaging for laptops"

## Response 400 fields (application/json):

  - `request_id` (string, required)
    A UUID that uniquely identifies the request id.
This can be given to the support team to help debug non-trivial issues that may occur
    Example: "aa3d8e8e-462b-4476-9618-72db7f7b7009"

  - `errors` (array, required)
    The errors associated with the failed API call

  - `errors.error_source` (string, required)
    The source of the error, as indicated by the name this informs us if the API call failed because of the
carrier, the order source, or the ShipEngine API itself.
    Enum: "carrier", "order_source", "shipengine"

  - `errors.error_type` (string, required)
    The type of error
    Enum: "account_status", "business_rules", "validation", "security", "system", "integrations"

  - `errors.error_code` (string, required)
    The error code specified for the failed API Call
    Enum: "auto_fund_not_supported", "batch_cannot_be_modified", "carrier_conflict", "carrier_disconnected", "carrier_not_connected", "carrier_not_supported", "confirmation_not_supported", "default_warehouse_cannot_be_deleted", "field_conflict", "field_value_required", "forbidden", "identifier_conflict", "identifiers_must_match", "insufficient_funds", "invalid_address", "invalid_billing_plan", "invalid_field_value", "invalid_identifier", "invalid_status", "invalid_string_length", "label_images_not_supported", "meter_failure", "order_source_not_active", "rate_limit_exceeded", "refresh_not_supported", "request_body_required", "return_label_not_supported", "settings_not_supported", "subscription_inactive", "terms_not_accepted", "tracking_not_supported", "trial_expired", "unauthorized", "unknown", "unspecified", "verification_failure", "warehouse_conflict", "webhook_event_type_conflict", "customs_items_required", "incompatible_paired_labels", "invalid_charge_event", "invalid_object", "no_rates_returned", "file_not_found", "shipping_rule_not_found", "service_not_determined", "no_rates_returned", "funding_source_registration_in_progress", "insurance_failure", "funding_source_missing_configuration", "funding_source_error", "freight_connection_inactive", "freight_provider_id_required", "freight_provider_already_connected", "freight_shipment_not_found", "freight_tracking_not_available", "freight_tracking_not_found", "freight_shipment_not_batchable"

  - `errors.message` (string, required)
    An error message associated with the failed API call
    Example: "Body of request cannot be null."

  - `errors.carrier_id` (string)
    A string that uniquely identifies the carrier that generated the error.
    Example: "se-28529731"

  - `errors.carrier_code` (string)
    The name of the shipping carrier that generated the error, such as fedex, dhl_express, stamps_com, etc.
    Example: "dhl_express"

  - `errors.field_name` (string)
    The name of the field that caused the error
    Example: "shipment.ship_to.phone_number"


