logo

Amazon Items

CRUD operations for Amazon ASINs within a collection, plus bulk ingestion and scraped-output retrieval. All paths are under /api/v1/schedules/amazon/asin/. Legacy /schedules/asin/* aliases exist but are deprecated.

Create ASIN

POST
https://multicartapi.com/api/v1/schedules/amazon/asin/create/
API Key or Session Token

Add a single ASIN to a collection, referenced by domain ID and zipcode ID.

curl "https://multicartapi.com/api/v1/schedules/amazon/asin/create/" \
  -X POST \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "collection": 101,
  "domain": 1,
  "customer_postcode": 15,
  "asin": "B0DJQQ38TG",
  "custom_id": "ref-001",
  "include_raw_html": false,
  "output": "JSON"
}'

Parameters

ParameterTypeRequiredDescription
collectionintegerRequiredCollection ID to add the ASIN to.
domainintegerRequiredDomain ID from /settings/domains/ (e.g. 1 for amazon.com.au).
customer_postcodeintegerRequiredZipcode row ID from /zipcodes/get-zipcodes/.
asinstringRequiredAmazon ASIN, e.g. B0DJQQ38TG.
custom_idstringOptionalOptional customer reference ID stored alongside the ASIN.
include_raw_htmlbooleanOptionalWhether to include raw HTML in scrape output.
outputstringOptionalOutput format: JSON or HTML.
Request body
{
  "collection": 101,
  "domain": 1,
  "customer_postcode": 15,
  "asin": "B0DJQQ38TG",
  "custom_id": "ref-001",
  "include_raw_html": false,
  "output": "JSON"
}
Response
{
  "code": 200,
  "data": {
    "id": 5,
    "asin": "B0DJQQ38TG",
    "collection": 101,
    "domain": 1,
    "customer_postcode": 15,
    "custom_id": "ref-001",
    "include_raw_html": false,
    "output": "JSON",
    "created_at": "2026-06-20T10:00:00Z"
  },
  "status": 1
}

Notes

Max 5000 ASINs per collection. Duplicate entries (same collection + domain + postcode + ASIN) are rejected. Adding the first ASIN to a collection auto-promotes its status from draft to enable. domain and customer_postcode must be IDs, not string values — use /settings/domains/ and /zipcodes/get-zipcodes/ to obtain them.

Create Multiple ASINs

POST
https://multicartapi.com/api/v1/schedules/amazon/asin/create/multiple/
API Key or Session Token

Add multiple ASINs from a comma-separated string; domain and postcode are looked up by value, not ID.

curl "https://multicartapi.com/api/v1/schedules/amazon/asin/create/multiple/" \
  -X POST \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "collection": 101,
  "domain": "amazon.com.au",
  "customer_postcode": "4500",
  "asins": "B0DJQQ38TG,B0ABC12345,B0XYZ99999",
  "including_raw_html": false
}'

Parameters

ParameterTypeRequiredDescription
collectionintegerRequiredCollection ID to add ASINs to.
domainstringRequiredDomain name by value, e.g. "amazon.com.au". Must match Domain.domain exactly.
customer_postcodestringRequiredPostcode number by value, e.g. "4500". Must match a Zipcode row for this user and domain.
asinsstringRequiredComma-separated ASIN codes, e.g. "B001,B002,B003".
including_raw_htmlbooleanOptionalWhether to include raw HTML in scrape output. Note: field name differs from single-create (include_raw_html).
Request body
{
  "collection": 101,
  "domain": "amazon.com.au",
  "customer_postcode": "4500",
  "asins": "B0DJQQ38TG,B0ABC12345,B0XYZ99999",
  "including_raw_html": false
}
Response
{
  "code": 200,
  "data": {
    "success_count": 2,
    "error_rows": [
      { "asin": "B0XYZ99999", "error": "Duplicate entry" }
    ]
  },
  "status": 1
}

Notes

Field name divergence from single-create: this endpoint uses including_raw_html (not include_raw_html). Domain and postcode are passed by string value (not ID) — the backend performs the DB lookup internally. Rows that fail validation are returned in error_rows; the remaining ASINs are still inserted.

Bulk Create ASINs (CSV)

POST
https://multicartapi.com/api/v1/schedules/amazon/asin/create/bulk/
API Key or Session Token

Bulk-upload ASINs from a CSV file (multipart/form-data). Max 5000 rows.

curl "https://multicartapi.com/api/v1/schedules/amazon/asin/create/bulk/" \
  -X POST \
  -H "x-api-key: YOUR_API_KEY" \
  -F "collection_id=101" \
  -F "[email protected]"

Parameters

ParameterTypeRequiredDescription
collection_idintegerRequiredCollection ID to import ASINs into.
csvfileRequiredCSV file upload. Required columns: domain, customer_postcode, asin, include_raw_html.
Request (multipart/form-data)
Multipart/form-data. Form field: collection_id=101. File field: csv=<file>.

Required CSV columns (header row mandatory):
  domain            — domain name string, e.g. amazon.com.au
  customer_postcode — postcode number, e.g. 4500
  asin              — Amazon ASIN, e.g. B0DJQQ38TG
  include_raw_html  — true or false

Example CSV content:
domain,customer_postcode,asin,include_raw_html
amazon.com.au,4500,B0DJQQ38TG,true
amazon.com.au,4500,B0ABC12345,false
Response
{
  "code": 200,
  "data": {
    "success_count": 2,
    "error_rows": []
  },
  "status": 1
}

Notes

The landing /api-docs incorrectly shows CSV columns as sku, customer_postcode, store_id — those are the Officeworks columns. The correct Amazon CSV columns are: domain, customer_postcode, asin, include_raw_html. Domain is looked up by string name; postcode by zipcode number. Rows with missing or unrecognised domain/postcode are added to error_rows without aborting the rest of the import.

List ASINs

POST
https://multicartapi.com/api/v1/schedules/amazon/asin/list/
API Key or Session Token

List ASINs in a collection with pagination; optionally wrap response with a total count.

curl "https://multicartapi.com/api/v1/schedules/amazon/asin/list/" \
  -X POST \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "collection_id": 101,
  "skip": 0,
  "limit": 100,
  "with_count": 1
}'

Parameters

ParameterTypeRequiredDescription
collection_idintegerRequiredCollection ID whose ASINs to list.
skipintegerOptionalPagination offset (number of rows to skip).
limitintegerOptionalPage size (number of rows to return).
with_countanyOptionalIf present (any truthy value), wraps the response with total_count and asin_list instead of a bare array.
Request body
{
  "collection_id": 101,
  "skip": 0,
  "limit": 100,
  "with_count": 1
}
Response
{
  "code": 200,
  "data": {
    "total_count": 5000,
    "asin_list": [
      {
        "id": 5,
        "asin": "B0DJQQ38TG",
        "domain": { "id": 1, "domain": "amazon.com.au" },
        "customer_postcode": { "id": 15, "zipcode": "4500" },
        "custom_id": "ref-001",
        "include_raw_html": false,
        "output": "JSON"
      }
    ]
  },
  "status": 1
}

Notes

Without with_count the response data is a bare array. With with_count it is an object with total_count and asin_list. Each item includes joined domain and postcode objects (ASINSerializerWithJoinData). Tip: use with_count=1&limit=1 to poll ASIN ingestion completeness before triggering /schedules/run/result/.

Get ASIN

POST
https://multicartapi.com/api/v1/schedules/amazon/asin/get/
API Key or Session Token

Retrieve a single ASIN record by its row ID.

curl "https://multicartapi.com/api/v1/schedules/amazon/asin/get/" \
  -X POST \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "id": 5
}'

Parameters

ParameterTypeRequiredDescription
idintegerRequiredASIN row ID (the id field returned by create or list — not a collection ID).
collectionintegerOptionalCollection ID. Accepted by the endpoint but not used in the query filter; only id is filtered.
Request body
{
  "id": 5
}
Response
{
  "code": 200,
  "data": {
    "id": 5,
    "asin": "B0DJQQ38TG",
    "collection": 101,
    "domain": { "id": 1, "domain": "amazon.com.au" },
    "customer_postcode": { "id": 15, "zipcode": "4500" },
    "custom_id": "ref-001",
    "include_raw_html": false,
    "output": "JSON",
    "created_at": "2026-06-20T10:00:00Z"
  },
  "status": 1
}

Notes

The landing /api-docs shows collection as the only body param — that is wrong. The backend looks up by id (the ASIN row ID). Passing only collection returns a 404. Pass the id returned when the ASIN was created or from the list endpoint.

Update ASIN

POST
https://multicartapi.com/api/v1/schedules/amazon/asin/update/
API Key or Session Token

Partial update of an ASIN record's fields.

curl "https://multicartapi.com/api/v1/schedules/amazon/asin/update/" \
  -X POST \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "asin_id": 5,
  "include_raw_html": true,
  "custom_id": "ref-updated"
}'

Parameters

ParameterTypeRequiredDescription
asin_idintegerRequiredASIN row ID to update.
asinstringOptionalNew ASIN value.
include_raw_htmlbooleanOptionalWhether to include raw HTML in scrape output.
outputstringOptionalOutput format: JSON or HTML.
custom_idstringOptionalCustomer reference ID.
Request body
{
  "asin_id": 5,
  "include_raw_html": true,
  "custom_id": "ref-updated"
}
Response
{
  "code": 200,
  "data": {
    "id": 5,
    "asin": "B0DJQQ38TG",
    "include_raw_html": true,
    "output": "JSON",
    "custom_id": "ref-updated",
    "updated_at": "2026-06-20T11:00:00Z"
  },
  "status": 1
}

Notes

All fields except asin_id are optional; omit any field you do not want to change.

Delete ASIN

POST
https://multicartapi.com/api/v1/schedules/amazon/asin/delete/
API Key or Session Token

Delete a single ASIN record from a collection.

curl "https://multicartapi.com/api/v1/schedules/amazon/asin/delete/" \
  -X POST \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "asin_id": 5
}'

Parameters

ParameterTypeRequiredDescription
asin_idintegerRequiredASIN row ID to delete.
Request body
{
  "asin_id": 5
}
Response
{ "code": 200, "data": "ASIN deleted successfully", "status": 1 }

Notes

Deletes the ASIN row only. Does not affect previously generated output records or result files.

List ASIN Output Records

POST
https://multicartapi.com/api/v1/schedules/amazon/asin/output/list/
API Key or Session Token

List scraped-output metadata records for a collection without the (large) output_json payload.

curl "https://multicartapi.com/api/v1/schedules/amazon/asin/output/list/" \
  -X POST \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "collection_id": 101,
  "skip": 0,
  "limit": 100
}'

Parameters

ParameterTypeRequiredDescription
collection_idintegerRequiredCollection ID whose output records to list.
skipintegerOptionalPagination offset.
limitintegerOptionalPage size.
Request body
{
  "collection_id": 101,
  "skip": 0,
  "limit": 100
}
Response
{
  "code": 200,
  "data": [
    {
      "id": 88,
      "user": 42,
      "collection": 101,
      "output_json_count": 3,
      "created_at": "2026-06-20T12:00:00Z",
      "updated_at": "2026-06-20T12:05:00Z"
    }
  ],
  "status": 1
}

Notes

Returns ASINOutputSerializerForDownload which intentionally omits the output_json field (it can be very large). Use the id values returned here to fetch full JSON via /schedules/amazon/asin/output/.

Get ASIN Output

POST
https://multicartapi.com/api/v1/schedules/amazon/asin/output/
API Key or Session Token

Retrieve the full scraped JSON payload for a specific ASINOutput record.

curl "https://multicartapi.com/api/v1/schedules/amazon/asin/output/" \
  -X POST \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "asin_id": 88
}'

Parameters

ParameterTypeRequiredDescription
asin_idintegerRequiredASINOutput row ID (the id from /output/list/ — not the ASIN row ID).
Request body
{
  "asin_id": 88
}
Response
{
  "code": 200,
  "data": {
    "id": 88,
    "user": 42,
    "collection": 101,
    "output_json": {
      "asin": "B0DJQQ38TG",
      "title": "Example Product",
      "price": "$49.99",
      "availability": "In Stock"
    },
    "output_json_count": 3,
    "created_at": "2026-06-20T12:00:00Z"
  },
  "status": 1
}

Notes

Naming gotcha: the parameter is called asin_id but its value must be the ASINOutput.id (from /output/list/), not the ASIN.id. Passing an ASIN row ID here will return a 404 or wrong record.