DevelopersAPI reference

Shipping API

REST endpoints for shipping in SKUFlow: 14 operations with parameters, request and response fields, permissions and curl examples.

Base URL: https://app.skuflow.ai/api. Every call needs Authorization: Bearer skf_… (Authentication); {organizationId} ($ORGANIZATION_ID in the examples) is your business's id.

OperationEndpointRisk
Shipping set-upGET /organizations/{organizationId}/shipping/settingsread
Change the shipping set-upPATCH /organizations/{organizationId}/shipping/settingswrite
Connect your own shipping accountPOST /organizations/{organizationId}/shipping/accountsensitive
Disconnect your own shipping accountDELETE /organizations/{organizationId}/shipping/accountsensitive
List shipmentsGET /organizations/{organizationId}/shipmentsread
Start a shipment and get ratesPOST /organizations/{organizationId}/shipmentswrite
Get a shipmentGET /organizations/{organizationId}/shipments/{shipmentId}read
Delete a draft shipmentDELETE /organizations/{organizationId}/shipments/{shipmentId}sensitive
What a new shipment starts withGET /organizations/{organizationId}/shipments/defaultsread
Get new ratesPOST /organizations/{organizationId}/shipments/{shipmentId}/rateswrite
Buy a shipping labelPOST /organizations/{organizationId}/shipments/{shipmentId}/buysensitive
Void a shipping labelPOST /organizations/{organizationId}/shipments/{shipmentId}/voidsensitive
Refresh trackingPOST /organizations/{organizationId}/shipments/{shipmentId}/trackwrite
Move a test shipmentPOST /organizations/{organizationId}/shipments/{shipmentId}/simulatewrite

Shipping set-up

GET /organizations/{organizationId}/shipping/settings

How the business ships: on SKUFlow's carrier account (MANAGED; postage billed at cost + the markup, once a label is used) or its own EasyPost or Shippo account (OWN), the ship-from address (the business address until set) and the packages. Keys are never answered. Read-only.

Permissionorders.read (Owner, Admin, Staff, Member)
Riskread, OAuth scope skuflow.read. Read: reads only.
MCP toolshipping_settings (toolset orders)

Example

curl "https://app.skuflow.ai/api/organizations/$ORGANIZATION_ID/shipping/settings" \
  -H "Authorization: Bearer $SKUFLOW_API_KEY"

Response

200: the answer's fields
FieldTypeDescription
modeenumOne of MANAGED, OWN.
providerenum or nullOne of EASYPOST, SHIPPO, FAKE.
connectedbooleanIts own EasyPost or Shippo account is connected.
connectedAtstring (date-time) or null
managedAvailablebooleanLabels can be bought on SKUFlow's account on this server.
managedProviderstring
markupPercentnumberSKUFlow's markup on postage bought on its account.
environmentenumOne of fake, live, off.
fromAddressobject or null
fromAddress.namestringUp to 200 characters. Default ``.
fromAddress.companystringUp to 200 characters. Default ``.
fromAddress.street1stringUp to 200 characters.
fromAddress.street2stringUp to 200 characters. Default ``.
fromAddress.citystringUp to 100 characters.
fromAddress.statestringUp to 100 characters. Default ``.
fromAddress.zipstringUp to 20 characters.
fromAddress.countrystringDefault US.
fromAddress.phonestringUp to 40 characters. Default ``.
fromAddress.emailstringUp to 254 characters. Default ``.
fromAddressSetboolean
parcelPresetsarray of objectUp to 20 items.
parcelPresets[].lengthInnumberAt most 200.
parcelPresets[].widthInnumberAt most 200.
parcelPresets[].heightInnumberAt most 200.
parcelPresets[].weightOznumberAt most 2400.
parcelPresets[].keystringUp to 40 characters.
parcelPresets[].namestringUp to 80 characters.
parcelPresets[].tareOznumber0–400. Default 0.

Change the shipping set-up

PATCH /organizations/{organizationId}/shipping/settings

