Create Product

This endpoint allows merchants to create products within ShipMonk. Once created, product data is immutable via API — updates must be made via the ShipMonk web app. SKUs must be unique within the account. ShipMonk will reject non-unique SKUs with a 400 error.

The required_packaging field defines the minimum packaging suitable for a product. When fulfilling an order, ShipMonk selects the smallest packaging type that satisfies every item in the shipment — for example, if an order contains one product that can ship in a poly mailer and another that requires a box, the entire order ships in a box.
Field country_of_origin accepts a 2-letter ISO 3166-1 alpha-2 country code.

Fragile products

Fragile products must have required_packaging set to box. Submitting any other value will return a 400 error.

Recent Requests
Log in to see full request history
TimeStatusUser Agent
Retrieving recent requests…
LoadingLoading…
Body Params
string
required
length between 3 and 255

Unique identifier for the product in your external system. Must be unique across all your products.

string
required
length between 3 and 255

Stock Keeping Unit (SKU) identifying the product. Must be unique across all active products in your account.

string
required
length between 3 and 255

Human-readable product name displayed in the UI and on documents.

string
enum
required

Minimum packaging type required to ship this product: poly_mailer, bubble_mailer, box, slap_a_label (label applied directly), or custom.

Allowed:
boolean
required

Whether the product requires fragile handling during fulfillment. If true, required_packaging must be box.

double
required

Cost to replace the product, used for insurance and claims. Must be positive, in the currency given by currency_code.

double
required

Declared customs value per unit, used to calculate duties and taxes on international shipments. Must be positive, in the currency given by currency_code.

string
required
length between 2 and 2

Country of origin as an ISO 3166-1 alpha-2 code (e.g. US, DE, CN), used on customs documentation for international shipments.

barcodes
array of strings
required

Barcodes associated with the product (e.g. UPC, EAN, ISBN). Each barcode must be 1-255 characters; pass an empty array if none.

barcodes*
Dimensions In Input | null
Defaults to null

Physical product dimensions in inches. Omit if dimensions are unknown.

double | null
Defaults to null

Product weight in pounds (decimal). Must be positive. Omit or set null if weight is unknown.

string
length between 3 and 3
Defaults to USD

ISO 4217 currency code (e.g. USD, EUR) for replacement_cost and customs_declaration_value. Defaults to USD.

string | null
Defaults to null

Default Harmonized System (HS) code used on customs declarations when no region-specific code in hs_codes matches. Max 255 characters.

hs_codes
array of objects
Defaults to []

Region-specific Harmonized System (HS) codes used for customs classification per destination region. Takes precedence over hs_code when a matching region is found.

hs_codes
string | null
Defaults to null

Publicly accessible URL of the product image. Must be a valid URL and unique across all your products.

custom_data
array of objects
Defaults to []

Custom key/value metadata to attach to the product, typically used for integration-specific data.

custom_data
product_handling_units
array of objects
Defaults to []

List of handling units (inner carton, master carton, pallet) describing the product's packaging hierarchy used for receiving and storage. Omit if the product ships as individual units only.

product_handling_units
Integration Product Lot Control Setting Input | null
Defaults to null

Lot control settings specifying whether lot number and/or expiration date tracking is required for this product. Provide for products that must be tracked by batch or expiration.

Response

Language
Credentials
Header
URL
LoadingLoading…
Response
Click Try It! to start a request and see the response here! Or choose an example:
application/json