Card Shipments
Submit shipment
https://api.firstleeward.com/v0/card-shipments/:id/submitTransitions the shipment from DRAFT to PLACED. Single-card shipments hit the single-ship endpoint; multi-card shipments use the bulk-ship endpoint. On failure the shipment remains in DRAFT so the client can retry.
Returns the full shipment detail (including cards[]). When the manufacturer rejects a subset of cards on a multi-card submit, the response uses HTTP 207 Multi-Status: the surviving cards transition to PLACED upstream while each rejected card is returned with productionStatus = "BULK_SHIP_REJECTED" and a rejectedAt timestamp. A 200 indicates every card was accepted.
Authorizations
Authorizationstring · headerrequiredAPI key as Bearer token, e.g. Bearer YOUR_API_KEY
Headers
Leeward-Versionenum<string>requiredAPI version (YYYY-MM-DD). Available option: 2026-09-18
Idempotency-KeystringrequiredUnique key for safely retrying this request. Up to 255 characters; we recommend a UUIDv4. The first request executes and its response is cached; subsequent requests with the same key replay the cached response (24h retention).
Path Parameters
idstring<uuid>requiredResponse
200Response for status 200
idstring<uuid>requiredUnique shipment identifier
statusstringrequiredShipment lifecycle status
DRAFTPLACEDIN_PRODUCTIONREADY_TO_SHIPIN_TRANSITOUT_FOR_DELIVERYDELIVEREDDELIVERY_FAILEDEXCEPTIONCANCELEDdestinationAddressobjectrequiredShipping address
Show child attributes
line1stringrequiredStreet address line 1
line2string | nullrequiredStreet address line 2
zonestring | nullrequiredState, province, or zone
citystringrequiredCity
postalCodestringrequiredPostal code
countrystringrequiredISO 3166-1 alpha-2 country code
recipientobjectrequiredRecipient details
Show child attributes
firstNamestringrequiredRecipient first name
lastNamestringrequiredRecipient last name
phoneNumberstringrequiredRecipient phone number
dialCodeintegerrequiredPhone dial code
emailstring<email>requiredRecipient email address
courierobjectrequiredCourier on the shipment
Show child attributes
Option 1 · Postal
typestringrequiredOption 2 · Courier
typestringrequirednamestringrequiredCourier name. May be manufacturer-assigned after submit.
DHLFEDEXSFEXPRESStrackingNumberstring | nullrequiredCourier tracking number
trackingUrlstring | nullrequiredCourier tracking URL
cutoffDatestring | nullrequiredISO 8601 cutoff date returned by the manufacturer
createdAtstringrequiredISO 8601 creation timestamp
updatedAtstringrequiredISO 8601 last update timestamp
submittedAtstring | nullrequiredISO 8601 timestamp when submitted to the manufacturer
deliveredAtstring | nullrequiredISO 8601 timestamp when all cards were delivered
cardsobject[]requiredCards included in this shipment
Show child attributes
idstring<uuid>requiredUnique shipment member identifier
cardIdstring<uuid>requiredID of the card being shipped
cardDesignIdstringrequiredCard design identifier
shippingAddressobjectrequiredShipping address
Show child attributes
line1stringrequiredStreet address line 1
line2string | nullrequiredStreet address line 2
zonestring | nullrequiredState, province, or zone
citystringrequiredCity
postalCodestringrequiredPostal code
countrystringrequiredISO 3166-1 alpha-2 country code
productionStatusstringrequiredPer-card production status
PENDINGREQUESTEDIN_PRODUCTIONCOMPLETEDACTIVATEDCANCELEDON_HOLDBULK_SHIP_REJECTEDrejectedAtstring | nullrequiredISO 8601 timestamp when this card was rejected and excluded from the shipment, or null if the card was accepted
createdAtstringrequiredISO 8601 creation timestamp
updatedAtstringrequiredISO 8601 last update timestamp
207Response for status 207
idstring<uuid>requiredUnique shipment identifier
statusstringrequiredShipment lifecycle status
DRAFTPLACEDIN_PRODUCTIONREADY_TO_SHIPIN_TRANSITOUT_FOR_DELIVERYDELIVEREDDELIVERY_FAILEDEXCEPTIONCANCELEDdestinationAddressobjectrequiredShipping address
Show child attributes
line1stringrequiredStreet address line 1
line2string | nullrequiredStreet address line 2
zonestring | nullrequiredState, province, or zone
citystringrequiredCity
postalCodestringrequiredPostal code
countrystringrequiredISO 3166-1 alpha-2 country code
recipientobjectrequiredRecipient details
Show child attributes
firstNamestringrequiredRecipient first name
lastNamestringrequiredRecipient last name
phoneNumberstringrequiredRecipient phone number
dialCodeintegerrequiredPhone dial code
emailstring<email>requiredRecipient email address
courierobjectrequiredCourier on the shipment
Show child attributes
Option 1 · Postal
typestringrequiredOption 2 · Courier
typestringrequirednamestringrequiredCourier name. May be manufacturer-assigned after submit.
DHLFEDEXSFEXPRESStrackingNumberstring | nullrequiredCourier tracking number
trackingUrlstring | nullrequiredCourier tracking URL
cutoffDatestring | nullrequiredISO 8601 cutoff date returned by the manufacturer
createdAtstringrequiredISO 8601 creation timestamp
updatedAtstringrequiredISO 8601 last update timestamp
submittedAtstring | nullrequiredISO 8601 timestamp when submitted to the manufacturer
deliveredAtstring | nullrequiredISO 8601 timestamp when all cards were delivered
cardsobject[]requiredCards included in this shipment
Show child attributes
idstring<uuid>requiredUnique shipment member identifier
cardIdstring<uuid>requiredID of the card being shipped
cardDesignIdstringrequiredCard design identifier
shippingAddressobjectrequiredShipping address
Show child attributes
line1stringrequiredStreet address line 1
line2string | nullrequiredStreet address line 2
zonestring | nullrequiredState, province, or zone
citystringrequiredCity
postalCodestringrequiredPostal code
countrystringrequiredISO 3166-1 alpha-2 country code
productionStatusstringrequiredPer-card production status
PENDINGREQUESTEDIN_PRODUCTIONCOMPLETEDACTIVATEDCANCELEDON_HOLDBULK_SHIP_REJECTEDrejectedAtstring | nullrequiredISO 8601 timestamp when this card was rejected and excluded from the shipment, or null if the card was accepted
createdAtstringrequiredISO 8601 creation timestamp
updatedAtstringrequiredISO 8601 last update timestamp
400Response for status 400
Option 1 · CardNotPhysicalError
errorobjectrequiredShow child attributes
codestringrequiredmessagestringrequireddetailobject | nullrequiredOption 2 · CardNotShippableError
errorobjectrequiredShow child attributes
codestringrequiredmessagestringrequireddetailobject | nullrequiredOption 3 · ShippingNotAllowedForCountryError
errorobjectrequiredShow child attributes
codestringrequiredmessagestringrequireddetailobject | nullrequiredOption 4 · ZoneRequiredError
errorobjectrequiredShow child attributes
codestringrequiredmessagestringrequireddetailobject | nullrequiredOption 5 · InvalidZoneError
errorobjectrequiredShow child attributes
codestringrequiredmessagestringrequireddetailobject | nullrequiredOption 6 · ShippingEmailInvalidError
errorobjectrequiredShow child attributes
codestringrequiredmessagestringrequireddetailobject | nullrequiredOption 7 · CourierNotSupportedError
errorobjectrequiredShow child attributes
codestringrequiredmessagestringrequireddetailobject | nullrequiredOption 8 · DuplicateCardInShipmentError
errorobjectrequiredShow child attributes
codestringrequiredmessagestringrequireddetailobject | nullrequiredOption 9 · SingleCardShipmentAddressMismatchError
errorobjectrequiredShow child attributes
codestringrequiredmessagestringrequireddetailobject | nullrequiredOption 10 · CardShipmentEmptyError
errorobjectrequiredShow child attributes
codestringrequiredmessagestringrequireddetailobject | nullrequiredOption 11 · CardShipmentCardLimitExceededError
errorobjectrequiredShow child attributes
codestringrequiredmessagestringrequireddetailobject | nullrequiredOption 12 · CardShipmentCardDesignNotActiveError
errorobjectrequiredShow child attributes
codestringrequiredmessagestringrequireddetailobject | nullrequiredOption 13 · CardShipmentCardDesignNotPhysicalCapableError
errorobjectrequiredShow child attributes
codestringrequiredmessagestringrequireddetailobject | nullrequiredOption 14 · CardShipmentAllCardsFailedError
errorobjectrequiredShow child attributes
codestringrequiredmessagestringrequireddetailobject | nullrequiredOption 15 · CardRestrictedError
errorobjectrequiredShow child attributes
codestringrequiredmessagestringrequireddetailobject | nullrequiredOption 16 · CardDesignOutOfStockError
errorobjectrequiredShow child attributes
codestringrequiredmessagestringrequireddetailobject | nullrequiredOption 17 · CardShippingBlockedError
errorobjectrequiredShow child attributes
codestringrequiredmessagestringrequireddetailobject | nullrequiredOption 18 · ShippingPhoneInvalidError
errorobjectrequiredShow child attributes
codestringrequiredmessagestringrequireddetailobject | nullrequiredOption 19 · ShippingPhoneDialCodeMismatchError
errorobjectrequiredShow child attributes
codestringrequiredmessagestringrequireddetailobject | nullrequired404Response for status 404
Option 1 · CardShipmentCardNotFoundError
errorobjectrequiredShow child attributes
codestringrequiredmessagestringrequireddetailobject | nullrequiredOption 2 · CardShipmentCardDesignNotFoundError
errorobjectrequiredShow child attributes
codestringrequiredmessagestringrequireddetailobject | nullrequiredOption 3 · CardShipmentNotFoundError
errorobjectrequiredShow child attributes
codestringrequiredmessagestringrequireddetailobject | nullrequired409Response for status 409
Option 1 · ActiveCardShipmentExistsError
errorobjectrequiredShow child attributes
codestringrequiredmessagestringrequireddetailobject | nullrequiredOption 2 · CardShipmentNotDraftError
errorobjectrequiredShow child attributes
codestringrequiredmessagestringrequireddetailobject | nullrequiredOption 3 · CardAlreadyInProductionError
errorobjectrequiredShow child attributes
codestringrequiredmessagestringrequireddetailobject | nullrequiredOption 4 · BulkShipCutoffPassedError
errorobjectrequiredShow child attributes
codestringrequiredmessagestringrequireddetailobject | nullrequired502Card shipping provider error
errorobjectrequiredShow child attributes
codestringrequiredmessagestringrequireddetailobject | nullrequired