Shipping

Contract approved · validation in progress

Only accounts allowed by the authenticated integration, environment and tenant. Includes customer-facing services/packaging capabilities; never internal credentials or provider cost.

Required permissions
{
  "anyOf": [
    {
      "allOf": [
        "rates.read"
      ]
    }
  ]
}
Parameters
cursor
query · Optional
Opaque continuation bound to tenant/environment/integration scope, filters, snapshot high-watermark and stable sort (updatedAt,id or documented resource-specific sort). Do not alter filters between pages. Incremental synchronization must include archive/deletion tombstones within the published retention window; snapshot expiry fails explicitly and requires a new scan.
limit
query · Optional
integer
updatedAfter
query · Optional
Exclusive UTC updated-time lower bound. For incremental sync keep a small overlap and deduplicate by id/version; cursor is authoritative within a scan.
Response
200Success.
400Malformed JSON, unsupported query or invalid request syntax.
401Missing, invalid, expired or revoked API key credential.
403Scope, tenant/environment/warehouse/carrier-account constraint or plan entitlement denied. New live external-tracker registration and standalone address verification also return service_not_enabled until price and quota policies are confirmed; no upstream call or new fee/accrual is permitted.
404Resource absent or not visible in the authorized tenant/environment.
409Business conflict, changed idempotency payload, stale quote, pending side effect or insufficient stock/funds.
422Field/business validation failed; details identify invalid fields.
429Rate or paid-service limit exceeded. Respect Retry-After.
500Unexpected server error; use requestId and query operation before retrying a side effect.
503Service temporarily unavailable; upstream outcome may be unknown, query/replay the operation.
Download V2 contract (JSON)

The implementation being validated supports standalone shipping in USD only. fulfillment and order_fulfillment sources, and nonzero insuredValue, return unsupported_capability until those capabilities are available.

source is exactly one of standalone, fulfillment or an explicit order+fulfillment association. All source resource IDs and shipping accounts must fit the integration scope. Fulfillment sources additionally require fulfillments.read (order_fulfillment also orders.read). Result may contain partial carrier failures; each returned rate covers all packages.

Required permissions
{
  "anyOf": [
    {
      "allOf": [
        "rates.read"
      ]
    }
  ]
}
{
  "source.kind=fulfillment": [
    "fulfillments.read"
  ],
  "source.kind=order_fulfillment": [
    "orders.read",
    "fulfillments.read"
  ]
}
Parameters
Idempotency-Key
header · Required
Required on every business write, including quotes, verification and DELETE. New logical action=new key; retry=same key and canonical payload. Namespace account+environment+stable integrationId+HTTP method+canonical path; credential rotation within one integration preserves integrationId. Same key/different payload=409. Lookup follows authentication/resource authorization and precedes If-Match/freshness checks so a completed retry returns its first result. General receipts retained >=7 days; financial/inventory side effects retain durable business association or tombstone beyond receipt expiry to prevent re-execution. In-flight/unknown result returns its operation, never a blind repurchase. Secret-creation responses are the deliberate exception to identical replay: the resource is replayed, but its one-time secret is null with secretUnavailable=true; use management rotation to recover.
Request
source
oneOf · Required
shippingAccountIds
array · Optional
serviceCodes
array · Optional
{
  "source": {
    "kind": "standalone",
    "shipping": {
      "shipFrom": {
        "name": "Warehouse",
        "street1": "123 Market St",
        "city": "San Francisco",
        "state": "CA",
        "postalCode": "94103",
        "country": "US",
        "phone": "4155550100",
        "residential": false
      },
      "shipTo": {
        "name": "Alex Chen",
        "street1": "456 Pine St",
        "city": "Seattle",
        "state": "WA",
        "postalCode": "98101",
        "country": "US",
        "phone": "2065550100",
        "residential": true
      },
      "packages": [
        {
          "packageNo": 1,
          "length": "12",
          "width": "9",
          "height": "3",
          "weight": "2",
          "dimensionUnit": "in",
          "weightUnit": "lb",
          "shape": "box"
        }
      ],
      "reference": "ERP-SHIP-1001"
    }
  },
  "shippingAccountIds": [
    "41"
  ]
}
Response
201Success.
400Malformed JSON, unsupported query or invalid request syntax.
401Missing, invalid, expired or revoked API key credential.
403Scope, tenant/environment/warehouse/carrier-account constraint or plan entitlement denied. New live external-tracker registration and standalone address verification also return service_not_enabled until price and quota policies are confirmed; no upstream call or new fee/accrual is permitted.
404Resource absent or not visible in the authorized tenant/environment.
409Business conflict, changed idempotency payload, stale quote, pending side effect or insufficient stock/funds.
422Field/business validation failed; details identify invalid fields.
429Rate or paid-service limit exceeded. Respect Retry-After.
500Unexpected server error; use requestId and query operation before retrying a side effect.
503Service temporarily unavailable; upstream outcome may be unknown, query/replay the operation.
Download V2 contract (JSON)

