{"activeVersionTag":"latest","latestAvailableVersionTag":"latest","collection":{"info":{"_postman_id":"d01bbef3-865b-4200-bf08-03b72f2639dc","name":"Blue Streak Axis API","description":"This documentation describes Blue Streak's REST API known as Axis. Axis is provided and maintained as part of [Xcelerator](https://www.keysoftwaresystems.com/xcelerator-courier-software/) by Key Software Systems. Axis supports quoting and submitting orders, getting order updates, getting labels, and querying billing information.\n\nDetailed documentation is only maintained for the latest API endpoints. Please see the [migration guide](#v3-to-v4-endpoint-migration) for guidance on updating to the v4 order endpoints.\n\n**The information provided here is intended to complement the** [<b>official API documentation</b>](https://www.bluestreakcouriersonline.net/axishelp) **where the full list of supported endpoints can be found.**\n\n# Support\n\nSupport for the Axis API is available by email at [help@bluestreak.cc](https://mailto:help@bluestreak.cc). Please help us resolve your inquiry by including detailed account information as well as request/response pairs. Response should be expected within 1-2 business days.\n\n# Requirements to Start\n\nBefore you may use the Axis API, the following information must be obtained from your Blue Streak representative.\n\n- Account Number\n    \n- Axis Login Credentials\n    \n- Available Service Type(s)\n    \n- Available Vehicle Type(s)\n    \n- Available Package Type(s)\n    \n\n# Authentication\n\nAuthenticating with the Axis API requires the use of the provided credentials to obtain a bearer token which can then be used to make subsequent calls to the API.\n\nAuthentication requests are made to the endpoint [https://www.bluestreakcouriersonline.net/axis/login](https://www.bluestreakcouriersonline.net/axis/login). The body of the request must include the grant type, username and password.\n\nIf the token call is successful, an \"access_token\" will be returned in the response body. This \"access_token\" will need to be sent in the header of any subsequent requests in the following format: **Authorization: Bearer {access_token}**\n\nThe token is valid for one hour after the time it was received.\n\nSee [/login](#5f4b5e7c-87d0-442f-a2c8-1341793e31a8) for detailed information and examples.\n\n# Workflow\n\nThe Axis workflow is highly customizable and will depend on your requirements as a customer. Some implementations may only need to submit orders, other implementations may only need to query existing orders for tracking updates. Many workflows require both. Please use the example workflows as a baseline to gain an understanding of the workflow that works best for your implementation.\n\nHere is a common workflow for many of our shipping partners.\n\n1. The bearer token is obtained from the /login endpoint and used in all subsequent requests.\n    \n2. (Optional) Orders quotes are obtained from /v4/Order/GetQuote.\n    \n3. Orders are submitted individually via /v4/Order/SubmitOrders. If packages are already labeled with existing barcode information, that information is submitted. Otherwise, a random barcode is generated and used in OrderPackageItems -> RefNo. This barcode should be placed on the shipper's label.\n    \n4. (Optional) Order label image is obtained from /v1/Label/GetLabel.\n    \n5. The /v4/Order/GetModifiedOrders endpoint is queried with the timestamp of 30 minutes ago, every 30 minutes to check for order changes. The includeDeletedOrders, includePackageItems, includeStatusCodes, and includeOrderDocuments params are included as true.\n    \n6. (Optional) When the order object returned from the previous step includes OrderDocumentItems that have not yet been seen before, the /v4/Order/GetOrderImage endpoint is used.\n    \n\n# Webhooks and Real Time Updates\n\nAxis supports customized webhooks / API push requirements. All milestones of an order's completion process can be used to trigger post request of JSON datapoints.\n\n# Rate Limiting\n\nAxis is rate limited to 3 requests per second, per bearer token. The rate limit indicators are returned as \"Axis-Throttle-Limit\" and \"Axis-Throttle-Remaining\" in each response header. Please be mindful of optimizing queries to the Axis API to optimize bandwidth and CPU resources.\n\n# v3 to v4 Endpoint Migration\n\nPlease be sure to use the v4 version of the endpoints when available for the best experience. The v4 endpoints offer numerous improvements to the API workflow and makes several new data fields available, such as GPS events.\n\nv1 through v3 /Order/ endpoints are deprecated as of 12/31/2023 and planned for removal 12/31/2024.\n\n## 1\\. Address data changed\n\nIn the endpoints version 1 through 3, the Pickup and Delivery address exist as a nested object with the key PickupAddress and DeliveryAddress. In the version 4 endpoints, the address information exists at the base object level. Please see below for differences.\n\n**PREVIOUS VERSIONS**\n\n``` json\n{\n  ...,\n  \"PickupAddress\": {\n    \"Name\": \"sample string 3\",\n    \"Contact\": \"sample string 4\",\n    \"Street\": \"sample string 5\",\n    \"Street2\": \"sample string 6\",\n    \"City\": \"sample string 7\",\n    \"State\": \"sample string 8\",\n    \"Zip\": \"sample string 9\"\n  },\n  \"DeliveryAddress\": {\n    \"Name\": \"sample string 3\",\n    \"Contact\": \"sample string 4\",\n    \"Street\": \"sample string 5\",\n    \"Street2\": \"sample string 6\",\n    \"City\": \"sample string 7\",\n    \"State\": \"sample string 8\",\n    \"Zip\": \"sample string 9\"\n  },\n  ...\n}\n\n ```\n\n_Note: The pickup and delivery address exist as nested objects._\n\n**VERSION 4**\n\n``` json\n{\n  ...,\n  \"PCoName\": \"sample string 22\",\n  \"PContact\": \"sample string 23\",\n  \"PPhone\": \"sample string 26\",\n  \"PStreet\": \"sample string 27\",\n  \"PStreet2\": \"sample string 28\",\n  \"PCity\": \"sample string 29\",\n  \"PState\": \"sample string 30\",\n  \"PZip\": \"sample string 31\",\n  \"PLocRefNo\": \"sample string 32\",\n  \"PSpecInstr\": \"sample string 33\",\n  \"DCoName\": \"sample string 35\",\n  \"DContact\": \"sample string 36\",\n  \"DPhone\": \"sample string 39\",\n  \"DStreet\": \"sample string 40\",\n  \"DStreet2\": \"sample string 41\",\n  \"DCity\": \"sample string 42\",\n  \"DState\": \"sample string 43\",\n  \"DZip\": \"sample string 44\",\n  \"DLocRefNo\": \"sample string 45\",\n  \"DSpecInstr\": \"sample string 46\",\n  ...\n}\n\n ```\n\n_Note: The pickup and delivery address information exist as fields at the parent level of the object._\n\n## 2\\. Vehicle and Service Type field changed from string to ID\n\nIn order to better harden the object structure and anticipate potential name changes to vehicles and services, these fields have switched from relying on the name string of the object to the unique integer ID associated with the object.\n\n**PREVIOUS VERSIONS**\n\n``` json\n{\n  ...,\n  \"ServiceName\": \"N5\",\n  \"VehicleName\": \"Cargo Van\",\n  ...\n}\n\n ```\n\n**VERSION 4**\n\n``` json\n{\n  ...,\n  \"ServiceId\": 102,\n  \"VehicleId\": 2,\n  ...\n}\n\n ```\n\n## 3\\. Package Type field changed from string to ID\n\n**PREVIOUS VERSIONS**\n\n``` json\n{\n  ...,\n  \"ServiceName\": \"N5\",\n  \"VehicleName\": \"Cargo Van\",\n  \"OrderPackageItems\": [\n      {\n        \"PackageName\": \"Box\",\n        \"RefNo\": \"EXAMPLEBARCODE\",\n        \"Weight\": 9.0,\n        \"Length\": 10.0,\n        \"Width\": 11.0,\n        \"Height\": 12.0,\n        ...\n      }\n  ]\n  ...\n}\n\n ```\n\n**VERSION 4**\n\n``` json\n{\n  ...,\n  \"ServiceId\": 102,\n  \"VehicleId\": 2,\n  \"OrderPackageItems\": [\n      {\n        \"PackageId\": 3,\n        \"RefNo\": \"EXAMPLEBARCODE\",\n        \"Weight\": 9.0,\n        \"Length\": 10.0,\n        \"Width\": 11.0,\n        \"Height\": 12.0,\n        ...\n      }\n  ]\n  ...\n}\n\n ```\n\n## 4\\. VPOD and other image documents\n\nVPOD and Signature images are no longer available as fields on the Order object body. Instead, they are accessed as documents on the order and must be retieved using the documents endpoint.\n\n## 5\\. Other miscellaneous changes\n\n- \"OrderTracking**ID**\" is now \"OrderTracking**Id**\"\n    \n\n# Service, Vehicle, Package name to ID mappings\n\nFor your convenience, the most commonly used Service, Vehicle, and Package types with their associated unique ID are provided here.\n\n### Service\n\n| **ServiceName** | **ServiceId** | **Description** |\n| --- | --- | --- |\n| DY | 102 | Same Day Pickup & Delivery |\n| N5 | 103 | Next Day by 5PM |\n\n### Vehicle\n\n| **VehicleName** | **VehicleId** |\n| --- | --- |\n| Box Truck | 6 |\n| Cargo Van | 2 |\n\n### Package\n\n| **PackageName** | **PackageId** |\n| --- | --- |\n| Box | 3 |\n\n# Key Order Data Points\n\n| **Key** | **Example** | **Type** | **Description** |\n| --- | --- | --- | --- |\n| AccountNo | \"123A\" | String, **Required** | The account number for the order. |\n| Caller | \"TEST_USER\" | String, Optional | Used to idenfity the entity that created the order. Recommended to use the Axis username. |\n| ClientRefNo | \"TEST123\" | String, Optional, **Recommended** | Recommended to use the common order identifier used by the shipper and recognized by the consignee. |\n| ClientRefNo2 | \"TEST123\" | String, Optional | Second relevant order number identified by the shipper |\n| ClientRefNo3 | \"TEST123\" | String, Optional | Third relevant order number identified by the shipper |\n| ClientRefNo4 | \"TEST123\" | String, Optional | Fourth relevant order number identified by the shipper |\n| ServiceId | 102 | Integer, **Required** | Service type for the order. Often a static value. |\n| VehicleId | 2 | Integer, **Required** | Vehicle type for the order. Often a static value. |\n| PickupTargetFrom | \"\" | String ISO 8601, Optional | Pickup target window start, typically use 5AM on the next business day |\n| PickupTargetTo | \"\" | String ISO 8601, Optional | Pickup target window end, typically use 10AM on the next business day |\n| DeliveryTargetFrom | \"\" | String ISO 8601, Optional | Delivery target window start, typically use 8AM on the next business day |\n| DeliveryTargetTo | \"\" | String ISO 8601, Optional | Delivery target window end, typically use 5PM (17:00) on the next business day |\n| PCoName | \"Clothing Wholesale\" | String, **Required** | Shipping Company Name. |\n| PContact | \"Shipping Department\" | String, Optional | Pickup Address contact |\n| PPhone | \"+19044488000\" | String E.164, **Optional** | Pickup contact phone number |\n| PStreet | \"123 Test Rd\" | String, **Required** | Pickup Address Street 1 |\n| PStreet2 | \"APT 123\" | String, **Required** | Pickup Address Street 2 |\n| PCity | \"Jacksonville\" | String, **Required** | Pickup Address City |\n| PState | \"FL\" | String, **Required** | Two letter Pickup Address State |\n| PZip | \"32216\" | String, **Required** | 5 Digit Pickup Zip Code |\n| PLocRefNo | \"123ABC\" | String, Optional | Unique reference ID associated with the Pickup Address information. |\n| PSpecInstr | \"Gate Code 4455, Red house leave at door\" | String, Optional | Special instructions for pickup, such as access code |\n| PLocRefNo | \"123ABC\", | String, Optional | Unique reference ID associated with the Pickup Address information. |\n| PSpecInstr | \"Use back door for access\" | String, Optional | Special instructions for pickup. Typically not needed. |\n| DCoName | \"John Doe's Clothing Store\" | String, **Required** | Delivery/Recipient Company Name. If residential, use recipient name. |\n| DContact | \"John Doe\" | String, Optional | Delivery Address contact |\n| DPhone | \"+19044488000\" | String E.164, **Optional** | Delivery contact phone number |\n| DStreet | \"123 Test Rd\" | String, **Required** | Delivery Address Street 1 |\n| DStreet2 | \"APT 123\" | String, **Required** | Delivery Address Street 2 |\n| DCity | \"Jacksonville\" | String, **Required** | Delivery Address City |\n| DState | \"FL\" | String, **Required** | Two letter Delivery Address State |\n| DZip | \"32216\" | String, **Required** | 5 Digit Delivery Zip Code |\n| DLocRefNo | \"123ABC\" | String, Optional | Unique reference ID associated with the Delivery Address information. |\n| DSpecInstr | \"Gate Code 4455, Red house leave at door\" | String, Optional | Special instructions for delivery, such as gate code |\n| OrderPackageItems | See other Examples | Json Object List, Required | List of Package Items Associated with the order. It is common that the list will be of length 1. |\n| PODname | \"J DOE\" | String, Read Only | Name of recipient who accepted delivery. |\n| PODcompletion | \"\" | String ISO 8601, Read Only | Name of recipient who accepted delivery. |\n\n# Endpoints\n\nPlease see the information below for detailed examples of the API endpoints. Please note that many of the endpoints include multiple examples. For detailed information of all API endpoints, please see the [continued documentation](https://www.bluestreakcouriersonline.net/Axis/swagger).","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json","isPublicCollection":true,"owner":"15773081","team":2132368,"collectionId":"d01bbef3-865b-4200-bf08-03b72f2639dc","publishedId":"2sA2rAy276","public":true,"publicUrl":"https://docs.bluestreak.dev","privateUrl":"https://go.postman.co/documentation/15773081-d01bbef3-865b-4200-bf08-03b72f2639dc","customColor":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"5483FC"},"documentationLayout":"classic-single-column","customisation":{"metaTags":[{"name":"description","value":"This documentation describes Blue Streak's REST API known as Axis. Axis supports submitting orders, getting order updates, and querying accounting information."},{"name":"title","value":"Blue Streak API Documentation"}],"appearance":{"default":"system_default","themes":[{"name":"dark","logo":"https://content.pstmn.io/631f7d7f-e020-4956-8a13-af455a9598de/YnNjX21hc2thYmxlX2JvcmRlciAoMikucG5n","colors":{"top-bar":"212121","right-sidebar":"303030","highlight":"5483FC"}},{"name":"light","logo":"https://content.pstmn.io/fd047a30-0336-4dc9-b677-926ae17340f3/YnNjX21hc2thYmxlX2JvcmRlciAoMikucG5n","colors":{"top-bar":"FFFFFF","right-sidebar":"303030","highlight":"5483FC"}}]}},"version":"8.10.1","publishDate":"2024-02-27T04:52:10.000Z","activeVersionTag":"latest","documentationTheme":"light","metaTags":{"title":"Blue Streak API Documentation","description":"This documentation describes Blue Streak's REST API known as Axis. Axis supports submitting orders, getting order updates, and querying accounting information."},"logos":{"logoLight":"https://content.pstmn.io/fd047a30-0336-4dc9-b677-926ae17340f3/YnNjX21hc2thYmxlX2JvcmRlciAoMikucG5n","logoDark":"https://content.pstmn.io/631f7d7f-e020-4956-8a13-af455a9598de/YnNjX21hc2thYmxlX2JvcmRlciAoMikucG5n"}},"statusCode":200},"environments":[{"name":"Default Environment","id":"91606d3f-f9d7-4342-bbba-af7e53ef785c","owner":"15773081","values":[{"key":"BASEURL","value":"https://www.bluestreakcouriersonline.net/axis","enabled":true,"type":"default"},{"key":"USERNAME","value":"TEST_USER","enabled":true,"type":"default"},{"key":"PASSWORD","value":"TEST_PASSWORD","enabled":true,"type":"secret"},{"key":"ACCESS_TOKEN","value":"","enabled":true,"type":"default"}],"published":true}],"user":{"authenticated":false,"permissions":{"publish":false}},"run":{"button":{"js":"https://run.pstmn.io/button.js","css":"https://run.pstmn.io/button.css"}},"web":"https://www.getpostman.com/","team":{"logo":"https://res.cloudinary.com/postman/image/upload/t_team_logo_pubdoc/v1/team/7076939c493a84179e95176a6137a6884f70cbf9a420eae9c586719bd46d8d36","favicon":"https://bluestreak.dev/favicon.ico"},"isEnvFetchError":false,"languages":"[{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"HttpClient\"},{\"key\":\"csharp\",\"label\":\"C#\",\"variant\":\"RestSharp\"},{\"key\":\"curl\",\"label\":\"cURL\",\"variant\":\"cURL\"},{\"key\":\"dart\",\"label\":\"Dart\",\"variant\":\"http\"},{\"key\":\"go\",\"label\":\"Go\",\"variant\":\"Native\"},{\"key\":\"http\",\"label\":\"HTTP\",\"variant\":\"HTTP\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"OkHttp\"},{\"key\":\"java\",\"label\":\"Java\",\"variant\":\"Unirest\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"Fetch\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"jQuery\"},{\"key\":\"javascript\",\"label\":\"JavaScript\",\"variant\":\"XHR\"},{\"key\":\"c\",\"label\":\"C\",\"variant\":\"libcurl\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Axios\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Native\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Request\"},{\"key\":\"nodejs\",\"label\":\"NodeJs\",\"variant\":\"Unirest\"},{\"key\":\"objective-c\",\"label\":\"Objective-C\",\"variant\":\"NSURLSession\"},{\"key\":\"ocaml\",\"label\":\"OCaml\",\"variant\":\"Cohttp\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"cURL\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"Guzzle\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"HTTP_Request2\"},{\"key\":\"php\",\"label\":\"PHP\",\"variant\":\"pecl_http\"},{\"key\":\"powershell\",\"label\":\"PowerShell\",\"variant\":\"RestMethod\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"http.client\"},{\"key\":\"python\",\"label\":\"Python\",\"variant\":\"Requests\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"httr\"},{\"key\":\"r\",\"label\":\"R\",\"variant\":\"RCurl\"},{\"key\":\"ruby\",\"label\":\"Ruby\",\"variant\":\"Net::HTTP\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"Httpie\"},{\"key\":\"shell\",\"label\":\"Shell\",\"variant\":\"wget\"},{\"key\":\"swift\",\"label\":\"Swift\",\"variant\":\"URLSession\"}]","languageSettings":[{"key":"csharp","label":"C#","variant":"HttpClient"},{"key":"csharp","label":"C#","variant":"RestSharp"},{"key":"curl","label":"cURL","variant":"cURL"},{"key":"dart","label":"Dart","variant":"http"},{"key":"go","label":"Go","variant":"Native"},{"key":"http","label":"HTTP","variant":"HTTP"},{"key":"java","label":"Java","variant":"OkHttp"},{"key":"java","label":"Java","variant":"Unirest"},{"key":"javascript","label":"JavaScript","variant":"Fetch"},{"key":"javascript","label":"JavaScript","variant":"jQuery"},{"key":"javascript","label":"JavaScript","variant":"XHR"},{"key":"c","label":"C","variant":"libcurl"},{"key":"nodejs","label":"NodeJs","variant":"Axios"},{"key":"nodejs","label":"NodeJs","variant":"Native"},{"key":"nodejs","label":"NodeJs","variant":"Request"},{"key":"nodejs","label":"NodeJs","variant":"Unirest"},{"key":"objective-c","label":"Objective-C","variant":"NSURLSession"},{"key":"ocaml","label":"OCaml","variant":"Cohttp"},{"key":"php","label":"PHP","variant":"cURL"},{"key":"php","label":"PHP","variant":"Guzzle"},{"key":"php","label":"PHP","variant":"HTTP_Request2"},{"key":"php","label":"PHP","variant":"pecl_http"},{"key":"powershell","label":"PowerShell","variant":"RestMethod"},{"key":"python","label":"Python","variant":"http.client"},{"key":"python","label":"Python","variant":"Requests"},{"key":"r","label":"R","variant":"httr"},{"key":"r","label":"R","variant":"RCurl"},{"key":"ruby","label":"Ruby","variant":"Net::HTTP"},{"key":"shell","label":"Shell","variant":"Httpie"},{"key":"shell","label":"Shell","variant":"wget"},{"key":"swift","label":"Swift","variant":"URLSession"}],"languageOptions":[{"label":"C# - HttpClient","value":"csharp - HttpClient - C#"},{"label":"C# - RestSharp","value":"csharp - RestSharp - C#"},{"label":"cURL - cURL","value":"curl - cURL - cURL"},{"label":"Dart - http","value":"dart - http - Dart"},{"label":"Go - Native","value":"go - Native - Go"},{"label":"HTTP - HTTP","value":"http - HTTP - HTTP"},{"label":"Java - OkHttp","value":"java - OkHttp - Java"},{"label":"Java - Unirest","value":"java - Unirest - Java"},{"label":"JavaScript - Fetch","value":"javascript - Fetch - JavaScript"},{"label":"JavaScript - jQuery","value":"javascript - jQuery - JavaScript"},{"label":"JavaScript - XHR","value":"javascript - XHR - JavaScript"},{"label":"C - libcurl","value":"c - libcurl - C"},{"label":"NodeJs - Axios","value":"nodejs - Axios - NodeJs"},{"label":"NodeJs - Native","value":"nodejs - Native - NodeJs"},{"label":"NodeJs - Request","value":"nodejs - Request - NodeJs"},{"label":"NodeJs - Unirest","value":"nodejs - Unirest - NodeJs"},{"label":"Objective-C - NSURLSession","value":"objective-c - NSURLSession - Objective-C"},{"label":"OCaml - Cohttp","value":"ocaml - Cohttp - OCaml"},{"label":"PHP - cURL","value":"php - cURL - PHP"},{"label":"PHP - Guzzle","value":"php - Guzzle - PHP"},{"label":"PHP - HTTP_Request2","value":"php - HTTP_Request2 - PHP"},{"label":"PHP - pecl_http","value":"php - pecl_http - PHP"},{"label":"PowerShell - RestMethod","value":"powershell - RestMethod - PowerShell"},{"label":"Python - http.client","value":"python - http.client - Python"},{"label":"Python - Requests","value":"python - Requests - Python"},{"label":"R - httr","value":"r - httr - R"},{"label":"R - RCurl","value":"r - RCurl - R"},{"label":"Ruby - Net::HTTP","value":"ruby - Net::HTTP - Ruby"},{"label":"Shell - Httpie","value":"shell - Httpie - Shell"},{"label":"Shell - wget","value":"shell - wget - Shell"},{"label":"Swift - URLSession","value":"swift - URLSession - Swift"}],"layoutOptions":[{"value":"classic-single-column","label":"Single Column"},{"value":"classic-double-column","label":"Double Column"}],"versionOptions":[],"environmentOptions":[{"value":"0","label":"No Environment"},{"label":"Default Environment","value":"15773081-91606d3f-f9d7-4342-bbba-af7e53ef785c"}],"canonicalUrl":"https://docs.bluestreak.dev/view/metadata/2sA2rAy276"}