Skip to content

Update a shipment request

PATCH
/api/integrations/v1/shipment-requests/{id}
curl --request PATCH \
--url https://app.quatlasglobal.com/api/integrations/v1/shipment-requests/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0 \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "cargo": { "description": "example", "dimensions": "example", "exceedsStandard": true, "fragile": true, "hazardous": true, "maxStackLayers": 1, "maxTopLoadKg": 1, "outOfGauge": true, "packageCount": 1, "stackable": true, "standardType": "example", "temperatureMaxC": 1, "temperatureMinC": 1, "volumeM3": 1, "weightKg": 1 }, "costCenter": "example", "destination": { "addressLine": "example", "city": "example", "contactName": "example", "contactPhone": "example", "countryCode": "example", "handling": "example", "locationType": "example", "postalCode": "example", "unLocode": "example", "windowFrom": "example", "windowTo": "example" }, "incoterm": "example", "isFlexibleSchedule": true, "metadata": "example", "modePolicy": "example", "notes": "example", "origin": { "addressLine": "example", "city": "example", "contactName": "example", "contactPhone": "example", "countryCode": "example", "handling": "example", "locationType": "example", "postalCode": "example", "unLocode": "example", "windowFrom": "example", "windowTo": "example" }, "preferredDeliveryDate": "2026-04-15", "preferredDeliveryTime": "example", "preferredPickupDate": "2026-04-15", "purchaseOrderNumber": "example", "reason": "example", "transportMode": "example" }'

Requires the requests:write scope and an X-Idempotency-Key header; If-Match (the read’s ETag) is optional and answers 412 when the request changed since, checked under the request’s lock so two writers with one tag cannot both win. Only a request your systems created through the API (409 Integration.RequestNotCreatedViaApi for one opened in the app). A JSON merge patch of at most 64 KB (413 Integration.BodyTooLarge): a field you leave out stays as it is; null clears a field where the app lets an owner clear it, and is refused (Integration.FieldNotClearable) where it does not. The listing’s fields change only while the request is Published, as in the app (409 ShipmentRequest.InvalidTransition otherwise); a material change holds every standing offer until its carrier reconfirms, and extends the bidding to at least 12 hours. Your metadata, purchaseOrderNumber and costCenter change in any state. The whole patch is written in one transaction, or nothing is, and raises one request.updated. Answers the request as the read does, with its new ETag.

id
required
string format: uuid
X-Idempotency-Key
string
If-Match
string
object
cargo
required
One of:
null
costCenter
required

Only on a request created through the API. Null clears it. At most 100 characters.

null | string
destination
required
One of:
null
incoterm
required

An Incoterms 2020 code. Cannot be null.

null | string
isFlexibleSchedule
required

Cannot be null.

null | boolean
metadata
required

Merged into the request’s metadata: a key set to a string is added or changed, a key set to null is removed, other keys stay. “metadata”: null removes every key. The create’s limits apply to the result.

null | object
modePolicy
required

Required or Open. Open clears the transport mode. Cannot be null.

null | string
notes
required

Null or an empty string clears the notes.

null | string
origin
required
One of:
null
preferredDeliveryDate
required

Cannot be null.

null | string format: date
preferredDeliveryTime
required

Cannot be null.

null | string format: time
preferredPickupDate
required

Cannot be null.

null | string format: date
purchaseOrderNumber
required

Only on a request created through the API. Null clears it. At most 100 characters.

null | string
reason
required

Optional, at most 500 characters: your words to the carriers who are asked to look at the request again. Not stored on the request’s fields.

null | string
transportMode
required

Road, Sea, Air, Rail, Multimodal or HandCarry. Cannot be null: send modePolicy Open to leave the mode open.

null | string
Examplegenerated
{
"cargo": {
"description": "example",
"dimensions": "example",
"exceedsStandard": true,
"fragile": true,
"hazardous": true,
"maxStackLayers": 1,
"maxTopLoadKg": 1,
"outOfGauge": true,
"packageCount": 1,
"stackable": true,
"standardType": "example",
"temperatureMaxC": 1,
"temperatureMinC": 1,
"volumeM3": 1,
"weightKg": 1
},
"costCenter": "example",
"destination": {
"addressLine": "example",
"city": "example",
"contactName": "example",
"contactPhone": "example",
"countryCode": "example",
"handling": "example",
"locationType": "example",
"postalCode": "example",
"unLocode": "example",
"windowFrom": "example",
"windowTo": "example"
},
"incoterm": "example",
"isFlexibleSchedule": true,
"metadata": "example",
"modePolicy": "example",
"notes": "example",
"origin": {
"addressLine": "example",
"city": "example",
"contactName": "example",
"contactPhone": "example",
"countryCode": "example",
"handling": "example",
"locationType": "example",
"postalCode": "example",
"unLocode": "example",
"windowFrom": "example",
"windowTo": "example"
},
"preferredDeliveryDate": "2026-04-15",
"preferredDeliveryTime": "example",
"preferredPickupDate": "2026-04-15",
"purchaseOrderNumber": "example",
"reason": "example",
"transportMode": "example"
}

OK

Media typeapplication/json
object
awardedAt
required
null | string format: date-time
awardedCarrierName
required

The awarded carrier, once a deal exists (when the app names it).

null | string
bidCount
required

Open offers right now: a count only, never who made them or what they offered.

integer | string format: int32
/^-?(?:0|[1-9]\d*)$/
biddingDeadline
required
null | string format: date-time
cancellationReason
required

The reason given when the request was cancelled, if any.

null | string
cancelledAt
required
null | string format: date-time
costCenter
required
null | string
createdAt
required
string format: date-time
dealId
required
null | string format: uuid
dealNumber