The implementation being validated purchases standalone quotes only. Fulfillment-bound purchases and insured shipments remain unavailable until their corresponding integrations are implemented and verified.

Server validates immutable quote binding, expiry, current permissions, fulfillment version/readiness, policy, wallet and carrier capability before purchase. A fulfillment-origin purchase additionally requires fulfillments.write. If the current account mark_shipped_trigger or another existing business rule will automatically confirm shipment/decrement inventory, fulfillments.ship is also required before ANY carrier call; absent permission returns 403, never skips that side effect or implicitly grants it from labels.buy. One purchase produces a shipment with one or more packages. Each frozen quote binds durably to one purchase operation before the carrier call; changing the Idempotency-Key or selecting another rate from that quote cannot start another purchase. Quote expiry does not release that binding; a different purchase request remains operation_pending. Retry the original key to recover its operation/result. An intentional new shipment requires a new quote and a new key; do not create a replacement quote to retry an unknown purchase. Unknown carrier outcome is needs_review, never automatically a second purchase.

Required permissions
{
  "anyOf": [
    {
      "allOf": [
        "labels.buy"
      ]
    }
  ]
}
{
  "quote.source.kind in [fulfillment,order_fulfillment]": [
    "fulfillments.write"
  ],
  "existing_business_rule_will_auto_ship": [
    "fulfillments.ship"
  ]
}
Parameters
Idempotency-Key
header · Required
Required on every business write, including quotes, verification and DELETE. New logical action=new key; retry=same key and canonical payload. Namespace account+environment+stable integrationId+HTTP method+canonical path; credential rotation within one integration preserves integrationId. Same key/different payload=409. Lookup follows authentication/resource authorization and precedes If-Match/freshness checks so a completed retry returns its first result. General receipts retained >=7 days; financial/inventory side effects retain durable business association or tombstone beyond receipt expiry to prevent re-execution. In-flight/unknown result returns its operation, never a blind repurchase. Secret-creation responses are the deliberate exception to identical replay: the resource is replayed, but its one-time secret is null with secretUnavailable=true; use management rotation to recover.
Request
quoteId
string · Required
Stable Shipbuy resource identifier serialized as a string. Treat as opaque; never confuse with a carrier identifier or display number.
rateId
string · Required
Stable Shipbuy resource identifier serialized as a string. Treat as opaque; never confuse with a carrier identifier or display number.
reference
string · Optional
{
  "quoteId": "quote_301",
  "rateId": "rate_302",
  "reference": "ERP-SHIP-1001"
}
Response
201Success.
202Accepted; poll Location or GET /operations/{id}.
400Malformed JSON, unsupported query or invalid request syntax.
401Missing, invalid, expired or revoked API key credential.
403Scope, tenant/environment/warehouse/carrier-account constraint or plan entitlement denied. New live external-tracker registration and standalone address verification also return service_not_enabled until price and quota policies are confirmed; no upstream call or new fee/accrual is permitted.
404Resource absent or not visible in the authorized tenant/environment.
409Business conflict, changed idempotency payload, stale quote, pending side effect or insufficient stock/funds.
422Field/business validation failed; details identify invalid fields.
429Rate or paid-service limit exceeded. Respect Retry-After.
500Unexpected server error; use requestId and query operation before retrying a side effect.
503Service temporarily unavailable; upstream outcome may be unknown, query/replay the operation.
Download V2 contract (JSON)

List visible shipments.

