Shipping Setup API
The Carriyo Shipping Setup API manages the configuration the shipping engine reads on every booking: carrier accounts, shipping rules, service levels, carrier networks, and costing profiles. These resources are set up once per merchant and updated infrequently.
Setting up carriers, service levels, networks, costing, and automation rules is infrequent, low-volume work — for most merchants, it’s one-time onboarding plus occasional changes. Consider using the Carriyo Dashboard instead: it validates inputs, surfaces required fields contextually, shows live previews of routing decisions, and protects you from the most common misconfigurations.
See the Guides section for step-by-step setup guides.
Carrier Accounts
A carrier account in Carriyo holds the settings for a given account with your chosen carrier. The information in the carrier account varies by carrier and usually includes details such as the account number, the API credentials (API key, username, password), and the chosen service type.
If you're a business that uses multiple carriers for shipping, you'll have multiple carrier accounts. For instance, if you have an account with DHL and UPS, you'll create two carrier accounts in Carriyo (one for each carrier) with the mandatory settings needed to book and track your shipments. You can also configure multiple carrier accounts in Carriyo for the same carrier when you hold multiple accounts with them across service types or countries.
Related: What a carrier account holds and how profiles attach to it
7 operations · 0 objects
/carrier-accountsCreate carrier account
Create a new carrier account for the merchant. The account holds the credentials and configuration Carriyo uses to book shipments with that carrier.
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| Content-Type | application/json | Yes | Media type of the request body. |
Request body
application/jsonSchema: carrier-account-requestResponses
carrier-account-objectNeed the full machine-readable spec? Download the OpenAPI document →
/carrier-accountsList carrier accounts
List carrier accounts configured for your tenant. The response is a paginated wrapper
(items plus pagination), not a JSON array at the root.
By default, active and inactive accounts are included. Pass status (e.g. ACTIVE) to
narrow the list. Deleted accounts are never returned. Only ACTIVE accounts can be used
to book shipments.
Use page and page_size to page through results; the first page is page=0. Set
pagination=false to ignore both and return the first 100 matches in a single response.
Query parameters
| Name | Type | Required | Description |
|---|---|---|---|
| status | array | No | Filter by account status. Repeat the parameter or pass multiple values to match more than one status (e.g. `status=ACTIVE&status=INACTIVE`). |
| page | integer | No | Page number, starting at `0`. Default `0`. |
| page_size | integer | No | Number of accounts per page. Default `10`, maximum `100`. |
| pagination | boolean | No | When `false`, `page` and `page_size` are ignored and the first 100 matches are returned in one response. |
| search_string | string | No | Free-text search across account name and carrier. |
| carrier | array | No | Filter by carrier code (e.g. `DHL`, `QUIQUP`). |
| carrier_id | array | No | Filter by carrier account ID. |
| carrier_account_name | array | No | Filter by carrier account display name. The match is exact. |
| country | array | No | Filter by ISO 3166-1 alpha-2 account country. |
| is_live | boolean | No | Filter by live vs test credentials in account properties. |
| exclude_carrier | string | No | Leave out accounts of this carrier code. |
| sort_by | string | No | Field to sort by. `carrier_account_name`, `carrier` and `country` are supported. Ignored when `search_string` is set. |
| sort_direction | string | No | Sort order. Default `DESC`. |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
Responses
items and pagination, not a bare array.Schema: carrier-account-pageThe request was rejected. One of:
pageorpage_sizeis not a number.page_sizeis negative or above 100.page_size * (page + 1)exceeds 10,000.
Need the full machine-readable spec? Download the OpenAPI document →
/carrier-accounts/statisticsList carrier accounts with statistics
List carrier accounts together with their activity timestamps: last booking, last error, and the last real-time and sync tracking updates.
Query parameters. This operation reads its multi-word parameters in camelCase
(pageSize, searchString, carrierId, accountName, accountCountry, isLive,
sortBy). The snake_case spellings used by List carrier accounts are accepted but
ignored here.
Paging. Pages start at 1 here, not at 0 as on List carrier accounts.
What you get back. Each item is the account as Get carrier account returns it with
statistics=true. A timestamp is null until the event it records has happened.
Query parameters
| Name | Type | Required | Description |
|---|---|---|---|
| status | array | No | Filter by account status. Repeat the parameter to match more than one status (e.g. `status=ACTIVE&status=INACTIVE`). |
| page | integer | No | Page number (1-based). Default `1`. |
| pageSize | integer | No | Number of accounts per page. Default `10`. |
| pagination | boolean | No | When `false`, all matching accounts are returned in `items` and `pagination.page` / `pagination.page_size` are `0`. |
| searchString | string | No | Free-text search across account name and related fields. |
| carrier | array | No | Filter by carrier code (e.g. `DHL`, `QUIQUP`). |
| carrierId | array | No | Filter by carrier account ID. |
| accountName | array | No | Filter by carrier account display name. |
| accountCountry | array | No | Filter by ISO 3166-1 alpha-2 account country. |
| isLive | boolean | No | Filter by live vs test credentials in account properties. |
| excludeCarrier | string | No | Leave out accounts of this carrier code. |
| sortBy | string | No | Carrier account field to sort by, in snake_case, such as `carrier_account_name`, `account_country`, `carrier`, `status` or `update_date`. A field that cannot be sorted returns an empty list instead of an error. |
| sortDirection | string | No | Sort order. |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
Responses
items and pagination, not a bare array.Schema: carrier-account-statistics-pageThe request was rejected. One of:
pageis below 1.pageSizeis negative.
Need the full machine-readable spec? Download the OpenAPI document →
/carrier-accounts/shipping-ratesGet shipping rates
Rate-shop a prospective shipment across a caller-supplied list of carrier accounts. Pass the
shipment details plus the carrier_accounts to quote, and Carriyo returns one rate per
account. The call is stateless: no shipment or order is created.
Rates are sourced from each account's configured costing profile, or from the carrier's live
rating API where enabled. Each returned rate carries the estimated cost, service name, and
delivery promise for that account. Accounts that fail to price are omitted unless you set
include_errors.
Compared with other pricing calls. Use this endpoint to compare carriers before creating a shipment, for example to pick the cheapest or fastest option across several accounts. It differs from two neighbours:
- to re-price a shipment that already exists on its assigned carrier, use Estimate shipping cost, https://carriyo.com/docs/api/shipping/#estimate-shipping-cost-for-shipment.
- for shopper-facing pricing at checkout, use the Storefront delivery options endpoint, https://carriyo.com/docs/api/storefront/#get-delivery-options, which supersedes this endpoint for that case.
Pricing detail. By default each rate returns a single estimated_shipping_cost amount. Request more detail with query parameters.
include_breakdownadds the line-by-line costbreakdowninside each rate'sestimated_shipping_cost.include_markupadds any configured markup to the returned rates.include_errorsadds per-carriererror_detailsfor accounts that could not return a rate.
Query parameters
| Name | Type | Required | Description |
|---|---|---|---|
| include_errors | boolean | No | Include per-carrier `error_details` for accounts that failed to return a rate. |
| include_breakdown | boolean | No | Include the line-by-line cost `breakdown` in each rate's `estimated_shipping_cost`. |
| include_markup | boolean | No | Include configured markup in the returned rates. |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| Content-Type | application/json | Yes | Media type of the request body. |
Request body
application/jsonSchema: shipping-rates-requestrequired- Pickup address for the shipment. You can either pass a free-form address or a predefined location. For forward shipments, you must pass a predefined pickup location. Carriyo will copy the contact and address fields from the specified location. To specify the location, you can use Carriyo's internal location ID (
partner_location_id), or your own location code (partner_location_code) as defined when you created the location in Carriyo. For reverse shipments, you can pass the customer's pickup address as a free-form pickup address. - Dropoff address for the shipment. You can either pass a free-form address or a predefined location. For forward shipments, you can pass the customer's dropoff address as a free-form address. For reverse shipments, you must pass a predefined dropoff location. Carriyo will copy the contact and address fields from the specified location. To specify the location, you can use Carriyo's internal location ID (
partner_location_id), or your own location code (partner_location_code) as defined when you created the location in Carriyo.
Responses
Need the full machine-readable spec? Download the OpenAPI document →
/carrier-accounts/{carrier-account-id}Get carrier account
Return a single carrier account by its carrier-account-id. By default the response
matches a configured account (carrier-account-object). Pass
statistics=true to receive activity timestamps (carrier-account-statistics-object).
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| carrier-account-id | string | Yes | Carrier account ID. |
Query parameters
| Name | Type | Required | Description |
|---|---|---|---|
| statistics | boolean | No | When `true`, the response includes carrier activity timestamps (last booking, last error, real-time and sync update dates). |
| integration_status | boolean | No | When `true`, the response includes `integration_statuses` with the result of live integration checks for the account. |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
Responses
Need the full machine-readable spec? Download the OpenAPI document →
/carrier-accounts/{carrier-account-id}Update carrier account
Replace the configuration of a carrier account. The request body fully replaces the existing account; fields you omit are reset to defaults.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| carrier-account-id | string | Yes | Carrier account ID. |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| Content-Type | application/json | Yes | Media type of the request body. |
Request body
application/jsonSchema: carrier-account-requestResponses
carrier-account-objectNeed the full machine-readable spec? Download the OpenAPI document →
/carrier-accounts/{carrier-account-id}Delete carrier account
Soft-delete the specified carrier account. The account moves to DELETED status and is
no longer returned by List carrier accounts, whatever status you pass. Get
carrier account still returns it. Active bookings on the account are not affected.
Rule references block the delete. A rule that references the account blocks it even
when the rule's ruleset is INACTIVE. Remove the account from the rule, or delete the
rule, then retry; deactivating the ruleset is not enough.
One reference is not enforced. A service-level rule that names the account only in carrier_accounts
does not block the delete, and is left referencing the deleted account.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| carrier-account-id | string | Yes | Carrier account ID. |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
Responses
The request was rejected. One of:
- an automation rule lists the account in
carrier_accounts. - a service-level rule lists the account in
carrier_ids.
Need the full machine-readable spec? Download the OpenAPI document →
Shipping Rules
Carriyo lets merchants automate carrier selection using shipping rules. Rules are grouped into rule sets, which can be assigned to merchant / country combinations. For example, a merchant can define one set of rules for the United States and a different set for Canada.
Each rule has a set of conditions that assign an inbound shipment to a chosen carrier when the conditions match. Rules have a sequence (priority), and the first rule to match the shipment determines the carrier. Conditions are flexible: you can match on the pickup or dropoff location, the delivery type, parcel weight, dimensions, or any other attribute of the shipment, and you can also cap the number of shipments routed to a carrier.
Related: How shipping rules choose a carrier
12 operations · 0 objects
/automation-rulesetsCreate automation ruleset
Create an automation ruleset. The ruleset is the container for the routing rules Carriyo evaluates at booking time to pick a carrier account for each shipment. You can optionally pass an initial set of rules on the request; rules can also be added later.
One active ruleset per scope. Two ACTIVE rulesets cannot cover the same merchant,
country and entity type; _ANY overlaps every value. Create the ruleset as INACTIVE
when an ACTIVE one already covers its scope.
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| Content-Type | application/json | Yes | Media type of the request body. |
Request body
application/jsonSchema: automation-ruleset-with-rules-requestResponses
automation-ruleset-with-rules-responseThe request was rejected. One of:
- the ruleset is
ACTIVEand itsmerchants,countriesandentity_typeoverlap anotherACTIVEruleset. entity_typeorstatusis missing, ormerchantsorcountriesis empty.- a rule in
automation_ruleshas nocarrier_accounts, or amerchantcondition that lists no merchants.
Need the full machine-readable spec? Download the OpenAPI document →
/automation-rulesetsList automation rulesets
List automation rulesets. Pass merchant to filter to one merchant, or omit it to
return rulesets across all merchants. Pass entity-type (FORWARD or REVERSE) to
narrow to forward-shipment or reverse-shipment rulesets.
Query parameters
| Name | Type | Required | Description |
|---|---|---|---|
| merchant | string | No | Merchant ID to filter by. |
| entity-type | string | No | Shipment entity type to filter by. |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
Responses
An array of ruleset-response. Each item has the following fields:
entity-type is not FORWARD or REVERSE.Need the full machine-readable spec? Download the OpenAPI document →
/automation-rulesets/{automation-ruleset-id}Get automation ruleset
Return a single automation ruleset by its automation-ruleset-id.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| automation-ruleset-id | string | Yes | Automation ruleset ID. |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
Responses
ruleset-responseNeed the full machine-readable spec? Download the OpenAPI document →
/automation-rulesets/{automation-ruleset-id}Replace automation ruleset
Replace the ruleset and the rules it contains. The request body overwrites both; any
rule not in the request is removed. To change just the ruleset's own metadata (name,
merchants, entity type) without touching its rules, use PATCH instead.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| automation-ruleset-id | string | Yes | Automation ruleset ID. |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| Content-Type | application/json | Yes | Media type of the request body. |
Request body
application/jsonSchema: automation-ruleset-with-rules-requestResponses
automation-ruleset-with-rules-responseThe request was rejected. One of:
- the ruleset is
ACTIVEand itsmerchants,countriesandentity_typeoverlap anotherACTIVEruleset. entity_typeorstatusis missing, ormerchantsorcountriesis empty.- a rule in
automation_ruleshas nocarrier_accounts, or amerchantcondition that lists no merchants.
Need the full machine-readable spec? Download the OpenAPI document →
/automation-rulesets/{automation-ruleset-id}Update automation ruleset
Update the ruleset's own metadata (name, merchants, entity type) without touching the
rules it contains. To replace the rules as well, use PUT.
What to send. The whole ruleset, not only the fields you are changing: name,
entity_type, merchants, countries and status are all required.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| automation-ruleset-id | string | Yes | Automation ruleset ID. |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| Content-Type | application/json | Yes | Media type of the request body. |
Request body
application/jsonSchema: ruleset-requestResponses
rule_set_id, creation_date and update_date set to null.Schema: ruleset-responseThe request was rejected. One of:
entity_typeorstatusis missing, ormerchantsorcountriesis empty.- the ruleset is
ACTIVEand itsmerchants,countriesandentity_typeoverlap anotherACTIVEruleset.
Need the full machine-readable spec? Download the OpenAPI document →
/automation-rulesets/{automation-ruleset-id}Delete automation ruleset
Delete the ruleset and every rule it contains. Active bookings are unaffected, but from this point forward new bookings will fall through to any remaining rulesets, or return an error if no other ruleset matches.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| automation-ruleset-id | string | Yes | Automation ruleset ID. |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
Responses
Need the full machine-readable spec? Download the OpenAPI document →
/automation-rulesets/{automation-ruleset-id}/rulesCreate automation rule
Add a new rule to an existing ruleset. The rule's position in the evaluation order is managed separately via Update automation sequence.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| automation-ruleset-id | string | Yes | Automation ruleset ID. |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| Content-Type | application/json | Yes | Media type of the request body. |
Request body
application/jsonSchema: automation-rule-requestResponses
automation-rule-responseThe request was rejected. One of:
merchantis missing or lists no merchants, orcarrier_accountsis empty.- another rule in the ruleset already uses this
rule_name.
Need the full machine-readable spec? Download the OpenAPI document →
/automation-rulesets/{automation-ruleset-id}/rulesList automation rules
List the rules in the specified ruleset. The list is not sorted; order the rules by
sequence to get the evaluation order.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| automation-ruleset-id | string | Yes | Automation ruleset ID. |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
Responses
An array of automation-rule-response. Each item has the following fields:
Need the full machine-readable spec? Download the OpenAPI document →
/automation-rulesets/{ruleset-id}/rules/sequencesUpdate automation sequence
Set the evaluation order of rules within the ruleset. Carriyo evaluates rules in this order at booking time and stops at the first matching rule, so sequence drives which rule wins when more than one would match the shipment.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| ruleset-id | string | Yes | Automation ruleset ID. |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| Content-Type | application/json | Yes | Media type of the request body. |
Request body
application/jsonSchema: sequences-requestResponses
Need the full machine-readable spec? Download the OpenAPI document →
/automation-rulesets/{ruleset-id}/rules/{automation-rule-id}Get automation rule
Return a single automation rule by its automation-rule-id within the ruleset.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| ruleset-id | string | Yes | Automation ruleset ID. |
| automation-rule-id | string | Yes | Automation rule ID. |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
Responses
automation-rule-responseNeed the full machine-readable spec? Download the OpenAPI document →
/automation-rulesets/{ruleset-id}/rules/{automation-rule-id}Update automation rule
Replace the rule's configuration. The request body fully replaces the existing rule; fields you omit are reset to defaults. The rule's position in the evaluation sequence is unchanged and is managed separately via Update automation sequence.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| ruleset-id | string | Yes | Automation ruleset ID. |
| automation-rule-id | string | Yes | Automation rule ID. |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| Content-Type | application/json | Yes | Media type of the request body. |
Request body
application/jsonSchema: automation-rule-requestResponses
automation-rule-responseThe request was rejected. One of:
merchantis missing or lists no merchants, orcarrier_accountsis empty.- another rule in the ruleset already uses this
rule_name.
Need the full machine-readable spec? Download the OpenAPI document →
/automation-rulesets/{ruleset-id}/rules/{automation-rule-id}Delete automation rule
Remove a single rule from its ruleset. The rest of the ruleset is unchanged. New bookings that would have matched this rule fall through to the next matching rule in the ruleset.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| ruleset-id | string | Yes | Automation ruleset ID. |
| automation-rule-id | string | Yes | Automation rule ID. |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
Responses
Need the full machine-readable spec? Download the OpenAPI document →
Service Levels
A service level in Carriyo lets merchants define the expected timeline for a shipment. Service levels can be applied to each stage of the shipment journey: processing (preparing the shipment in the warehouse or store), collection (the carrier collecting the shipment), and delivery (the carrier delivering it once collected). You can also set up the customer promise: the end-to-end timeline from the moment the customer places the order.
Service levels work like shipping rules: they have a priority sequence and conditions, so you can define different expected timelines for different types of shipments.
Related: How service levels set the expected timeline
12 operations · 0 objects
/service-level-rulesetsCreate service level ruleset
Create a service-level ruleset. Service-level rules drive the delivery promise (estimated delivery date and any cut-off windows) Carriyo computes for each shipment. You can optionally include an initial set of rules on the request; rules can also be added later.
One active ruleset per scope. Two ACTIVE rulesets cannot cover the same merchant,
country and entity type; _ANY overlaps every value. Create the ruleset as INACTIVE
when an ACTIVE one already covers its scope.
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| Content-Type | application/json | Yes | Media type of the request body. |
Request body
application/jsonSchema: service-level-ruleset-with-rules-requestResponses
service-level-ruleset-with-rules-responseThe request was rejected. One of:
- the ruleset is
ACTIVEand itsmerchants,countriesandentity_typeoverlap anotherACTIVEruleset. entity_typeorstatusis missing, ormerchantsorcountriesis empty.- a rule in
service_level_ruleshas noconfig_typeorlead_sla, or amerchantscondition that lists no merchants.
Need the full machine-readable spec? Download the OpenAPI document →
/service-level-rulesetsList service level rulesets
List service-level rulesets. Pass merchant to filter to one merchant, or omit it to
return rulesets across all merchants. Pass entity-type (FORWARD or REVERSE) to
narrow to forward-shipment or reverse-shipment rulesets.
Query parameters
| Name | Type | Required | Description |
|---|---|---|---|
| merchant | string | No | Merchant ID to filter by. |
| entity-type | string | No | Shipment entity type to filter by. |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
Responses
An array of ruleset-response. Each item has the following fields:
entity-type is not FORWARD or REVERSE.Need the full machine-readable spec? Download the OpenAPI document →
/service-level-rulesets/{service-level-ruleset-id}Get service level ruleset
Return a single service-level ruleset by its service-level-ruleset-id.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| service-level-ruleset-id | string | Yes | Service-level ruleset ID. |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
Responses
ruleset-responseNeed the full machine-readable spec? Download the OpenAPI document →
/service-level-rulesets/{service-level-ruleset-id}Replace service level ruleset
Replace the ruleset and the rules it contains. The request body overwrites both; any
rule not in the request is removed. To change just the ruleset's own metadata without
touching its rules, use PATCH instead.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| service-level-ruleset-id | string | Yes | Service-level ruleset ID. |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| Content-Type | application/json | Yes | Media type of the request body. |
Request body
application/jsonSchema: service-level-ruleset-with-rules-requestResponses
service-level-ruleset-with-rules-responseThe request was rejected. One of:
- the ruleset is
ACTIVEand itsmerchants,countriesandentity_typeoverlap anotherACTIVEruleset. entity_typeorstatusis missing, ormerchantsorcountriesis empty.- a rule in
service_level_ruleshas noconfig_typeorlead_sla, or amerchantscondition that lists no merchants.
Need the full machine-readable spec? Download the OpenAPI document →
/service-level-rulesets/{service-level-ruleset-id}Update service level ruleset
Update the ruleset's own metadata (name, merchants, entity type) without touching the
rules it contains. To replace the rules as well, use PUT.
What to send. The whole ruleset, not only the fields you are changing: name,
entity_type, merchants, countries and status are all required.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| service-level-ruleset-id | string | Yes | Service-level ruleset ID. |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| Content-Type | application/json | Yes | Media type of the request body. |
Request body
application/jsonSchema: ruleset-requestResponses
rule_set_id, creation_date or update_date.Schema: ruleset-responseThe request was rejected. One of:
entity_typeorstatusis missing, ormerchantsorcountriesis empty.- the ruleset is
ACTIVEand itsmerchants,countriesandentity_typeoverlap anotherACTIVEruleset.
Need the full machine-readable spec? Download the OpenAPI document →
/service-level-rulesets/{service-level-ruleset-id}Delete service level ruleset
Delete the ruleset and every rule it contains. Without an applicable service-level ruleset, Carriyo falls back to carrier-provided estimates for new shipments.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| service-level-ruleset-id | string | Yes | Service-level ruleset ID. |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
Responses
Need the full machine-readable spec? Download the OpenAPI document →
/service-level-rulesets/{service-level-ruleset-id}/rulesCreate service level rule
Add a new rule to an existing service-level ruleset. The rule's position in the evaluation order is managed separately via Update service level sequence.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| service-level-ruleset-id | string | Yes | Service-level ruleset ID. |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| Content-Type | application/json | Yes | Media type of the request body. |
Request body
application/jsonSchema: service-level-rule-requestResponses
service-level-rule-responseThe request was rejected. One of:
config_typeorlead_slais missing, or aDAY_BASEDlead_slahas noeta_time.- a
merchantscondition lists no merchants. - another rule in the ruleset already uses this
name.
Need the full machine-readable spec? Download the OpenAPI document →
/service-level-rulesets/{service-level-ruleset-id}/rulesList service level rules
List the rules in the specified service-level ruleset. The list is not sorted; order the
rules by sequence to get the evaluation order.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| service-level-ruleset-id | string | Yes | Service-level ruleset ID. |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
Responses
An array of service-level-rule-response. Each item has the following fields:
Need the full machine-readable spec? Download the OpenAPI document →
/service-level-rulesets/{ruleset-id}/rules/sequencesUpdate service level sequence
Set the evaluation order of rules within the service-level ruleset. Carriyo evaluates rules in this order and stops at the first matching rule, so sequence drives which rule wins when more than one would match the shipment.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| ruleset-id | string | Yes | Service-level ruleset ID. |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| Content-Type | application/json | Yes | Media type of the request body. |
Request body
application/jsonSchema: sequences-requestResponses
Need the full machine-readable spec? Download the OpenAPI document →
/service-level-rulesets/{ruleset-id}/rules/{service-level-rule-id}Get service level rule
Return a single service-level rule by its service-level-rule-id within the ruleset.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| ruleset-id | string | Yes | Service-level ruleset ID. |
| service-level-rule-id | string | Yes | Service-level rule ID. |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
Responses
service-level-rule-responseNeed the full machine-readable spec? Download the OpenAPI document →
/service-level-rulesets/{ruleset-id}/rules/{service-level-rule-id}Update service level rule
Replace the rule's configuration. The request body fully replaces the existing rule; fields you omit are reset to defaults. The rule's position in the evaluation sequence is unchanged.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| ruleset-id | string | Yes | Service-level ruleset ID. |
| service-level-rule-id | string | Yes | Service-level rule ID. |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| Content-Type | application/json | Yes | Media type of the request body. |
Request body
application/jsonSchema: service-level-rule-requestResponses
service-level-rule-responseThe request was rejected. One of:
config_typeorlead_slais missing, or aDAY_BASEDlead_slahas noeta_time.- a
merchantscondition lists no merchants. - another rule in the ruleset already uses this
name.
Need the full machine-readable spec? Download the OpenAPI document →
/service-level-rulesets/{ruleset-id}/rules/{service-level-rule-id}Delete service level rule
Remove a single rule from its service-level ruleset. The rest of the ruleset is unchanged.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| ruleset-id | string | Yes | Service-level ruleset ID. |
| service-level-rule-id | string | Yes | Service-level rule ID. |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
Responses
Need the full machine-readable spec? Download the OpenAPI document →
Carrier Networks
Carrier networks group carriers for routing decisions across geographic regions.
Related: How a network profile limits where a carrier serves
6 operations · 0 objects
/networksCreate carrier network
Create a new carrier network. A network groups carriers and their geographic or postcode coverage so it can be referenced as a condition in automation rules.
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| Content-Type | application/json | Yes | Media type of the request body. |
Request body
application/jsonSchema: carrier-network-dtorequiredResponses
carrier-network-dtoThe request was rejected. One of:
nameis missing or empty.- another carrier network already uses this
name.
Need the full machine-readable spec? Download the OpenAPI document →
/networksList carrier networks
Return all carrier networks defined for the tenant.
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
Responses
An array of carrier-network-dto. Each item has the following fields:
Need the full machine-readable spec? Download the OpenAPI document →
/networks/{id}Get carrier network
Return a single carrier network by its id.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| id | string | Yes | Carrier network identifier. |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
Responses
carrier-network-dtoNeed the full machine-readable spec? Download the OpenAPI document →
/networks/{id}Update carrier network
Replace a carrier network's name and coverage.
What to send. The body fully replaces the stored coverage: network_v2,
pickup_postcode and dropoff_postcode you omit are removed from the network.
Carrier accounts. This call does not change which carrier accounts belong to the network. Use Assign carriers to network for that.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| id | string | Yes | Carrier network identifier. |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| Content-Type | application/json | Yes | Media type of the request body. |
Request body
application/jsonSchema: carrier-network-dtorequiredResponses
carrier-network-dtoThe request was rejected. One of:
nameis missing or empty.- another carrier network already uses this
name. - no carrier network with this
idexists.
Need the full machine-readable spec? Download the OpenAPI document →
/networks/{id}Delete carrier network
Permanently delete a carrier network. Carrier accounts assigned to the network are unassigned from it and keep all their other settings.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| id | string | Yes | Carrier network identifier. |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
Responses
id exists.Need the full machine-readable spec? Download the OpenAPI document →
/networks/{id}/assignAssign carriers to network
Replace the list of carrier accounts associated with the network. The request body is the full set; accounts not in the list are removed from the network.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| id | string | Yes | Carrier network identifier. |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| Content-Type | application/json | Yes | Media type of the request body. |
Request body
application/jsonrequiredResponses
carrier_account_ids.Schema: carrier-network-dtoNeed the full machine-readable spec? Download the OpenAPI document →
Carrier Costing
Costing profiles and rules define cost structures for carriers based on shipment characteristics.
Related: How a cost profile prices a carrier's shipments
13 operations · 0 objects
/costing-rulesCreate costing profile
Create a shipment costing profile together with its rules.
What to send. costing_profile and costing_rules are both required. Send an empty
costing_rules array to create a profile with no rules. profile_name must be unique
within the tenant.
Known issue. A body with no costing_rules answers 500 after the profile has been
created.
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| Content-Type | application/json | Yes | Media type of the request body. |
Request body
application/jsonSchema: shipment-costing-dtorequiredResponses
shipment-costing-dtoThe request was rejected. One of:
profile_name,carrier_billing_currency,default_shipment_costortax_rateis missing.- another costing profile already uses this
profile_name.
costing_rules. The profile was created before the failure, so treat this as a completed write and do not retry it.Need the full machine-readable spec? Download the OpenAPI document →
/costing-rulesList costing profiles
Return all shipment costing profiles configured for the tenant.
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
Responses
An array of shipment-costing-profile-dto. Each item has the following fields:
Need the full machine-readable spec? Download the OpenAPI document →
/costing-rules/{id}Get costing profile
Return a single shipment costing profile by its id. The profile's rules are not
included; read them with List costing rules.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| id | string | Yes | Costing profile ID. |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
Responses
shipment-costing-profile-dtoNeed the full machine-readable spec? Download the OpenAPI document →
/costing-rules/{id}Update costing profile
Replace the costing profile and all of its rules.
What to send. costing_profile and the full costing_rules list. A rule sent with
its rule_id is updated, a rule sent without one is added, and any existing rule left
out of the list is deleted.
Known issue. Each existing rule updated by this call has its stored creation_date
cleared.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| id | string | Yes | Costing profile ID. |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| Content-Type | application/json | Yes | Media type of the request body. |
Request body
application/jsonSchema: shipment-costing-dtorequiredResponses
shipment-costing-dtoNeed the full machine-readable spec? Download the OpenAPI document →
/costing-rules/{id}Patch costing profile
Update the costing profile's own fields without touching the rules it contains. To
replace the rules as well, use PUT.
What to send. The whole profile, not only the fields you are changing:
profile_name, carrier_billing_currency, default_shipment_cost and tax_rate are
all required. Include the profile's profile_id in the body as well.
Known issue. A body without profile_id answers 500, but the change has already
been saved. Do not retry on that 500.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| id | string | Yes | Costing profile ID. |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| Content-Type | application/json | Yes | Media type of the request body. |
Request body
application/jsonSchema: shipment-costing-profile-dtorequiredResponses
creation_date and update_date set to null.Schema: shipment-costing-profile-dtoThe request was rejected. One of:
profile_name,carrier_billing_currency,default_shipment_costortax_rateis missing.- another costing profile already uses this
profile_name. - no costing profile with this
idexists.
profile_id. The change was saved before the failure, so treat this as a completed write and do not retry it.Need the full machine-readable spec? Download the OpenAPI document →
/costing-rules/{id}Delete costing profile
Permanently delete a costing profile.
What happens. It depends on what the profile is attached to:
- a profile with rules and no assigned carrier accounts is deleted together with its rules.
- a profile with assigned carrier accounts and no rules is deleted, and the accounts are unassigned from it.
- a profile with both is rejected.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| id | string | Yes | Costing profile ID. |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
Responses
The request was rejected. One of:
- the profile has rules and is also assigned to carrier accounts. Remove the rules or unassign the accounts first.
- no costing profile with this
idexists.
Need the full machine-readable spec? Download the OpenAPI document →
/costing-rules/{id}/assignAssign carrier accounts to costing profile
Replace the list of carrier accounts that use the costing profile. The request body is the full set; accounts not in the list are unassigned, and an empty array unassigns every account.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| id | string | Yes | Costing profile ID. |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| Content-Type | application/json | Yes | Media type of the request body. |
Request body
application/jsonrequiredResponses
carrier_account_ids.Schema: shipment-costing-profile-dtoid exists.Need the full machine-readable spec? Download the OpenAPI document →
/costing-rules/{profile_id}/rulesAdd costing rule
Add a new costing rule to an existing shipment costing profile. The rule name must be
unique within the profile, and cost_structure must set exactly one of fixed_cost
and variable_cost.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| profile_id | string | Yes | Costing profile ID. |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| Content-Type | application/json | Yes | Media type of the request body. |
Request body
application/jsonSchema: shipment-costing-rule-dtorequiredResponses
shipment-costing-rule-dtoNeed the full machine-readable spec? Download the OpenAPI document →
/costing-rules/{profile_id}/rulesList costing rules
List the costing rules in the specified costing profile. The list is not sorted; order
the rules by sequence to get the evaluation order.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| profile_id | string | Yes | Costing profile ID. |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
Responses
An array of shipment-costing-rule-dto. Each item has the following fields:
Need the full machine-readable spec? Download the OpenAPI document →
/costing-rules/{profile_id}/rules/sequencesUpdate costing rules sequence
Set the evaluation order of the costing rules in a profile. Rules with a lower
sequence are evaluated first.
What to send. One entry per rule to reorder, with its rule_id and its new sequence.
Rules you leave out keep their sequence. An entry whose rule_id is not in the profile
is ignored.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| profile_id | string | Yes | Costing profile ID. |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| Content-Type | application/json | Yes | Media type of the request body. |
Request body
application/jsonSchema: sequences-requestrequiredResponses
Need the full machine-readable spec? Download the OpenAPI document →
/costing-rules/{profile_id}/rules/{rule_id}Get costing rule
Return a single costing rule from the specified profile.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| profile_id | string | Yes | Costing profile ID. |
| rule_id | string | Yes | Costing rule ID, the rule's `rule_id`. |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
Responses
shipment-costing-rule-dtoNeed the full machine-readable spec? Download the OpenAPI document →
/costing-rules/{profile_id}/rules/{rule_id}Update costing rule
Replace a costing rule.
Known issue. Every successful call clears the rule's stored creation_date, and it
cannot be restored through the API. The call still answers 200, so the loss is only
visible when you read the rule back.
What to send. The body fully replaces the stored rule: conditions you omit are removed
from the rule. cost_structure must set exactly one of fixed_cost and variable_cost.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| profile_id | string | Yes | Costing profile ID. |
| rule_id | string | Yes | Costing rule ID, the rule's `rule_id`. |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| Content-Type | application/json | Yes | Media type of the request body. |
Request body
application/jsonSchema: shipment-costing-rule-dtorequiredResponses
creation_date cleared. The response echoes the rule as sent, with rule_id, creation_date and update_date set to null.Schema: shipment-costing-rule-dtoThe request was rejected. One of:
nameorcost_structureis missing.cost_structuresets bothfixed_costandvariable_cost, or neither.cost_structure.cod_surchargesets bothfixed_costandpercentage_cost, or neither.- another rule in the profile already uses this
name. - a pickup or dropoff location condition is combined with a geography or postcode condition for the same side.
- no rule with this
rule_idexists in the profile.
Need the full machine-readable spec? Download the OpenAPI document →
/costing-rules/{profile_id}/rules/{rule_id}Delete costing rule
Permanently delete a costing rule from the profile. The remaining rules keep their sequence.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| profile_id | string | Yes | Costing profile ID. |
| rule_id | string | Yes | Costing rule ID, the rule's `rule_id`. |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
Responses
rule_id exists in the profile.Need the full machine-readable spec? Download the OpenAPI document →
Carrier Capacity
Capacity profiles define shipment-volume thresholds and constraints per carrier across regions and time windows.
Related: How a capacity profile caps a carrier's volume
13 operations · 0 objects
/capacitiesCreate capacity profile
Create a capacity profile. The profile holds a set of rules that cap the number of shipments Carriyo will book against the assigned carrier accounts within a time window, so capacity-constrained carriers don't get overwhelmed.
What to send. capacity_profile, and an empty capacity_rules array. profile_name
must be unique within the tenant.
Known issue. A non-empty capacity_rules array answers 500 after the profile has
been created without the rules. Create the profile first, then add each rule with Add
capacity rule.
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| Content-Type | application/json | Yes | Media type of the request body. |
Request body
application/jsonSchema: capacity-profile-requestrequiredResponses
capacity-profile-requestThe request was rejected. One of:
profile_nameis missing or empty, orcapacity_typeis missing.- another capacity profile already uses this
profile_name.
capacity_rules was not empty. The profile was created without the rules before the failure, so do not retry the call; add the rules with Add capacity rule.Need the full machine-readable spec? Download the OpenAPI document →
/capacitiesList capacity profiles
Return all capacity profiles configured for the tenant.
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
Responses
An array of capacity-profile-dto. Each item has the following fields:
Need the full machine-readable spec? Download the OpenAPI document →
/capacities/{id}Get capacity profile
Return a single capacity profile by its id. The profile's rules are not included;
read them with List capacity rules.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| id | string | Yes | Capacity profile ID. |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
Responses
capacity-profile-dtoNeed the full machine-readable spec? Download the OpenAPI document →
/capacities/{id}Update capacity profile
Replace the capacity profile and its rules.
What to send. capacity_profile and the full capacity_rules list. A rule sent with
its capacity_id is updated, a rule sent without one is added, and any existing rule
left out of the list is deleted.
Known issue. Every successful call clears the profile's stored creation_date.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| id | string | Yes | Capacity profile ID. |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| Content-Type | application/json | Yes | Media type of the request body. |
Request body
application/jsonSchema: capacity-profile-requestrequiredResponses
capacity-profile-requestNeed the full machine-readable spec? Download the OpenAPI document →
/capacities/{id}Patch capacity profile
Update the capacity profile's own fields without touching the rules it contains. To
replace the rules as well, use PUT.
What to send. The whole profile, not only the fields you are changing:
profile_name and capacity_type are required. Include the profile's profile_id in
the body as well.
Known issues. Every successful call clears the profile's stored creation_date,
and it cannot be restored through the API. A body without profile_id answers 500,
but the change has already been saved and creation_date already cleared. Do not
retry on that 500.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| id | string | Yes | Capacity profile ID. |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| Content-Type | application/json | Yes | Media type of the request body. |
Request body
application/jsonSchema: capacity-profile-dtorequiredResponses
creation_date cleared. The response echoes the profile as sent, with creation_date and update_date set to null.Schema: capacity-profile-dtoThe request was rejected. One of:
profile_nameis missing or empty, orcapacity_typeis missing.- another capacity profile already uses this
profile_name. - no capacity profile with this
idexists.
profile_id. The change was saved before the failure, so treat this as a completed write and do not retry it.Need the full machine-readable spec? Download the OpenAPI document →
/capacities/{id}Delete capacity profile
Permanently delete a capacity profile.
What happens. It depends on what the profile is attached to:
- a profile with rules and no assigned carrier accounts is deleted together with its rules.
- a profile with assigned carrier accounts and no rules is deleted, and the accounts are unassigned from it.
- a profile with both is rejected.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| id | string | Yes | Capacity profile ID. |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
Responses
The request was rejected. One of:
- the profile has rules and is also assigned to carrier accounts. Remove the rules or unassign the accounts first.
- no capacity profile with this
idexists.
Need the full machine-readable spec? Download the OpenAPI document →
/capacities/{id}/assignAssign carrier accounts to capacity profile
Replace the list of carrier accounts assigned to the capacity profile. The request body is the full set; accounts not in the list are unassigned.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| id | string | Yes | Capacity profile ID. |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| Content-Type | application/json | Yes | Media type of the request body. |
Request body
application/jsonrequiredResponses
carrier_account_ids.Schema: capacity-profile-dtoid exists.Need the full machine-readable spec? Download the OpenAPI document →
/capacities/{profile_id}/rulesAdd capacity rule
Add a new capacity rule to an existing capacity profile. The rule name must be unique
within the profile.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| profile_id | string | Yes | Capacity profile ID. |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| Content-Type | application/json | Yes | Media type of the request body. |
Request body
application/jsonSchema: capacity-rule-dtorequiredResponses
capacity-rule-dtoNeed the full machine-readable spec? Download the OpenAPI document →
/capacities/{profile_id}/rulesList capacity rules
List the capacity rules in the specified capacity profile. The list is not sorted;
order the rules by sequence to get the evaluation order.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| profile_id | string | Yes | Capacity profile ID. |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
Responses
An array of capacity-rule-dto. Each item has the following fields:
Need the full machine-readable spec? Download the OpenAPI document →
/capacities/{profile_id}/rules/sequencesUpdate capacity rules sequence
Set the evaluation order of the capacity rules in a profile. Rules with a lower
sequence are evaluated first.
What to send. One entry per rule to reorder, with the rule's capacity_id as rule_id and its new sequence.
Rules you leave out keep their sequence. An entry whose rule_id is not in the profile
is ignored.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| profile_id | string | Yes | Capacity profile ID. |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| Content-Type | application/json | Yes | Media type of the request body. |
Request body
application/jsonSchema: sequences-requestrequiredResponses
Need the full machine-readable spec? Download the OpenAPI document →
/capacities/{profile_id}/rules/{rule_id}Get capacity rule
Return a single capacity rule from the specified profile.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| profile_id | string | Yes | Capacity profile ID. |
| rule_id | string | Yes | Capacity rule ID, the rule's `capacity_id`. |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
Responses
capacity-rule-dtoNeed the full machine-readable spec? Download the OpenAPI document →
/capacities/{profile_id}/rules/{rule_id}Update capacity rule
Replace a capacity rule.
What to send. The body fully replaces the stored rule: conditions and days you omit
are removed from the rule.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| profile_id | string | Yes | Capacity profile ID. |
| rule_id | string | Yes | Capacity rule ID, the rule's `capacity_id`. |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| Content-Type | application/json | Yes | Media type of the request body. |
Request body
application/jsonSchema: capacity-rule-dtorequiredResponses
capacity_id, creation_date or update_date.Schema: capacity-rule-dtoThe request was rejected. One of:
nameis missing or empty, orentity_type,sequenceorthresholdis missing.- another rule in the profile already uses this
name. - a pickup or dropoff location condition is combined with a geography or postcode condition for the same side.
- no rule with this
rule_idexists in the profile.
Need the full machine-readable spec? Download the OpenAPI document →
/capacities/{profile_id}/rules/{rule_id}Delete capacity rule
Permanently delete a capacity rule from the profile. The remaining rules keep their sequence.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| profile_id | string | Yes | Capacity profile ID. |
| rule_id | string | Yes | Capacity rule ID, the rule's `capacity_id`. |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
Responses
rule_id exists in the profile.Need the full machine-readable spec? Download the OpenAPI document →
Document Settings
Document settings configure templates and formats for shipment documents (labels, manifests, proofs of delivery).
Related: How to manage shipping documents in the Dashboard
4 operations · 0 objects
/document-settingsCreate document setting
Create a document setting for the tenant. A document setting registers a document type (commercial invoice, packing list, label, manifest, POD) along with its format, template, and whether it can be uploaded to the carrier. Document uploads on shipments must match an existing setting.
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| Content-Type | application/json | Yes | Media type of the request body. |
Request body
application/jsonSchema: document-requestrequiredResponses
document-settingsThe request was rejected. One of:
nameis missing or empty, ortypeis missing.entity_typeis notSHIPMENTorRETURN_REQUEST.- a document setting with the same
namealready exists.
Need the full machine-readable spec? Download the OpenAPI document →
/document-settingsList document settings
Return all document settings configured for the tenant.
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
Responses
An array of document-settings. Each item has the following fields:
Need the full machine-readable spec? Download the OpenAPI document →
/document-settings/{documentId}Update document setting
Update a document setting.
What to send. name, type and quick_print_enabled are always replaced;
quick_print_enabled becomes false when omitted.
Which other fields change. It depends on the type you send:
documentreplacesformat,document_type,shipment_type,entity_type,template_name,statusanduploaded_document. Any of these you omit is cleared, exceptstatus, which returns toACTIVE, anduploaded_document, which becomesfalse.groupreplacesassigned_documentsonly, and leaves the fields above as stored.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| documentId | string | Yes | Document setting ID. |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| Content-Type | application/json | Yes | Media type of the request body. |
Request body
application/jsonSchema: document-requestrequiredResponses
document-settingsThe request was rejected. One of:
nameis missing or empty, ortypeis missing.entity_typeis notSHIPMENTorRETURN_REQUEST.- another document setting already uses this
name. - no document setting with this
documentIdexists.
Need the full machine-readable spec? Download the OpenAPI document →
/document-settings/{documentId}Delete document setting
Permanently delete a document setting. Existing shipment documents tied to this setting are not removed retroactively, but new uploads referencing it are no longer accepted.
Path parameters
| Name | Type | Required | Description |
|---|---|---|---|
| documentId | string | Yes | Document setting ID. |
Headers
| Name | Value | Required | Description |
|---|---|---|---|
| Authorization | Bearer YOUR-ACCESS-TOKEN | Yes | OAuth 2.0 bearer token obtained from `POST /oauth/token`. |
| x-api-key | YOUR-API-KEY | Yes | Your tenant's API key, issued in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
| tenant-id | YOUR-TENANT-ID | Yes | Your Carriyo tenant ID, shown in the Carriyo Dashboard. Required on every request except `POST /oauth/token`. |
Responses
documentId exists.Need the full machine-readable spec? Download the OpenAPI document →