HTTP API

REST API for partners building direct integrations with Order Change.

Overview

The Order Change API allows partner systems to read order details, check edit eligibility, and apply changes on behalf of merchants. All edits respect the merchant's configured settings — edit window, enabled capabilities, and plan limits.

Base URL

https://api.orderchange.com

Authentication

API requests require authentication via API key or OAuth2. The API supports both ApiKeyAuth and OAuth2 schemes. Authentication credentials are issued per merchant and scoped to a single Shopify store.

Contact support@orderchange.com for API credentials and integration assistance.

Free vs Pro Capabilities

Order Change offers two tiers. The capabilities available through the API match the merchant's plan:

Free

  • ✓ Address corrections with validation
  • ✓ Contact info updates (email, phone)
  • ✓ Order cancellation
  • ✓ Invoice generation and edits
  • ✓ Unlimited orders

Pro ($49/mo)

  • ✓ Everything in Free
  • ✓ Line item & variant changes
  • ✓ Item removal
  • ✓ Shipping upgrades (paid)
  • ✓ Discount code application
  • ✓ One-click upsells (merchant keeps 100% GMV)

API requests to Pro-only endpoints return a 403 error if the merchant is on the Free plan. Check eligibility first using the GET /orders/:id/eligibility endpoint.

Preview & Commit Pattern

Most mutation endpoints follow a two-phase pattern: preview the change, then commit it.

  1. Preview — Validate the change without applying it. Returns what the order would look like after the edit, including any recalculated totals or shipping costs.
  2. Commit — Apply the previewed change. Must be called within the merchant's configured edit window.

This pattern ensures that customers and partners see exactly what will happen before the order is modified.

Key Endpoints

Read endpoints are scoped per order: /v1/stores/:store_id/orders/:order_id/...

Mutation endpoints use the custom method pattern: /v1/stores/:store_id/edits/resource:action

Read Endpoints

GET/v1/health

Health check endpoint.

GET/v1/stores/:store_id/orders/:order_id

Retrieve order details. Returns line items, customer info, shipping address, and current fulfillment status.

GET/v1/stores/:store_id/orders/:order_id/change-window

Get the edit window status for this order. Returns whether the window is still open and when it closes.

GET/v1/stores/:store_id/orders/:order_id/edits

List edit history for this order. Shows which edits were applied and when.

Mutation Endpoints

All mutations follow the custom method pattern with :preview and :commit suffixes.

POST/v1/stores/:store_id/edits/address:preview

Preview an address change. Returns validated address and any updated shipping costs. Free plan.

POST/v1/stores/:store_id/edits/address:commit

Commit a previewed address change. Free plan.

POST/v1/stores/:store_id/edits/items:preview

Preview line item changes (add, remove, change variant or quantity). Returns recalculated totals. Pro plan.

POST/v1/stores/:store_id/edits/items:commit

Commit previewed item changes. Pro plan.

POST/v1/stores/:store_id/edits/discount:preview

Preview applying a discount code. Returns updated totals. Pro plan.

POST/v1/stores/:store_id/edits/discount:commit

Commit a previewed discount. Pro plan.

POST/v1/stores/:store_id/edits/cancel:preview

Preview order cancellation. Returns refund details. Free plan.

POST/v1/stores/:store_id/edits/cancel:commit

Cancel the order and issue a refund. Free plan.

Contact & Shipping Endpoints

Contact info edits and shipping upgrades are available through the MCP interface. HTTP twin endpoints are shipping. See the MCP documentation for tool details.

Note on undocumented endpoints

This documentation covers partner-facing and agent-accessible endpoints. Internal endpoints (including service-to-service authentication and internal plan management) are not documented here and are subject to change without notice. Contact support@orderchange.com if you need access to capabilities not listed above.

Error Responses

The API returns standard HTTP status codes. Error responses include a JSON body with details:

{
  "error": {
    "code": "edit_window_closed",
    "message": "This order's edit window has expired.",
    "details": {
      "window_closed_at": "2026-09-20T14:30:00Z"
    }
  }
}

400 — Invalid request (malformed JSON, missing required fields, validation failure)

401 — Missing or invalid authentication token

403 — Forbidden (plan limit reached, capability disabled by merchant, or operation not allowed for this order)

404 — Order not found or not accessible with this token

429 — Rate limit exceeded (see below)

500 — Internal server error

Rate Limits

Rate limits are applied per merchant and may vary by plan. For current rate limits, quota increases, or custom integration needs, contact support@orderchange.com.

Need help?

Partner support is available at support@orderchange.com. We typically respond within one business day.