Required permissions
{
  "anyOf": [
    {
      "allOf": [
        "shipments.read"
      ]
    }
  ]
}
Parameters
cursor
query · Optional
Opaque continuation bound to tenant/environment/integration scope, filters, snapshot high-watermark and stable sort (updatedAt,id or documented resource-specific sort). Do not alter filters between pages. Incremental synchronization must include archive/deletion tombstones within the published retention window; snapshot expiry fails explicitly and requires a new scan.
limit
query · Optional
integer
updatedAfter
query · Optional
Exclusive UTC updated-time lower bound. For incremental sync keep a small overlap and deduplicate by id/version; cursor is authoritative within a scan.
warehouseId
query · Optional
string
shippingAccountId
query · Optional
string
reference
query · Optional
string
trackingNumber
query · Optional
string
fulfillmentId
query · Optional
string
status
query · Optional
string
Response
200Success.
400Malformed JSON, unsupported query or invalid request syntax.
401Missing, invalid, expired or revoked API key credential.
403Scope, tenant/environment/warehouse/carrier-account constraint or plan entitlement denied. New live external-tracker registration and standalone address verification also return service_not_enabled until price and quota policies are confirmed; no upstream call or new fee/accrual is permitted.
404Resource absent or not visible in the authorized tenant/environment.
409Business conflict, changed idempotency payload, stale quote, pending side effect or insufficient stock/funds.
422Field/business validation failed; details identify invalid fields.
429Rate or paid-service limit exceeded. Respect Retry-After.
500Unexpected server error; use requestId and query operation before retrying a side effect.
503Service temporarily unavailable; upstream outcome may be unknown, query/replay the operation.
Download V2 contract (JSON)

Retrieve a shipment and all packages.

Required permissions
{
  "anyOf": [
    {
      "allOf": [
        "shipments.read"
      ]
    }
  ]
}
Parameters
shipmentId
path · Required
string
Response
200Success.
400Malformed JSON, unsupported query or invalid request syntax.
401Missing, invalid, expired or revoked API key credential.
403Scope, tenant/environment/warehouse/carrier-account constraint or plan entitlement denied. New live external-tracker registration and standalone address verification also return service_not_enabled until price and quota policies are confirmed; no upstream call or new fee/accrual is permitted.
404Resource absent or not visible in the authorized tenant/environment.
409Business conflict, changed idempotency payload, stale quote, pending side effect or insufficient stock/funds.
422Field/business validation failed; details identify invalid fields.
429Rate or paid-service limit exceeded. Respect Retry-After.
500Unexpected server error; use requestId and query operation before retrying a side effect.
503Service temporarily unavailable; upstream outcome may be unknown, query/replay the operation.
Download V2 contract (JSON)

Returns persisted valid documents with refreshed signed URLs, including after an original purchase response was lost. Historical voided-label access is visibly marked by the owning shipment/package status; never suggests it is valid for shipping.

Required permissions
{
  "anyOf": [
    {
      "allOf": [
        "shipments.read"
      ]
    }
  ]
}
Parameters
shipmentId
path · Required
string
cursor
query · Optional
Opaque continuation bound to tenant/environment/integration scope, filters, snapshot high-watermark and stable sort (updatedAt,id or documented resource-specific sort). Do not alter filters between pages. Incremental synchronization must include archive/deletion tombstones within the published retention window; snapshot expiry fails explicitly and requires a new scan.
limit
query · Optional
integer
type
query · Optional
string
Response
200Success.
400Malformed JSON, unsupported query or invalid request syntax.
401Missing, invalid, expired or revoked API key credential.
403Scope, tenant/environment/warehouse/carrier-account constraint or plan entitlement denied. New live external-tracker registration and standalone address verification also return service_not_enabled until price and quota policies are confirmed; no upstream call or new fee/accrual is permitted.
404Resource absent or not visible in the authorized tenant/environment.
409Business conflict, changed idempotency payload, stale quote, pending side effect or insufficient stock/funds.
422Field/business validation failed; details identify invalid fields.
429Rate or paid-service limit exceeded. Respect Retry-After.
500Unexpected server error; use requestId and query operation before retrying a side effect.
503Service temporarily unavailable; upstream outcome may be unknown, query/replay the operation.
Download V2 contract (JSON)

Package subset is explicit; whole-shipment providers reject subsets. Void acceptance, label lifecycle and wallet/carrier refund completion are distinct. Refund cannot exceed actual collected amounts. Partial successes are durable and replayable; no rollback claim for already completed carrier actions. A fulfillment-linked void additionally requires fulfillments.write. If existing rules can revert shipment and restore inventory/reservations, fulfillments.ship is also required before the carrier call. Missing authority returns 403; never skip the existing reversal rules or silently broaden labels.void into inventory authority.

