Update a shipment request
using System.Net.Http.Headers;var client = new HttpClient();var request = new HttpRequestMessage{ Method = HttpMethod.Patch, RequestUri = new Uri("https://app.quatlasglobal.com/api/integrations/v1/shipment-requests/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0"), Headers = { { "Authorization", "Bearer <token>" }, }, Content = new StringContent("{ \"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\" }") { Headers = { ContentType = new MediaTypeHeaderValue("application/json") } }};using (var response = await client.SendAsync(request)){ response.EnsureSuccessStatusCode(); var body = await response.Content.ReadAsStringAsync(); Console.WriteLine(body);}HttpRequest request = HttpRequest.newBuilder() .uri(URI.create("https://app.quatlasglobal.com/api/integrations/v1/shipment-requests/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0")) .header("Authorization", "Bearer <token>") .header("Content-Type", "application/json") .method("PATCH", HttpRequest.BodyPublishers.ofString("{ \"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\" }")) .build();HttpResponse<String> response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString());System.out.println(response.body());const url = 'https://app.quatlasglobal.com/api/integrations/v1/shipment-requests/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0';const options = { method: 'PATCH', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"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"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}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.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”Header Parameters
Section titled “Header Parameters”Request Bodyrequired
Section titled “Request Bodyrequired”object
object
Only on a request created through the API. Null clears it. At most 100 characters.
As origin.
object
ISO 3166-1 alpha-2 country code. Required.
An Incoterms 2020 code. Cannot be null.
Cannot be null.
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.
Required or Open. Open clears the transport mode. Cannot be null.
Null or an empty string clears the notes.
Any of the create’s origin fields. countryCode, windowFrom and windowTo cannot be cleared; the text fields are cleared with null. The object itself cannot be null.
object
ISO 3166-1 alpha-2 country code. Required.
Cannot be null.
Cannot be null.
Cannot be null.
Only on a request created through the API. Null clears it. At most 100 characters.
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.
Road, Sea, Air, Rail, Multimodal or HandCarry. Cannot be null: send modePolicy Open to leave the mode open.
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"}object
object
Only on a request created through the API. Null clears it. At most 100 characters.
As origin.
object
ISO 3166-1 alpha-2 country code. Required.
An Incoterms 2020 code. Cannot be null.
Cannot be null.
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.
Required or Open. Open clears the transport mode. Cannot be null.
Null or an empty string clears the notes.
Any of the create’s origin fields. countryCode, windowFrom and windowTo cannot be cleared; the text fields are cleared with null. The object itself cannot be null.
object
ISO 3166-1 alpha-2 country code. Required.
Cannot be null.
Cannot be null.
Cannot be null.
Only on a request created through the API. Null clears it. At most 100 characters.
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.
Road, Sea, Air, Rail, Multimodal or HandCarry. Cannot be null: send modePolicy Open to leave the mode open.
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"}Responses
Section titled “Responses”OK
object
The awarded carrier, once a deal exists (when the app names it).
Open offers right now: a count only, never who made them or what they offered.
The reason given when the request was cancelled, if any.
The deal’s business number (DEAL-206447), once a deal exists. Never changes.
True for a live key. False for a test key (qk_test_…): a sandbox request, never real data.
Your own fields on the request: your company’s only, never shown to anyone else. An empty object when there are none.
object
Once a deal exists: Closing, InProgress, Delivered, Completed, Cancelled, Withdrawn or Ended.
The winning quote’s business number (QTE-731905), once a deal exists. Never changes.
The request’s business number (REQ-048213): the number a person reads out and your system can store. Never changes.
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).
The operation’s business number (SHPT-012618), once the deal went live. Never changes.
Draft, Published, BiddingClosed, Awarded or Cancelled.
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
object
Examplegenerated
{ "detail": "example", "instance": "example", "status": 1, "title": "example", "type": "example"}Unauthorized
object
Examplegenerated
{ "detail": "example", "instance": "example", "status": 1, "title": "example", "type": "example"}Forbidden
object
Examplegenerated
{ "detail": "example", "instance": "example", "status": 1, "title": "example", "type": "example"}Not Found
object
Examplegenerated
{ "detail": "example", "instance": "example", "status": 1, "title": "example", "type": "example"}Conflict
object
Examplegenerated
{ "detail": "example", "instance": "example", "status": 1, "title": "example", "type": "example"}Precondition Failed
object
Examplegenerated
{ "detail": "example", "instance": "example", "status": 1, "title": "example", "type": "example"}Payload Too Large
object
Examplegenerated
{ "detail": "example", "instance": "example", "status": 1, "title": "example", "type": "example"}Unprocessable Entity
object
object
Examplegenerated
{ "detail": "example", "errors": { "additionalProperty": [ "example" ] }, "instance": "example", "status": 1, "title": "example", "type": "example"}Too Many Requests
object
Examplegenerated
{ "detail": "example", "instance": "example", "status": 1, "title": "example", "type": "example"}Service Unavailable
object
Examplegenerated
{ "detail": "example", "instance": "example", "status": 1, "title": "example", "type": "example"}