The Python library
The official Python library is on PyPI as reeds-sdk. Import it as reeds.
pip install reeds-sdk
from reeds import Reeds
reeds = Reeds() # reads REEDS_CLIENT_ID and REEDS_CLIENT_SECRET
delivery = reeds.shipping.deliveries.create(quote_id="qt_2bX9Wn4K", reference="ORDER-10045")
What it does
- Every Shipping API call: coverage, quotes, deliveries (create, list, get, update, book, mark ready, cancel, label), the wallet, invoices and the sandbox.
- Sync and async.
Reedsfor regular code,AsyncReedsfor asyncio, with the same methods. - The access token. It fetches the token and refreshes it before it expires.
- Safe retries. Every
POSTcarries anIdempotency-Key, and a retry reuses it. It retries after429,503and dropped connections, honouringRetry-After. - Pages and errors.
for(orasync for) walks every page of a list. Each kind of failure is its own exception class, carrying the API'scode,fields,doc_urland request id. - Webhooks. It verifies the
Reeds-Signatureheader (both secrets while you rotate one) and returns a typed event. The guide has handlers for FastAPI, Flask and Django. - Types. Responses are Pydantic models with the API's field names, generated from the OpenAPI file, and typed for mypy and pyright. They allow the values Reeds adds inside v1.
It needs Python 3.11 or later. See Libraries and plugins and the guide on GitHub.
What you need to change
Nothing. The API is unchanged, and integrations that call it directly keep working.