Required permissions
{
  "anyOf": [
    {
      "allOf": [
        "labels.void"
      ]
    }
  ]
}
{
  "shipment_has_fulfillment": [
    "fulfillments.write"
  ],
  "existing_business_rule_may_revert_shipment": [
    "fulfillments.ship"
  ]
}
Parameters
shipmentId
path · Required
string
Idempotency-Key
header · Required
Required on every business write, including quotes, verification and DELETE. New logical action=new key; retry=same key and canonical payload. Namespace account+environment+stable integrationId+HTTP method+canonical path; credential rotation within one integration preserves integrationId. Same key/different payload=409. Lookup follows authentication/resource authorization and precedes If-Match/freshness checks so a completed retry returns its first result. General receipts retained >=7 days; financial/inventory side effects retain durable business association or tombstone beyond receipt expiry to prevent re-execution. In-flight/unknown result returns its operation, never a blind repurchase. Secret-creation responses are the deliberate exception to identical replay: the resource is replayed, but its one-time secret is null with secretUnavailable=true; use management rotation to recover.
Request
packageIds
array · Optional
reason
string · Required
{
  "reason": "Customer canceled before handover"
}
Response
201Success.
202Accepted; poll Location or GET /operations/{id}.
400Malformed JSON, unsupported query or invalid request syntax.
401Missing, invalid, expired or revoked API key credential.
403Scope, tenant/environment/warehouse/carrier-account constraint or plan entitlement denied. New live external-tracker registration and standalone address verification also return service_not_enabled until price and quota policies are confirmed; no upstream call or new fee/accrual is permitted.
404Resource absent or not visible in the authorized tenant/environment.
409Business conflict, changed idempotency payload, stale quote, pending side effect or insufficient stock/funds.
422Field/business validation failed; details identify invalid fields.
429Rate or paid-service limit exceeded. Respect Retry-After.
500Unexpected server error; use requestId and query operation before retrying a side effect.
503Service temporarily unavailable; upstream outcome may be unknown, query/replay the operation.
Download V2 contract (JSON)

Cached tracking for an authorized package. Included basic tracking for Shipbuy-purchased labels does not create a paid external tracker. No immediate upstream call is caused by repeated reads.

Required permissions
{
  "anyOf": [
    {
      "allOf": [
        "tracking.read"
      ]
    }
  ]
}
Parameters
packageId
path · Required
string
Response
200Success.
400Malformed JSON, unsupported query or invalid request syntax.
401Missing, invalid, expired or revoked API key credential.
403Scope, tenant/environment/warehouse/carrier-account constraint or plan entitlement denied. New live external-tracker registration and standalone address verification also return service_not_enabled until price and quota policies are confirmed; no upstream call or new fee/accrual is permitted.
404Resource absent or not visible in the authorized tenant/environment.
409Business conflict, changed idempotency payload, stale quote, pending side effect or insufficient stock/funds.
422Field/business validation failed; details identify invalid fields.
429Rate or paid-service limit exceeded. Respect Retry-After.
500Unexpected server error; use requestId and query operation before retrying a side effect.
503Service temporarily unavailable; upstream outcome may be unknown, query/replay the operation.
Download V2 contract (JSON)

Register an external tracking number. Commercial gate: new live actions are disabled until the service price and quota policy are confirmed. Return 403/service_not_enabled before any upstream call, new fee or accrued amount; never silently execute for free. This is independent of the API key scope check. Test simulation and authorized completed-idempotency replay remain available without new charges. No public product-enablement API is provided.

