Skip to main content

Tai Client

The Tai Client node connects Splice workflows to TAI, a transportation management system (TMS) and freight brokerage platform. Use it to retrieve LTL rate quotes for a lane and to create shipments in TAI from upstream workflow data.

Overview

The Tai Client node is essential when you need to:

  • Request LTL freight rate quotes for an origin/destination lane, including commodity dimensions, weight, freight class, hazmat details, and accessorials
  • Create a shipment in TAI, typically booking against a previously returned rate quote
  • Feed quote results or created shipment records into downstream workflow steps

Configuration

Resource & Action

The node exposes a single Resource and two Actions.

ResourceValueActions
ShippingshippingGet Rate Quote (getRateQuote), Create Shipment (createShipment)
  • Resource defaults to shipping (the only option).
  • Action defaults to getRateQuote. The Action field is shown when resource = shipping.

Get Rate Quote parameters

These parameters are shown when Action = Get Rate Quote (displayOptions.show.action = ["getRateQuote"]). All support Splice expressions.

ParameterNameTypeRequiredNotes
Origin Zip CodeoriginZipCodestringNoOrigin postal code
Origin CountryoriginCountryoptionsNoFull country list; defaults to USA at the top of the list
Destination Zip CodedestinationZipCodestringNoDestination postal code
Destination CountrydestinationCountryoptionsNoFull country list; USA listed first
Weight UnitsweightUnitsoptionsNolbs, kg
Dimension UnitsdimensionUnitsoptionsNoin, cm, ft, m
Legacy SupportlegacySupportbooleanNoToggle legacy quote behavior
Customer Reference NumbercustomerReferenceNumberstringYesYour reference for the quote request
CommoditiescommoditiesfixedCollection (multiple)NoOne or more commodity line items (see below)
Accessorial CodesaccessorialCodesstring (multiple)NoRepeatable list of accessorial codes

Commodity line items

The Commodities collection (placeholder "Add Commodity") accepts multiple entries. Each commodity supports:

FieldNameTypeNotes
Handling QuantityhandlingQuantitynumber
Packaging TypepackagingTypeoptionsA-Frame, Bags, Bales, Barrel, Basket, Batteries, Bins, Box, Break Bulk, Bundle, Cans, Cart, Carton, Case, Chest, Container, Crate, Cylinder, Drum, Gallons, Gaylords, HalfPallets, Hopper, Jerricans, Lift Van, Loose, Package, Pails, Pallet, Piece, Racks, Reel, Roll, Skid, Stacks, Totes, Truckload, Tube, Tubs, U-Box, Unit, Vehicle, Wheels
Length / Width / Heightlength / width / heightnumberDimensions (in the selected Dimension Units)
Weight TotalweightTotalnumber
Hazardous MaterialhazardousMaterialbooleanDefault false
Pieces TotalpiecesTotalnumber
Freight ClassfreightClassoptionsNo Class, 50, 55, 60, 65, 70, 77.5, 85, 92.5, 100, 110, 125, 150, 175, 200, 250, 300, 400, 500
NMFCnmfcstringNational Motor Freight Classification code
Descriptiondescriptionstring
Additional MarkingsadditionalMarkingsstring
UN NumberunNumberstringHazmat UN identifier
Packing GrouppackingGroupoptions0, 1, 2, 3
Referencereferencestring
Hazmat Custom Class DescriptionhazmatCustomClassDescriptionstring
Hazmat Piece DescriptionhazmatPieceDescriptionstring
Harmonized CodeharmonizedCodestring
Hazard ClasshazardClassesmultiOptions1.1–1.6, 2.1–2.3, 3.1, 4.1–4.3, 5.1–5.2, 6.1–6.2, 7, 8, 9, 10

Create Shipment parameters

These parameters are shown when Action = Create Shipment (displayOptions.show.action = ["createShipment"]). Create Shipment is generally used to book a shipment against a rate quote returned by Get Rate Quote. All parameters support Splice expressions.

