Get an order
- Production and sandbox. The token decides the environment.
https://api.beautyrouter.com/v1/orders/{orderId}
using System.Net.Http.Headers;var client = new HttpClient();var request = new HttpRequestMessage{ Method = HttpMethod.Get, RequestUri = new Uri("https://api.beautyrouter.com/v1/orders/order-8Jd3kFs6Gh"), Headers = { { "Authorization", "Bearer <token>" }, },};using (var response = await client.SendAsync(request)){ response.EnsureSuccessStatusCode(); var body = await response.Content.ReadAsStringAsync(); Console.WriteLine(body);}package main
import ( "fmt" "net/http" "io")
func main() {
url := "https://api.beautyrouter.com/v1/orders/order-8Jd3kFs6Gh"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close() body, _ := io.ReadAll(res.Body)
fmt.Println(res) fmt.Println(string(body))
}OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder() .url("https://api.beautyrouter.com/v1/orders/order-8Jd3kFs6Gh") .get() .addHeader("Authorization", "Bearer <token>") .build();
Response response = client.newCall(request).execute();import axios from 'axios';
const options = { method: 'GET', url: 'https://api.beautyrouter.com/v1/orders/order-8Jd3kFs6Gh', headers: {Authorization: 'Bearer <token>'}};
try { const { data } = await axios.request(options); console.log(data);} catch (error) { console.error(error);}const url = 'https://api.beautyrouter.com/v1/orders/order-8Jd3kFs6Gh';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}val client = OkHttpClient()
val request = Request.Builder() .url("https://api.beautyrouter.com/v1/orders/order-8Jd3kFs6Gh") .get() .addHeader("Authorization", "Bearer <token>") .build()
val response = client.newCall(request).execute()<?php
$client = new \GuzzleHttp\Client();
$response = $client->request('GET', 'https://api.beautyrouter.com/v1/orders/order-8Jd3kFs6Gh', [ 'headers' => [ 'Authorization' => 'Bearer <token>', ],]);
echo $response->getBody();import requests
url = "https://api.beautyrouter.com/v1/orders/order-8Jd3kFs6Gh"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.json())require 'uri'require 'net/http'
url = URI("https://api.beautyrouter.com/v1/orders/order-8Jd3kFs6Gh")
http = Net::HTTP.new(url.host, url.port)http.use_ssl = true
request = Net::HTTP::Get.new(url)request["Authorization"] = 'Bearer <token>'
response = http.request(request)puts response.read_bodycurl --request GET \ --url https://api.beautyrouter.com/v1/orders/order-8Jd3kFs6Gh \ --header 'Authorization: Bearer <token>'import Foundation
let headers = ["Authorization": "Bearer <token>"]
let request = NSMutableURLRequest(url: NSURL(string: "https://api.beautyrouter.com/v1/orders/order-8Jd3kFs6Gh")! as URL, cachePolicy: .useProtocolCachePolicy, timeoutInterval: 10.0)request.httpMethod = "GET"request.allHTTPHeaderFields = headers
let session = URLSession.sharedlet dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in if (error != nil) { print(error as Any) } else { let httpResponse = response as? HTTPURLResponse print(httpResponse) }})
dataTask.resume()Returns one order, which can be a draft. The order must belong to the company of the logged-in user, otherwise the
request fails with not_found.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”The order ID.
Example
order-8Jd3kFs6GhResponses
Section titled “Responses”The order.
object
The order ID.
The order number people see.
The company the order belongs to.
The user who placed the order.
draft: the order is saved for later. It holds no stock, and the supplier does not see it.
pending_verification: the company is prequalified, and the order waits until its verification ends, with no
charge yet.
payment_failed: the card charge failed, or a payment is waiting for 3-D Secure. Beauty Router tries once more
after 24 hours when the failure can be retried. If that fails too, or the failure cannot be retried, it cancels the
order at 24 hours. placed: the card was
charged, and the brand or distributor starts preparing the order right after. ready_to_ship, in_transit,
delivered, delivery_failed, and canceled follow the delivery. Only a placed order takes stock from the
supplier.
Why the order was canceled. Only on canceled orders.
The brand or distributor that fulfills the order.
object
object
The product ID.
The product name.
The wholesale price of one unit before the discount, in US dollars.
The discount on the whole line, in US dollars.
The line total, in US dollars.
The total of the lines, in US dollars.
The discount on the order, in US dollars.
The shipping charge, in US dollars: a flat amount or a carrier quote, free above the supplier’s threshold. It is
locked when the order is created. null on a draft with no address.
The sales tax, in US dollars. null on a draft with no address.
The amount the salon pays, in US dollars. It can change until the order is placed. null on a draft with no
address.
Always usd.
object
Street address.
Suite, unit, or floor.
A two-letter US state code.
ZIP code.
Phone number for the delivery. Required on the company. Optional on an order, which then uses the company’s phone.
object
The carrier’s tracking page. Left out when there is none.
The carrier. Left out when it is not known.
When the order was delivered, or null.
Examples
{ "id": "order-8Jd3kFs6Gh", "number": "4821-7730", "companyId": "loc-7Hk2pQx9Lm", "userId": "user-3Vb8nWq1Rt", "status": "in_transit", "supplier": { "id": "sup-1Ry6tUi3Op", "name": "Amberlin" }, "lines": [ { "productId": "prod-4Fz9QbX2kL", "name": "Amberlin Bond Repair Shampoo 33.8 fl oz", "quantity": 6, "unitPrice": 24.5, "discount": 0, "total": 147 }, { "productId": "prod-6Gh2jKl8Zx", "name": "Amberlin Bond Repair Conditioner 33.8 fl oz", "quantity": 4, "unitPrice": 26.5, "discount": 0, "total": 106 } ], "productsTotal": 253, "discount": 0, "shipping": 0, "salesTax": 22.01, "total": 275.01, "currency": "usd", "deliveryAddress": { "line1": "1450 Larimer St", "line2": "Suite 200", "city": "Denver", "state": "CO", "postalCode": "80202", "country": "US", "phone": "+13035550142" }, "trackingNumbers": [ { "number": "1Z999AA10123456784", "url": "https://www.ups.com/track?tracknum=1Z999AA10123456784", "carrier": "UPS" } ], "createdAt": "2026-10-26T15:42:10Z", "updatedAt": "2026-10-28T19:03:55Z", "deliveredAt": null}invalid_user_token: the user token is missing or wrong. user_token_expired: the user token expired. Log the
user in again with POST /v1/login.
The body of every error response.
object
object
A stable error code.
A sentence for developers. It can change, so do not match on it.
The request field that caused the error. Only some errors have it.
Only on verification_data_missing and app_setup_incomplete. What still needs to be set.
Only on order_total_changed and order_has_problems. A fresh quote.
object
One group per supplier. Each group becomes one order.
object
object
An amount in dollars, with up to two decimal places.
The discount on the whole line, in US dollars.
An amount in dollars, with up to two decimal places.
The total of the lines, in US dollars.
The discount on the whole order, in US dollars.
object
The shipping charge in US dollars, or null when it cannot be worked out.
How much more to order for free shipping, or null when it does not apply.
The sales tax in US dollars, or null when it cannot be worked out.
object
The exemption certificate used, or null.
Why no certificate applies, or null when one does.
The amount the salon pays for this group in US dollars, or null when it cannot be worked out. Send it back as
expectedTotal. A group with problems has no expectedTotal.
now: Beauty Router charges the card when the order is created. after_verification: the company is
prequalified, so the charge waits until its verification ends.
object
What stops a group or the whole request. See Problems.
A sentence you can show. It can change, so do not match on it.
The product. Only on problems with one product.
The supplier. Only on problems with one supplier.
How many units can be ordered. Only on insufficient_stock.
The lines no supplier can take.
object
object
What stops a group or the whole request. See Problems.
A sentence you can show. It can change, so do not match on it.
The product. Only on problems with one product.
The supplier. Only on problems with one supplier.
How many units can be ordered. Only on insufficient_stock.
What stops every group.
object
What stops a group or the whole request. See Problems.
A sentence you can show. It can change, so do not match on it.
The product. Only on problems with one product.
The supplier. Only on problems with one supplier.
How many units can be ordered. Only on insufficient_stock.
The sum of all the groups in US dollars, or null when a group’s total is.
Always usd.
Examples
{ "error": { "code": "invalid_user_token", "message": "The user token is missing or not valid." }}{ "error": { "code": "user_token_expired", "message": "The user token expired. Log the user in again." }}not_found: the object does not exist, or the user has no access to it.
The body of every error response.
object
object
A stable error code.
A sentence for developers. It can change, so do not match on it.
The request field that caused the error. Only some errors have it.
Only on verification_data_missing and app_setup_incomplete. What still needs to be set.
Only on order_total_changed and order_has_problems. A fresh quote.
object
One group per supplier. Each group becomes one order.
object
object
An amount in dollars, with up to two decimal places.
The discount on the whole line, in US dollars.
An amount in dollars, with up to two decimal places.
The total of the lines, in US dollars.
The discount on the whole order, in US dollars.
object
The shipping charge in US dollars, or null when it cannot be worked out.
How much more to order for free shipping, or null when it does not apply.
The sales tax in US dollars, or null when it cannot be worked out.
object
The exemption certificate used, or null.
Why no certificate applies, or null when one does.
The amount the salon pays for this group in US dollars, or null when it cannot be worked out. Send it back as
expectedTotal. A group with problems has no expectedTotal.
now: Beauty Router charges the card when the order is created. after_verification: the company is
prequalified, so the charge waits until its verification ends.
object
What stops a group or the whole request. See Problems.
A sentence you can show. It can change, so do not match on it.
The product. Only on problems with one product.
The supplier. Only on problems with one supplier.
How many units can be ordered. Only on insufficient_stock.
The lines no supplier can take.
object
object
What stops a group or the whole request. See Problems.
A sentence you can show. It can change, so do not match on it.
The product. Only on problems with one product.
The supplier. Only on problems with one supplier.
How many units can be ordered. Only on insufficient_stock.
What stops every group.
object
What stops a group or the whole request. See Problems.
A sentence you can show. It can change, so do not match on it.
The product. Only on problems with one product.
The supplier. Only on problems with one supplier.
How many units can be ordered. Only on insufficient_stock.
The sum of all the groups in US dollars, or null when a group’s total is.
Always usd.
Examples
{ "error": { "code": "not_found", "message": "The object was not found." }}internal_error: something failed on Beauty Router’s side. Try again later.
The body of every error response.
object
object
A stable error code.
A sentence for developers. It can change, so do not match on it.
The request field that caused the error. Only some errors have it.
Only on verification_data_missing and app_setup_incomplete. What still needs to be set.
Only on order_total_changed and order_has_problems. A fresh quote.
object
One group per supplier. Each group becomes one order.
object
object
An amount in dollars, with up to two decimal places.
The discount on the whole line, in US dollars.
An amount in dollars, with up to two decimal places.
The total of the lines, in US dollars.
The discount on the whole order, in US dollars.
object
The shipping charge in US dollars, or null when it cannot be worked out.
How much more to order for free shipping, or null when it does not apply.
The sales tax in US dollars, or null when it cannot be worked out.
object
The exemption certificate used, or null.
Why no certificate applies, or null when one does.
The amount the salon pays for this group in US dollars, or null when it cannot be worked out. Send it back as
expectedTotal. A group with problems has no expectedTotal.
now: Beauty Router charges the card when the order is created. after_verification: the company is
prequalified, so the charge waits until its verification ends.
object
What stops a group or the whole request. See Problems.
A sentence you can show. It can change, so do not match on it.
The product. Only on problems with one product.
The supplier. Only on problems with one supplier.
How many units can be ordered. Only on insufficient_stock.
The lines no supplier can take.
object
object
What stops a group or the whole request. See Problems.
A sentence you can show. It can change, so do not match on it.
The product. Only on problems with one product.
The supplier. Only on problems with one supplier.
How many units can be ordered. Only on insufficient_stock.
What stops every group.
object
What stops a group or the whole request. See Problems.
A sentence you can show. It can change, so do not match on it.
The product. Only on problems with one product.
The supplier. Only on problems with one supplier.
How many units can be ordered. Only on insufficient_stock.
The sum of all the groups in US dollars, or null when a group’s total is.
Always usd.
Examples
{ "error": { "code": "internal_error", "message": "Something went wrong. Try again later." }}