Required permissions
{
  "anyOf": [
    {
      "allOf": [
        "tracking.subscribe"
      ]
    }
  ]
}
Parameters
Idempotency-Key
header · Required
Required on every business write, including quotes, verification and DELETE. New logical action=new key; retry=same key and canonical payload. Namespace account+environment+stable integrationId+HTTP method+canonical path; credential rotation within one integration preserves integrationId. Same key/different payload=409. Lookup follows authentication/resource authorization and precedes If-Match/freshness checks so a completed retry returns its first result. General receipts retained >=7 days; financial/inventory side effects retain durable business association or tombstone beyond receipt expiry to prevent re-execution. In-flight/unknown result returns its operation, never a blind repurchase. Secret-creation responses are the deliberate exception to identical replay: the resource is replayed, but its one-time secret is null with secretUnavailable=true; use management rotation to recover.
Request
carrier
string · Required
trackingNumber
string · Required
shipDate
string · Required
Calendar date yyyy-MM-dd; shipping dates use the ship-from warehouse time zone, or the account time zone for custom origins.
reference
string · Optional
metadata
object · Optional
Client-owned string metadata only. No secrets or card data. Not used for authorization or business rules.
{
  "carrier": "ups",
  "trackingNumber": "1Z999AA10123456784",
  "shipDate": "2026-11-01",
  "reference": "EXTERNAL-1001"
}
Response
201Success.
400Malformed JSON, unsupported query or invalid request syntax.
401Missing, invalid, expired or revoked API key credential.
403API key/resource permission denied, or live new-action capability has not been commercially enabled. service_not_enabled means no upstream call and no new fee/accrual occurred.
404Resource absent or not visible in the authorized tenant/environment.
409Business conflict, changed idempotency payload, stale quote, pending side effect or insufficient stock/funds.
422Field/business validation failed; details identify invalid fields.
429Rate or paid-service limit exceeded. Respect Retry-After.
500Unexpected server error; use requestId and query operation before retrying a side effect.
503Service temporarily unavailable; upstream outcome may be unknown, query/replay the operation.
Download V2 contract (JSON)

List external tracking registrations.

Required permissions
{
  "anyOf": [
    {
      "allOf": [
        "tracking.read"
      ]
    }
  ]
}
Parameters
cursor
query · Optional
Opaque continuation bound to tenant/environment/integration scope, filters, snapshot high-watermark and stable sort (updatedAt,id or documented resource-specific sort). Do not alter filters between pages. Incremental synchronization must include archive/deletion tombstones within the published retention window; snapshot expiry fails explicitly and requires a new scan.
limit
query · Optional
integer
updatedAfter
query · Optional
Exclusive UTC updated-time lower bound. For incremental sync keep a small overlap and deduplicate by id/version; cursor is authoritative within a scan.
reference
query · Optional
string
carrier
query · Optional
string
trackingNumber
query · Optional
string
Response
200Success.
400Malformed JSON, unsupported query or invalid request syntax.
401Missing, invalid, expired or revoked API key credential.
403Scope, tenant/environment/warehouse/carrier-account constraint or plan entitlement denied. New live external-tracker registration and standalone address verification also return service_not_enabled until price and quota policies are confirmed; no upstream call or new fee/accrual is permitted.
404Resource absent or not visible in the authorized tenant/environment.
409Business conflict, changed idempotency payload, stale quote, pending side effect or insufficient stock/funds.
422Field/business validation failed; details identify invalid fields.
429Rate or paid-service limit exceeded. Respect Retry-After.
500Unexpected server error; use requestId and query operation before retrying a side effect.
503Service temporarily unavailable; upstream outcome may be unknown, query/replay the operation.
Download V2 contract (JSON)

Retrieve an external tracker and history.

Required permissions
{
  "anyOf": [
    {
      "allOf": [
        "tracking.read"
      ]
    }
  ]
}
Parameters
trackerId
path · Required
string
Response
200Success.
400Malformed JSON, unsupported query or invalid request syntax.
401Missing, invalid, expired or revoked API key credential.
403Scope, tenant/environment/warehouse/carrier-account constraint or plan entitlement denied. New live external-tracker registration and standalone address verification also return service_not_enabled until price and quota policies are confirmed; no upstream call or new fee/accrual is permitted.
404Resource absent or not visible in the authorized tenant/environment.
409Business conflict, changed idempotency payload, stale quote, pending side effect or insufficient stock/funds.
422Field/business validation failed; details identify invalid fields.
429Rate or paid-service limit exceeded. Respect Retry-After.
500Unexpected server error; use requestId and query operation before retrying a side effect.
503Service temporarily unavailable; upstream outcome may be unknown, query/replay the operation.
Download V2 contract (JSON)

Preflight shipments eligible for a manifest. Determine the ship date from persisted shipping options.shipDate first, then shippedAt. An unknown or mismatched date returns eligible=false with an issue; never infer the ship date from label creation time.

