The fulfillment endpoints cover the full path from an accepted order to a shipped package: preparation, carrier selection, label generation, and tracking updates.
Per-order vs. bulk
Use per-order endpoints (/orders/{id}/...) for interactive flows. Use the /orders/fulfillment/* bulk endpoints when batching from the merchant dashboard or a scheduled job.
Mark an order as preparing. Items array is optional — omit to prepare all items. Requires orders:fulfill scope.
curl -X POST https://api.fenicia.io/orders/ord_01HXYZ/prepare \
-H "Authorization: Bearer fn_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{"items":[{"sku":"ABC-123","quantity":1}]}'Fulfill an order and optionally attach tracking information. Requires orders:fulfill scope.
curl -X POST https://api.fenicia.io/orders/ord_01HXYZ/fulfill \
-H "Authorization: Bearer fn_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{"items":[{"sku":"ABC-123","quantity":1}],"trackingNumber":"1Z999AA10123456784","carrier":"fedex"}'Returns per-order fulfillment capabilities (what actions are available and which are blocked). Requires orders:read scope.
curl -X POST https://api.fenicia.io/orders/fulfillment/capabilities \
-H "Authorization: Bearer fn_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{"orderIds":["ord_01","ord_02"]}'Returns the carriers available for the given orders based on destination, weight, and account configuration. Requires orders:read scope.
curl -X POST https://api.fenicia.io/orders/fulfillment/carriers \
-H "Authorization: Bearer fn_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{"orderIds":["ord_01"]}'Generate shipping labels for one or more orders. PDFs are returned as base64-encoded strings. Requires orders:fulfill scope.
curl -X POST https://api.fenicia.io/orders/fulfillment/labels \
-H "Authorization: Bearer fn_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{"orderIds":["ord_01","ord_02"],"format":"pdf"}'Attach or update tracking information for fulfilled orders. Requires orders:fulfill scope.
curl -X POST https://api.fenicia.io/orders/fulfillment/tracking \
-H "Authorization: Bearer fn_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{"orderId":"ord_01","trackingNumber":"1Z999...","carrier":"fedex"}'Mark multiple orders as shipped in one call. Requires orders:fulfill scope.
curl -X POST https://api.fenicia.io/orders/fulfillment/ship \
-H "Authorization: Bearer fn_live_your_api_key" \
-H "Content-Type: application/json" \
-d '{"orderIds":["ord_01","ord_02"],"carrier":"fedex"}'Download previously generated shipping labels for a specific order. Requires orders:read scope.
curl https://api.fenicia.io/orders/ord_01/download-shipping-label \
-H "Authorization: Bearer fn_live_your_api_key"Tip
For high-volume batch printing, call /orders/fulfillment/labels with up to 100 order IDs at once and decode the base64 PDFs server-side into a single merged PDF.