Orders – API methods
The Orders API lets you automate tasks related to your customers’ orders. Think of it as a direct line between your system and ours – no manual data entry required.
We offer 4 HTTP methods to work with order data:
- POST – add new orders or update existing order information.
 - GET – retrieve order details using the order ID.
 - PUT – register orders that haven’t been added to the platform yet.
 
DELETE – mark orders as deleted (sets the IsDeleted status).
POST method – adding order information
This method handles both new orders and updates to existing ones. You can choose from 3 different modes:
- Add – adds a completely new order to your account.
 - AddOrReplace – adds a new order or replaces existing data if the order is already in the system.
 - Replace – updates the information for an existing order.
 
Endpoint
The endpoint for POST requests is:: https://api.ecdp.app/orders
Request parameters
| Parameter | Required | Type | Category | Min/max length (characters) | Description | 
| x-api-key | yes | string | header | – | Your API key, which you can find in Settings > API. | 
| mode | yes | string | body | – | Add, AddOrReplace, Replace – choose what do you want to do with the order data. | 
| id | yes | string | body | min:1 max: 128  | Order ID number. | 
| date | yes | string($date-time) | body | – | When the order was placed. | 
| timeZone | no | string | body | max: 100 | The timezone the order was placed in. See: Supported time zones for orders for parameter values. | 
| websiteId | no | integer($int32) | body | – | Website ID number where the order was placed. | 
| status | no | string | body | – | One of four order statuses: placed, paid, completed, canceled. | 
| currency | no | string | body | min: 3 max: 3  | Order currency. | 
| totalValue | yes | number($double) | body | min: 0 | Total order value. | 
| customer | yes | body | Customer information – see Customer parameters. | ||
| products | yes | body | Product details – see Product parameters. | ||
| orderAttribute | no | body | Optional product attributes – see Product attribute parameters. | 
The customer, products, and orderAttributes parameters contain their own sub-parameters for more detailed information.
Customer parameters
| Parameter | Required | Type | Min/max length (characters) | Description | 
| no | string | min: 0 max: 320  | Customer’s email address – required if email is set as the default matching mode in Settings > Customers. | |
| phone | no | string | min:0 max: 20  | Customer’s phone number – required if phone is set as the default matching mode in Settings > Customers. | 
| crmId | no | string | min: 0 max: 128  | Customer’s CRM ID – required if CRM ID is set as the default matching mode in Settings > Customers. | 
Product parameters
| Parameter | Required | Type | Min/max length (characters) | Description | 
| id* | yes | string | min: 1 max:128  | Product ID. | 
| name* | yes | string | min: 1 max: 2048  | Product name. | 
| price* | yes | number($double) | min: 0 | Product price. | 
| quantity* | yes | integer($int32) | min:1 max: 2147483647  | Quantity of purchased product. | 
| returned | no | integer($int32) | min: 0 max: 2147483647  | Number of returned products. | 
| url | no | string | min: 0 max: 2048  | Product page URL. | 
| imageUrl | no | string | min: 0 max: 2048  | Product image URL. | 
| category | no | string | min: 0 max: 2048  | Product category. | 
| productAttributes | no | Product attributes – see Order attribute parameters. | 
Product attribute parameters
| Parameter | Required | Type | Min/max length (characters) | Description | 
| name* | yes | string | min: 0 max: 256  | Product attribute name. | 
| value | no | string | – | Product attribute value. | 
Order attribute parameters
| Parameter | Required | Type | Min/max length (characters) | Description | 
| name* | yes | string | min: 0 max: 256  | Order attribute name. | 
| value | no | string | – | Order attribute value. | 
Request body syntax
Here’s what a request looks like when you want to add a new order:
{
  "mode": "Add",
  "data": [
    {
      "id": "12345",
      "date": "2024-11-06T10:10:00.055Z",
      "timeZone": "Pacific Standard Time",
      "websiteId": 1,
      "status": "Completed",
      "currency": "USD",
      "totalValue": 150.00,
      "returnsValue": 0,
      "customer": {
        "email": "customer@example.com",
        "phone": "+15551234567",
        "crmId": "67890"
      },
      "products": [
        {
          "id": "p001",
          "name": "Wireless Earbuds",
          "price": 75.00,
          "quantity": 2,
          "returned": 0,
          "url": "https://example.com/products/wireless-earbuds",
          "imageUrl": "https://example.com/images/wireless-earbuds.jpg",
          "category": "Electronics",
          "productAttributes": [
            {
              "name": "Color",
              "value": "Black"
            },
            {
              "name": "Warranty",
              "value": "1 Year"
            }
          ]
        }
      ],
      "orderAttributes": [
        {
          "name": "Shipping Method",
          "value": "Express"
        },
        {
          "name": "Gift Wrap",
          "value": "Yes"
        }
      ]
    }
  ]
}Not sure if an order already exists in your database? Simply change the “mode” parameter to “AddOrReplace” and let the system handle it for you.
Response codes
201: Created
Your request was successful, and the order has been created.
400: Bad request
Something went wrong with your request – usually a missing or incorrect parameter.
Sample response:
{
  "type": "string",
  "title": "string",
  "status": 0,
  "detail": "string",
  "instance": "string",
  "errors": [
    "string"
  ]401: Unauthorized
Your API key is missing or you don’t have permission to access this information. Sample response:
{
{
  "type": "string",
  "title": "string",
  "status": 0,
  "substatus": "CustomerInvalidModelState",
  "detail": "string",
  "instance": "string"
}GET{id} method – retrieving order information using order ID
Use the GET method when you need to pull order details from the system using order ID. A successful request returns read-only order data.
Endpoint
The endpoint for GET requests is: https://api.ecdp.app/orders/{id}
Request parameters
| Parameter | Required | Type | Used in | Description | 
| id | yes | string | URL path | The ID number of the order whose data you want. | 
| x-api-key | yes | string | header | Your API key, which you can find in Settings > API. | 
Proper request format
The correct API request for order number 12 looks like this: https://client.ecdp.app/orders/{12}
Response codes
200: Success
Your request was processed successfully.
Sample response:
{
  "status": 0,
  "data": {
    "id": "string",
    "date": "2024-07-25T10:08:59.197Z",
    "timeZone": "string",
    "websiteId": 0,
    "status": "string",
    "currency": "str",
    "totalValue": 0,
    "returnsValue": 0,
    "customer": {
      "id": 0,
      "email": "string",
      "phone": "string",
      "crmId": "string"
    },
    "products": [
      {
        "id": "string",
        "name": "string",
        "price": 0,
        "quantity": 2147483647,
        "returned": 2147483647,
        "url": "string",
        "imageUrl": "string",
        "category": "string",
        "productAttributes": [
          {
            "name": "string",
            "value": "string"
          }
        ]
      }
    ],
    "orderAttributes": [
      {
        "name": "string",
        "value": "string"
      }
    ]
  }
}401: Unauthorized
Your API key is missing, or you don’t have permission to access this information.
Sample response:
{
  "type": "string",
  "title": "string",
  "status": 0,
  "substatus": "CustomerInvalidModelState",
  "detail": "string",
  "instance": "string"
}404: Not found
The order you’re looking for doesn’t exist in the system.
Sample response:
{  "type": "string",
  "title": "string",
  "status": 0,
  "substatus": "CustomerInvalidModelState",
  "detail": "string",
  "instance": "string"
}PUT method – updating order status
This method handles orders that haven’t been given a status in the platform yet, or which status you want to update. When you send a successful PUT request, you’ll get a read-only response confirming the order status has been updated.
Endpoint
The endpoint for PUT method is:https://api.ecdp.app/orders/status
Request parameters
| Parameter | Required | Type | Used in | Description | 
| orderId | yes | string | body | The ID number of the order whose status you want to update. | 
| orderStatus | yes | string | body | One of the following order statuses available in ECDP: paid, completed, placed, canceled. | 
| x-api-key | yes | string | header | Your API key, which you can find in Settings > API. | 
Proper request format
The correct API request for order number 12 and looks like this:
{
  "orderId": "12",
  "orderStatus": placed"
}Response codes
200: Success
Your request was processed, and the order status has been updated.
400: Bad request
Something went wrong – usually a missing or incorrect parameter.
Sample response:
{
  "type": "string",
  "title": "string",
  "status": 0,
  "substatus": "CustomerInvalidModelState",
  "detail": "string",
  "instance": "string",
  "errors": [
    "string"
  ]
}401: Unauthorized
Your API key is missing or you don’t have permission to access this information.
Sample response:
{
  "type": "string",
  "title": "string",
  "status": 0,
  "substatus": "CustomerInvalidModelState",
  "detail": "string",
  "instance": "string"
}DELETE{id} method – marking orders as deleted
Use the DELETE method to change an order’s status to IsDeleted. This doesn’t actually remove the order from your system – it just marks it as deleted. A successful request returns a read-only response.
Endpoint
The endpoint for DELETE method is:https://api.ecdp.app/orders/{id}
Request parameters
| Parameter | Required | Type | Used in | Description | 
| id | yes | string | URL path | The ID number of the order you want to mark as deleted. | 
| x-api-key | yes | string | header | Your API key, which you can find in Settings > API. | 
Response codes
200: Success
The order status has been updated to deleted. Sample response:
{
  "status": 0,
  "data": {
    "id": "string",
    "date": "2024-07-25T10:10:53.036Z",
    "timeZone": "string",
    "websiteId": 0,
    "status": "string",
    "currency": "str",
    "totalValue": 0,
    "returnsValue": 0,
    "customer": {
      "id": 0,
      "email": "string",
      "phone": "string",
      "crmId": "string"
    },
    "products": [
      {
        "id": "string",
        "name": "string",
        "price": 0,
        "quantity": 2147483647,
        "returned": 2147483647,
        "url": "string",
        "imageUrl": "string",
        "category": "string",
        "productAttributes": [
          {
            "name": "string",
            "value": "string"
          }
        ]
      }
    ],
    "orderAttributes": [
      {
        "name": "string",
        "value": "string"
      }
    ]
  }
}401: Unauthorized
Your API key is missing or you don’t have permission to access this information. Sample response:
{
  "type": "string",
  "title": "string",
  "status": 0,
  "substatus": "CustomerInvalidModelState",
  "detail": "string",
  "instance": "string"
}404: Not found
The order you’re trying to delete doesn’t exist in the system.
Sample response:
{
  "type": "string",
  "title": "string",
  "status": 0,
  "substatus": "CustomerInvalidModelState",
  "detail": "string",
  "instance": "string"
}