Required permissions
{
  "anyOf": [
    {
      "allOf": [
        "manifests.read"
      ]
    }
  ]
}
Parameters
cursor
query · Optional
Opaque continuation bound to tenant/environment/integration scope, filters, snapshot high-watermark and stable sort (updatedAt,id or documented resource-specific sort). Do not alter filters between pages. Incremental synchronization must include archive/deletion tombstones within the published retention window; snapshot expiry fails explicitly and requires a new scan.
limit
query · Optional
integer
shippingAccountId
query · Required
string
warehouseId
query · Optional
string
shipDate
query · Required
string
Response
200Success.
400Malformed JSON, unsupported query or invalid request syntax.
401Missing, invalid, expired or revoked API key credential.
403Scope, tenant/environment/warehouse/carrier-account constraint or plan entitlement denied. New live external-tracker registration and standalone address verification also return service_not_enabled until price and quota policies are confirmed; no upstream call or new fee/accrual is permitted.
404Resource absent or not visible in the authorized tenant/environment.
409Business conflict, changed idempotency payload, stale quote, pending side effect or insufficient stock/funds.
422Field/business validation failed; details identify invalid fields.
429Rate or paid-service limit exceeded. Respect Retry-After.
500Unexpected server error; use requestId and query operation before retrying a side effect.
503Service temporarily unavailable; upstream outcome may be unknown, query/replay the operation.
Download V2 contract (JSON)

Create one manifest for a compatible shipment group.

Required permissions
{
  "anyOf": [
    {
      "allOf": [
        "manifests.write"
      ]
    }
  ]
}
Parameters
Idempotency-Key
header · Required
Required on every business write, including quotes, verification and DELETE. New logical action=new key; retry=same key and canonical payload. Namespace account+environment+stable integrationId+HTTP method+canonical path; credential rotation within one integration preserves integrationId. Same key/different payload=409. Lookup follows authentication/resource authorization and precedes If-Match/freshness checks so a completed retry returns its first result. General receipts retained >=7 days; financial/inventory side effects retain durable business association or tombstone beyond receipt expiry to prevent re-execution. In-flight/unknown result returns its operation, never a blind repurchase. Secret-creation responses are the deliberate exception to identical replay: the resource is replayed, but its one-time secret is null with secretUnavailable=true; use management rotation to recover.
Request
shipmentIds
array · Required
shipDate
string · Required
Calendar date yyyy-MM-dd; shipping dates use the ship-from warehouse time zone, or the account time zone for custom origins.
{
  "shipmentIds": [
    "301",
    "302"
  ],
  "shipDate": "2026-11-01"
}
Response
201Success.
202Accepted; poll Location or GET /operations/{id}.
400Malformed JSON, unsupported query or invalid request syntax.
401Missing, invalid, expired or revoked API key credential.
403Scope, tenant/environment/warehouse/carrier-account constraint or plan entitlement denied. New live external-tracker registration and standalone address verification also return service_not_enabled until price and quota policies are confirmed; no upstream call or new fee/accrual is permitted.
404Resource absent or not visible in the authorized tenant/environment.
409Business conflict, changed idempotency payload, stale quote, pending side effect or insufficient stock/funds.
422Field/business validation failed; details identify invalid fields.
429Rate or paid-service limit exceeded. Respect Retry-After.
500Unexpected server error; use requestId and query operation before retrying a side effect.
503Service temporarily unavailable; upstream outcome may be unknown, query/replay the operation.
Download V2 contract (JSON)

List manifests.

Required permissions
{
  "anyOf": [
    {
      "allOf": [
        "manifests.read"
      ]
    }
  ]
}
Parameters
cursor
query · Optional
Opaque continuation bound to tenant/environment/integration scope, filters, snapshot high-watermark and stable sort (updatedAt,id or documented resource-specific sort). Do not alter filters between pages. Incremental synchronization must include archive/deletion tombstones within the published retention window; snapshot expiry fails explicitly and requires a new scan.
limit
query · Optional
integer
updatedAfter
query · Optional
Exclusive UTC updated-time lower bound. For incremental sync keep a small overlap and deduplicate by id/version; cursor is authoritative within a scan.
warehouseId
query · Optional
string
shippingAccountId
query · Optional
string
Response
200Success.
400Malformed JSON, unsupported query or invalid request syntax.
401Missing, invalid, expired or revoked API key credential.
403Scope, tenant/environment/warehouse/carrier-account constraint or plan entitlement denied. New live external-tracker registration and standalone address verification also return service_not_enabled until price and quota policies are confirmed; no upstream call or new fee/accrual is permitted.
404Resource absent or not visible in the authorized tenant/environment.
409Business conflict, changed idempotency payload, stale quote, pending side effect or insufficient stock/funds.
422Field/business validation failed; details identify invalid fields.
429Rate or paid-service limit exceeded. Respect Retry-After.
500Unexpected server error; use requestId and query operation before retrying a side effect.
503Service temporarily unavailable; upstream outcome may be unknown, query/replay the operation.
Download V2 contract (JSON)