Sets the ship-from address and the packages (presets: name, inches, weight and the box's own weight), and chooses SKUFlow's account (MANAGED) or the connected own account (OWN; connect it first with POST …/shipping/account).

Permissionshipping.manage (Owner, Admin)
Riskwrite, OAuth scope skuflow.write. Write: creates or changes records inside the business; nothing leaves it.
MCP toolshipping_updateSettings (toolset orders)

Request body

FieldTypeRequiredDescription
modeenumNoOne of MANAGED, OWN.
fromAddressobjectNo
fromAddress.namestringNoUp to 200 characters. Default ``.
fromAddress.companystringNoUp to 200 characters. Default ``.
fromAddress.street1stringYesUp to 200 characters.
fromAddress.street2stringNoUp to 200 characters. Default ``.
fromAddress.citystringYesUp to 100 characters.
fromAddress.statestringNoUp to 100 characters. Default ``.
fromAddress.zipstringYesUp to 20 characters.
fromAddress.countrystringNoDefault US.
fromAddress.phonestringNoUp to 40 characters. Default ``.
fromAddress.emailstringNoUp to 254 characters. Default ``.
parcelPresetsarray of objectNoUp to 20 items.
parcelPresets[].lengthInnumberYesAt most 200.
parcelPresets[].widthInnumberYesAt most 200.
parcelPresets[].heightInnumberYesAt most 200.
parcelPresets[].weightOznumberYesAt most 2400.
parcelPresets[].keystringYesUp to 40 characters.
parcelPresets[].namestringYesUp to 80 characters.
parcelPresets[].tareOznumberNo0–400. Default 0.

Example

curl -X PATCH "https://app.skuflow.ai/api/organizations/$ORGANIZATION_ID/shipping/settings" \
  -H "Authorization: Bearer $SKUFLOW_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"mode":"MANAGED","fromAddress":{"street1":"string","city":"string","zip":"string"},"parcelPresets":[{"lengthIn":1,"widthIn":1,"heightIn":1,"weightOz":1,"key":"string","name":"Dana Whitfield"}]}'

Response

200: the answer's fields
FieldTypeDescription
modeenumOne of MANAGED, OWN.
providerenum or nullOne of EASYPOST, SHIPPO, FAKE.
connectedbooleanIts own EasyPost or Shippo account is connected.
connectedAtstring (date-time) or null
managedAvailablebooleanLabels can be bought on SKUFlow's account on this server.
managedProviderstring
markupPercentnumberSKUFlow's markup on postage bought on its account.
environmentenumOne of fake, live, off.
fromAddressobject or null
fromAddress.namestringUp to 200 characters. Default ``.
fromAddress.companystringUp to 200 characters. Default ``.
fromAddress.street1stringUp to 200 characters.
fromAddress.street2stringUp to 200 characters. Default ``.
fromAddress.citystringUp to 100 characters.
fromAddress.statestringUp to 100 characters. Default ``.
fromAddress.zipstringUp to 20 characters.
fromAddress.countrystringDefault US.
fromAddress.phonestringUp to 40 characters. Default ``.
fromAddress.emailstringUp to 254 characters. Default ``.
fromAddressSetboolean
parcelPresetsarray of objectUp to 20 items.
parcelPresets[].lengthInnumberAt most 200.
parcelPresets[].widthInnumberAt most 200.
parcelPresets[].heightInnumberAt most 200.
parcelPresets[].weightOznumberAt most 2400.
parcelPresets[].keystringUp to 40 characters.
parcelPresets[].namestringUp to 80 characters.
parcelPresets[].tareOznumber0–400. Default 0.

Connect your own shipping account

POST /organizations/{organizationId}/shipping/account

Money: connects the business's own EasyPost or Shippo account (its API key, checked with the provider and kept encrypted; our tracking webhook is registered on it). Labels are then bought on that account and its carrier charges the postage. Replaces a connected account.

Permissionshipping.manage (Owner, Admin)
Risksensitive, OAuth scope skuflow.sensitive. Sensitive: moves money, deletes, sends or shows something to a customer, or grants or revokes access.
MCP toolshipping_connect (toolset orders)
ApprovalWaits for your approval in SKUFlow when called with an API key or a connected app: the first call answers 428 APPROVAL_REQUIRED; once you approve it, repeat the call with the X-SKUFlow-Approval header. See Approvals.

Request body

FieldTypeRequiredDescription
providerenumYesOne of EASYPOST, SHIPPO.
apiKeystringYesThe account's live or test API key. Up to 200 characters.

Example

curl -X POST "https://app.skuflow.ai/api/organizations/$ORGANIZATION_ID/shipping/account" \
  -H "Authorization: Bearer $SKUFLOW_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"provider":"EASYPOST","apiKey":"string"}'

Response

200: the answer's fields
FieldTypeDescription
modeenumOne of MANAGED, OWN.
providerenum or nullOne of EASYPOST, SHIPPO, FAKE.
connectedbooleanIts own EasyPost or Shippo account is connected.
connectedAtstring (date-time) or null
managedAvailablebooleanLabels can be bought on SKUFlow's account on this server.
managedProviderstring
markupPercentnumberSKUFlow's markup on postage bought on its account.
environmentenumOne of fake, live, off.
fromAddressobject or null
fromAddress.namestringUp to 200 characters. Default ``.
fromAddress.companystringUp to 200 characters. Default ``.
fromAddress.street1stringUp to 200 characters.
fromAddress.street2stringUp to 200 characters. Default ``.
fromAddress.citystringUp to 100 characters.
fromAddress.statestringUp to 100 characters. Default ``.
fromAddress.zipstringUp to 20 characters.
fromAddress.countrystringDefault US.
fromAddress.phonestringUp to 40 characters. Default ``.
fromAddress.emailstringUp to 254 characters. Default ``.
fromAddressSetboolean
parcelPresetsarray of objectUp to 20 items.
parcelPresets[].lengthInnumberAt most 200.
parcelPresets[].widthInnumberAt most 200.
parcelPresets[].heightInnumberAt most 200.
parcelPresets[].weightOznumberAt most 2400.
parcelPresets[].keystringUp to 40 characters.
parcelPresets[].namestringUp to 80 characters.
parcelPresets[].tareOznumber0–400. Default 0.

Disconnect your own shipping account

DELETE /organizations/{organizationId}/shipping/account

Destructive: forgets the connected EasyPost or Shippo key and goes back to SKUFlow's account. Labels already bought keep their tracking.

Permissionshipping.manage (Owner, Admin)
Risksensitive, OAuth scope skuflow.sensitive. Sensitive: moves money, deletes, sends or shows something to a customer, or grants or revokes access.
MCP toolshipping_disconnect (toolset orders)
ApprovalOver MCP, this tool always waits for your approval in SKUFlow. See Approvals.

Example

curl -X DELETE "https://app.skuflow.ai/api/organizations/$ORGANIZATION_ID/shipping/account" \
  -H "Authorization: Bearer $SKUFLOW_API_KEY"

Response

200: the answer's fields
FieldTypeDescription
modeenumOne of MANAGED, OWN.
providerenum or nullOne of EASYPOST, SHIPPO, FAKE.
connectedbooleanIts own EasyPost or Shippo account is connected.
connectedAtstring (date-time) or null
managedAvailablebooleanLabels can be bought on SKUFlow's account on this server.
managedProviderstring
markupPercentnumberSKUFlow's markup on postage bought on its account.
environmentenumOne of fake, live, off.
fromAddressobject or null
fromAddress.namestringUp to 200 characters. Default ``.
fromAddress.companystringUp to 200 characters. Default ``.
fromAddress.street1stringUp to 200 characters.
fromAddress.street2stringUp to 200 characters. Default ``.
fromAddress.citystringUp to 100 characters.
fromAddress.statestringUp to 100 characters. Default ``.
fromAddress.zipstringUp to 20 characters.
fromAddress.countrystringDefault US.
fromAddress.phonestringUp to 40 characters. Default ``.
fromAddress.emailstringUp to 254 characters. Default ``.
fromAddressSetboolean
parcelPresetsarray of objectUp to 20 items.
parcelPresets[].lengthInnumberAt most 200.
parcelPresets[].widthInnumberAt most 200.
parcelPresets[].heightInnumberAt most 200.
parcelPresets[].weightOznumberAt most 2400.
parcelPresets[].keystringUp to 40 characters.
parcelPresets[].namestringUp to 80 characters.
parcelPresets[].tareOznumber0–400. Default 0.

List shipments

GET /organizations/{organizationId}/shipments

Shipments (SHP-n), newest first: for an order or a store order, by status, or open (a label bought and not delivered yet). Each has its rates, label, tracking and scans. Read-only.

Permissionorders.read (Owner, Admin, Staff, Member)
Riskread, OAuth scope skuflow.read. Read: reads only.
MCP toolshipments_list (toolset orders)

Parameters

NameInTypeRequiredDescription
orderIdquerystringNo
storeOrderIdquerystringNo
statusqueryenumNoDRAFT (rates only), PURCHASED (label bought), PRE_TRANSIT, IN_TRANSIT, OUT_FOR_DELIVERY, AVAILABLE_FOR_PICKUP, DELIVERED, RETURNED, FAILURE, CANCELLED, VOIDED. One of DRAFT, PURCHASED, PRE_TRANSIT, IN_TRANSIT, OUT_FOR_DELIVERY, AVAILABLE_FOR_PICKUP, DELIVERED, RETURNED, FAILURE, CANCELLED, VOIDED.
openquerybooleanNo
limitqueryintegerNo1–200.
offsetqueryintegerNo

Example

curl "https://app.skuflow.ai/api/organizations/$ORGANIZATION_ID/shipments" \
  -H "Authorization: Bearer $SKUFLOW_API_KEY"

Response

200: the answer's fields
FieldTypeDescription
itemsarray of object
items[].idstringShipment id.
items[].identifierstringSHP-n.
items[].orderIdstring or null
items[].storeOrderIdstring or null
items[].customerIdstring or null
items[].statusenumDRAFT (rates only), PURCHASED (label bought), PRE_TRANSIT, IN_TRANSIT, OUT_FOR_DELIVERY, AVAILABLE_FOR_PICKUP, DELIVERED, RETURNED, FAILURE, CANCELLED, VOIDED. One of DRAFT, PURCHASED, PRE_TRANSIT, IN_TRANSIT, OUT_FOR_DELIVERY, AVAILABLE_FOR_PICKUP, DELIVERED, RETURNED, FAILURE, CANCELLED, VOIDED.
items[].modeenumMANAGED (SKUFlow's account) or OWN (the business's). One of MANAGED, OWN.
items[].providerstring
items[].toAddressobject
items[].toAddress.namestringUp to 200 characters. Default ``.
items[].toAddress.companystringUp to 200 characters. Default ``.
items[].toAddress.street1stringUp to 200 characters.
items[].toAddress.street2stringUp to 200 characters. Default ``.
items[].toAddress.citystringUp to 100 characters.
items[].toAddress.statestringUp to 100 characters. Default ``.
items[].toAddress.zipstringUp to 20 characters.
items[].toAddress.countrystringDefault US.
items[].toAddress.phonestringUp to 40 characters. Default ``.
items[].toAddress.emailstringUp to 254 characters. Default ``.
items[].fromAddressobject
items[].fromAddress.namestringUp to 200 characters. Default ``.
items[].fromAddress.companystringUp to 200 characters. Default ``.
items[].fromAddress.street1stringUp to 200 characters.
items[].fromAddress.street2stringUp to 200 characters. Default ``.
items[].fromAddress.citystringUp to 100 characters.
items[].fromAddress.statestringUp to 100 characters. Default ``.
items[].fromAddress.zipstringUp to 20 characters.
items[].fromAddress.countrystringDefault US.
items[].fromAddress.phonestringUp to 40 characters. Default ``.
items[].fromAddress.emailstringUp to 254 characters. Default ``.
items[].parcelobject
items[].parcel.lengthInnumberAt most 200.
items[].parcel.widthInnumberAt most 200.
items[].parcel.heightInnumberAt most 200.
items[].parcel.weightOznumberAt most 2400.
items[].ratesarray of object
items[].rates[].idstringBuy it with POST …/shipments/{shipmentId}/buy.
items[].rates[].carrierstring
items[].rates[].servicestring
items[].rates[].postageCentsintegerWhat the shipping account is charged.
items[].rates[].priceCentsintegerWhat the business pays: the postage, or postage × markup on SKUFlow's account.
items[].rates[].currencystring
items[].rates[].deliveryDaysnumber or null
items[].rates[].estimatedDeliverystring or null
items[].carrierstring or null
items[].servicestring or null
items[].trackingNumberstring or null
items[].trackingUrlstring or null
items[].labelUrlstring or nullThe label (PDF) to print.
items[].postageCentsinteger or null
items[].priceCentsinteger or null
items[].estimatedDeliverystring or null
items[].statusDetailstring or null
items[].purchasedAtstring (date-time) or null
items[].shippedAtstring (date-time) or null
items[].deliveredAtstring (date-time) or null
items[].voidableboolean
items[].orderobject or null
items[].order.idstring
items[].order.identifierstring
items[].storeOrderobject or null
items[].storeOrder.idstring
items[].storeOrder.identifierstring
items[].eventsarray of object
items[].events[].idstring
items[].events[].statusenum or nullDRAFT (rates only), PURCHASED (label bought), PRE_TRANSIT, IN_TRANSIT, OUT_FOR_DELIVERY, AVAILABLE_FOR_PICKUP, DELIVERED, RETURNED, FAILURE, CANCELLED, VOIDED. One of DRAFT, PURCHASED, PRE_TRANSIT, IN_TRANSIT, OUT_FOR_DELIVERY, AVAILABLE_FOR_PICKUP, DELIVERED, RETURNED, FAILURE, CANCELLED, VOIDED.
items[].events[].messagestring or null
items[].events[].locationstring or null
items[].events[].occurredAtstring (date-time)
items[].createdAtstring (date-time)
totalinteger

Start a shipment and get rates

POST /organizations/{organizationId}/shipments

Makes a DRAFT shipment for an order or a store order and reads the carriers' rates (cheapest first, with the price the business pays). Defaults: the order's ship-to address, the ship-from address, a package estimated from the goods (GET …/shipments/defaults). Nothing is bought: POST …/shipments/{shipmentId}/buy.

Permissionshipping.labels (Owner, Admin, Staff)
Riskwrite, OAuth scope skuflow.write. Write: creates or changes records inside the business; nothing leaves it.
MCP toolshipments_create (toolset orders)

Request body

FieldTypeRequiredDescription
orderIdstring or nullNoThe order it ships (GET /orders).
storeOrderIdstring or nullNoOr the store order it ships.
toAddressobjectNo
toAddress.namestringNoUp to 200 characters. Default ``.
toAddress.companystringNoUp to 200 characters. Default ``.
toAddress.street1stringYesUp to 200 characters.
toAddress.street2stringNoUp to 200 characters. Default ``.
toAddress.citystringYesUp to 100 characters.
toAddress.statestringNoUp to 100 characters. Default ``.
toAddress.zipstringYesUp to 20 characters.
toAddress.countrystringNoDefault US.
toAddress.phonestringNoUp to 40 characters. Default ``.
toAddress.emailstringNoUp to 254 characters. Default ``.
fromAddressobjectNo
fromAddress.namestringNoUp to 200 characters. Default ``.
fromAddress.companystringNoUp to 200 characters. Default ``.
fromAddress.street1stringYesUp to 200 characters.
fromAddress.street2stringNoUp to 200 characters. Default ``.
fromAddress.citystringYesUp to 100 characters.
fromAddress.statestringNoUp to 100 characters. Default ``.
fromAddress.zipstringYesUp to 20 characters.
fromAddress.countrystringNoDefault US.
fromAddress.phonestringNoUp to 40 characters. Default ``.
fromAddress.emailstringNoUp to 254 characters. Default ``.
parcelobjectNo
parcel.lengthInnumberYesAt most 200.
parcel.widthInnumberYesAt most 200.
parcel.heightInnumberYesAt most 200.
parcel.weightOznumberYesAt most 2400.

Example

curl -X POST "https://app.skuflow.ai/api/organizations/$ORGANIZATION_ID/shipments" \
  -H "Authorization: Bearer $SKUFLOW_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"orderId":"order_id","storeOrderId":"storeOrder_id","toAddress":{"street1":"string","city":"string","zip":"string"}}'

Response

201: the answer's fields
FieldTypeDescription
idstringShipment id.
identifierstringSHP-n.
orderIdstring or null
storeOrderIdstring or null
customerIdstring or null
statusenumDRAFT (rates only), PURCHASED (label bought), PRE_TRANSIT, IN_TRANSIT, OUT_FOR_DELIVERY, AVAILABLE_FOR_PICKUP, DELIVERED, RETURNED, FAILURE, CANCELLED, VOIDED. One of DRAFT, PURCHASED, PRE_TRANSIT, IN_TRANSIT, OUT_FOR_DELIVERY, AVAILABLE_FOR_PICKUP, DELIVERED, RETURNED, FAILURE, CANCELLED, VOIDED.
modeenumMANAGED (SKUFlow's account) or OWN (the business's). One of MANAGED, OWN.
providerstring
toAddressobject
toAddress.namestringUp to 200 characters. Default ``.
toAddress.companystringUp to 200 characters. Default ``.
toAddress.street1stringUp to 200 characters.
toAddress.street2stringUp to 200 characters. Default ``.
toAddress.citystringUp to 100 characters.
toAddress.statestringUp to 100 characters. Default ``.
toAddress.zipstringUp to 20 characters.
toAddress.countrystringDefault US.
toAddress.phonestringUp to 40 characters. Default ``.
toAddress.emailstringUp to 254 characters. Default ``.
fromAddressobject
fromAddress.namestringUp to 200 characters. Default ``.
fromAddress.companystringUp to 200 characters. Default ``.
fromAddress.street1stringUp to 200 characters.
fromAddress.street2stringUp to 200 characters. Default ``.
fromAddress.citystringUp to 100 characters.
fromAddress.statestringUp to 100 characters. Default ``.
fromAddress.zipstringUp to 20 characters.
fromAddress.countrystringDefault US.
fromAddress.phonestringUp to 40 characters. Default ``.
fromAddress.emailstringUp to 254 characters. Default ``.
parcelobject
parcel.lengthInnumberAt most 200.
parcel.widthInnumberAt most 200.
parcel.heightInnumberAt most 200.
parcel.weightOznumberAt most 2400.
ratesarray of object
rates[].idstringBuy it with POST …/shipments/{shipmentId}/buy.
rates[].carrierstring
rates[].servicestring
rates[].postageCentsintegerWhat the shipping account is charged.
rates[].priceCentsintegerWhat the business pays: the postage, or postage × markup on SKUFlow's account.
rates[].currencystring
rates[].deliveryDaysnumber or null
rates[].estimatedDeliverystring or null
carrierstring or null
servicestring or null
trackingNumberstring or null
trackingUrlstring or null
labelUrlstring or nullThe label (PDF) to print.
postageCentsinteger or null
priceCentsinteger or null
estimatedDeliverystring or null
statusDetailstring or null
purchasedAtstring (date-time) or null
shippedAtstring (date-time) or null
deliveredAtstring (date-time) or null
voidableboolean
orderobject or null
order.idstring
order.identifierstring
storeOrderobject or null
storeOrder.idstring
storeOrder.identifierstring
eventsarray of object
events[].idstring
events[].statusenum or nullDRAFT (rates only), PURCHASED (label bought), PRE_TRANSIT, IN_TRANSIT, OUT_FOR_DELIVERY, AVAILABLE_FOR_PICKUP, DELIVERED, RETURNED, FAILURE, CANCELLED, VOIDED. One of DRAFT, PURCHASED, PRE_TRANSIT, IN_TRANSIT, OUT_FOR_DELIVERY, AVAILABLE_FOR_PICKUP, DELIVERED, RETURNED, FAILURE, CANCELLED, VOIDED.
events[].messagestring or null
events[].locationstring or null
events[].occurredAtstring (date-time)
createdAtstring (date-time)

Get a shipment

GET /organizations/{organizationId}/shipments/{shipmentId}

One shipment with its rates, label, tracking and scans. Read-only.

Permissionorders.read (Owner, Admin, Staff, Member)
Riskread, OAuth scope skuflow.read. Read: reads only.
MCP toolshipments_get (toolset orders)

Parameters

NameInTypeRequiredDescription
shipmentIdpathstringYes

Example

curl "https://app.skuflow.ai/api/organizations/$ORGANIZATION_ID/shipments/{shipmentId}" \
  -H "Authorization: Bearer $SKUFLOW_API_KEY"

Response

200: the answer's fields
FieldTypeDescription
idstringShipment id.
identifierstringSHP-n.
orderIdstring or null
storeOrderIdstring or null
customerIdstring or null
statusenumDRAFT (rates only), PURCHASED (label bought), PRE_TRANSIT, IN_TRANSIT, OUT_FOR_DELIVERY, AVAILABLE_FOR_PICKUP, DELIVERED, RETURNED, FAILURE, CANCELLED, VOIDED. One of DRAFT, PURCHASED, PRE_TRANSIT, IN_TRANSIT, OUT_FOR_DELIVERY, AVAILABLE_FOR_PICKUP, DELIVERED, RETURNED, FAILURE, CANCELLED, VOIDED.
modeenumMANAGED (SKUFlow's account) or OWN (the business's). One of MANAGED, OWN.
providerstring
toAddressobject
toAddress.namestringUp to 200 characters. Default ``.
toAddress.companystringUp to 200 characters. Default ``.
toAddress.street1stringUp to 200 characters.
toAddress.street2stringUp to 200 characters. Default ``.
toAddress.citystringUp to 100 characters.
toAddress.statestringUp to 100 characters. Default ``.
toAddress.zipstringUp to 20 characters.
toAddress.countrystringDefault US.
toAddress.phonestringUp to 40 characters. Default ``.
toAddress.emailstringUp to 254 characters. Default ``.
fromAddressobject
fromAddress.namestringUp to 200 characters. Default ``.
fromAddress.companystringUp to 200 characters. Default ``.
fromAddress.street1stringUp to 200 characters.
fromAddress.street2stringUp to 200 characters. Default ``.
fromAddress.citystringUp to 100 characters.
fromAddress.statestringUp to 100 characters. Default ``.
fromAddress.zipstringUp to 20 characters.
fromAddress.countrystringDefault US.
fromAddress.phonestringUp to 40 characters. Default ``.
fromAddress.emailstringUp to 254 characters. Default ``.
parcelobject
parcel.lengthInnumberAt most 200.
parcel.widthInnumberAt most 200.
parcel.heightInnumberAt most 200.
parcel.weightOznumberAt most 2400.
ratesarray of object
rates[].idstringBuy it with POST …/shipments/{shipmentId}/buy.
rates[].carrierstring
rates[].servicestring
rates[].postageCentsintegerWhat the shipping account is charged.
rates[].priceCentsintegerWhat the business pays: the postage, or postage × markup on SKUFlow's account.
rates[].currencystring
rates[].deliveryDaysnumber or null
rates[].estimatedDeliverystring or null
carrierstring or null
servicestring or null
trackingNumberstring or null
trackingUrlstring or null
labelUrlstring or nullThe label (PDF) to print.
postageCentsinteger or null
priceCentsinteger or null
estimatedDeliverystring or null
statusDetailstring or null
purchasedAtstring (date-time) or null
shippedAtstring (date-time) or null
deliveredAtstring (date-time) or null
voidableboolean
orderobject or null
order.idstring
order.identifierstring
storeOrderobject or null
storeOrder.idstring
storeOrder.identifierstring
eventsarray of object
events[].idstring
events[].statusenum or nullDRAFT (rates only), PURCHASED (label bought), PRE_TRANSIT, IN_TRANSIT, OUT_FOR_DELIVERY, AVAILABLE_FOR_PICKUP, DELIVERED, RETURNED, FAILURE, CANCELLED, VOIDED. One of DRAFT, PURCHASED, PRE_TRANSIT, IN_TRANSIT, OUT_FOR_DELIVERY, AVAILABLE_FOR_PICKUP, DELIVERED, RETURNED, FAILURE, CANCELLED, VOIDED.
events[].messagestring or null
events[].locationstring or null
events[].occurredAtstring (date-time)
createdAtstring (date-time)

Delete a draft shipment

DELETE /organizations/{organizationId}/shipments/{shipmentId}

Destructive: deletes a DRAFT shipment (no label bought). A bought label is voided instead.

Permissionshipping.labels (Owner, Admin, Staff)
Risksensitive, OAuth scope skuflow.sensitive. Sensitive: moves money, deletes, sends or shows something to a customer, or grants or revokes access.
MCP toolshipments_delete (toolset orders)
ApprovalOver MCP, this tool always waits for your approval in SKUFlow. See Approvals.

Parameters

NameInTypeRequiredDescription
shipmentIdpathstringYes

Example

curl -X DELETE "https://app.skuflow.ai/api/organizations/$ORGANIZATION_ID/shipments/{shipmentId}" \
  -H "Authorization: Bearer $SKUFLOW_API_KEY"

Response

200: the answer's fields
FieldTypeDescription
oktrue

What a new shipment starts with

GET /organizations/{organizationId}/shipments/defaults

For an order or a store order: its ship-to address, the ship-from address and a package estimated from the goods (weight from the variants, the package by the number of pieces) with the presets. Read-only.

Permissionorders.read (Owner, Admin, Staff, Member)
Riskread, OAuth scope skuflow.read. Read: reads only.
MCP toolshipments_defaults (toolset orders)

Parameters

NameInTypeRequiredDescription
orderIdquerystringNoThe order it ships (GET /orders).
storeOrderIdquerystringNoOr the store order it ships.

Example

curl "https://app.skuflow.ai/api/organizations/$ORGANIZATION_ID/shipments/defaults" \
  -H "Authorization: Bearer $SKUFLOW_API_KEY"

Response

200: the answer's fields
FieldTypeDescription
toAddressobject or null
toAddress.namestringUp to 200 characters. Default ``.
toAddress.companystringUp to 200 characters. Default ``.
toAddress.street1stringUp to 200 characters.
toAddress.street2stringUp to 200 characters. Default ``.
toAddress.citystringUp to 100 characters.
toAddress.statestringUp to 100 characters. Default ``.
toAddress.zipstringUp to 20 characters.
toAddress.countrystringDefault US.
toAddress.phonestringUp to 40 characters. Default ``.
toAddress.emailstringUp to 254 characters. Default ``.
fromAddressobject or null
fromAddress.namestringUp to 200 characters. Default ``.
fromAddress.companystringUp to 200 characters. Default ``.
fromAddress.street1stringUp to 200 characters.
fromAddress.street2stringUp to 200 characters. Default ``.
fromAddress.citystringUp to 100 characters.
fromAddress.statestringUp to 100 characters. Default ``.
fromAddress.zipstringUp to 20 characters.
fromAddress.countrystringDefault US.
fromAddress.phonestringUp to 40 characters. Default ``.
fromAddress.emailstringUp to 254 characters. Default ``.
parcelobject
parcel.lengthInnumberAt most 200.
parcel.widthInnumberAt most 200.
parcel.heightInnumberAt most 200.
parcel.weightOznumberAt most 2400.
presetKeystring or null
piecesnumber
parcelPresetsarray of objectUp to 20 items.
parcelPresets[].lengthInnumberAt most 200.
parcelPresets[].widthInnumberAt most 200.
parcelPresets[].heightInnumberAt most 200.
parcelPresets[].weightOznumberAt most 2400.
parcelPresets[].keystringUp to 40 characters.
parcelPresets[].namestringUp to 80 characters.
parcelPresets[].tareOznumber0–400. Default 0.
modeenumOne of MANAGED, OWN.

Get new rates

POST /organizations/{organizationId}/shipments/{shipmentId}/rates

Reads the rates again for a DRAFT shipment, for another package or address.

Permissionshipping.labels (Owner, Admin, Staff)
Riskwrite, OAuth scope skuflow.write. Write: creates or changes records inside the business; nothing leaves it.
MCP toolshipments_rates (toolset orders)

Parameters

NameInTypeRequiredDescription
shipmentIdpathstringYes

Request body

FieldTypeRequiredDescription
toAddressobjectNo
toAddress.namestringNoUp to 200 characters. Default ``.
toAddress.companystringNoUp to 200 characters. Default ``.
toAddress.street1stringYesUp to 200 characters.
toAddress.street2stringNoUp to 200 characters. Default ``.
toAddress.citystringYesUp to 100 characters.
toAddress.statestringNoUp to 100 characters. Default ``.
toAddress.zipstringYesUp to 20 characters.
toAddress.countrystringNoDefault US.
toAddress.phonestringNoUp to 40 characters. Default ``.
toAddress.emailstringNoUp to 254 characters. Default ``.
parcelobjectNo
parcel.lengthInnumberYesAt most 200.
parcel.widthInnumberYesAt most 200.
parcel.heightInnumberYesAt most 200.
parcel.weightOznumberYesAt most 2400.

Example

curl -X POST "https://app.skuflow.ai/api/organizations/$ORGANIZATION_ID/shipments/{shipmentId}/rates" \
  -H "Authorization: Bearer $SKUFLOW_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"toAddress":{"street1":"string","city":"string","zip":"string"},"parcel":{"lengthIn":1,"widthIn":1,"heightIn":1,"weightOz":1}}'

Response

200: the answer's fields
FieldTypeDescription
idstringShipment id.
identifierstringSHP-n.
orderIdstring or null
storeOrderIdstring or null
customerIdstring or null
statusenumDRAFT (rates only), PURCHASED (label bought), PRE_TRANSIT, IN_TRANSIT, OUT_FOR_DELIVERY, AVAILABLE_FOR_PICKUP, DELIVERED, RETURNED, FAILURE, CANCELLED, VOIDED. One of DRAFT, PURCHASED, PRE_TRANSIT, IN_TRANSIT, OUT_FOR_DELIVERY, AVAILABLE_FOR_PICKUP, DELIVERED, RETURNED, FAILURE, CANCELLED, VOIDED.
modeenumMANAGED (SKUFlow's account) or OWN (the business's). One of MANAGED, OWN.
providerstring
toAddressobject
toAddress.namestringUp to 200 characters. Default ``.
toAddress.companystringUp to 200 characters. Default ``.
toAddress.street1stringUp to 200 characters.
toAddress.street2stringUp to 200 characters. Default ``.
toAddress.citystringUp to 100 characters.
toAddress.statestringUp to 100 characters. Default ``.
toAddress.zipstringUp to 20 characters.
toAddress.countrystringDefault US.
toAddress.phonestringUp to 40 characters. Default ``.
toAddress.emailstringUp to 254 characters. Default ``.
fromAddressobject
fromAddress.namestringUp to 200 characters. Default ``.
fromAddress.companystringUp to 200 characters. Default ``.
fromAddress.street1stringUp to 200 characters.
fromAddress.street2stringUp to 200 characters. Default ``.
fromAddress.citystringUp to 100 characters.
fromAddress.statestringUp to 100 characters. Default ``.
fromAddress.zipstringUp to 20 characters.
fromAddress.countrystringDefault US.
fromAddress.phonestringUp to 40 characters. Default ``.
fromAddress.emailstringUp to 254 characters. Default ``.
parcelobject
parcel.lengthInnumberAt most 200.
parcel.widthInnumberAt most 200.
parcel.heightInnumberAt most 200.
parcel.weightOznumberAt most 2400.
ratesarray of object
rates[].idstringBuy it with POST …/shipments/{shipmentId}/buy.
rates[].carrierstring
rates[].servicestring
rates[].postageCentsintegerWhat the shipping account is charged.
rates[].priceCentsintegerWhat the business pays: the postage, or postage × markup on SKUFlow's account.
rates[].currencystring
rates[].deliveryDaysnumber or null
rates[].estimatedDeliverystring or null
carrierstring or null
servicestring or null
trackingNumberstring or null
trackingUrlstring or null
labelUrlstring or nullThe label (PDF) to print.
postageCentsinteger or null
priceCentsinteger or null
estimatedDeliverystring or null
statusDetailstring or null
purchasedAtstring (date-time) or null
shippedAtstring (date-time) or null
deliveredAtstring (date-time) or null
voidableboolean
orderobject or null
order.idstring
order.identifierstring
storeOrderobject or null
storeOrder.idstring
storeOrder.identifierstring
eventsarray of object
events[].idstring
events[].statusenum or nullDRAFT (rates only), PURCHASED (label bought), PRE_TRANSIT, IN_TRANSIT, OUT_FOR_DELIVERY, AVAILABLE_FOR_PICKUP, DELIVERED, RETURNED, FAILURE, CANCELLED, VOIDED. One of DRAFT, PURCHASED, PRE_TRANSIT, IN_TRANSIT, OUT_FOR_DELIVERY, AVAILABLE_FOR_PICKUP, DELIVERED, RETURNED, FAILURE, CANCELLED, VOIDED.
events[].messagestring or null
events[].locationstring or null
events[].occurredAtstring (date-time)
createdAtstring (date-time)

Buy a shipping label

POST /organizations/{organizationId}/shipments/{shipmentId}/buy

Money: buys the label at one of the shipment's rates (rateId from its rates). On SKUFlow's account the business is billed the rate's priceCents once the label is used (or 30 days later, unless voided); on its own account its carrier charges the postage. Refused (409) during the free trial or while billing can't be checked. Answers the shipment with its tracking number and labelUrl. A store order with its label is fulfilled.

Permissionshipping.labels (Owner, Admin, Staff)
Risksensitive, OAuth scope skuflow.sensitive. Sensitive: moves money, deletes, sends or shows something to a customer, or grants or revokes access.
MCP toolshipments_buy (toolset orders)
ApprovalOver MCP, this tool asks for your OK first (in the AI app when it supports it, otherwise in SKUFlow). See Approvals.

Parameters

NameInTypeRequiredDescription
shipmentIdpathstringYes

Request body

FieldTypeRequiredDescription
rateIdstringYesUp to 200 characters.

Example

curl -X POST "https://app.skuflow.ai/api/organizations/$ORGANIZATION_ID/shipments/{shipmentId}/buy" \
  -H "Authorization: Bearer $SKUFLOW_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"rateId":"rate_id"}'

Response

200: the answer's fields
FieldTypeDescription
idstringShipment id.
identifierstringSHP-n.
orderIdstring or null
storeOrderIdstring or null
customerIdstring or null
statusenumDRAFT (rates only), PURCHASED (label bought), PRE_TRANSIT, IN_TRANSIT, OUT_FOR_DELIVERY, AVAILABLE_FOR_PICKUP, DELIVERED, RETURNED, FAILURE, CANCELLED, VOIDED. One of DRAFT, PURCHASED, PRE_TRANSIT, IN_TRANSIT, OUT_FOR_DELIVERY, AVAILABLE_FOR_PICKUP, DELIVERED, RETURNED, FAILURE, CANCELLED, VOIDED.
modeenumMANAGED (SKUFlow's account) or OWN (the business's). One of MANAGED, OWN.
providerstring
toAddressobject
toAddress.namestringUp to 200 characters. Default ``.
toAddress.companystringUp to 200 characters. Default ``.
toAddress.street1stringUp to 200 characters.
toAddress.street2stringUp to 200 characters. Default ``.
toAddress.citystringUp to 100 characters.
toAddress.statestringUp to 100 characters. Default ``.
toAddress.zipstringUp to 20 characters.
toAddress.countrystringDefault US.
toAddress.phonestringUp to 40 characters. Default ``.
toAddress.emailstringUp to 254 characters. Default ``.
fromAddressobject
fromAddress.namestringUp to 200 characters. Default ``.
fromAddress.companystringUp to 200 characters. Default ``.
fromAddress.street1stringUp to 200 characters.
fromAddress.street2stringUp to 200 characters. Default ``.
fromAddress.citystringUp to 100 characters.
fromAddress.statestringUp to 100 characters. Default ``.
fromAddress.zipstringUp to 20 characters.
fromAddress.countrystringDefault US.
fromAddress.phonestringUp to 40 characters. Default ``.
fromAddress.emailstringUp to 254 characters. Default ``.
parcelobject
parcel.lengthInnumberAt most 200.
parcel.widthInnumberAt most 200.
parcel.heightInnumberAt most 200.
parcel.weightOznumberAt most 2400.
ratesarray of object
rates[].idstringBuy it with POST …/shipments/{shipmentId}/buy.
rates[].carrierstring
rates[].servicestring
rates[].postageCentsintegerWhat the shipping account is charged.
rates[].priceCentsintegerWhat the business pays: the postage, or postage × markup on SKUFlow's account.
rates[].currencystring
rates[].deliveryDaysnumber or null
rates[].estimatedDeliverystring or null
carrierstring or null
servicestring or null
trackingNumberstring or null
trackingUrlstring or null
labelUrlstring or nullThe label (PDF) to print.
postageCentsinteger or null
priceCentsinteger or null
estimatedDeliverystring or null
statusDetailstring or null
purchasedAtstring (date-time) or null
shippedAtstring (date-time) or null
deliveredAtstring (date-time) or null
voidableboolean
orderobject or null
order.idstring
order.identifierstring
storeOrderobject or null
storeOrder.idstring
storeOrder.identifierstring
eventsarray of object
events[].idstring
events[].statusenum or nullDRAFT (rates only), PURCHASED (label bought), PRE_TRANSIT, IN_TRANSIT, OUT_FOR_DELIVERY, AVAILABLE_FOR_PICKUP, DELIVERED, RETURNED, FAILURE, CANCELLED, VOIDED. One of DRAFT, PURCHASED, PRE_TRANSIT, IN_TRANSIT, OUT_FOR_DELIVERY, AVAILABLE_FOR_PICKUP, DELIVERED, RETURNED, FAILURE, CANCELLED, VOIDED.
events[].messagestring or null
events[].locationstring or null
events[].occurredAtstring (date-time)
createdAtstring (date-time)

Void a shipping label

POST /organizations/{organizationId}/shipments/{shipmentId}/void

Money: voids an unused label (the provider refunds its postage; nothing is billed for it). Refused (409) once the carrier has the package.

Permissionshipping.labels (Owner, Admin, Staff)
Risksensitive, OAuth scope skuflow.sensitive. Sensitive: moves money, deletes, sends or shows something to a customer, or grants or revokes access.
MCP toolshipments_void (toolset orders)
ApprovalOver MCP, this tool asks for your OK first (in the AI app when it supports it, otherwise in SKUFlow). See Approvals.

Parameters

NameInTypeRequiredDescription
shipmentIdpathstringYes

Example

curl -X POST "https://app.skuflow.ai/api/organizations/$ORGANIZATION_ID/shipments/{shipmentId}/void" \
  -H "Authorization: Bearer $SKUFLOW_API_KEY"

Response

200: the answer's fields
FieldTypeDescription
idstringShipment id.
identifierstringSHP-n.
orderIdstring or null
storeOrderIdstring or null
customerIdstring or null
statusenumDRAFT (rates only), PURCHASED (label bought), PRE_TRANSIT, IN_TRANSIT, OUT_FOR_DELIVERY, AVAILABLE_FOR_PICKUP, DELIVERED, RETURNED, FAILURE, CANCELLED, VOIDED. One of DRAFT, PURCHASED, PRE_TRANSIT, IN_TRANSIT, OUT_FOR_DELIVERY, AVAILABLE_FOR_PICKUP, DELIVERED, RETURNED, FAILURE, CANCELLED, VOIDED.
modeenumMANAGED (SKUFlow's account) or OWN (the business's). One of MANAGED, OWN.
providerstring
toAddressobject
toAddress.namestringUp to 200 characters. Default ``.
toAddress.companystringUp to 200 characters. Default ``.
toAddress.street1stringUp to 200 characters.
toAddress.street2stringUp to 200 characters. Default ``.
toAddress.citystringUp to 100 characters.
toAddress.statestringUp to 100 characters. Default ``.
toAddress.zipstringUp to 20 characters.
toAddress.countrystringDefault US.
toAddress.phonestringUp to 40 characters. Default ``.
toAddress.emailstringUp to 254 characters. Default ``.
fromAddressobject
fromAddress.namestringUp to 200 characters. Default ``.
fromAddress.companystringUp to 200 characters. Default ``.
fromAddress.street1stringUp to 200 characters.
fromAddress.street2stringUp to 200 characters. Default ``.
fromAddress.citystringUp to 100 characters.
fromAddress.statestringUp to 100 characters. Default ``.
fromAddress.zipstringUp to 20 characters.
fromAddress.countrystringDefault US.
fromAddress.phonestringUp to 40 characters. Default ``.
fromAddress.emailstringUp to 254 characters. Default ``.
parcelobject
parcel.lengthInnumberAt most 200.
parcel.widthInnumberAt most 200.
parcel.heightInnumberAt most 200.
parcel.weightOznumberAt most 2400.
ratesarray of object
rates[].idstringBuy it with POST …/shipments/{shipmentId}/buy.
rates[].carrierstring
rates[].servicestring
rates[].postageCentsintegerWhat the shipping account is charged.
rates[].priceCentsintegerWhat the business pays: the postage, or postage × markup on SKUFlow's account.
rates[].currencystring
rates[].deliveryDaysnumber or null
rates[].estimatedDeliverystring or null
carrierstring or null
servicestring or null
trackingNumberstring or null
trackingUrlstring or null
labelUrlstring or nullThe label (PDF) to print.
postageCentsinteger or null
priceCentsinteger or null
estimatedDeliverystring or null
statusDetailstring or null
purchasedAtstring (date-time) or null
shippedAtstring (date-time) or null
deliveredAtstring (date-time) or null
voidableboolean
orderobject or null
order.idstring
order.identifierstring
storeOrderobject or null
storeOrder.idstring
storeOrder.identifierstring
eventsarray of object
events[].idstring
events[].statusenum or nullDRAFT (rates only), PURCHASED (label bought), PRE_TRANSIT, IN_TRANSIT, OUT_FOR_DELIVERY, AVAILABLE_FOR_PICKUP, DELIVERED, RETURNED, FAILURE, CANCELLED, VOIDED. One of DRAFT, PURCHASED, PRE_TRANSIT, IN_TRANSIT, OUT_FOR_DELIVERY, AVAILABLE_FOR_PICKUP, DELIVERED, RETURNED, FAILURE, CANCELLED, VOIDED.
events[].messagestring or null
events[].locationstring or null
events[].occurredAtstring (date-time)
createdAtstring (date-time)

Refresh tracking

POST /organizations/{organizationId}/shipments/{shipmentId}/track

Reads the package's tracking from the provider now (webhooks and the tick do it on their own). The order follows: shipped once the carrier has a package, completed when all are delivered.

Permissionshipping.labels (Owner, Admin, Staff)
Riskwrite, OAuth scope skuflow.write. Write: creates or changes records inside the business; nothing leaves it.
MCP toolshipments_track (toolset orders)

Parameters

NameInTypeRequiredDescription
shipmentIdpathstringYes

Example

curl -X POST "https://app.skuflow.ai/api/organizations/$ORGANIZATION_ID/shipments/{shipmentId}/track" \
  -H "Authorization: Bearer $SKUFLOW_API_KEY"

Response

200: the answer's fields
FieldTypeDescription
idstringShipment id.
identifierstringSHP-n.
orderIdstring or null
storeOrderIdstring or null
customerIdstring or null
statusenumDRAFT (rates only), PURCHASED (label bought), PRE_TRANSIT, IN_TRANSIT, OUT_FOR_DELIVERY, AVAILABLE_FOR_PICKUP, DELIVERED, RETURNED, FAILURE, CANCELLED, VOIDED. One of DRAFT, PURCHASED, PRE_TRANSIT, IN_TRANSIT, OUT_FOR_DELIVERY, AVAILABLE_FOR_PICKUP, DELIVERED, RETURNED, FAILURE, CANCELLED, VOIDED.
modeenumMANAGED (SKUFlow's account) or OWN (the business's). One of MANAGED, OWN.
providerstring
toAddressobject
toAddress.namestringUp to 200 characters. Default ``.
toAddress.companystringUp to 200 characters. Default ``.
toAddress.street1stringUp to 200 characters.
toAddress.street2stringUp to 200 characters. Default ``.
toAddress.citystringUp to 100 characters.
toAddress.statestringUp to 100 characters. Default ``.
toAddress.zipstringUp to 20 characters.
toAddress.countrystringDefault US.
toAddress.phonestringUp to 40 characters. Default ``.
toAddress.emailstringUp to 254 characters. Default ``.
fromAddressobject
fromAddress.namestringUp to 200 characters. Default ``.
fromAddress.companystringUp to 200 characters. Default ``.
fromAddress.street1stringUp to 200 characters.
fromAddress.street2stringUp to 200 characters. Default ``.
fromAddress.citystringUp to 100 characters.
fromAddress.statestringUp to 100 characters. Default ``.
fromAddress.zipstringUp to 20 characters.
fromAddress.countrystringDefault US.
fromAddress.phonestringUp to 40 characters. Default ``.
fromAddress.emailstringUp to 254 characters. Default ``.
parcelobject
parcel.lengthInnumberAt most 200.
parcel.widthInnumberAt most 200.
parcel.heightInnumberAt most 200.
parcel.weightOznumberAt most 2400.
ratesarray of object
rates[].idstringBuy it with POST …/shipments/{shipmentId}/buy.
rates[].carrierstring
rates[].servicestring
rates[].postageCentsintegerWhat the shipping account is charged.
rates[].priceCentsintegerWhat the business pays: the postage, or postage × markup on SKUFlow's account.
rates[].currencystring
rates[].deliveryDaysnumber or null
rates[].estimatedDeliverystring or null
carrierstring or null
servicestring or null
trackingNumberstring or null
trackingUrlstring or null
labelUrlstring or nullThe label (PDF) to print.
postageCentsinteger or null
priceCentsinteger or null
estimatedDeliverystring or null
statusDetailstring or null
purchasedAtstring (date-time) or null
shippedAtstring (date-time) or null
deliveredAtstring (date-time) or null
voidableboolean
orderobject or null
order.idstring
order.identifierstring
storeOrderobject or null
storeOrder.idstring
storeOrder.identifierstring
eventsarray of object
events[].idstring
events[].statusenum or nullDRAFT (rates only), PURCHASED (label bought), PRE_TRANSIT, IN_TRANSIT, OUT_FOR_DELIVERY, AVAILABLE_FOR_PICKUP, DELIVERED, RETURNED, FAILURE, CANCELLED, VOIDED. One of DRAFT, PURCHASED, PRE_TRANSIT, IN_TRANSIT, OUT_FOR_DELIVERY, AVAILABLE_FOR_PICKUP, DELIVERED, RETURNED, FAILURE, CANCELLED, VOIDED.
events[].messagestring or null
events[].locationstring or null
events[].occurredAtstring (date-time)
createdAtstring (date-time)

Move a test shipment

POST /organizations/{organizationId}/shipments/{shipmentId}/simulate

Test labels only (SKUFLOW_SHIPPING=fake): moves the shipment as if the carrier had scanned it (IN_TRANSIT, DELIVERED…), with what follows for the order. 409 for real labels.

Permissionshipping.labels (Owner, Admin, Staff)
Riskwrite, OAuth scope skuflow.write. Write: creates or changes records inside the business; nothing leaves it.
MCP toolshipments_simulate (toolset orders)

Parameters

NameInTypeRequiredDescription
shipmentIdpathstringYes

Request body

FieldTypeRequiredDescription
statusenumYesDRAFT (rates only), PURCHASED (label bought), PRE_TRANSIT, IN_TRANSIT, OUT_FOR_DELIVERY, AVAILABLE_FOR_PICKUP, DELIVERED, RETURNED, FAILURE, CANCELLED, VOIDED. One of DRAFT, PURCHASED, PRE_TRANSIT, IN_TRANSIT, OUT_FOR_DELIVERY, AVAILABLE_FOR_PICKUP, DELIVERED, RETURNED, FAILURE, CANCELLED, VOIDED.

Example

curl -X POST "https://app.skuflow.ai/api/organizations/$ORGANIZATION_ID/shipments/{shipmentId}/simulate" \
  -H "Authorization: Bearer $SKUFLOW_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"status":"DRAFT"}'

Response

200: the answer's fields
FieldTypeDescription
idstringShipment id.
identifierstringSHP-n.
orderIdstring or null
storeOrderIdstring or null
customerIdstring or null
statusenumDRAFT (rates only), PURCHASED (label bought), PRE_TRANSIT, IN_TRANSIT, OUT_FOR_DELIVERY, AVAILABLE_FOR_PICKUP, DELIVERED, RETURNED, FAILURE, CANCELLED, VOIDED. One of DRAFT, PURCHASED, PRE_TRANSIT, IN_TRANSIT, OUT_FOR_DELIVERY, AVAILABLE_FOR_PICKUP, DELIVERED, RETURNED, FAILURE, CANCELLED, VOIDED.
modeenumMANAGED (SKUFlow's account) or OWN (the business's). One of MANAGED, OWN.
providerstring
toAddressobject
toAddress.namestringUp to 200 characters. Default ``.
toAddress.companystringUp to 200 characters. Default ``.
toAddress.street1stringUp to 200 characters.
toAddress.street2stringUp to 200 characters. Default ``.
toAddress.citystringUp to 100 characters.
toAddress.statestringUp to 100 characters. Default ``.
toAddress.zipstringUp to 20 characters.
toAddress.countrystringDefault US.
toAddress.phonestringUp to 40 characters. Default ``.
toAddress.emailstringUp to 254 characters. Default ``.
fromAddressobject
fromAddress.namestringUp to 200 characters. Default ``.
fromAddress.companystringUp to 200 characters. Default ``.
fromAddress.street1stringUp to 200 characters.
fromAddress.street2stringUp to 200 characters. Default ``.
fromAddress.citystringUp to 100 characters.
fromAddress.statestringUp to 100 characters. Default ``.
fromAddress.zipstringUp to 20 characters.
fromAddress.countrystringDefault US.
fromAddress.phonestringUp to 40 characters. Default ``.
fromAddress.emailstringUp to 254 characters. Default ``.
parcelobject
parcel.lengthInnumberAt most 200.
parcel.widthInnumberAt most 200.
parcel.heightInnumberAt most 200.
parcel.weightOznumberAt most 2400.
ratesarray of object
rates[].idstringBuy it with POST …/shipments/{shipmentId}/buy.
rates[].carrierstring
rates[].servicestring
rates[].postageCentsintegerWhat the shipping account is charged.
rates[].priceCentsintegerWhat the business pays: the postage, or postage × markup on SKUFlow's account.
rates[].currencystring
rates[].deliveryDaysnumber or null
rates[].estimatedDeliverystring or null
carrierstring or null
servicestring or null
trackingNumberstring or null
trackingUrlstring or null
labelUrlstring or nullThe label (PDF) to print.
postageCentsinteger or null
priceCentsinteger or null
estimatedDeliverystring or null
statusDetailstring or null
purchasedAtstring (date-time) or null
shippedAtstring (date-time) or null
deliveredAtstring (date-time) or null
voidableboolean
orderobject or null
order.idstring
order.identifierstring
storeOrderobject or null
storeOrder.idstring
storeOrder.identifierstring
eventsarray of object
events[].idstring
events[].statusenum or nullDRAFT (rates only), PURCHASED (label bought), PRE_TRANSIT, IN_TRANSIT, OUT_FOR_DELIVERY, AVAILABLE_FOR_PICKUP, DELIVERED, RETURNED, FAILURE, CANCELLED, VOIDED. One of DRAFT, PURCHASED, PRE_TRANSIT, IN_TRANSIT, OUT_FOR_DELIVERY, AVAILABLE_FOR_PICKUP, DELIVERED, RETURNED, FAILURE, CANCELLED, VOIDED.
events[].messagestring or null
events[].locationstring or null
events[].occurredAtstring (date-time)
createdAtstring (date-time)

On this page