---
title: "API quickstart"
description: "Create a QuotWay API key, check it with /v1/ping, list your quotes and create a quote request - in about ten minutes."
url: "https://www.quotway.com/de/docs/api/quickstart"
type: "documentation"
category: "api"
updated: "2026-09-30"
locale: "de"
source: "QuotWay - B2B Quote & Negotiation App for Shopify"
---

# 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.
- `curl` or any HTTP client.

## Step 1 - Create an API key

1. In your Shopify admin, open **QuotWay → Settings → Integrations → API keys**.
2. Select **Create API key**.
3. **Name** it after the system that will use it, for example *NetSuite sync (Celigo)*.
4. Tick the **scopes** it needs. For this quickstart choose **Read quotes** (`read_quotes`) and
   **Create quotes and post messages** (`write_quotes`).
5. Leave **Expires** on *Never* for now, and leave **Allowed IP addresses** empty.
6. Tick **I accept the QuotWay API Terms of Use** - keys can't be created without it (read the
   [API Terms](/api-terms) first; they cover key security and what you owe buyers for data you copy
   out).
7. 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.

```bash
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.

```bash
curl https://api.quotway.com/v1/ping \
  -H "Authorization: Bearer $QUOTWAY_API_KEY"
```

```json
{
  "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](/docs/api/errors).

## Step 3 - List your quotes

```bash
curl -G https://api.quotway.com/v1/quotes \
  -H "Authorization: Bearer $QUOTWAY_API_KEY" \
  --data-urlencode "status=proposal_sent,countered" \
  --data-urlencode "limit=5"
```

```json
{
  "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](/docs/api/quote-object).

> **Tip:** filter names use brackets, such as `updated_at[gte]`. `curl -G --data-urlencode`
> encodes 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.

```bash
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](/docs/api/create-quotes).

The `Idempotency-Key` header makes the call safe to retry - see [Idempotency](/docs/api/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](/docs/api/webhooks).

## Next steps

- [Authentication](/docs/api/authentication) - scopes, test keys, IP allowlists, rolling keys.
- [The quote object](/docs/api/quote-object) - especially how to read `totals.headline`.
- [API reference](/docs/api/reference) - every endpoint and schema.
