Bulk Submit Walmart Fulfillments
POST/api/walmart/:integrationInstance/fulfillments/submit-bulk
Submit multiple fulfillments' shipment confirmations to Walmart in one call. Each fulfillment is processed independently; the response reports how many were submitted and how many failed, with per-fulfillment error messages. Fulfillments that are already submitted, pickup-type, or on cancelled orders are ignored.
This endpoint currently requires session authentication; Personal Access Token scope support is in progress.
Request body:
- ids (required, array of integers) — sales order fulfillment ids to submit. Each id must exist.
Accounting for every row. The response reports submitted, failed and skipped separately, and a top-level skipped[] array gives the id, reason and a human-readable message for each row that was never sent. Skipped reasons: already_submitted (it was sent before — re-sending would notify the buyer twice), ship_date_outside_walmart_window (Walmart only accepts a ship date within one month either side of today, so this can never be sent), not_fulfilled, pickup, order_cancelled, not_for_this_integration, or not_found. A skipped row was not transmitted to Walmart at all, so it cannot produce a duplicate buyer notification — but it also means the batch did less than the submitted count alone suggests.
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.