Retrieve a manifest and recovery state.

Required permissions
{
  "anyOf": [
    {
      "allOf": [
        "manifests.read"
      ]
    }
  ]
}
Parameters
manifestId
path · Required
string
Response
200Success.
400Malformed JSON, unsupported query or invalid request syntax.
401Missing, invalid, expired or revoked API key credential.
403Scope, tenant/environment/warehouse/carrier-account constraint or plan entitlement denied. New live external-tracker registration and standalone address verification also return service_not_enabled until price and quota policies are confirmed; no upstream call or new fee/accrual is permitted.
404Resource absent or not visible in the authorized tenant/environment.
409Business conflict, changed idempotency payload, stale quote, pending side effect or insufficient stock/funds.
422Field/business validation failed; details identify invalid fields.
429Rate or paid-service limit exceeded. Respect Retry-After.
500Unexpected server error; use requestId and query operation before retrying a side effect.
503Service temporarily unavailable; upstream outcome may be unknown, query/replay the operation.
Download V2 contract (JSON)

Retrieve manifest PDF links.

Required permissions
{
  "anyOf": [
    {
      "allOf": [
        "manifests.read"
      ]
    }
  ]
}
Parameters
manifestId
path · Required
string
cursor
query · Optional
Opaque continuation bound to tenant/environment/integration scope, filters, snapshot high-watermark and stable sort (updatedAt,id or documented resource-specific sort). Do not alter filters between pages. Incremental synchronization must include archive/deletion tombstones within the published retention window; snapshot expiry fails explicitly and requires a new scan.
limit
query · Optional
integer
Response
200Success.
400Malformed JSON, unsupported query or invalid request syntax.
401Missing, invalid, expired or revoked API key credential.
403Scope, tenant/environment/warehouse/carrier-account constraint or plan entitlement denied. New live external-tracker registration and standalone address verification also return service_not_enabled until price and quota policies are confirmed; no upstream call or new fee/accrual is permitted.
404Resource absent or not visible in the authorized tenant/environment.
409Business conflict, changed idempotency payload, stale quote, pending side effect or insufficient stock/funds.
422Field/business validation failed; details identify invalid fields.
429Rate or paid-service limit exceeded. Respect Retry-After.
500Unexpected server error; use requestId and query operation before retrying a side effect.
503Service temporarily unavailable; upstream outcome may be unknown, query/replay the operation.
Download V2 contract (JSON)

Only local membership release; does not void the carrier document. Unknown/partial/document-failed results remain occupied and return 409 until reconciliation. Must not be presented as carrier cancellation.

Required permissions
{
  "anyOf": [
    {
      "allOf": [
        "manifests.write"
      ]
    }
  ]
}
Parameters
manifestId
path · Required
string
Idempotency-Key
header · Required
Required on every business write, including quotes, verification and DELETE. New logical action=new key; retry=same key and canonical payload. Namespace account+environment+stable integrationId+HTTP method+canonical path; credential rotation within one integration preserves integrationId. Same key/different payload=409. Lookup follows authentication/resource authorization and precedes If-Match/freshness checks so a completed retry returns its first result. General receipts retained >=7 days; financial/inventory side effects retain durable business association or tombstone beyond receipt expiry to prevent re-execution. In-flight/unknown result returns its operation, never a blind repurchase. Secret-creation responses are the deliberate exception to identical replay: the resource is replayed, but its one-time secret is null with secretUnavailable=true; use management rotation to recover.
Request
reason
string · Required
{
  "reason": "Reorganize local manifest group"
}
Response
200Success.
400Malformed JSON, unsupported query or invalid request syntax.
401Missing, invalid, expired or revoked API key credential.
403Scope, tenant/environment/warehouse/carrier-account constraint or plan entitlement denied. New live external-tracker registration and standalone address verification also return service_not_enabled until price and quota policies are confirmed; no upstream call or new fee/accrual is permitted.
404Resource absent or not visible in the authorized tenant/environment.
409Business conflict, changed idempotency payload, stale quote, pending side effect or insufficient stock/funds.
422Field/business validation failed; details identify invalid fields.
429Rate or paid-service limit exceeded. Respect Retry-After.
500Unexpected server error; use requestId and query operation before retrying a side effect.
503Service temporarily unavailable; upstream outcome may be unknown, query/replay the operation.
Download V2 contract (JSON)