The deal’s business number (DEAL-206447), once a deal exists. Never changes.

null | string
deliveredAt
required
null | string format: date-time
externalReference
required
null | string
id
required
string format: uuid
livemode
required

True for a live key. False for a test key (qk_test_…): a sandbox request, never real data.

boolean
metadata
required

Your own fields on the request: your company’s only, never shown to anyone else. An empty object when there are none.

object
key
additional properties
string
operationStatus
required

Once a deal exists: Closing, InProgress, Delivered, Completed, Cancelled, Withdrawn or Ended.

null | string
publishedAt
required
null | string format: date-time
purchaseOrderNumber
required
null | string
quoteNumber

The winning quote’s business number (QTE-731905), once a deal exists. Never changes.

null | string
requestNumber

The request’s business number (REQ-048213): the number a person reads out and your system can store. Never changes.

null | string
revision
required

Which version of the listing this is: 1 until the first change, then one more for each change of its fields (in the app or through PATCH).

integer | string format: int32
/^-?(?:0|[1-9]\d*)$/
shipmentNumber

The operation’s business number (SHPT-012618), once the deal went live. Never changes.

null | string
status
required

Draft, Published, BiddingClosed, Awarded or Cancelled.

string
webUrl
required
string
Examplegenerated
{
"awardedAt": "2026-04-15T12:00:00Z",
"awardedCarrierName": "example",
"bidCount": 1,
"biddingDeadline": "2026-04-15T12:00:00Z",
"cancellationReason": "example",
"cancelledAt": "2026-04-15T12:00:00Z",
"costCenter": "example",
"createdAt": "2026-04-15T12:00:00Z",
"dealId": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"dealNumber": "example",
"deliveredAt": "2026-04-15T12:00:00Z",
"externalReference": "example",
"id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0",
"livemode": true,
"metadata": {
"additionalProperty": "example"
},
"operationStatus": "example",
"publishedAt": "2026-04-15T12:00:00Z",
"purchaseOrderNumber": "example",
"quoteNumber": "example",
"requestNumber": "example",
"revision": 1,
"shipmentNumber": "example",
"status": "example",
"webUrl": "example"
}

Bad Request

Media typeapplication/problem+json
object
detail
null | string
instance
null | string
status
null | integer | string format: int32
/^-?(?:0|[1-9]\d*)$/
title
null | string
type
null | string
Examplegenerated
{
"detail": "example",
"instance": "example",
"status": 1,
"title": "example",
"type": "example"
}

Unauthorized

Media typeapplication/problem+json
object
detail
null | string
instance
null | string
status
null | integer | string format: int32
/^-?(?:0|[1-9]\d*)$/
title
null | string
type
null | string
Examplegenerated
{
"detail": "example",
"instance": "example",
"status": 1,
"title": "example",
"type": "example"
}

Forbidden

Media typeapplication/problem+json
object
detail
null | string
instance
null | string
status
null | integer | string format: int32
/^-?(?:0|[1-9]\d*)$/
title
null | string
type
null | string
Examplegenerated
{
"detail": "example",
"instance": "example",
"status": 1,
"title": "example",
"type": "example"
}

Not Found

Media typeapplication/problem+json
object
detail
null | string
instance
null | string
status
null | integer | string format: int32
/^-?(?:0|[1-9]\d*)$/
title
null | string
type
null | string
Examplegenerated
{
"detail": "example",
"instance": "example",
"status": 1,
"title": "example",
"type": "example"
}

Conflict

Media typeapplication/problem+json
object
detail
null | string
instance
null | string
status
null | integer | string format: int32
/^-?(?:0|[1-9]\d*)$/
title
null | string
type
null | string
Examplegenerated
{
"detail": "example",
"instance": "example",
"status": 1,
"title": "example",
"type": "example"
}

Precondition Failed

Media typeapplication/problem+json
object
detail
null | string
instance
null | string
status
null | integer | string format: int32
/^-?(?:0|[1-9]\d*)$/
title
null | string
type
null | string
Examplegenerated
{
"detail": "example",
"instance": "example",
"status": 1,
"title": "example",
"type": "example"
}

Payload Too Large

Media typeapplication/problem+json
object
detail
null | string
instance
null | string
status
null | integer | string format: int32
/^-?(?:0|[1-9]\d*)$/
title
null | string
type
null | string
Examplegenerated
{
"detail": "example",
"instance": "example",
"status": 1,
"title": "example",
"type": "example"
}

Unprocessable Entity

Media typeapplication/problem+json
object
detail
null | string
errors
object
key
additional properties
Array<string>
instance
null | string
status
null | integer | string format: int32
/^-?(?:0|[1-9]\d*)$/
title
null | string
type
null | string
Examplegenerated
{
"detail": "example",
"errors": {
"additionalProperty": [
"example"
]
},
"instance": "example",
"status": 1,
"title": "example",
"type": "example"
}

Too Many Requests

Media typeapplication/problem+json
object
detail
null | string
instance
null | string
status
null | integer | string format: int32
/^-?(?:0|[1-9]\d*)$/
title
null | string
type
null | string
Examplegenerated
{
"detail": "example",
"instance": "example",
"status": 1,
"title": "example",
"type": "example"
}

Service Unavailable

Media typeapplication/problem+json
object
detail
null | string
instance
null | string
status
null | integer | string format: int32
/^-?(?:0|[1-9]\d*)$/
title
null | string
type
null | string
Examplegenerated
{
"detail": "example",
"instance": "example",
"status": 1,
"title": "example",
"type": "example"
}