GET

List Orders

Retrieve a paginated list of orders with filtering, sorting, and search capabilities.

Endpoint

HTTP Request
GET /v1/orders

Authentication

This endpoint requires a valid API key with canViewOrders permission. The API key must be passed in the X-API-Key header.
Required Header
X-API-Key: your_api_key_here

Query Parameters

ParameterTypeRequiredDefaultDescription
pagenumberNo1Page number for pagination
limitnumberNo25Results per page (max: 250)
statusstringNo-Filter by custom status ID
order_idsstringNo-Comma-separated list of order IDs. By default, expects internal UUIDs. When use_shopify_order_id is true, provide the numeric portion of Shopify's order GID (e.g., for 'gid://shopify/Order/450789469', use '450789469')
use_shopify_order_idbooleanNofalseSet to 'true' to use Shopify order IDs instead of internal UUIDs. Extract the number from Shopify's GID format (gid://shopify/Order/450789469 → 450789469) and pass it in order_ids
searchstringNo-Search in order name, customer name, company, or email
sort_bystringNocreated_atField to sort by: 'created_at' or 'name'
sort_orderstringNodescSort direction: 'asc' or 'desc'

Response

Returns a JSON object with the following structure:
200 OK - Success Response
{
  "orders": [
    {
      "id": "uuid",
      "shopify_order_id": "gid://shopify/Order/123456789",
      "name": "#1001",
      "created_at": "2024-10-30T12:00:00Z",
      "custom_status": {
        "id": "status-uuid",
        "name": "Processing",
        "color": "#2948ff"
      },
      "custom_sub_status": {
        "id": "sub-status-uuid",
        "name": "Awaiting Parts"
      },
      "customer": {
        "first_name": "John",
        "last_name": "Doe",
        "email": "john@example.com",
        "phone": "+1234567890"
      },
      "shipping_address": {
        "company": "Acme Corp",
        "address1": "123 Main St",
        "address2": "Suite 100",
        "city": "New York",
        "province": "NY",
        "zip": "10001",
        "country": "United States",
        "latitude": "40.7128",
        "longitude": "-74.0060"
      },
      "total_price": "150.00",
      "currency": "USD",
      "line_items": [
        {
          "id": "line-item-uuid",
          "shopify_line_item_id": "gid://shopify/LineItem/123456789",
          "name": "Product Name",
          "quantity": 2
        }
      ],
      "note": "Please ship carefully",
      "cancelled": false,
      "cancelled_at": null
    }
  ],
  "pagination": {
    "page": 1,
    "limit": 25,
    "total_count": 100,
    "total_pages": 4,
    "has_next_page": true,
    "has_previous_page": false
  }
}

Response Fields

Root Response Object

FieldTypeDescription
ordersarrayArray of order objects
paginationobjectPagination information

Order Object

FieldTypeDescription
idstringUnique identifier for the order (UUID)
shopify_order_idstringShopify's global ID for the order
namestringOrder number (e.g., #1001)
created_atstring | nullISO 8601 timestamp when order was created in Shopify
custom_statusobject | nullCustom status information
custom_sub_statusobject | nullCustom sub-status information
customerobjectCustomer information
shipping_addressobjectShipping address information
total_pricestring | nullTotal order price
currencystring | nullCurrency code (e.g., USD, CAD)
line_itemsarrayArray of line item objects
notestring | nullOrder note/comments
cancelledboolean | nullWhether the order is cancelled
cancelled_atstring | nullISO 8601 timestamp when order was cancelled

Status Object Fields

FieldTypeDescription
idstringUnique identifier for the custom status
namestringDisplay name of the status (uses public name if configured)
colorstringHex color code for the status

Sub-Status Object

FieldTypeDescription
idstringUnique identifier for the sub-status
namestringName of the sub-status

Customer Object Fields

FieldTypeDescription
first_namestring | nullCustomer's first name
last_namestring | nullCustomer's last name
emailstring | nullCustomer's email address
phonestring | nullCustomer's phone number

Shipping Address Object Fields

FieldTypeDescription
companystring | nullCompany name
address1string | nullPrimary address line
address2string | nullSecondary address line
citystring | nullCity name
provincestring | nullState/Province code
zipstring | nullPostal/ZIP code
countrystring | nullCountry name
latitudestring | nullLatitude coordinate
longitudestring | nullLongitude coordinate

Line Item Object Fields

FieldTypeDescription
idstringUnique identifier for the line item
shopify_line_item_idstringShopify's global ID for the line item
namestringProduct name
quantitynumberQuantity ordered

Pagination Object Fields

FieldTypeDescription
pagenumberCurrent page number
limitnumberResults per page
total_countnumberTotal number of orders matching the query
total_pagesnumberTotal number of pages
has_next_pagebooleanWhether there is a next page
has_previous_pagebooleanWhether there is a previous page

Examples

Basic Request

cURL Request
curl -X GET "https://api.ultimate-custom-order-status.apps.msmtech.ca/api/v1/orders?page=1&limit=25" \
  -H "X-API-Key: your_api_key_here"

Filter by Status

cURL Request
curl -X GET "https://api.ultimate-custom-order-status.apps.msmtech.ca/api/v1/orders?status=abc123&sort_by=created_at&sort_order=desc" \
  -H "X-API-Key: your_api_key_here"

Get Specific Orders by UUID

cURL Request
curl -X GET "https://api.ultimate-custom-order-status.apps.msmtech.ca/api/v1/orders?order_ids=uuid1,uuid2,uuid3" \
  -H "X-API-Key: your_api_key_here"

Get Specific Orders by Shopify Order ID

cURL Request
curl -X GET "https://api.ultimate-custom-order-status.apps.msmtech.ca/api/v1/orders?order_ids=5460132438316,5460132438317&use_shopify_order_id=true" \
  -H "X-API-Key: your_api_key_here"

Search Orders

cURL Request
curl -X GET "https://api.ultimate-custom-order-status.apps.msmtech.ca/api/v1/orders?search=john@example.com&page=1&limit=50" \
  -H "X-API-Key: your_api_key_here"

Rate Limiting

This endpoint is subject to per-minute and per-day rate limits based on your API key. Rate limit information is returned in the response headers:
  • X-RateLimit-Limit-Minute: Maximum requests per minute
  • X-RateLimit-Remaining-Minute: Remaining requests in current minute
  • X-RateLimit-Reset-Minute: Unix timestamp when minute window resets
  • X-RateLimit-Limit-Day: Maximum requests per day
  • X-RateLimit-Remaining-Day: Remaining requests in current day
  • X-RateLimit-Reset-Day: Unix timestamp when day window resets
  • Retry-After: Seconds to wait before retrying (when rate limited)

Error Responses

400 Bad Request

Invalid query parameters

400 Bad Request
{
  "error": "Invalid query parameters",
  "details": {
    "errors": { ... }
  }
}

401 Unauthorized

Missing or invalid API key

401 Unauthorized
{
  "error": "Unauthorized"
}

403 Forbidden

API key lacks required permissions

403 Forbidden
{
  "error": "Insufficient permissions"
}

500 Internal Server Error

Server error occurred

500 Internal Server Error
{
  "error": "Failed to fetch orders",
  "details": {
    "message": "Error details..."
  }
}