Skip to main content
POST
/
license
/
validate
/
Validate License
curl --request POST \
  --url https://sandboxapi.kelviq.com/api/v1/license/validate/ \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "licenseKey": "KLVQ-PRO-1234-ABCD-9999",
  "instanceId": "8f3e2b1a-5c6d-4e9f-8a0b-1c2d3e4f5g6h"
}
'
import requests

url = "https://sandboxapi.kelviq.com/api/v1/license/validate/"

payload = {
"licenseKey": "KLVQ-PRO-1234-ABCD-9999",
"instanceId": "8f3e2b1a-5c6d-4e9f-8a0b-1c2d3e4f5g6h"
}
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({
licenseKey: 'KLVQ-PRO-1234-ABCD-9999',
instanceId: '8f3e2b1a-5c6d-4e9f-8a0b-1c2d3e4f5g6h'
})
};

fetch('https://sandboxapi.kelviq.com/api/v1/license/validate/', 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://sandboxapi.kelviq.com/api/v1/license/validate/",
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([
'licenseKey' => 'KLVQ-PRO-1234-ABCD-9999',
'instanceId' => '8f3e2b1a-5c6d-4e9f-8a0b-1c2d3e4f5g6h'
]),
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://sandboxapi.kelviq.com/api/v1/license/validate/"

payload := strings.NewReader("{\n \"licenseKey\": \"KLVQ-PRO-1234-ABCD-9999\",\n \"instanceId\": \"8f3e2b1a-5c6d-4e9f-8a0b-1c2d3e4f5g6h\"\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://sandboxapi.kelviq.com/api/v1/license/validate/")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"licenseKey\": \"KLVQ-PRO-1234-ABCD-9999\",\n \"instanceId\": \"8f3e2b1a-5c6d-4e9f-8a0b-1c2d3e4f5g6h\"\n}")
.asString();
require 'uri'
require 'net/http'

url = URI("https://sandboxapi.kelviq.com/api/v1/license/validate/")

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 \"licenseKey\": \"KLVQ-PRO-1234-ABCD-9999\",\n \"instanceId\": \"8f3e2b1a-5c6d-4e9f-8a0b-1c2d3e4f5g6h\"\n}"

response = http.request(request)
puts response.read_body
{
  "valid": true,
  "code": "VALID",
  "detail": "Instance ID valid for this license.",
  "metadata": {
    "os": "macOS",
    "arch": "arm64"
  },
  "license": {
    "id": "7be7a5b6-7a0e-4178-a085-8ef48f0649ab",
    "licenseKey": "LIC-A8D5F89E-B46B-472C-9BED-66EE2545B85E",
    "activatedOn": "2026-01-22T03:26:56Z",
    "expiresOn": "2026-01-23T03:26:56Z",
    "activationUsage": 1,
    "activationLimit": 4,
    "enabled": true,
    "customer": {
      "customerId": "cfa95cf8c8d24e8b9d3d2d1ada98a94d",
      "name": "Geo",
      "email": "geo@kelviq.com"
    },
    "plan": {
      "identifier": "pro-yearly",
      "name": "Pro Yearly",
      "product": {
        "id": "d970ab2d-834f-4c52-8742-2e6ed7e8a31f",
        "identifier": "kelviq-engine",
        "name": "Kelviq Engine",
        "taxCode": "software"
      }
    },
    "subscription": {
      "id": "09d706ca-58f3-4fb2-818f-5b8623d67e6e",
      "recurrence": "1 month",
      "billingPeriodStartTime": "2026-01-22T03:26:56Z",
      "billingPeriodEndTime": "2026-02-22T03:26:56Z",
      "startDate": "2026-01-22",
      "endDate": null,
      "status": "active",
      "amount": "49.00",
      "currency": "usd",
      "trialDaysRemaining": 0,
      "billingType": "SUBSCRIPTION",
      "recurrenceUnit": 1,
      "recurrenceType": "MONTH"
    }
  }
}
Click the base URL in the API playground and select the Sandbox host for test data or the Production host for live data. Use credentials from the same environment.

Authorizations

Authorization
string
header
required

The Server API Key obtained from the kelviq application. Pass as a Bearer token in the Authorization header. Example: 'Authorization: Bearer YOUR_API_KEY'

Body

application/json
licenseKey
string
required
instanceId
string<uuid>

Response

Validation successful

valid
boolean
code
string
detail
string
metadata
object
license
object