Licenses
Create license
Returns license_key once.
POST
/
v1
/
licenses
Create license
curl --request POST \
--url https://sand-api.orquestr.dev/cloud/v1/licenses \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"customer_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({customer_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a'})
};
fetch('https://sand-api.orquestr.dev/cloud/v1/licenses', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://sand-api.orquestr.dev/cloud/v1/licenses"
payload = { "customer_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"data": {
"id": "l6666666-6666-6666-6666-666666666666",
"customer_id": "o2222222-2222-2222-2222-222222222222",
"license_key_prefix": "a1b2c3d4",
"expires_at": null,
"max_devices": 1,
"status": "active",
"created_at": "2026-09-15T18:00:00.000Z",
"updated_at": "2026-09-15T18:00:00.000Z",
"license_key": "oq_AbCdEfGhIjKlMnOpQrStUvWx",
"external_license_id": "lic-pos-main"
}
}{
"error": {
"code": "bad_request",
"message": "Invalid body"
}
}{
"error": {
"code": "unauthorized",
"message": "Unauthorized"
}
}{
"error": {
"code": "forbidden",
"message": "Account not eligible for this action"
}
}{
"error": {
"code": "forbidden",
"message": "Forbidden"
}
}{
"error": {
"code": "not_found",
"message": "Not found"
}
}{
"error": {
"code": "conflict",
"message": "Device quota exceeded"
}
}Authorizations
API key (sk_live_…). Send as Authorization: Bearer <api_key>.
Body
application/json
Response
Success
The response is of type object.
⌘I
Create license
curl --request POST \
--url https://sand-api.orquestr.dev/cloud/v1/licenses \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"customer_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({customer_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a'})
};
fetch('https://sand-api.orquestr.dev/cloud/v1/licenses', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://sand-api.orquestr.dev/cloud/v1/licenses"
payload = { "customer_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a" }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"data": {
"id": "l6666666-6666-6666-6666-666666666666",
"customer_id": "o2222222-2222-2222-2222-222222222222",
"license_key_prefix": "a1b2c3d4",
"expires_at": null,
"max_devices": 1,
"status": "active",
"created_at": "2026-09-15T18:00:00.000Z",
"updated_at": "2026-09-15T18:00:00.000Z",
"license_key": "oq_AbCdEfGhIjKlMnOpQrStUvWx",
"external_license_id": "lic-pos-main"
}
}{
"error": {
"code": "bad_request",
"message": "Invalid body"
}
}{
"error": {
"code": "unauthorized",
"message": "Unauthorized"
}
}{
"error": {
"code": "forbidden",
"message": "Account not eligible for this action"
}
}{
"error": {
"code": "forbidden",
"message": "Forbidden"
}
}{
"error": {
"code": "not_found",
"message": "Not found"
}
}{
"error": {
"code": "conflict",
"message": "Device quota exceeded"
}
}
