Skip to main content
api

Sync API

draft
Audience: developerUpdated 2026-07-25

Exhaustive reference for the Sync APIs — every endpoint, field, and example. Retail media partners use them to synchronize a marketplace's catalog for advertising services, including Sponsored Products, Sponsored Brand, Sponsored Display, and Display Ads. They cover four core entities — Seller, Product, Product Variant, and Category — plus a general catch-all.

For why the catalog matters and how the entities fit together, see Catalog API.

General Notes:

  • Each endpoint is a POST to the production environment (https://api.binoban.io); on-prem and air-gapped deployments use their own apiPath instead.
  • The {sourceIdentifier} in endpoint URLs is a unique identifier provided by Binoban.
  • A Bearer token is required for authentication and will be provided by Binoban.
  • All APIs expect JSON payloads and return JSON responses.
  • Ingestion is asynchronous — a successful call returns {"status":"QUEUED"}.

Sync Seller API

Synchronizes seller information for a marketplace. This API is a POST request to the production environment (https://api.binoban.io) and requires Bearer token authentication.

Endpoint: POST /api/tracker/catalog/{sourceIdentifier}/seller

Authorization: Bearer Token (provided by Binoban)

Headers:

  • accept: */*
  • Content-Type: application/json

Request Body:

FieldDescriptionTypeConstraintsMandatory
sellerIdUnique identifier for the sellerStringmaxLength: 255Yes
firstNameSeller's first nameStringmaxLength: 255No
lastNameSeller's last nameStringmaxLength: 255No
emailSeller's registered email, pattern: ^(?=.{1,64}@)[\p{L}0-9_-]+(\.[\p{L}0-9_-]+)*@[^-][\p{L}0-9-]+(\.[\p{L}0-9-]+)*(\.[\p{L}]{2,})$example: test@example.orgStringmaxLength: 255Yes
nationalIdSeller's national IDStringminLength: 10,maxLength: 10No
addressSeller's addressStringmaxLength: 512No
phoneNumberSeller's mobile numberStringmaxLength: 20No
isActiveIndicates if the seller is activeBoolean-Yes
isBrandIndicates if the seller is a brandBoolean-Yes
isMarketPlaceOwnerIndicates if the seller owns the marketplaceBoolean-Yes
createdAtSeller creation timestampStringISO 8601 formatNo
attributesAdditional seller attributesObject-No

Example Request:

{
"sellerId": "seller789",
"firstName": "James",
"lastName": "Wilson",
"email": "james.wilson@example.com",
"nationalId": "123456789",
"address": "456 Maple Avenue, Springfield, USA",
"phoneNumber": "+12025550123",
"isActive": true,
"isBrand": true,
"isMarketPlaceOwner": false,
"createdAt": "2025-04-16T08:50:09.453Z",
"attributes": {
"sellerCode": "SL789",
"rating": 4.8,
"returnPolicy": "30-day return"
}
}

Response (200 OK):

{
"status": "QUEUED"
}

Notes:

  • The {sourceIdentifier} is a unique identifier provided by Binoban.
  • Mandatory fields: sellerId, email, isActive, isBrand, isMarketPlaceOwner.
  • The attributes field is optional for flexible metadata (e.g., seller rating, return policy).

Sync Product API

Synchronizes product information for a marketplace. This API is a POST request to the production environment (https://api.binoban.io) and requires Bearer token authentication.

Endpoint: POST /api/tracker/catalog/{sourceIdentifier}/product

Authorization: Bearer Token (provided by Binoban)

Headers:

  • accept: */*
  • Content-Type: application/json

Request Body:

FieldDescriptionTypeConstraintsMandatory
productIdUnique identifier for the productStringmaxLength: 255Yes
nameProduct nameStringmaxLength: 255Yes
nameEnProduct name in EnglishStringmaxLength: 255No
createdAtProduct creation timestampString$date-time (ISO 8601 format)No
brandProduct brandStringmaxLength: 255No
categoryIdLeaf category ID linked to the productStringmaxLength: 255Yes
mainImageURL of the main product imageStringmaxLength: 512Yes
additionalMediaURLs of additional images or videosArray[String]-No
descriptionProduct descriptionString-No
totalStockTotal stock quantityInteger$int32Yes
isAvailableIndicates if the product is availableBoolean-Yes
urlProduct URL on the websiteStringmaxLength: 512Yes
attributesAdditional product attributesObject-No

Example Request:

{
"productId": "shoe123",
"name": "UltraBoost Sneakers",
"nameEn": "UltraBoost Sneakers",
"createdAt": "2025-04-16T10:54:51.959Z",
"brand": "Nike",
"categoryId": "cat456",
"mainImage": "https://cdn.example.com/images/shoe123-main.jpg",
"additionalMedia": [
"https://cdn.example.com/images/shoe123-side.jpg",
"https://cdn.example.com/images/shoe123-video.mp4"
],
"description": "Lightweight sneakers with responsive cushioning, ideal for both casual wear and intense workouts.",
"totalStock": 100,
"isAvailable": true,
"url": "https://www.example.com/products/ultraboost-sneakers",
"attributes": {
"weight": "250g",
"material": "knit fabric"
}
}

Response (200 OK):

{
"status": "QUEUED"
}

Notes:

  • The {sourceIdentifier} is a unique identifier provided by Binoban.
  • Mandatory fields: productId, name, categoryId, mainImage, totalStock, isAvailable, url.
  • The attributes field is optional for flexible metadata (e.g., product weight, material).

Sync Product Variant API

Synchronizes product variant information for a marketplace. A product variant is a unique version of a product offered by a specific seller or with distinct specifications (e.g., size, color, price). For example, the same sneaker may have variants with different prices or sizes based on the seller. The Buy Box is the prominent section on the product page where the "winning" variant (Buy Box winner) is shown to buyers, selected based on factors like price, seller rating, or stock. Other variants appear in a secondary section. This API is a POST request to the production environment (https://api.binoban.io) and requires Bearer token authentication.

Endpoint: POST /api/tracker/catalog/{sourceIdentifier}/productVariant

Authorization: Bearer Token (provided by Binoban)

Headers:

  • accept: */*
  • Content-Type: application/json

Request Body:

FieldDescriptionTypeConstraintsMandatory
variantIdUnique identifier for the product variantStringmaxLength: 255Yes
productIdID of the product this variant belongs toStringmaxLength: 255Yes
sellerIdID of the seller offering this variantStringmaxLength: 255Yes
pricePrice of the variantNumber-Yes
discountedPriceDiscounted price of the variant, if applicableNumber-No
stockStock quantity for the variantNumber-Yes
isAvailableIndicates if the variant is availableBoolean-Yes
isBuyBoxWinnerIndicates if this variant is the Buy Box winnerBoolean-Yes
imageURL of the variant-specific imageStringmaxLength: 512No
attributesAdditional variant attributesObject-No
urlProduct URL on the websiteStringmaxLength: 512No

Example Request:

{
"variantId": "var123",
"productId": "shoe123",
"sellerId": "seller789",
"price": 150.0,
"discountedPrice": 120.0,
"stock": 15,
"isAvailable": true,
"isBuyBoxWinner": true,
"url":"https://www.example.com/products/ultraboost-sneakers",
"image": "https://cdn.example.com/images/variant123.jpg",
"attributes": {
"color": "white",
"size": "41"
}
}

Response (200 OK):

{
"status": "QUEUED"
}

Notes:

  • The {sourceIdentifier} is a unique identifier provided by Binoban.
  • Mandatory fields: variantId, productId, sellerId, price, stock, isAvailable, isBuyBoxWinner.
  • The attributes field is optional for flexible metadata (e.g., size, color).

Sync Category API

Synchronizes category information for a marketplace. This API is a POST request to the production environment (https://api.binoban.io) and requires Bearer token authentication.

Endpoint: POST /api/tracker/catalog/{sourceIdentifier}/category

Authorization: Bearer Token (provided by Binoban)

Headers:

  • accept: */*
  • Content-Type: application/json

Request Body:

FieldDescriptionTypeConstraintsMandatory
categoryIdUnique identifier for the categoryStringmaxLength: 255Yes
nameCategory nameStringmaxLength: 255Yes
parentCategoryIdID of the parent category in the category treeStringmaxLength: 255No
levelLevel of the category in the category treeInteger$int32Yes
isLeafIndicates if the category is a leaf (end) categoryBoolean-Yes
urlCategory URL on the websiteStringmaxLength: 512Yes

Example Request:

{
"categoryId": "cat456",
"name": "Sneakers",
"parentCategoryId": "cat123",
"level": 2,
"isLeaf": true,
"url": "https://www.example.com/categories/sneakers"
}

Response (200 OK):

{
"status": "QUEUED"
}

Notes:

  • The {sourceIdentifier} is a unique identifier provided by Binoban.
  • Mandatory fields: categoryId, name, level, isLeaf, url.

Sync General Catalog API

Synchronizes general catalog data for integration with the Binoban platform. This API allows sending flexible, arbitrary data structures for various use cases. It is a POST request to the production environment (https://api.binoban.io) and requires Bearer token authentication.

Endpoint: POST /api/tracker/catalog/{sourceIdentifier}/general

Authorization: Bearer Token (provided by Binoban)

Headers:

  • accept: */*
  • Content-Type: application/json

Request Body:

FieldDescriptionTypeConstraintsMandatory
idUnique identifier for the catalog entityStringmaxLength: 255Yes
typeType or category of the catalog entityStringmaxLength: 255No
dataFlexible object containing entity-specific dataObjectArbitrary key-value pairsNo

Example Request:

{
"id": "entity789",
"type": "generic",
"data": {
"name": "Sample Item",
"value": 42,
"description": "A generic catalog item"
}
}

Response (200 OK):

{
"status": "QUEUED"
}

Notes:

  • The {sourceIdentifier} is a unique identifier provided by Binoban.
  • Mandatory field: id.
  • The type field is optional and can be used to categorize the entity (e.g., generic, item, record).
  • The data field is a flexible object that can contain any key-value pairs, with no predefined structure.
  • String fields have maximum length constraints: id, type (255 characters).