Update Inbound Plan
PATCH/api/tiktok-shop/:integrationInstance/fbt/inbound-plans/:plan
Update an inbound plan that is still editable — a draft, or a plan that has reached TikTok but has not yet had a placement confirmed.
This endpoint currently requires session authentication; Personal Access Token scope support is in progress.
Every field is optional and anything omitted is left alone. Lines are replaced wholesale only when lines is present in the body.
Body
source_type(string, optional) —3pl,supplierordirect.source_warehouse_id(integer, optional, nullable) — must be an existing warehouse.source_supplier_id(integer, optional, nullable) — must be an existing supplier.source_confirmed(boolean, optional).inbound_type(string, optional, nullable) —CARTON_SPLITTINGorUNIT_SPLITTING.lines(array, optional, max 500) — replaces the plan's lines wholesale when present.lines.*.id(integer, optional, nullable) — the existing line id, when known.lines.*.product_id(integer, optional, nullable) — the SKU.io product. Must exist.lines.*.tiktok_sku_id(string, required whenlinesis present, max 64) — the shop SKU the units inbound as.lines.*.tiktok_goods_id(string, optional, nullable, max 64) — the FBT goods record. Resolved from the SKU's binding when omitted.lines.*.seller_sku(string, optional, nullable, max 255).lines.*.quantity(integer, required whenlinesis present, min 1) — TikTok's 10-unit per-SKU minimum is checked at submit, not here.lines.*.prep_instructions(string, optional, nullable, max 2000).lines.*.prep_owner(string, optional, nullable, max 16) — defaults tofulfiller.lines.*.kit_source(string, optional, nullable) —built(default) orcomponents.
The 10-unit per-SKU minimum and carton conservation are not enforced here — they are checked when the plan is submitted.
A plan that is no longer editable answers 409. The plan must belong to the integration instance in the path; a plan owned by another instance answers 404.
Requires the integrations.update permission.
Source warehouse restriction: source_warehouse_id must be a warehouse SKU.io keeps its own movement ledger for — the source is what shipping decrements. Marketplace-held warehouses (Amazon FBA/AWD, Walmart WFS, TikTok FBT, and virtual), legacy rows carrying subtype = amazon_fba, and dropship/supplier warehouses are rejected with a 422. Faire FBF is accepted: Faire exposes no inventory API, so SKU.io's ledger is the system of record for FBF stock.
Request
Responses
- 200
- 401
- 403
- 404
- 409
- 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.
Conflict
Response Headers
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.