Quick Start

Before you begin

You will need:

  • A ShipRateAPI account with at least one store created
  • An API key — issued automatically when you create a store in the ShipRateAPI admin portal, under Stores
  • At least one carrier configured and enabled in the portal
Step 1 — Choose your integration method

All platforms use a single endpoint. The platform is passed in the X-Platform request header so ShipRateAPI can attribute requests to the correct integration for logging and analytics. The first-party plugins set this header automatically.

POST /api/v1/quotes
x-api-key: YOUR_API_KEY
X-Platform: magento2 | shopify | bigcommerce | commercetools | custom

If you are using one of the first-party plugins, the endpoint is configured in the plugin settings and called automatically. See the Magento 2, Shopify, BigCommerce, or commercetools guides for plugin-specific setup.

Step 2 — Make your first rate request

Send a POST request with a JSON body describing the shipment destination and items. All requests must include your API key in the x-api-key header.

curl -X POST https://api.shiprateapi.com/api/v1/quotes \
  -H "Content-Type: application/json" \
  -H "x-api-key: YOUR_API_KEY" \
  -d '{
    "destination": {
      "country": "GB",
      "postcode": "SW1A 1AA",
      "city": "London"
    },
    "items": [
      {
        "sku": "WIDGET-001",
        "name": "Blue Widget",
        "quantity": 2,
        "unitPrice": 2499,
        "weight": 1.25,
        "tags": []
      }
    ]
  }'

See the API Reference for a full description of every field.

Step 3 — Read the response

Every successful response is wrapped in an envelope: success plus a data object holding the quote. Read the quote from data — the rates array inside it lists every available shipping method, and all entries returned are offerable.

{
  "success": true,
  "data": {
    "quoteId": "f1e2d3c4-...",
    "rates": [
      {
        "id": "9f8e7d6c-...",
        "carrierName": "Royal Mail",
        "carrierCode": "royal-mail",
        "serviceName": "Tracked 48",
        "amount": 399,
        "currency": "GBP",
        "displayAmount": "£3.99",
        "minDeliveryDays": 2,
        "maxDeliveryDays": 3,
        "validFrom": null,
        "validTo": null
      }
    ],
    "totalWeightGrams": 700,
    "totalValueAmount": 3998,
    "currency": "GBP",
    "zoneName": "UK Mainland",
    "cached": false,
    "quoteDate": "2026-07-17",
    "calculatedAt": "2026-07-17T12:00:00.000Z",
    "responseMs": 45
  }
}
  • amount — the price in the smallest currency unit (pence/cents)
  • displayAmount — a pre-formatted price string ready to show the customer
  • carrierCode — the carrier's own code. The most stable identifier in the response, and the one to store against an order
  • serviceName — a display label taken from the matched rate rule's name. Merchants can edit it in the admin at any time, so show it to the customer rather than matching on it
  • id — generated fresh on every request. It identifies a rate within a single response only; it is not a durable rate id and will not reappear on a later quote
Next steps