Bulk Map / Unmap / Create / Remap Product SKUs (Sync)
POST/api/tiktok-shop/integration-instances/:integration_instance_id/products/bulk
Synchronous per-SKU bulk mapping engine backing the frontend BulkMappingModal for below-threshold selections. Runs each resolved TikTok Shop SKU through the mapping manager and returns Shopify-parity count keys.
Any valid API token can call this endpoint — no specific scope required. Manage tokens.
Named route: tiktok-shop.products.bulk.
Body
action(required, one ofmap|unmap|create|remap) — the per-SKU operation.map= smart-match & map unmapped SKUs;unmap= delete the SKU's ProductListing;create= create-or-link a SKU.io product from the SKU and map it;remap= repoint an already-mapped SKU to its current best match. (archive/unarchive/delete are NOT here — they use the product-id batch endpoints.)selection(required, object) —typeis one ofselected|visible|filtered. Forselected, passselection.ids(array of TikTok Shop SKU IDs). Forvisible/filtered, passselection.filters(same filter keys as the flattened SKU list) and the backend resolves the id set.options(optional, object) —match_by(sku|barcode;barcodefalls back to exact SKU match since TikTok SKUs carry no barcode),create_if_no_match(boolean — onmap, create a SKU.io product when no match is found; counts towardmapped_count),field_mappings(array of{shopify_field, sku_field}overrides).
Response returns processed / failed / skipped plus one action-specific count key (mapped_count | created_count | remapped_count | unmapped_count). Returns 422 when the selection resolves to no SKUs. Larger selections should use products/bulk-tracked instead.
Request
Responses
- 200
- 401
- 403
- 404
- 422
- 429
OK
Response Headers
Unauthenticated — the bearer token is missing, revoked, expired, or malformed. Never retry automatically; fix the credential. See the Errors guide.
Forbidden — the token lacks a required scope, the endpoint is not available to API tokens, or the user behind the token lacks the permission. A human must adjust the token scopes or user permissions; do not retry.
Not found — no record with the given identifier (or the route does not exist). Verify the ID before retrying.
Unprocessable Content
Response Headers
Rate limited — platform limit is 1,000 requests/min; individual tokens may carry lower limits. Honor the Retry-After header before retrying. See the Rate Limits guide.