API reference

Storefront API

Shopper-facing lookups that power delivery choices on your webstore or app. Fetch the delivery options a shopper can pick, live carrier rates for a route, a per-product delivery promise for product pages, the eligible fulfillment or collection locations near a customer, and phone-number validation. Every call is stateless: none of them creates an order or a shipment.

Before you start

  • Every request carries Authorization: Bearer <token>, x-api-key and tenant-id; see the Authentication API.
  • A tenant is your Carriyo account. A merchant is a brand or store within it, identified by an uppercase code such as ACME, not its display name.
  • Any field named partner_* is your identifier, not Carriyo's: partner_location_code is the location code you chose, while partner_location_id and location_id are Carriyo's, in the form ACCOUNT_<uuid>.
  • Delivery options are configured per merchant in the Dashboard, and only ACTIVE ones are evaluated here.
  • These lookups run on every page view, so they are rate limited per plan. See the API conventions for the limits and the retry advice.
Serverhttps://api.carriyo.comAuthOAuth 2.0 + API KeySpecstorefront.yaml

Storefront

Shopper-facing evaluations for your webstore or app. Given a cart, a product, or a customer location, these lookups return the delivery choices, rates, promises, and pickup or fulfillment locations to show the shopper.

They are stateless: no order or shipment is created. Storefront frontends and headless commerce middleware call them, so they run at higher volume than the per-shipment management endpoints. To manage the delivery options behind these lookups, see the delivery-options endpoints in the Core API.

Related: How delivery options are configured and evaluated

4 operations · 0 objects

post/storefront/delivery-options

Get delivery options

Returns the delivery options that match a cart at checkout, evaluated against the merchant's configured conditions.

Behavior

What to send

merchant and at least one line item are required. Every other field is read only when a configured condition needs it:

  • order_date for working and blackout days
  • customer for geography
  • payment.order_total for order value
  • payment.payment_on_delivery for payment type
  • line-item weights for weight
  • line-item categories for product and item_product_categories conditions

Line items resolve to catalog products by product_ref or product_id. sku is not a lookup key; it only supplies the line's id when you omit one. A line that matches no catalog product is not rejected: it stays unresolved and is never stock-evaluated.

customer is where the shopper is: the delivery destination for DELIVERY options and the anchor for each COLLECTION option's collection points. All three delivery methods are returned unless delivery_methods narrows them.

fulfillment_locations narrows the whole answer to the named locations: options are matched against their location allowlists, each entry lists only those locations, and its fee and estimated arrival window are computed from them. With inventory_check the stock read is narrowed too.

What comes back

Each entry carries a shipping_fee, an estimated arrival window and, for COLLECTION options, its collection points under customer_collection_locations. With inventory_check, it also carries an availability verdict per item and for the whole cart.

Each entry is a single-delivery fact: one shipping_fee, one estimated arrival window, one availability verdict, and the fulfillment_locations that can each alone provide exactly that answer. Everything it marks available ships together in one delivery from any one of those locations; an entry never claims fulfillment across several locations.

When stock was evaluated, entries are banded by availability, FULL first, then every other entry by how many line items it can supply, most first, and ordered by sort_by and sort_direction within each band. When stock was not evaluated, ordering is sort_by and sort_direction alone. With the default SPEED, the first entry is the fastest option that can deliver the whole cart, whenever stock was checked and one exists.

Shipping fee

  • FREE_OF_COST options return 0.
  • PAID options resolve a fixed or tiered fee.
  • PASS_THROUGH options return a live carrier quote from parcels and the line items. Without parcels, or when no rate is quoted, the option is returned with an empty shipping_fee.

The request currency selects which of the option's pricing entries applies but does not force the currency of the answer. The entry is chosen in a fixed order:

  1. the entry matching the request currency
  2. the option's default-currency entry
  3. the first configured entry, only when the option has no default currency

A configured default currency that matches no entry yields an empty fee. Always render the returned shipping_fee.currency.

  • An empty shipping_fee means no price could be resolved: no tier contained the order total, no currency matched, or no carrier rate was quoted. It is not free shipping.
  • A tiered fee ending in a free tier reports that tier's min_value as free_shipping_threshold, independent of the cart value, and it stays present even when the fee amount could not be resolved.
  • An option whose fee lookup fails outright is dropped rather than shown unpriced.
  • The fee is evaluated against the cart as sent, even on a PARTIAL entry. Requote each chosen subset with its own payment for exact per-delivery fees.

