Skip to main content
Delivery zones define where a location delivers. Each zone is a GeoJSON polygon with a delivery fee and optional ordering constraints (minimum order, maximum distance, priority). All delivery-zone endpoints require an active connection to the location — only the app acting as the location’s order receiver can manage its zones.

Scopes

  • delivery_zones:read — list zones, get a zone, and check coverage.
  • delivery_zones:write — create, update, and delete zones.

Create a zone

Zone names must be unique per location. polygon is a GeoJSON Polygon of [longitude, latitude] rings — the first ring must be closed (first and last points equal).
delivery_fee_cents defaults to 0, is_active to true, priority to 0, and zone_type to polygon. The response is the created delivery_zone object; use its id for the zone endpoints. Coverage checks always evaluate polygon. zone_type: 'circle' and radius_miles are descriptive metadata only — for a circle zone, submit a polygon that approximates the circle.

List zones

Returns { "object": "list", "data": [...] } containing only active zones.

Update a zone

PATCH changes only the fields you send:

Delete a zone

Deletes deactivate the zone (it drops out of list results and coverage checks):

Check whether a coordinate is deliverable

Before quoting a delivery, check the customer’s coordinates against the location’s zones:
The response is a delivery_zone_check: in_zone tells you the location delivers there, and when true zone carries the matching zone and delivery_fee_cents its fee. When false, both are null. Zone get/update/delete return 404 for a zone that belongs to a different location — a partner can only ever touch zones owned by the location in the path.