Submit Inbound Plan
POST/api/tiktok-shop/:integrationInstance/fbt/inbound-plans/:plan/submit
Send a draft inbound plan to TikTok.
This endpoint currently requires session authentication; Personal Access Token scope support is in progress.
Body
inbound_type(string, optional, nullable) —CARTON_SPLITTINGorUNIT_SPLITTING. A last-mile override of the plan's splitting mode, applied before the plan is sent.
Submission is idempotent on the plan's own reference, so retrying after an unknown outcome adopts the plan already created at TikTok rather than minting a duplicate.
Before anything is sent, the persisted plan is checked and any failure is returned as 422 against a real field path:
- at least one line — reported on
lines - a resolved source, warehouse or supplier — reported on
source_warehouse_id - at least 10 units per SKU, TikTok's per-SKU inbound minimum — reported on
lines.{index}.quantity - carton conservation, every unit on a line packed exactly once — reported on
lines.{index}.cartons. Mandatory forCARTON_SPLITTING; forUNIT_SPLITTINGit is checked only once cartons exist, since those plans may declare cartons at ship time - a
CARTON_SPLITTINGplan must declare cartons at all — reported oncartons
A refusal from TikTok comes back as 422 (or 409 when the plan's state is the problem) with a written explanation in message.
The plan must belong to the integration instance in the path; a plan owned by another instance answers 404.
Requires the integrations.update permission.
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.