Create Inbound Plan Draft
POST/api/tiktok-shop/:integrationInstance/fbt/inbound-plans/drafts
Open a local inbound plan draft. Nothing exists at TikTok yet and no stock is reserved, so a draft is the one state in which a plan can be hard-deleted.
This endpoint currently requires session authentication; Personal Access Token scope support is in progress.
Validation here is deliberately permissive — a draft is a scratchpad, so the delivery mode, the cartons and even the lines are all optional. The full shipment contract is enforced when the plan is submitted.
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.*.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.
cartons(array, optional, max 500).cartons.*.carton_number(integer, optional, min 1) — defaults to the carton's position.cartons.*.carton_type(string, optional) —SINGLE_SKU(default) orMIXED_SKU.cartons.*.weight_kg(numeric, optional, nullable, min 0).cartons.*.length_cm(numeric, optional, nullable, min 0).cartons.*.width_cm(numeric, optional, nullable, min 0).cartons.*.height_cm(numeric, optional, nullable, min 0).cartons.*.contents(array, optional).cartons.*.contents.*.line_index(integer, optional, min 0) — addresses a line by its position in thelinesarray of this same request, because on the first save the lines have no ids yet.cartons.*.contents.*.plan_line_id(integer, optional, nullable) — an existing line id, used instead ofline_indexwhen one is known.cartons.*.contents.*.quantity(integer, required when contents are present, min 1).cartons.*.contents.*.lot_code(string, optional, nullable, max 64) — required by TikTok for lot-managed goods.cartons.*.contents.*.expiration_at(date, optional, nullable) — required by TikTok for expiration-managed goods.
Returns 201 with the created plan, including its lines, cartons, placement options and inbound orders.
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
- 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 — 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.