API
Find and show tracking numbers from your own code or AI agent (Claude, ChatGPT, Cursor, OpenClaw, Hermes…), with the same credits as the website: availability, search and balance are free, showing a tracking number costs 1 credit.
1. API keys
Generate a key for each app or agent, so you can disable or delete one without touching the others.
Loading…
2. API docs
Authentication
Send one of your API keys as a bearer token with every request. Requests and responses are JSON. Base URL: https://api.izitn.com/v2
Authorization: Bearer izi_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxFilters
Used by availability and search. At least one date window is required; both together return shipments matching both. Only tracking numbers nobody has used yet are returned.
| Field | Type | Description |
|---|---|---|
| country | string | Destination country, ISO code: US, GB, CA, FR, DE, ... Default US. |
| carrier | string | ups, fedex, usps, evri, dpd. US: ups, fedex, usps. GB: fedex, evri, dpd. CA, FR, DE, IT: fedex. Other countries: fedex, ups, usps. Leave out for every carrier (US and GB only). |
| zipcode | string | Destination zip code. Required for UPS, USPS, and FedEx in the US. |
| city | string | Destination city, exact name (e.g. LONDON). Required for FedEx outside the US. |
| uk_to_uk | boolean | FedEx to the UK only: just shipments sent from the UK. |
| ship_from / ship_to | string | Ship date window, YYYY-MM-DD, both days included, 10 days at most. |
| delivery_from / delivery_to | string | Estimated delivery window, same format and limit. |
| status | string | all, in_transit or delivered. Default all when not sent. |
Endpoints
The days of the date window that have at least one available tracking number, to pick dates before searching. The days are those of the ship window when one is given, else of the delivery window.
curl -X POST https://api.izitn.com/v2/tn/availability \
-H "Authorization: Bearer $IZITN_API_KEY" \
-H "Content-Type: application/json" \
-d '{"country": "US", "carrier": "ups", "zipcode": "55117",
"delivery_from": "2026-10-14", "delivery_to": "2026-10-20"}'
# => {"date_type": "delivery", "days": ["2026-10-14", "2026-10-15", "2026-10-17"]}Shipments matching the filters, sorted by estimated delivery date. Tracking numbers are hidden: each result has a token, valid 24 hours. Extra fields: order (asc or desc), page, page_size (1–50, default 10).
curl -X POST https://api.izitn.com/v2/tn/search \
-H "Authorization: Bearer $IZITN_API_KEY" \
-H "Content-Type: application/json" \
-d '{"country": "GB", "carrier": "fedex", "city": "LONDON",
"delivery_from": "2026-10-14", "delivery_to": "2026-10-20", "page_size": 20}'
# => {"total": 37, "page": 1, "page_size": 20,
# "results": [{"token": "gAAAAABn...", "carrier": "fedex",
# "status_code": "in_transit", "status_label": "In transit",
# "ship_date": "2026-10-11", "scheduled_delivery": "2026-10-15",
# "origin": "MEMPHIS, TN", "destination": "LONDON",
# "zipcode": "", "weight": 1.2, "weight_unit": "LB"}, ...]}The tracking number of one search result. Free when this account already showed it: charged says whether a credit was used. Shown numbers also appear in your History.
curl -X POST https://api.izitn.com/v2/tn/show \
-H "Authorization: Bearer $IZITN_API_KEY" \
-H "Content-Type: application/json" \
-d '{"token": "gAAAAABn..."}'
# => {"tracking_number": "794658322104", "carrier": "fedex",
# "charged": true, "credit_balance": 49}Your remaining credits.
curl https://api.izitn.com/v2/balance -H "Authorization: Bearer $IZITN_API_KEY"
# => {"credit_balance": 49}Errors
Every error has the same JSON body, with one of these HTTP statuses and codes:
{"error": {"code": "invalid_request", "message": "Enter a zip code to search."}}| Status | Code | Meaning |
|---|---|---|
| 400 | invalid_request | A filter is missing or wrong: no date window, no zip code or city, carrier not offered for the country, window over 10 days… |
| 400 | invalid_token | The result token is malformed or expired (24 hours): search again. |
| 401 | missing_api_key | No Authorization: Bearer header. |
| 401 | invalid_api_key | The API key doesn't exist (mistyped or deleted). |
| 402 | insufficient_credits | Not enough credits to show a tracking number. |
| 403 | api_key_disabled | The key was disabled in the API keys section above. |
| 403 | account_disabled | The account owning the key is disabled. |
| 404 | not_found | The shipment of this token no longer exists, or the URL is wrong. |
| 422 | validation_error | A field has the wrong type or format. |
| 429 | rate_limited | More than 60 requests per minute with one key: wait Retry-After seconds. |
| 500 | internal_error | Unexpected error on our side: try again, then contact [email protected]. |