Stock (inventory_check)

The stock check runs only when inventory management is enabled and the line resolves to a catalog product. Without both, availability marks are absent, which means not evaluated rather than unavailable. A resolved product with no inventory_key reads NONE: a real answer, not an unevaluated one.

An option that can fulfill nothing is omitted. An option whose stock read failed is kept, marked UNKNOWN. The whole-cart availability is therefore FULL, PARTIAL or UNKNOWN, never NONE.

  • include_variations returns each maximal single-location variation of an option as its own entry, so a caller can compose a multi-delivery checkout.
  • allocation_check applies the merchant's allocation rules on top of the stock read. It defaults to the value of inventory_check; set it to false alongside inventory_check for a pure stock answer.
  • fulfillment_locations narrows the stock read to the named locations.
  • A radius-covered location is only eligible when customer.coords is supplied.
  • An item that an option's item_product_categories condition excludes is marked NONE in every entry of that option, whether or not stock was read.

Collection points

Each COLLECTION option lists its eligible collection points. An option configured with an explicit list offers exactly those; one with no list offers every active collection location in customer.country. With customer.coords, points are sorted nearest first and bounded by the smaller of max_collection_distance and the option's configured maximum. The list is capped at max_collection_locations, 10 by default and 50 at most.

Errors

  • 400 — no line items.
  • 400 — a fulfillment_locations entry that resolves to no location.
  • 400allocation_check true without inventory_check.

Related: How delivery options are evaluated

Headers

NameValueRequiredDescription
AuthorizationBearer YOUR-ACCESS-TOKENYesOAuth 2.0 bearer token obtained from `POST /oauth/token`.
x-api-keyYOUR-API-KEYYesYour tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.
tenant-idYOUR-TENANT-IDYesYour Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.
Content-Typeapplication/jsonYesMedia type of the request body.

Request body