ParameterNameTypeRequiredNotes
Customer Reference NumbercustomerReferenceNumberstringYesYour reference for the shipment
Tariff DescriptiontariffDescriptionstringNo
Allow New Shipment NotificationsallowNewShipmentNotificationsbooleanNo
Is CommittedisCommittedbooleanNo
Rate ShipmentrateShipmentbooleanNo
Carrier SCACcarrierSCACstringNoCarrier Standard Carrier Alpha Code
AmountamountnumberNo
Customer IDcustomerIdnumberNo
Shipment TypeshipmentTypeoptionsNoLTL, Small Package, Truckload, Domestic Freight, International Air, International Ocean, Combined International Air, Combined International Ocean, Cartage, Other, Supplemental Insurance Provider, Drayage
StackablestackablebooleanNo
Trailer TypetrailerTypeoptionsNoLarge list (None, Other, Flatbed, Refrigerated, Van, Sprinter Van variants, straight-truck and 48/53 ft van/flatbed/step-deck/reefer/container/tanker variants, HotShot, etc.)
Trailer SizetrailerSizeoptionsNoFull, Partial
Weight UnitsweightUnitsoptionsNolbs, kg
Dimension UnitsdimensionUnitsoptionsNoin, cm, ft, m
Service LevelserviceLeveloptionsNoNormal, Guaranteed End of Day, Guaranteed By Noon, Time-Critical, Priority, Standard, Friday Only Pickup, Standard Truckload, Intermodal, Partial, and more
Import/ExportimportExportoptionsNo
Shipment Reference NumbersshipmentReferenceNumbersfixedCollectionNoRepeatable reference numbers
StopsstopsfixedCollectionNoPickup/delivery stops with addresses
CommoditiescommoditiesfixedCollectionNoSame commodity line-item shape as Get Rate Quote (see above)
Accessorial CodesaccessorialCodesfixedCollectionNoRepeatable accessorial entries
Shipment AlertsshipmentAlertsfixedCollectionNo
Driver Cell NumberdriverCellPhoneNumberstringNo
Hazmat Emergency Contact NumberhazmatEmergencyContactNumberstringNo

The bill-to details and selected price/quote that TAI returns mirror the response shape under Output.

Credential

The node uses the Tai Client credential (tai-auth), which is required.

FieldNameTypeRequiredDescription
Api KeyapiKeystringYesYour TAI API key
URLurlstringYesBase URL of your TAI API environment (used as the request base path; a trailing / is trimmed)

Configure the credential once and reference it from any Tai Client node. How the API key is sent depends on the action:

  • Get Rate Quote sends the key in the request body as authenticationKey.
  • Create Shipment sends the key in an x-api-key request header.

In both cases the URL is used as the API base path.

Output

The node returns the raw TAI API response (response.data) as workflow item(s). The shapes below come from the action samples defined in the node metadata.

Get Rate Quote

Returns an array of quote objects, each shaped like:

[
{
"carrierSCAC": "string",
"carrierName": "string",
"tariffDescription": "string",
"transitTime": 0,
"serviceLevel": "string",
"priceLineHaul": 0,
"priceFuelSurcharge": 0,
"priceAccessorials": [
{ "accessorialCode": "string", "accessorialPrice": 0 }
],
"priceTotal": 0,
"pricingInstructions": "string",
"usedLiabilityCoverage": 0,
"newLiabilityCoverage": 0,
"tsaCompliance": "string",
"apiQuoteNumber": "string"
}
]

The apiQuoteNumber field identifies a returned quote and is what you carry forward into Create Shipment.

Create Shipment

Returns a single shipment object:

{
"shipmentID": 0,
"proNumber": "string",
"shipperReferenceNumber": "string",
"poReference": "string",
"shipmentStatus": "string",
"billToType": "Third",
"billToAccountNumber": "string",
"billToAddress": {
"companyName": "string",
"streetAddress": "string",
"streetAddressTwo": "string",
"city": "string",
"state": "string",
"zipCode": "string",
"email": "string",
"country": "USA",
"fax": "string",
"phone": "string"
},
"priceDetail": {
"carrierSCAC": "string",
"carrierName": "string",
"tariffDescription": "string",
"transitTime": 0,
"serviceLevel": "string",
"priceLineHaul": 0,
"priceFuelSurcharge": 0,
"priceAccessorials": [
{ "accessorialCode": "string", "accessorialPrice": 0 }
],
"priceTotal": 0,
"pricingInstructions": "string",
"usedLiabilityCoverage": 0,
"newLiabilityCoverage": 0,
"tsaCompliance": "string",
"apiQuoteNumber": "string"
},
"billOfLadingURL": "string",
"secondaryBOLNumber": "string",
"apiQuoteNumber": "string"
}

The response includes shipmentID, proNumber, the priceDetail that was booked, and a billOfLadingURL for the generated BOL.

Example Usage & Common Use Cases

  • Rate shopping: Run Get Rate Quote with origin/destination ZIPs, commodity dimensions, weight, and freight class to retrieve carrier options sorted by price and transit time. Store apiQuoteNumber and priceDetail for the option you want.
  • Quote-to-book: Take the selected quote from a Get Rate Quote step and run Create Shipment, passing the apiQuoteNumber and bill-to details to book the load. Capture the returned proNumber and billOfLadingURL.
  • Hazmat shipments: Populate the hazmat fields on each commodity (Hazardous Material, UN Number, Packing Group, Hazard Class) so quotes reflect hazmat handling.

How It Works

  1. Select the Shipping resource and an action (Get Rate Quote or Create Shipment).
  2. Provide the action's parameters. The node validates that parameters and a credential are present, then looks up the credential from the Splice credential store.
  3. The node builds the request body from your parameters. Commodity collections are flattened into the TAI commodity shape, and for Create Shipment empty/blank properties are purged before sending. Stop country names are normalized (US becomes USA; other countries are mapped to their TAI country name).
  4. The node calls the TAI API at the configured URL:
    • Get Rate Quote calls shippingGetRateQuote with authenticationKey in the body and returns the carrier quote array.
    • Create Shipment calls the commit-domestic-shipment endpoint with the x-api-key header and returns the created shipment record (including price detail and BOL URL). Errors from TAI are surfaced (see Troubleshooting).
  5. The response payload is emitted as workflow item(s) for downstream nodes.

Best Practices

  • Store the Tai Client credential once (API key + environment URL) and reuse it across nodes.
  • Always set a meaningful Customer Reference Number on quote requests so quotes can be traced.
  • Carry the apiQuoteNumber from a Get Rate Quote result into Create Shipment to book the exact rate you selected, rather than re-quoting.
  • Set Weight Units and Dimension Units consistently with the values you supply in the Commodities collection.
  • For hazmat freight, complete the hazmat commodity fields so rates and compliance are correct.
  • Because this node is in beta, validate response shapes defensively in downstream nodes.

Troubleshooting

  • This node requires a credential: No credential was selected on the node. Attach the tai-auth credential.
  • Error: No parameters found: The node received no parameters. Check upstream wiring and that required fields are mapped.
  • Credential [<id>] not found: The referenced credential could not be loaded from the credential store. Re-select or re-save the credential.
  • Authentication failures: Verify both the Api Key and the URL in the tai-auth credential. An incorrect environment URL routes requests to the wrong endpoint; an invalid key is rejected by TAI (sent as authenticationKey for quotes and x-api-key for shipment creation).
  • Create Shipment errors: On a failed Create Shipment call, the node throws the error returned by TAI — a raw string message, or a JSON-stringified array of error objects when TAI returns multiple errors. If no detail is available it throws Error calling Tai. Check the thrown message for the specific TAI validation issue.
  • Empty or unexpected quotes: Confirm origin/destination ZIPs and that each commodity has the weight, dimensions, and freight class TAI needs to rate the lane.
  • Wrong units in rates: Mismatched Weight Units / Dimension Units versus the numbers entered on commodities can produce incorrect quotes.
  • HTTP Request - For TAI endpoints not covered by this node
  • Set - Shape commodity, stop, and bill-to values before a Create Shipment call