API conventions
Field naming, money, timestamps, ids, coordinates, and pagination in the Maxmove API.
Requests and responses#
- JSON bodies with snake_case field names.
- Money as an integer amount in cents plus an ISO 4217
currency, for example"amount_cents": 4890, "currency": "EUR". - Timestamps in RFC 3339, UTC.
- Ids carry a prefix:
qt_quotes,del_deliveries,we_webhook endpoints,evt_events. - Addresses come with coordinates. Maxmove does not geocode; send the coordinates your address search returned.
- New fields can appear in responses at any time. Ignore fields you do not know.
Pagination#
GET /v1/deliveries returns up to limit entries (1 to 20, default 20), newest first, plus next_page_token. Pass it as page_token to read the next page; it is null on the last page.
curl "https://api.maxmove.com/v1/deliveries?limit=20&page_token=$NEXT_PAGE_TOKEN" \
-H "x-api-key: $MAXMOVE_KEY"let pageToken: string | null = null;
do {
const url = new URL('https://api.maxmove.com/v1/deliveries');
url.searchParams.set('limit', '20');
if (pageToken) url.searchParams.set('page_token', pageToken);
const res = await fetch(url, { headers: { 'x-api-key': process.env.MAXMOVE_KEY! } });
const page = await res.json();
for (const delivery of page.deliveries) console.log(delivery.id, delivery.status);
pageToken = page.next_page_token;
} while (pageToken);import os
import requests
page_token = None
while True:
params = {"limit": 20}
if page_token:
params["page_token"] = page_token
page = requests.get(
"https://api.maxmove.com/v1/deliveries",
headers={"x-api-key": os.environ["MAXMOVE_KEY"]},
params=params,
).json()
for delivery in page["deliveries"]:
print(delivery["id"], delivery["status"])
page_token = page["next_page_token"]
if not page_token:
breakAn invalid page_token answers 400 invalid_page_token.
Versioning#
The major version is part of the path (/v1). Within v1, Maxmove only makes additive changes. See Versioning.
Did this answer your question?