Send Fulfillment Email
POST/api/tiktok-shop/:integrationInstance/fbt/inbound-plans/:plan/fulfillment/email/send
Stage one of the handoff: sends the composed portal invite to the 3PL or supplier resolved from the plan's source, and moves the packet to Sent.
This endpoint currently requires session authentication; Personal Access Token scope support is in progress.
The recipient is resolved server-side from the source and cannot be overridden; use cc for additional recipients.
Returns 422 when no packet has been built, or when the resolved source has no email address on file.
Permission: integrations.update.
Body
subject— required string, max 255 characters. Supports{{token}}placeholders.body— required string. Supports{{token}}placeholders.cc— optional, nullable array of email addresses.attach_prep_sheet— optional boolean. Default true. Attaches the prep and pack sheet.attach_carton_labels— optional boolean. Default false.attach_packing_list— optional boolean. Default false.attach_pallet_labels— optional boolean. Default false. Freight shipments only.attach_bol— optional boolean. Default false. Freight shipments only.from_mode— optional, nullable string.merchantsends from the store's own domain (needs SPF and DKIM in place) orsystemsends from SKU.io with a reply-to. Omit to use the account default.
Every attachment is best effort: one that cannot be produced at send time is skipped rather than failing the send.
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.