API quickstart
Read time: 5 minutes. Who it's for: A developer making their first calls to the QuotWay API.
⚠️ The QuotWay API requires the Enterprise plan (a live trial counts). Creating keys needs the Admin staff role in QuotWay.
What you need
- A Shopify store with QuotWay installed, on Enterprise or an active trial.
- An Admin account in QuotWay (Settings → Staff). Managers and Sales reps can see the key list (names and prefixes only) but can't create, roll or revoke keys.
curlor any HTTP client.
Step 1 - Create an API key
- In your Shopify admin, open QuotWay → Settings → Integrations → API keys.
- Select Create API key.
- Name it after the system that will use it, for example NetSuite sync (Celigo).
- Tick the scopes it needs. For this quickstart choose Read quotes (
read_quotes) and Create quotes and post messages (write_quotes). - Leave Expires on Never for now, and leave Allowed IP addresses empty.
- Tick I accept the QuotWay API Terms of Use - keys can't be created without it (read the API Terms first; they cover key security and what you owe buyers for data you copy out).
- Select Create key, then copy the key immediately. It starts with
qw_live_and is shown only once - QuotWay stores only a hash of it.
Store the key the way you store a password: in a secrets manager or an environment variable, never in source control.
export QUOTWAY_API_KEY="qw_live_…"
Step 2 - Check the key
GET /v1/ping works with any valid key and tells you which store and scopes it belongs to.
curl https://api.quotway.com/v1/ping \
-H "Authorization: Bearer $QUOTWAY_API_KEY"
{
"object": "ping",
"shop_domain": "northwind-supply.myshopify.com",
"api_version": "2026-10-01",
"scopes": ["read_quotes", "write_quotes"]
}
A 401 means the key is wrong, revoked or expired; a 402 means the store isn't on Enterprise.
See Errors.
Step 3 - List your quotes
curl -G https://api.quotway.com/v1/quotes \
-H "Authorization: Bearer $QUOTWAY_API_KEY" \
--data-urlencode "status=proposal_sent,countered" \
--data-urlencode "limit=5"
{
"object": "list",
"data": [
{
"object": "quote",
"id": "clz8k2x9f0001qw7h3m4n5p6r",
"number": "QW-1042",
"status": "proposal_sent",
"mode": "wholesale",
"source": "product_page",
"currency": "USD",
"…": "…"
}
],
"has_more": true,
"next_cursor": "eyJ1IjoiMjAyNi0wOS0yOVQxNDoxMjowMC4wMDBaIiwiaSI6ImNsejhrMng5ZjAwMDFxdzdoM200bjVwNnIifQ"
}
Pass next_cursor back as cursor to get the next page. Every field on a quote is described in
The quote object.
Tip: filter names use brackets, such as
updated_at[gte].curl -G --data-urlencodeencodes them for you.
Step 4 - Create a quote request
This records a buyer's request exactly as if it came from your storefront. Lines reference Shopify variant ids; titles, SKUs and catalog prices are read from Shopify.
curl https://api.quotway.com/v1/quotes \
-H "Authorization: Bearer $QUOTWAY_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: 6f1c2b9e-4d3a-4f8e-9b1a-2c7d5e8f0a13" \
-d '{
"buyer": { "email": "buyer@example.com", "name": "Dana Ortiz", "company_name": "Acme Restaurant Group" },
"lines": [
{ "variant_id": "gid://shopify/ProductVariant/4455667788", "quantity": 120, "requested_price": "11.50" }
],
"notes": "Delivery to our Denver kitchen, please."
}'
The response is 201 Created with the new quote in status submitted. It appears in QuotWay's
quote list straight away, your staff get the usual "new quote received" email, and your automation
rules run on it. If the request doesn't match your store's targeting rules you get a 422 not_eligible instead. Full details: Create quotes.
The Idempotency-Key header makes the call safe to retry - see Idempotency.
Step 5 - Get told when things change
Rather than polling, add a webhook endpoint in Settings → Integrations → Webhooks and QuotWay
will send you quote.proposal_sent, quote.accepted, quote.converted and 22 other events as
they happen. Start with Webhooks.
Next steps
- Authentication - scopes, test keys, IP allowlists, rolling keys.
- The quote object - especially how to read
totals.headline. - API reference - every endpoint and schema.
解決しませんか?サポートチームがお手伝いします。