Preview Fulfillment Email
POST/api/walmart/:integrationInstance/wfs/inbound-shipments/:shipment/fulfillment/email/preview
Render the operator's edited subject/body with the live tokens substituted, without sending anything — powers the compose dialog's preview pane. Tokens {{reference}} (the WFS shipment id), {{portal_link}} (a clickable anchor to the secure fulfilment portal), and {{instructions}} (the rendered prep instructions) are resolved server-side; the subject is treated as plain text, the body as HTML. Returns 422 if no fulfilment packet has been built for this shipment yet.
Any valid API token can call this endpoint — no specific scope required. Manage tokens.
Authentication: Requires Bearer token.
Fields:
- subject (string, required, max 255): the final subject line (tokens substituted server-side).
- body (string, required): the final HTML body (tokens substituted server-side).
- cc (string[], optional, nullable, each a valid email): additional CC recipients (ignored by preview; used on send).
- from_mode (string, optional, nullable, one of: merchant, system): sender-identity override. 'merchant' sends From the store's own domain (needs the SPF/DKIM setup in email_from_dns_setup); 'system' sends via SKU.io with the operator as Reply-To. Null = the tenant's default (email_from_default_mode).
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.
Validation failed — the body is a field → messages map (Laravel shape) or the platform envelope with a stable machine-readable code. Fix the payload and resubmit.
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.