curl --request POST \
--url https://api.trycarhub.com/v1/sdk-licenses/{sdk} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"regenerate": false
}
'import requests
url = "https://api.trycarhub.com/v1/sdk-licenses/{sdk}"
payload = { "regenerate": False }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({regenerate: false})
};
fetch('https://api.trycarhub.com/v1/sdk-licenses/{sdk}', 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.trycarhub.com/v1/sdk-licenses/{sdk}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'regenerate' => false
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.trycarhub.com/v1/sdk-licenses/{sdk}"
payload := strings.NewReader("{\n \"regenerate\": false\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
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.trycarhub.com/v1/sdk-licenses/{sdk}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"regenerate\": false\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.trycarhub.com/v1/sdk-licenses/{sdk}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"regenerate\": false\n}"
response = http.request(request)
puts response.read_body{
"sdk": "player",
"state": "unassigned",
"max_sdks": 1,
"consumed": 1,
"available": 1,
"license": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"organization_id": "<string>",
"sdk": "player",
"created_at": "2023-11-07T05:31:56Z",
"issued_at": "2023-11-07T05:31:56Z",
"valid_from": "2023-11-07T05:31:56Z",
"expires_at": "2023-11-07T05:31:56Z",
"proof": "<string>"
}
}Create, renew or regenerate an SDK licence
Requires explicit sdk::write and confirmed paid entitlement. Production and staging share quota. One stable licence covers all installations. Repeated attribution returns the stored proof. Renewals allocate slots in request order. Cancellation preserves rights until paid expiry. Paid upgrades increase quota without resetting consumption.
curl --request POST \
--url https://api.trycarhub.com/v1/sdk-licenses/{sdk} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"regenerate": false
}
'import requests
url = "https://api.trycarhub.com/v1/sdk-licenses/{sdk}"
payload = { "regenerate": False }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({regenerate: false})
};
fetch('https://api.trycarhub.com/v1/sdk-licenses/{sdk}', 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.trycarhub.com/v1/sdk-licenses/{sdk}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'regenerate' => false
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.trycarhub.com/v1/sdk-licenses/{sdk}"
payload := strings.NewReader("{\n \"regenerate\": false\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
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.trycarhub.com/v1/sdk-licenses/{sdk}")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"regenerate\": false\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.trycarhub.com/v1/sdk-licenses/{sdk}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"regenerate\": false\n}"
response = http.request(request)
puts response.read_body{
"sdk": "player",
"state": "unassigned",
"max_sdks": 1,
"consumed": 1,
"available": 1,
"license": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"organization_id": "<string>",
"sdk": "player",
"created_at": "2023-11-07T05:31:56Z",
"issued_at": "2023-11-07T05:31:56Z",
"valid_from": "2023-11-07T05:31:56Z",
"expires_at": "2023-11-07T05:31:56Z",
"proof": "<string>"
}
}Authorizations
Organisation API key, sent as Authorization: Bearer chk_live_….
chk_live_…— production inference, live credits,livemode: true,is_staging: false.chk_stg_…— real inference classified as staging, the same live credits,livemode: true,is_staging: true.chk_test_…— identical pipeline against the fixture backend, test credits,livemode: false.
Keys are stored hashed; only the prefix (chk_live_a1b2…) is ever displayed again. A key
may be scoped to a subset of endpoint families — calling outside its scopes is a 403.
Path Parameters
player, capture, review, report Body
Sign a current paid-period licence again without extending expiry or consuming a slot; otherwise returns sdk_license_not_current
Response
Licence and derived quota; Cache-Control no-store
player, capture, review, report unassigned, active, expired x >= 0x >= 0x >= 0Show child attributes
Show child attributes