Automate Order Processing
Create, update, and cancel orders automatically from your eCommerce platform or ERP system.
The REST API v4 (OMS) allows you to programmatically manage orders, inventory, products, replenishments, and returns in your ShipEdge Order Management System account. This API uses standard RESTful endpoints with JSON responses.
Create, update, and cancel orders automatically from your eCommerce platform or ERP system.
Add products, update stock levels, and manage your catalog without using the web interface.
Keep your systems synchronized with ShipEdge in real-time to avoid data gaps or delays.
Process multiple orders, products, or serial numbers in a single API call for efficiency.
All OMS API endpoints use this base URL:
https://your-instance.shipedge.com/apirest/v4/oms/Replace your-instance.shipedge.com with your actual ShipEdge instance URL.
REST API v4 (OMS) requires authentication via HTTP headers in every request.
AccountID: [Your numeric AccountID]Key: [Your API Key]Log in to your ShipEdge OMS account
Access your ShipEdge account through the web interface.
Navigate to Preferences
Go to My Account > Preferences in the main menu.
Open API Integration section
Click on the API Integration tab in Preferences.
Find your credentials
You’ll see:
curl -X POST https://your-instance.shipedge.com/apirest/v4/oms/ping \ -H "AccountID: 100" \ -H "Key: abcde12345"Successful API responses follow this structure:
{ "data": { // Response data here }}Example - Ping endpoint:
{ "data": { "status": "Successful", "result": "pong!" }}Error responses include details about what went wrong:
{ "response": { "success": false, "message": "Error description here" }}200 - Success400 - Invalid request (missing or incorrect parameters)401 - Unauthorized (invalid credentials or account not activated)403 - Forbidden (no permissions)404 - Not found (resource doesn’t exist)500 - Server errorEndpoints that return lists support pagination via query parameters:
Parameters:
page: Page number (default: 1)per_page: Items per page (default: varies by endpoint, typically 20)Example:
GET /apirest/v4/oms/orders?page=1&per_page=50Paginated Response:
{ "data": [...], "metadata": { "page": 1, "per_page": 50, "total_records": 150, "total_pages": 3, "total_current_page": 50 }}Check system status and verify your authentication.
Endpoint: POST /ping
Headers: AccountID, Key
Response:
{ "data": { "status": "Successful", "result": "pong!" }}Create one or more orders in your system.
Endpoint: POST /orders
Headers: AccountID, Key
Body:
{ "data": [ { "order_number": "ORD-001", "order_reference": "REF-123", "shipping_method": "Pick", "cart": { "store_name": "My Shop", "id": 0 }, "customer": { "email": "customer@example.com", "phone": "1234567890", "firstname": "John", "lastname": "Doe", "address1": "123 Main St", "city": "Los Angeles", "state": "CA", "zip": "90001", "country": "USA" }, "items": [ { "sku": "PROD-001", "quantity": 2, "sold_price": 29.99 } ] } ]}Required Fields:
order_number - Unique order identifiershipping_method - Shipping method codecustomer.firstname - Customer first namecustomer.address1 - Street addresscustomer.city - Citycustomer.state - State or provincecustomer.zip - Postal codecustomer.country - Countryitems - Array of order itemsitems[].sku - Product SKUitems[].quantity - Item quantityGet a paginated list of orders with optional filters.
Endpoint: GET /orders
Headers: AccountID, Key
Query Parameters:
page - Page number (default: 1)per_page - Items per page (default: 20)status_id - Filter by order status (optional)from_date - Start date filter (optional)to_date - End date filter (optional)order_by - Sort field (default: OrderID)order_direction - Sort direction: asc or desc (default: desc)order_type_id - Filter by order type (optional)warehouse_id - Filter by warehouse (optional)filter_by - Filter type: cart_id, store_id, or store_name (optional)filter_value - Filter value (optional)Example:
GET /apirest/v4/oms/orders?page=1&per_page=50&status_id=3&from_date=2024-01-01Retrieve detailed information about a specific order.
Endpoint: GET /orders/{order}
Headers: AccountID, Key
Path Parameters:
order - Order ID, order number, or order referenceQuery Parameters:
identify_by - How to identify the order: order_id, order_number, order_reference, or order_api (default: order_id)Example:
GET /apirest/v4/oms/orders/12345?identify_by=order_idUpdate an existing order.
Endpoint: PUT /orders
Headers: AccountID, Key
Body: Same structure as Create Order, but include order identifier
Cancel a single order.
Endpoint: POST /orders/cancel
Headers: AccountID, Key
Body:
{ "order_id": 12345}Cancel multiple orders at once.
Endpoint: POST /orders/cancel-bulk
Headers: AccountID, Key
Body:
{ "order_ids": [12345, 12346, 12347]}Update the sub-status of an order.
Endpoint: POST /orders/sub_status
Headers: AccountID, Key
Body:
{ "order_id": 12345, "sub_status": "Custom Status"}Get a paginated list of products in your inventory.
Endpoint: GET /inventory/products
Headers: AccountID, Key
Query Parameters:
page - Page number (default: 1)per_page - Items per page (default: 20)order_by - Sort field (default: ProductID)order_direction - Sort direction: asc or desc (default: desc)Example:
GET /apirest/v4/oms/inventory/products?page=1&per_page=50Add one or more products to your inventory.
Endpoint: POST /inventory/products
Headers: AccountID, Key
Body:
{ "data": [ { "sku": "PROD-001", "description": "Product description", "width": 10, "length": 10, "height": 5, "weight": 1, "cost": 10.00, "retail": 29.99, "upc": "123456789012", "supplier": "Supplier Name", "distribution_center": "DC-CODE", "pick_style": "STANDARD" } ]}Required Fields:
sku - Product SKU (cannot be changed after creation)description - Product descriptionwidth - Product widthlength - Product lengthheight - Product heightweight - Product weightcost - Product costretail - Retail priceOptional Fields:
upc - UPC or barcodeharmonization_code - Harmonization Code (HTS)supplier - Supplier name (must be registered)distribution_center - Distribution center code (must be registered)package_type - Package type (must be registered)pick_style - Pick style: STANDARD, SAVE_SPACE, FIFO, LIFO, FEFO, FLFO, LLFO, BIN_ASC, BIN_DESCone_time_product - Yes, Y, YES, No, N, NO (default: No)case_qty - Units per case/cartoncategory - Product familymodel - Product model or familymanufacturer - Manufacturer nameclient_option1, client_option2, client_option3 - Custom fieldsimage_url - URL for product image importUpdate product information.
Endpoint: PATCH /inventory/products
Headers: AccountID, Key
Body: Same structure as Create Product, but SKU cannot be changed
Retrieve detailed information about a specific product.
Endpoint: GET /inventory/products/{prod_identifier}
Headers: AccountID, Key
Path Parameters:
prod_identifier - Product ID or SKUExample:
GET /apirest/v4/oms/inventory/products/PROD-001Get units of measure (UOM) for a product.
Endpoint: GET /inventory/products/{product_id}/uom
Headers: AccountID, Key
Path Parameters:
product_id - Product IDGet current stock levels for products.
Endpoint: GET /inventory/stock
Headers: AccountID, Key
Query Parameters:
sku - Filter by SKU (optional)distribution_center - Filter by distribution center (optional)Example:
GET /apirest/v4/oms/inventory/stock?sku=PROD-001Aliases allow you to map external SKUs to your internal SKUs for integrations.
Get a paginated list of aliases/translators.
Endpoint: GET /inventory/aliases
Headers: AccountID, Key
Query Parameters:
page - Page number (default: 1)per_page - Items per page (default: 20)channel_id - Filter by channel ID (optional)distribution_center - Filter by distribution center (optional)Create a new alias/translator mapping.
Endpoint: POST /inventory/aliases
Headers: AccountID, Key
Body:
{ "data": [ { "sku": "INTERNAL-SKU", "alias": "EXTERNAL-SKU", "channel_id": 1, "distribution_center": "DC-CODE" } ]}Update an existing alias/translator.
Endpoint: PATCH /inventory/aliases
Headers: AccountID, Key
Body: Same structure as Create Alias
Get details about a specific alias.
Endpoint: GET /inventory/aliases/{alias}
Headers: AccountID, Key
Path Parameters:
alias - Alias identifierSynsets allow you to group multiple SKUs together as kits, bundles, or product families.
Get a paginated list of synsets.
Endpoint: GET /inventory/synsets
Headers: AccountID, Key
Query Parameters:
page - Page number (default: 1)per_page - Items per page (default: 20)Create a new synset (product family).
Endpoint: POST /inventory/synsets
Headers: AccountID, Key
Body:
{ "data": [ { "synset": "BUNDLE-001", "items": [ { "sku": "SKU-1", "quantity": 1 }, { "sku": "SKU-2", "quantity": 2 } ] } ]}Update an existing synset.
Endpoint: PATCH /inventory/synsets
Headers: AccountID, Key
Body: Same structure as Create Synset
Get details about a specific synset.
Endpoint: GET /inventory/synsets/{synset}
Headers: AccountID, Key
Path Parameters:
synset - Synset nameCreate a new replenishment request.
Endpoint: POST /inventory/replenishments
Headers: AccountID, Key
Body:
{ "data": [ { "items": [ { "sku": "PROD-001", "quantity": 100 } ], "distribution_center": "DC-CODE", "eta": "2024-12-31" } ]}Get a paginated list of replenishments.
Endpoint: GET /inventory/replenishments
Headers: AccountID, Key
Query Parameters:
page - Page number (default: 1)per_page - Items per page (default: 20)Update an existing replenishment.
Endpoint: PATCH /inventory/replenishments
Headers: AccountID, Key
Body: Same structure as Create Replenishment
Get details about a specific replenishment.
Endpoint: GET /inventory/replenishments/{replenishment}
Headers: AccountID, Key
Path Parameters:
replenishment - Replenishment IDCreate a new return order.
Endpoint: POST /inventory/returns
Headers: AccountID, Key
Body:
{ "data": [ { "order_id": 12345, "items": [ { "sku": "PROD-001", "quantity": 1, "reason": "Defective" } ] } ]}Get a paginated list of returns.
Endpoint: GET /inventory/returns
Headers: AccountID, Key
Query Parameters:
page - Page number (default: 1)per_page - Items per page (default: 20)Get details about a specific return.
Endpoint: GET /inventory/returns/{return}
Headers: AccountID, Key
Path Parameters:
return - Return IDCreate serial numbers in bulk for products.
Endpoint: POST /serials/bulk
Headers: AccountID, Key
Body:
{ "data": [ { "sku": "PROD-001", "serials": ["SN001", "SN002", "SN003"] } ]}Add attributes to a range of serial numbers.
Endpoint: POST /serials/batch/attributes
Headers: AccountID, Key
Body:
{ "data": [ { "sku": "PROD-001", "serial_start": "SN001", "serial_end": "SN100", "attributes": [ { "attribute": "lot", "value": "LOT-001" } ] } ]}Attributes allow you to add custom metadata to orders, products, or other entities.
Get attributes for a specific owner (order, product, etc.).
Endpoint: GET /attributes/{owner_type}/{owner_id}
Headers: AccountID, Key
Path Parameters:
owner_type - Type of owner (e.g., order, product)owner_id - ID of the ownerQuery Parameters:
page - Page number (default: 1)per_page - Items per page (default: 20)Create a new attribute for an owner.
Endpoint: POST /attributes/{owner_type}/{owner_id}
Headers: AccountID, Key
Path Parameters:
owner_type - Type of ownerowner_id - ID of the ownerBody:
{ "data": [ { "attribute": "custom_field", "value": "custom_value" } ]}Update an existing attribute.
Endpoint: PATCH /attributes/{owner_type}/{owner_id}
Headers: AccountID, Key
Path Parameters:
owner_type - Type of ownerowner_id - ID of the ownerBody: Same structure as Create Attribute
Delete an attribute.
Endpoint: DELETE /attributes/{owner_type}/{owner_id}
Headers: AccountID, Key
Path Parameters:
owner_type - Type of ownerowner_id - ID of the ownerQuery Parameters:
attribute - Attribute name to deleteGet a list of all distribution centers.
Endpoint: GET /distribution_centers
Headers: AccountID, Key
Get details about a specific distribution center.
Endpoint: GET /distribution_centers/{distribution_center_id}
Headers: AccountID, Key
Path Parameters:
distribution_center_id - Distribution center IDGet a paginated list of manufacture orders.
Endpoint: GET /manufacture
Headers: AccountID, Key
Query Parameters:
page - Page number (default: 1)per_page - Items per page (default: 20)Get details about a specific manufacture order.
Endpoint: GET /manufacture/{order}
Headers: AccountID, Key
Path Parameters:
order - Manufacture order IDAlways test your authentication using the /ping endpoint before making more complex requests.
For large listings, always use pagination instead of trying to get all data at once. This improves performance and reduces server load.
Always check HTTP status codes and handle errors appropriately in your code. Implement retry logic for transient errors.
Validate required fields and data formats before sending requests to avoid 400 errors.
Never expose API keys in public code. Use environment variables, secret managers, or secure configuration files.
When processing multiple items, use bulk endpoints (like bulk cancel or bulk serial creation) instead of multiple individual requests.
Implement rate limiting in your code to avoid overloading the API. Space out requests appropriately.
Use the interactive Swagger documentation at /apirest/v4/oms/docs to see the most recent endpoints and exact parameter requirements.
ShipEdge Core includes interactive Swagger documentation for REST API v4 (OMS):
URL: https://your-instance.shipedge.com/apirest/v4/oms/docs
Features:
Common causes:
Solution:
AccountID and Key)Common causes:
AccountID or Key)Solution:
Common causes:
Solution:
/apirest/v4/oms/)Common causes:
Solution:
page and per_page parameters)Common causes:
Solution:
Common causes:
Solution:
STANDARD, SAVE_SPACE, FIFO, LIFO, FEFO, FLFO, LLFO, BIN_ASC, BIN_DESCNext Step: REST API v4 (WMS) - Learn to use WMS endpoints for warehouse operations