Preview Fulfillment Email
POST/api/tiktok-shop/:integrationInstance/fbt/inbound-plans/:plan/fulfillment/email/preview
Renders a composed subject and body with every {{token}} placeholder substituted, without sending anything. Use it to show the fulfiller's view before committing to a send.
This endpoint currently requires session authentication; Personal Access Token scope support is in progress.
Returns 422 when no fulfillment packet has been built for the plan yet.
Permission: none beyond a valid token.
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.