curl --request POST \
--url https://api.arcuserp.com/v1/orders/{id}/allocation-plan \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.arcuserp.com/v1/orders/{id}/allocation-plan"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.arcuserp.com/v1/orders/{id}/allocation-plan', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.arcuserp.com/v1/orders/{id}/allocation-plan",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.arcuserp.com/v1/orders/{id}/allocation-plan"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.arcuserp.com/v1/orders/{id}/allocation-plan")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.arcuserp.com/v1/orders/{id}/allocation-plan")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": {
"order_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"order_number": "<string>",
"preferred_location_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"order_allocation_strategy": "allocate_now",
"any_multi_location": true,
"any_shortfall": true,
"lines": [
{
"order_item_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"product_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"product_title": "<string>",
"sku": "<string>",
"qty_needed": 123,
"qty_plannable": 123,
"shortfall": 123,
"fully_sourceable": true,
"multi_location": true,
"allocation_strategy": "allocate_now",
"plan": [
{
"location_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"location_name": "<string>",
"qty": 123,
"available": 123
}
]
}
]
}
}Preview the multi-warehouse sourcing plan for an order (no reservation)
Returns the proposed per-line multi-warehouse sourcing plan WITHOUT reserving any stock.
For each physical line, the system proposes which warehouse fills how much (preferred
order location first, then warehouses with the most available stock). Read-only: it
writes no inventory, creates no reservations, and posts no journal entry. Use it to
review a split before committing it via POST /orders/{id}/allocate. The manual
transfer path remains the override (ALLOCATION-MULTI-WAREHOUSE-SOURCING-AND-SOFT-VS-FIRM-RESERVATION).
Requires orders:read scope.
curl --request POST \
--url https://api.arcuserp.com/v1/orders/{id}/allocation-plan \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.arcuserp.com/v1/orders/{id}/allocation-plan"
headers = {"Authorization": "Bearer <token>"}
response = requests.post(url, headers=headers)
print(response.text)const options = {method: 'POST', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.arcuserp.com/v1/orders/{id}/allocation-plan', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.arcuserp.com/v1/orders/{id}/allocation-plan",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.arcuserp.com/v1/orders/{id}/allocation-plan"
req, _ := http.NewRequest("POST", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.arcuserp.com/v1/orders/{id}/allocation-plan")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.arcuserp.com/v1/orders/{id}/allocation-plan")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"data": {
"order_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"order_number": "<string>",
"preferred_location_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"order_allocation_strategy": "allocate_now",
"any_multi_location": true,
"any_shortfall": true,
"lines": [
{
"order_item_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"product_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"product_title": "<string>",
"sku": "<string>",
"qty_needed": 123,
"qty_plannable": 123,
"shortfall": 123,
"fully_sourceable": true,
"multi_location": true,
"allocation_strategy": "allocate_now",
"plan": [
{
"location_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"location_name": "<string>",
"qty": 123,
"available": 123
}
]
}
]
}
}Authorizations
API key issued per entity via Settings > Developers > API Keys.
Each key carries scopes (e.g. orders:read, products:write).
Bearer token format: Authorization: Bearer ark_live_ent_Test keys use ark_test_ent_. Both are issued per entity
via Settings > Developers > API Keys.
Path Parameters
Response
The proposed allocation plan.
Show child attributes
Show child attributes
Was this page helpful?

