logo

Postcodes / Zipcodes

Postcodes are user-scoped and domain-scoped. For Amazon domains, creating a postcode triggers asynchronous cookie generation in a background thread; the record starts with status `in-progress` and becomes `active` once cookies are ready. For non-scraping domains (REST API / CSV import) the postcode is immediately set `active`.

Create Zipcode

POST
https://multicartapi.com/api/v1/zipcodes/create-zipcode/
API Key or Session Token

Create a new postcode for a domain; triggers background cookie generation for Amazon (scraping) domains.

curl "https://multicartapi.com/api/v1/zipcodes/create-zipcode/" \
  -X POST \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"domain": 1, "zipcode": "4500"}'

Parameters

ParameterTypeRequiredDescription
domainintegerRequiredDomain ID (from /settings/domains/)
zipcodestringRequiredPostcode value e.g. "4500"
Request body
{"domain": 1, "zipcode": "4500"}
Response
{"code": 200, "data": {"id": 15, "zipcode": "4500", "domain": {"id": 1, "domain": "amazon.com.au", "supplier_type": "scraping"}, "status": "in-progress", "created_at": "2026-06-20T10:00:00Z", "updated_at": "2026-06-20T10:00:00Z"}, "status": 1}

Notes

Duplicate (same user + domain + zipcode) is rejected with code 409. If another active record already exists for the same zipcode + domain under a different user, the cookie file is reused and status is set to `active` immediately rather than `in-progress`. Poll /zipcodes/get-zipcodes/ filtering by status until the record transitions from `in-progress` to `active` before using the zipcode ID in ASIN or SKU creation calls.

List Zipcodes

POST
https://multicartapi.com/api/v1/zipcodes/get-zipcodes/
API Key or Session Token

List all zipcodes belonging to the authenticated user, with optional filters by status or domain.

curl "https://multicartapi.com/api/v1/zipcodes/get-zipcodes/" \
  -X POST \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"status": "active", "domain": 1}'

Parameters

ParameterTypeRequiredDescription
statusstringOptionalFilter by status: active, pending, in-progress, inactive, or failed
domainintegerOptionalFilter by domain ID
Request body
{"status": "active", "domain": 1}
Response
{"code": 200, "data": [{"id": 15, "zipcode": "4500", "domain": {"id": 1, "domain": "amazon.com.au", "country_code": "AU", "supplier_type": "scraping", "status": "active"}, "status": "active", "created_at": "2026-06-20T10:00:00Z", "updated_at": "2026-06-20T10:05:00Z"}], "status": 1}

Notes

Returns all zipcodes for the user when no filters are supplied. The `id` returned here is the Zipcode row ID used as `customer_postcode` in /schedules/amazon/asin/create/ and as the lookup key in other ASIN/SKU endpoints.

Update Zipcode

POST
https://multicartapi.com/api/v1/zipcodes/update-zipcode/
API Key or Session Token

Partially update the domain or postcode value of an existing zipcode record.

curl "https://multicartapi.com/api/v1/zipcodes/update-zipcode/" \
  -X POST \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"zipcode_id": 15, "zipcode": "2000"}'

Parameters

ParameterTypeRequiredDescription
zipcode_idintegerRequiredZipcode row ID to update
domainintegerOptionalNew domain ID
zipcodestringOptionalNew postcode value
Request body
{"zipcode_id": 15, "zipcode": "2000"}
Response
{"code": 200, "data": {"id": 15, "zipcode": "2000", "domain": {"id": 1, "domain": "amazon.com.au"}, "status": "in-progress", "updated_at": "2026-06-20T11:00:00Z"}, "status": 1}

Notes

All fields except `zipcode_id` are optional; send only the fields you want to change. Changing the `zipcode` or `domain` on an Amazon scraping domain will re-trigger cookie generation, resetting status to `in-progress`.

Delete Zipcode

POST
https://multicartapi.com/api/v1/zipcodes/delete-zipcode/
API Key or Session Token

Permanently delete a zipcode record by its row ID.

curl "https://multicartapi.com/api/v1/zipcodes/delete-zipcode/" \
  -X POST \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"zipcode_id": 15}'

Parameters

ParameterTypeRequiredDescription
zipcode_idintegerRequiredZipcode row ID to delete
Request body
{"zipcode_id": 15}
Response
{"code": 200, "data": "Zipcode deleted successfully.", "status": 1}

Notes

Deleting a zipcode that is still referenced by ASINs or SKUs in active collections will leave those items without a valid postcode. Ensure no active collection items reference this zipcode before deleting.

Search Zipcodes

POST
https://multicartapi.com/api/v1/zipcodes/search-zipcodes/
API Key or Session Token

Search the authenticated user's zipcodes by partial postcode value or domain name.

curl "https://multicartapi.com/api/v1/zipcodes/search-zipcodes/" \
  -X POST \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"search": "450"}'

Parameters

ParameterTypeRequiredDescription
searchstringOptionalPartial match string applied against the zipcode value and domain name fields. Omit or pass an empty string to return all records.
Request body
{"search": "450"}
Response
{"code": 200, "data": [{"id": 15, "zipcode": "4500", "domain": {"id": 1, "domain": "amazon.com.au"}, "status": "active", "created_at": "2026-06-20T10:00:00Z", "updated_at": "2026-06-20T10:05:00Z"}], "status": 1}

Notes

The `search` term is matched against both the `zipcode` field and the related `domain` name, so searching "amazon" will return all zipcodes across Amazon domains. Results are scoped to the authenticated user only.