SellOrchard

Developer API

API overview

The SellOrchard API lets your own systems read and update your store: products, stock, orders, customers, discounts, gift cards, bookings and reports.
On this page

Quickstart

1. Create an API key

  1. In your store admin, open Settings → Developers.
  2. Under API keys, click Create key, give it a name (for example “Warehouse sync”) and tick only the scopes it needs.
  3. Copy the secret. It starts with so_live_ (or so_test_ on trial stores) and is shown only once.
Treat API keys like passwords. Keep them on your server, never in browser or mobile app code, and revoke any key that may have leaked.

2. Make your first request

Store the key in an environment variable and fetch your store’s details:

Shell
export SELLORCHARD_API_KEY="so_live_..."

curl https://api.sellorchard.com/v1/store \
  -H "Authorization: Bearer $SELLORCHARD_API_KEY"
Response
{
  "data": {
    "id": "01JBX4Q2ZK8V7Y5N3M1P0R9S6T",
    "name": "Green Leaf Goods",
    "currency": "USD",
    "timezone": "America/New_York",
    "test_mode": false
  }
}

3. Make a change

Writes use POST, PATCH and DELETE with a JSON body. Add an Idempotency-Key so a retried request is never applied twice:

Shell
curl -X POST https://api.sellorchard.com/v1/inventory-levels/adjust \
  -H "Authorization: Bearer $SELLORCHARD_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"location_id": 1, "variant_id": 5521, "delta": 12, "reason": "received"}'

Base URL & format

All requests go to:

Base URL
https://api.sellorchard.com/v1/
  • HTTPS only. Requests and responses are JSON (Content-Type: application/json).
  • Times are ISO-8601 in UTC, e.g. 2026-11-02T14:03:11Z.
  • Money is a decimal string next to a currency code, e.g. "price": "19.99" — never a float.
  • IDs are integers. The store’s own ID is a ULID string.
  • Lists are cursor-paginated; single objects are returned under data.
  • Errors use a consistent error object with a matching HTTP status.

Versioning

The version is part of the path (/v1). Within a version we only make backwards-compatible changes: new endpoints, new optional parameters, and new fields in responses. Build your integration to ignore fields it doesn’t recognise.

Breaking changes ship as a new version with advance notice, and the previous version keeps working during a migration period. Webhook payloads carry an api_version (currently 2026-11) so you can tell which shape you’re receiving.

Resources

  • Store — The store the API key belongs to.
  • Products — Products with their variants, options and images.
  • Categories & brands — Read the store's categories and brands (to use their ids on products).
  • Inventory — Locations and stock per location. Every change is recorded as an inventory movement and fires inventory.updated.
  • Orders — Orders, fulfillments, cancellations, refunds and notes.
  • Purchase orders — Dropshipping / print-on-demand purchase orders (read only).
  • Customers — Customers and their orders.
  • Discount codes — Discount codes (automatic discounts are managed in the admin).
  • Gift cards — Issue, read and disable gift cards.
  • Bookings — Appointments and classes booked through the store.
  • Reports — Sales figures.
  • API reference — This document.

Want the machine-readable spec? The OpenAPI 3.1 document is available at https://api.sellorchard.com/v1/openapi.json.