Skip to content

Orders

As a Seller, you manage orders through list/show/update endpoints, bulk status actions, import/export, and follow-up workflows.

INFO

There is no POST /orders bulk-create endpoint on the REST API. Orders are created from confirmed leads or through dashboard/import flows.

List Orders (All Statuses)

GET/orders/ Bearer Token — view orders

Retrieve a paginated list of orders across all statuses.

Supports the common list parameters (page, per_page, keyword, search_by, match_type, start_at, end_at, date_from, date_to, id, ids).

ParameterTypeRequiredDescription
statusstringNoFilter by status key
mobile_statusarrayNoFilter by one or more status values
other_statusintegerNoAdditional status filter (13)
stale_shipped_daysintegerNoShipped orders older than N days (130)
balancedstringNoyes or no
date_typestringNoDate column to filter on
productstringNoFilter by product
city_idstringNoFilter by city ID
agent_idstringNoFilter by agent (when permitted)
team_idstringNoFilter by team (when permitted)
shipping_company_idstringNoFilter by carrier (when permitted)
creation_typestringNolead_based or direct_order (when permitted)
conversion_actionnumberNoConversion action filter (when permitted)

Response

Success (200): standard paginated { data, meta.pagination } envelope.

List Orders by Status

GET/orders/{status} Bearer Token — view orders

Retrieve a paginated list of orders for a specific status tab.

Uses the same query parameters as List Orders (All Statuses). The {status} path segment selects the order status context (same keys as in Order statuses below).

Show Order

GET/orders/{order}/show Bearer Token — view orders

Retrieve a single order by ID.

Response

Success (200):

json
{
  "data": {
    "id": "01ARZ3NDEKTSV4RRFFQ69G5FAV",
    "reference": "ORD-00001",
    "full_name": "John Doe",
    "phone": "0612345678",
    "city": "Casablanca",
    "address": "Hay Salam",
    "status": "NEW",
    "products": [],
    "created_at": "2025-01-16T10:00:00Z",
    "updated_at": "2025-01-16T10:00:00Z"
  },
  "meta": {}
}

Not found (404):

json
{
  "error": {
    "code": "HTTP_ERROR",
    "message": "Resource not found."
  }
}

Update Order

PATCH/orders/{status}/{item} Bearer Token — update orders

Update a single order in the given status context.

Request body: order fields and products[] (same shape as dashboard update). On success the API returns a legacy message payload:

json
{
  "message": "Order updated successfully"
}

Validation failures may return { "message": "..." } with HTTP 422.

Delete Orders (Bulk)

DELETE/orders/ Bearer Token — delete orders

Bulk delete orders by ID. Deletion is only allowed when policy and business rules permit it.

Request Body:

json
{
  "ids": [
    "01ARZ3NDEKTSV4RRFFQ69G5FAV",
    "01ARZ3NDEKTSV4RRFFQ69G5FAW"
  ]
}
FieldTypeRequiredDescriptionRules
idsarrayYesOrder IDs to deleteeach ID: string, 1–100 chars
ids.*stringYesOrder IDmust exist

Response

Success (200): legacy message envelope (not { data, meta }):

json
{
  "message": "2 order(s) deleted"
}

WARNING

Only orders the authenticated token is allowed to delete are removed. Orders that fail policy checks are skipped silently.

Bulk Status Actions

All bulk actions below use POST under /orders/ and accept an ids array of order IDs unless noted.

MethodPathDescription
POST/orders/push-to-shipping-companyPush orders to shipping company
POST/orders/assign-to-delivery-boyAssign to delivery agent
POST/orders/mark-as-shippedMark as shipped (ids, date, warehouseId)
POST/orders/mark-as-shipped-by-scannerMark shipped via scanner
POST/orders/mark-as-returnedMark as returned
POST/orders/mark-as-returned-by-scannerMark returned via scanner
POST/orders/mark-as-returned-by-importMark returned via import
POST/orders/mark-as-deliveredMark as delivered
POST/orders/mark-as-delivered-by-importMark delivered via import
POST/orders/mark-as-canceledCancel orders
POST/orders/renewRenew orders
POST/orders/generate-tracking-labelsGenerate tracking labels
POST/orders/importImport orders from file
POST/orders/export/{status?}Export orders (optional status filter)

Mark as shipped example body:

json
{
  "ids": ["01ARZ3NDEKTSV4RRFFQ69G5FAV"],
  "date": "2025-01-16",
  "warehouseId": "01ARZ3NDEKTSV4RRFFQ69G5FAW"
}

Most action endpoints return a { "message": "..." } payload on success.

Follow-up & Products

MethodPathDescription
GET/orders/{order}/follow-upGet follow-up details
PATCH/orders/{item}/follow-upUpdate follow-up
GET/orders/{order}/productsList products on an order

Order Statuses

Reference values for {status} path segments and filters. There is no GET /order-statuses endpoint.

StatusDescription
NEWFreshly created order
PACKEDPacked and ready for shipping
WAITING_FOR_SHIPPING_COMPANYPushed to shipping company, waiting for pickup
SHIPPEDIn transit
DELIVEREDSuccessfully delivered to customer
RETURNEDReturned by customer or courier
CANCELEDOrder canceled
CHANGEDOrder has been modified
ROLLBACKOrder rolled back to previous state
OUT_OF_STOCKProduct was out of stock

Cities

List Cities

GET/cities Bearer Token

Retrieve a paginated list of available cities.

ParameterTypeRequiredDescription
per_pagenumberNoResults per page

Response

Success (200):

json
{
  "data": [
    {
      "id": "01ARZ3NDEKTSV4RRFFQ69G5FAV",
      "name": "Casablanca"
    }
  ],
  "meta": {
    "pagination": {
      "page": 1,
      "limit": 50,
      "total": 100,
      "pages": 2
    }
  }
}

Show City

GET/cities/{item}/show Bearer Token

Retrieve a single city by ID.

wedoCOD API Documentation