Create SKU.io Product from SKU
POST/api/tiktok-shop/integration-instances/:integration_instance_id/products/skus/:product_sku_id/create-sku-product
Create a brand-new SKU.io Product from a TikTok Shop SKU's own data (SKU, name, price) and map the SKU to it in one step. Mirrors Shopify's create-sku-product, but operates at TikTok's per-SKU listing grain (Shopify creates per-variant).
Any valid API token can call this endpoint — no specific scope required. Manage tokens.
The endpoint is keyed on the flattened SKU row ({{product_sku_id}} — the id returned by List Product SKUs). No request body: the new product's sku is the TikTok seller_sku (falling back to tiktok_sku_id when the seller SKU is blank), its name is the SKU variant name (falling back to the parent product title), price is copied from the SKU, and barcode is always null (TikTok SKUs carry none).
Create-or-link behaviour (Shopify parity):
- If no SKU.io Product with the resolved SKU exists, a new one is created, then the TikTok SKU is mapped to it.
linked_existing=false. - If a SKU.io Product with that SKU already exists, it is linked to instead of duplicated, then the TikTok SKU is mapped to it.
linked_existing=true.
Mapping creates a ProductListing and re-links any previously-unmapped sales-order lines for this listing (dispatched asynchronously). The response data is the flattened SKU row (same shape as List Product SKUs) reflecting the new mapping.
Returns 422 if the SKU is already mapped (unmap it first), and 403 if the SKU does not belong to the given integration instance.
Authentication: requires a Bearer token (Personal Access Token).
Request
Responses
- 201
- 401
- 403
- 404
- 422
- 429
Created
Response Headers
Unauthenticated — the bearer token is missing, revoked, expired, or malformed. Never retry automatically; fix the credential. See the Errors guide.
Forbidden
Response Headers
Not found — no record with the given identifier (or the route does not exist). Verify the ID before retrying.
Unprocessable Entity
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.