Move a sandbox request to its next status (test keys only)
using System.Net.Http.Headers;var client = new HttpClient();var request = new HttpRequestMessage{ Method = HttpMethod.Post, RequestUri = new Uri("https://app.quatlasglobal.com/api/integrations/v1/sandbox/shipment-requests/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/advance"), Headers = { { "Authorization", "Bearer <token>" }, }, Content = new StringContent("{ \"step\": \"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/sandbox/shipment-requests/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/advance")) .header("Authorization", "Bearer <token>") .header("Content-Type", "application/json") .method("POST", HttpRequest.BodyPublishers.ofString("{ \"step\": \"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/sandbox/shipment-requests/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/advance';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"step":"example"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://app.quatlasglobal.com/api/integrations/v1/sandbox/shipment-requests/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/advance \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "step": "example" }'Requires a test key (qk_test_…) with the requests:write scope. Moves a sandbox request through the life a real one has: Published, then BidReceived (any number of times), Awarded, Delivered. A live key gets 403 and nothing real ever moves.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”Request Bodyrequired
Section titled “Request Bodyrequired”object
Published, BidReceived, Awarded or Delivered. Each step follows the one before it: Published from Draft, BidReceived and Awarded from Published, Delivered from Awarded.
Examplegenerated
{ "step": "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"}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"}Too Many Requests
object
Examplegenerated
{ "detail": "example", "instance": "example", "status": 1, "title": "example", "type": "example"}