Verify a postal address without changing saved records. Commercial gate: new live actions are disabled until the service price and quota policy are confirmed. Return 403/service_not_enabled before any upstream call, new fee or accrued amount; never silently execute for free. This is independent of the API key scope check. Test simulation and authorized completed-idempotency replay remain available without new charges. No public product-enablement API is provided.

Required permissions
{
  "anyOf": [
    {
      "allOf": [
        "addresses.verify"
      ]
    }
  ]
}
Parameters
Idempotency-Key
header · Required
Required on every business write, including quotes, verification and DELETE. New logical action=new key; retry=same key and canonical payload. Namespace account+environment+stable integrationId+HTTP method+canonical path; credential rotation within one integration preserves integrationId. Same key/different payload=409. Lookup follows authentication/resource authorization and precedes If-Match/freshness checks so a completed retry returns its first result. General receipts retained >=7 days; financial/inventory side effects retain durable business association or tombstone beyond receipt expiry to prevent re-execution. In-flight/unknown result returns its operation, never a blind repurchase. Secret-creation responses are the deliberate exception to identical replay: the resource is replayed, but its one-time secret is null with secretUnavailable=true; use management rotation to recover.
Request
address
object · Required
Original address is preserved. Country-specific postal validation and carrier print-field limits are separate checks; do not silently truncate. Residential null means unknown.
{
  "address": {
    "name": "Alex Chen",
    "street1": "456 Pine St",
    "city": "Seattle",
    "state": "WA",
    "postalCode": "98101",
    "country": "US",
    "phone": "2065550100",
    "residential": true
  }
}
Response
201Success.
400Malformed JSON, unsupported query or invalid request syntax.
401Missing, invalid, expired or revoked API key credential.
403API key/resource permission denied, or live new-action capability has not been commercially enabled. service_not_enabled means no upstream call and no new fee/accrual occurred.
404Resource absent or not visible in the authorized tenant/environment.
409Business conflict, changed idempotency payload, stale quote, pending side effect or insufficient stock/funds.
422Field/business validation failed; details identify invalid fields.
429Rate or paid-service limit exceeded. Respect Retry-After.
500Unexpected server error; use requestId and query operation before retrying a side effect.
503Service temporarily unavailable; upstream outcome may be unknown, query/replay the operation.
Download V2 contract (JSON)

Authorization must match this operation type (purchase:labels.buy; void:labels.void; manifest:manifests.write; ship:fulfillments.ship), integration identity and resource restrictions. Possessing a different listed scope does not grant access. Completed label purchases remain recoverable after response loss; documents may carry freshly signed links.

Required permissions
{
  "anyOf": [
    {
      "allOf": [
        "labels.buy"
      ]
    },
    {
      "allOf": [
        "labels.void"
      ]
    },
    {
      "allOf": [
        "manifests.write"
      ]
    },
    {
      "allOf": [
        "fulfillments.ship"
      ]
    }
  ]
}
Parameters
operationId
path · Required
string
Response
200Success.
400Malformed JSON, unsupported query or invalid request syntax.
401Missing, invalid, expired or revoked API key credential.
403Scope, tenant/environment/warehouse/carrier-account constraint or plan entitlement denied. New live external-tracker registration and standalone address verification also return service_not_enabled until price and quota policies are confirmed; no upstream call or new fee/accrual is permitted.
404Resource absent or not visible in the authorized tenant/environment.
409Business conflict, changed idempotency payload, stale quote, pending side effect or insufficient stock/funds.
422Field/business validation failed; details identify invalid fields.
429Rate or paid-service limit exceeded. Respect Retry-After.
500Unexpected server error; use requestId and query operation before retrying a side effect.
503Service temporarily unavailable; upstream outcome may be unknown, query/replay the operation.
Download V2 contract (JSON)