Content type: application/jsonSchema: delivery-options-requestrequired
  • merchantstringrequired
    The merchant the order belongs to. The API key must have access to this merchant.
  • sales_channelstring
    The sales channel the cart originates from, matching sales_channel on the order you create afterwards. Used during stock-aware filtering to evaluate allocation rules conditioned on sales channel, so the cart sees the same rule decisions the order will. When omitted, channel-scoped allocation rules do not match.
  • order_datestringformat: date-time
    The date the order was placed (ISO 8601). Defaults to the time of the request. Used as the reference date for working-day and blackout-day evaluation.
  • paymentdelivery-options-payment
    Payment details for the order. Drives order_value and payment_type conditions.
  • line_itemsdelivery-options-line-item[]required
    The items in the cart; at least one is required. weight.value is the weight of a single unit, so a line contributes weight.value times quantity to the order weight, which is compared in kilograms. A line's category falls back to the catalog product's category when omitted.
  • parcelsdelivery-options-parcel[]
    Parcels in the order. Used by the carrier rate calculator when a matching option's pricing strategy is PASS_THROUGH (i.e., the carrier-quoted rate is shown to the shopper). Not used by condition matching; weight conditions are evaluated against line_items.
  • fulfillment_locationsdelivery-options-address[]
    Candidate fulfillment locations, by partner_location_code, partner_location_id or partner_location_name. An option matches when at least one of them is in its location allowlist, or it has no allowlist. With inventory_check, they also narrow the stock read, the returned locations and the location used for the fee and arrival estimate.
  • customerdelivery-options-address
    Drives the geography conditions and sets the timezone for working and blackout days. Where the shopper is: the delivery destination for DELIVERY options and the anchor for collection points for COLLECTION options.
  • inventory_checkboolean
    Evaluate options against stock. Effective only when inventory management is enabled and the line items resolve to catalog products.
  • allocation_checkboolean
    Apply the merchant's allocation rules on top of the stock read. Defaults to inventory_check; true without it is rejected.
  • include_variationsboolean
    Return every maximal single-location variation of each option as its own entry, for composing a multi-delivery checkout. Without it each option appears once, as its best-coverage entry. Has no effect unless the stock check is effective.
  • sort_bystring
    Order within each availability band: SPEED (earliest arrival) or COST (lowest fee). Defaults to SPEED.
    Values:SPEEDCOST
  • sort_directionstring
    Direction applied to sort_by. ASC (default) orders soonest/cheapest first; DESC reverses the non-null ordering. Options with no arrival estimate or fee always sort last regardless of direction.
    Values:ASCDESC
  • delivery_methodsstring[]
    Restrict the response to options of the listed methods. When omitted or empty, all methods are returned. Useful when the storefront has separate UI tabs for delivery and click-and-collect, or when the integration only supports one method (e.g., Shopify's standard Carrier Service API has no pickup-point concept, so the Shopify connector sets this to ["DELIVERY"]).
  • max_collection_locationsinteger
    Maximum collection points per option. Defaults to 10, capped at 50.
  • max_collection_distancedistance
    Upper bound on the distance of returned collection points. Effective only with customer.coords; the smaller of this and the option's configured maximum applies.

Responses

200The delivery options that match the supplied order.

An array of delivery-options-response-item. Each item has the following fields:

  • idstring
    Unique identifier for this delivery option.
  • delivery_methodstring
    How the option fulfills: DELIVERY to the customer's address, COLLECTION from a designated location, DIGITAL for no physical fulfillment.
    Values:COLLECTIONDELIVERYDIGITAL
  • codestring
    The merchant-defined code identifying the delivery option.
  • namestring
    Display name of the delivery option (shown to the shopper).
  • descriptionstring
    The merchant-configured longer description of the option.
  • image_urlstring
    URL to an icon or image associated with the option.
  • carrier_account_idstring
    The Carriyo carrier account that fulfills this option.
  • shipping_feedelivery-options-shipping-fee
    Fee resolved from the option's pricing strategy. A fee without an amount (empty, or carrying only free_shipping_threshold) means no price could be resolved and must not be read as free shipping.
  • estimated_arrival_fromstringformat: date-time
    Earliest estimated arrival date/time (ISO 8601). Absent when the option configures no delivery window, leaving estimated_arrival_to as the only arrival value — render the estimate as a single point rather than a range. Both arrival fields are absent when the option configures no delivery estimate at all, and on an entry that failed after its fee resolved.
  • estimated_arrival_tostringformat: date-time
    Latest estimated arrival date/time (ISO 8601). Absent when the option configures no delivery estimate, in which case estimated_arrival_from is absent too.
  • itemsdelivery-option-line-item-ref[]
    Every line item from the request, keyed by line_item_id, marked with what this entry can provide of it. Items the entry cannot supply are marked NONE rather than dropped.
  • fulfillment_locationsresolved-fulfillment-location[]
    Locations this entry can ship from. With inventory_check, each one alone can supply everything the entry marks available; otherwise the option's configured locations, omitted when none are configured.
  • availabilitystring
    Verdict for the whole cart: FULL when every line is fully available, PARTIAL when some are not, UNKNOWN when a line's read failed. Absent means stock was not evaluated; UNKNOWN is no answer, never out of stock.
    Values:FULLPARTIALUNKNOWN
  • customer_collection_locationscustomer-collection-location[]
    Eligible collection points for a COLLECTION option, nearest first with customer.coords. An option with no configured list resolves to every active collection location in the customer's country; a configured list is not country-filtered. An option with no eligible points is omitted from the response.
400The request failed validation. Returned when `line_items` is missing or empty (without line items no delivery option can be matched to the cart), when `allocation_check` is `true` without `inventory_check: true`, or when a `fulfillment_locations` entry references a location that cannot be resolved — the error message names the offending entry, e.g. `fulfillment_locations[1] ('XYZ') does not match any location.`

Need the full machine-readable spec? Download the OpenAPI document →

post/storefront/validate/phone

Validate a phone number

Validates a customer phone number and returns its parsed parts.

Behavior

Pass the number and, when the number is in national format, the country whose dialling rules apply. The call always returns 200: is_valid is always present, and country_code and national_number are omitted when the number is invalid. A blank or unparseable number returns is_valid: false.

Headers

NameValueRequiredDescription
AuthorizationBearer YOUR-ACCESS-TOKENYesOAuth 2.0 bearer token obtained from `POST /oauth/token`.
x-api-keyYOUR-API-KEYYesYour tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.
tenant-idYOUR-TENANT-IDYesYour Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.
Content-Typeapplication/jsonYesMedia type of the request body.

Request body

Content type: application/jsonSchema: validate-phone-requestrequired
  • phone_numberstringrequired
    The phone number to validate. Accepts E.164 (+<country><number>) or national format.
  • countrystring
    Two-letter ISO 3166-1 alpha-2 country code. Used to parse a national-format phone_number; not needed when the number is in E.164 format.

Responses

200The parsed phone number and whether it is valid.Schema: validate-phone-response
  • is_validboolean
    Whether the number is a valid, dialable number. Always present.
  • national_numberstring
    The number in national format, without the country dialling code. Present when the number parsed.
  • country_codestring
    Echoes the country supplied in the request. Present when a country was provided (omitted for an E.164 number sent without a country).
  • raw_inputstring
    The phone_number exactly as supplied in the request. Always present.

Need the full machine-readable spec? Download the OpenAPI document →

post/storefront/product-delivery-options

Get per-product delivery options

Returns the delivery options available for each product in a list, evaluated per product from its own fulfillment location, for delivery promises on listing and product pages.

Behavior

What to send

products is required, with one to 50 entries, each naming a catalog product by product_id or product_ref and carrying between one and five fulfillment locations, its own or the request default. merchant and customer are optional. Every other field is read only when a configured condition needs it:

  • order_date for working and blackout days and the estimated arrival window
  • customer for geography, the allocation address and the arrival destination
  • unit_price times quantity, in currency, for order value and payment type
  • weight for weight
  • category for product and item_product_categories conditions
  • sales_channel for allocation rules only; it does not filter options

This endpoint has no delivery_methods, payment, parcels or include_variations, and no collection-point parameters.

Products resolve to catalog products by product_ref or product_id. sku is not a lookup key. Each product's category comes from the request, then from the catalog. A product that an option's item_product_categories condition excludes has that option omitted from its delivery_options.

fulfillment_locations at the top level is the default for every product, and products[].fulfillment_locations overrides it. Reference a location by partner_location_id, partner_location_code or partner_location_name.

What comes back

Every requested product is represented, even one whose delivery_options is empty. PASS_THROUGH options are omitted from this endpoint.

Each entry is a single-delivery fact: one shipping_fee, one estimated arrival window, one availability verdict, and the fulfillment_locations that can each alone provide exactly that answer. Everything it marks available ships together in one delivery from any one of those locations; an entry never claims fulfillment across several locations.

When an option's locations differ in what they can offer, the entry reports the best of them and lists only the locations sharing that answer. Best is decided in a fixed order:

  • best availability verdict
  • fastest estimated arrival window
  • highest fulfillable_quantity
  • the option's configured location order

When stock was evaluated, entries are banded by availability, FULL first, then PARTIAL, UNKNOWN and NONE, and ordered by sort_by and sort_direction within each band. When stock was not evaluated, ordering is sort_by and sort_direction alone. With the default SPEED, the first entry is the fastest option that can deliver the full quantity, whenever stock was checked and one exists.

Shipping fee

Fees resolve as they do on the cart endpoint, with the product's unit_price times quantity standing in for the order total.

The request currency selects which of the option's pricing entries applies but does not force the currency of the answer. The entry is chosen in a fixed order:

  1. the entry matching the request currency
  2. the option's default-currency entry
  3. the first configured entry, only when the option has no default currency

A configured default currency that matches no entry yields an empty fee. Always render the returned shipping_fee.currency.

  • An empty shipping_fee means no price could be resolved: no tier contained the product value, or no currency matched. It is not free shipping.
  • A tiered fee ending in a free tier reports that tier's min_value as free_shipping_threshold, independent of the product value, and it stays present even when the fee amount could not be resolved.

Stock (inventory_check)

The stock check runs only when inventory management is enabled and the product resolves to a catalog product. Without both, availability and fulfillable_quantity are absent, which means not evaluated rather than unavailable. A resolved product with no inventory_key reads NONE with fulfillable_quantity 0: a real answer, not an unevaluated one.

Each entry carries an availability verdict (FULL, PARTIAL or NONE against the requested quantity) and a fulfillable_quantity capped at the requested quantity.

An option that can fulfill nothing is kept, marked NONE with fulfillable_quantity 0. An option whose stock read failed is kept, marked UNKNOWN, with no fulfillable_quantity. An option is absent only when it does not match the product or serves none of the product's fulfillment locations.

  • allocation_check applies the merchant's allocation rules on top of the stock read. It defaults to the value of inventory_check; set it to false alongside inventory_check for a pure stock answer.
  • Availability honors each location's fulfillment coverage: a location outside its zones or radius can only appear on entries marked NONE.
  • A radius-covered location is only eligible when customer.coords is supplied.

Products not in the catalog

A product_id or product_ref that matches no product does not fail the request. The product keeps its place as an error row with delivery_options empty and error.code PRODUCT_NOT_FOUND; the row echoes the identifier you sent and omits product_id when it could not be resolved. An error row carries no availability, so treat it as not evaluated, never as out of stock. Only request-level problems fail the whole call.

Errors

  • 400 — no products, or more than 50.
  • 400 — a product without product_id or product_ref.
  • 400 — a product requested twice.
  • 400 — a quantity below 1.
  • 400 — a product with no fulfillment location, or more than 5.
  • 400 — a location reference resolving to nothing, or to an inactive or non-fulfillment location.
  • 400allocation_check true without inventory_check.

Related: How products, identifiers and inventory keys fit together

Headers

NameValueRequiredDescription
AuthorizationBearer YOUR-ACCESS-TOKENYesOAuth 2.0 bearer token obtained from `POST /oauth/token`.
x-api-keyYOUR-API-KEYYesYour tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.
tenant-idYOUR-TENANT-IDYesYour Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.
Content-Typeapplication/jsonYesMedia type of the request body.

Request body

Content type: application/jsonSchema: product-delivery-options-requestrequired
  • merchantstringrequired
    The merchant the products belong to. The API key must have access to this merchant.
  • sales_channelstring
    The sales channel the storefront request originates from, matching sales_channel on orders you create afterwards. Used during stock-aware filtering to evaluate allocation rules conditioned on sales channel. When omitted, channel-scoped allocation rules do not match.
  • order_datestringformat: date-time
    Reference date for working-day and blackout-day evaluation (ISO 8601). Defaults to the time of the request.
  • currencystring
    ISO 4217 three-letter currency code for the supplied unit_price values. It also selects which of an option's configured pricing entries applies, but does not force the currency of the returned fee — read shipping_fee.currency for that.
  • customerdelivery-options-address
    The customer's location. Drives customer-geography conditions and the timezone for working-day evaluation. Supply coords to drive distance-based option logic.
  • inventory_checkboolean
    Set to true to mark each delivery-option entry with an availability verdict and a fulfillable_quantity. Effective only when inventory management is enabled for the tenant.
  • allocation_checkboolean
    Apply the merchant's allocation rules on top of the stock read. Defaults to inventory_check; true without it is rejected.
  • fulfillment_locationslocation-request[]
    Default locations for every product, by partner_location_id, partner_location_code or partner_location_name. A product with neither this nor its own override is rejected.
  • productsproduct-delivery-options-product[]required
    The products to evaluate. Between 1 and 50. The same product may not be requested twice, whether by a repeated identifier or by two identifiers resolving to it.
  • sort_bystring
    Order within each availability band: SPEED (earliest arrival) or COST (lowest fee). Defaults to SPEED.
    Values:SPEEDCOST
  • sort_directionstring
    Sort direction applied to sort_by.
    Values:ASCDESC

Responses

200The delivery options available for each product.Schema: product-delivery-options-response

An array of product-delivery-result. Each item has the following fields:

  • product_idstring
    Carriyo's internal product id, resolved from whichever identifier you sent. Absent only on an error row whose product_ref could not be resolved.
  • product_refstring
    Your product reference, echoed back when the request supplied one
  • quantityintegerrequired
    The quantity requested for this product, echoed from the request.
  • delivery_optionsproduct-delivery-option-entry[]required
    The options for this product, always an array. When stock was evaluated, entries are banded FULL, PARTIAL, UNKNOWN, NONE, with sort_by and sort_direction applied within each band. Empty when nothing matches or the product is not in the catalog (see error); an out-of-stock option appears marked NONE rather than being dropped.
  • errorproduct-delivery-error
    Present only when this product could not be evaluated. The row then carries no options; the other products in the request are unaffected. Absent on every normal row.
400The request failed validation. Returned when `products` is empty or has more than 50 entries, a product carries neither `product_id` nor `product_ref`, the same product is requested twice (a repeated identifier, or two identifiers resolving to one product), a `quantity` is less than 1, `allocation_check` is `true` without `inventory_check: true`, a product resolves to no fulfillment locations or more than 5, or a referenced fulfillment location cannot be found or is not an active fulfillment location (a collection-only location is rejected).

Need the full machine-readable spec? Download the OpenAPI document →

post/storefront/locations

Get eligible locations

Returns the active locations that can serve a customer, nearest first when coordinates are supplied, so you can choose where to fulfill from or which collection points to offer.

Behavior

What to send

merchant and customer.country are required. customer.coords is optional and unlocks distance, nearest-first order and max_distance.

Eligibility

A location qualifies when it is active, the merchant has access to it and it carries the requested function. Geography is then checked by function:

  • FULFILLMENT locations are gated by their coverage. Zones qualify a location when they cover the customer's country, state, city or area. A radius needs coordinates on both sides, so a radius-covered location without coordinates, or a request without customer.coords, is ineligible. A location with neither serves everywhere.
  • COLLECTION locations qualify on their collection flag alone. The only geographic constraint is max_distance.

Distance and order

With customer.coords, each location carries a distance and the list is nearest first; locations with no computable distance come last. Without coordinates the list is in location_code order. max_distance caps how far out to look and needs coordinates.

Filters

functions accepts FULFILLMENT and COLLECTION and defaults to FULFILLMENT. location_type filters by STORE or WAREHOUSE.

Cap

The call returns the complete answer capped at max_locations (default 10, maximum 50), with no paging. Receiving exactly max_locations items means more may exist, so narrow the filters or raise the cap.

Errors

  • 400merchant missing.
  • 400customer.country missing.
  • 400max_distance without customer.coords.
  • 400max_locations outside 1 to 50.
  • 400page, page_size, sort_by or sort_direction supplied.

Related: How locations and their coverage are configured

Headers

NameValueRequiredDescription
AuthorizationBearer YOUR-ACCESS-TOKENYesOAuth 2.0 bearer token obtained from `POST /oauth/token`.
x-api-keyYOUR-API-KEYYesYour tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.
tenant-idYOUR-TENANT-IDYesYour Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`.
Content-Typeapplication/jsonYesMedia type of the request body.

Request body

Content type: application/jsonSchema: eligible-locations-requestrequired
  • merchantstringrequired
    The merchant whose locations to search. The API key must have access to this merchant.
  • functionsstring[]
    The location functions required. Defaults to [FULFILLMENT].
  • customereligible-locations-customerrequired
    The customer location used to evaluate location coverage and distance.
  • location_typestring
    Restrict to stores or warehouses. Omit to include both.
    Values:STOREWAREHOUSE
  • custom_attributescustom-attributes
    Filter on the locations' custom attributes. A location matches when, for every key you send, it carries at least one of the values you listed for that key.
  • max_distancedistance
    Upper bound on distance from the customer. Requires customer.coords.
  • max_locationsinteger
    Cap on returned locations. The response is one complete, capped answer in fixed selection order (nearest-first with customer.coords, location_code order otherwise) — there are no pages. Receiving exactly max_locations items means more may exist; narrow the filters or raise the cap.

Responses

200The eligible locations, nearest first (with coords), capped at `max_locations`.Schema: eligible-locations-response

An array of eligible-location. Each item has the following fields:

  • location_idstring
    Carriyo's internal location identifier.
  • location_codestring
    The merchant's own location code.
  • location_namestring
    Display name of the location.
  • location_typestring
    Whether the location is a store or a warehouse.
    Values:STOREWAREHOUSE
  • functionsstring[]
    The functions this location carries (FULFILLMENT, COLLECTION), derived from its own flags rather than echoing the requested functions.
  • custom_attributescustom-attributes
    The location's custom attributes.
  • address1string
  • address2string
  • citystring
  • statestring
  • countrystring
    Two-letter ISO 3166-1 alpha-2 country code.
  • postcodestring
  • areastring
  • coordsnumber[]
    Latitude and longitude as [lat, lng].
  • distancedistance
    Distance from the customer. Null when either side has no coordinates.
400The request failed validation. Returned when `customer` (with a `country`) is missing, `max_distance` is used without `customer.coords`, `max_locations` is outside 1–50, or any of the unsupported `page`/`page_size`/`sort_by`/`sort_direction` fields are sent.

Need the full machine-readable spec? Download the OpenAPI document →