License Keys
Validate License Key
Validate a license key.
Scopes: license_keys:write
POST
/
v1
/
license-keys
/
validate
python (new sdk)
from polar.v2026_04 import Polar
polar = Polar("polar_oat_xxx")
response = polar.license_keys.validate(
key='string',
organization_id='00000000-0000-4000-8000-000000000000',
)
print(response)import { createPolar } from "@polar-sh/sdk/2026-04";
const polar = createPolar({
accessToken: "polar_oat_xxx",
});
const response = await polar.licenseKeys.validate(
{
"key": "string",
"organization_id": "00000000-0000-4000-8000-000000000000"
},
);
console.log(response);curl --request POST \
--url https://api.polar.sh/v1/license-keys/validate \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"key": "<string>",
"organization_id": "<string>",
"activation_id": "<string>",
"benefit_id": "<string>",
"customer_id": "<string>",
"increment_usage": 1,
"conditions": {}
}
'import requests
url = "https://api.polar.sh/v1/license-keys/validate"
payload = {
"key": "<string>",
"organization_id": "<string>",
"activation_id": "<string>",
"benefit_id": "<string>",
"customer_id": "<string>",
"increment_usage": 1,
"conditions": {}
}
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({
key: '<string>',
organization_id: '<string>',
activation_id: '<string>',
benefit_id: '<string>',
customer_id: '<string>',
increment_usage: 1,
conditions: {}
})
};
fetch('https://api.polar.sh/v1/license-keys/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://api.polar.sh/v1/license-keys/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([
'key' => '<string>',
'organization_id' => '<string>',
'activation_id' => '<string>',
'benefit_id' => '<string>',
'customer_id' => '<string>',
'increment_usage' => 1,
'conditions' => [
]
]),
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.polar.sh/v1/license-keys/validate"
payload := strings.NewReader("{\n \"key\": \"<string>\",\n \"organization_id\": \"<string>\",\n \"activation_id\": \"<string>\",\n \"benefit_id\": \"<string>\",\n \"customer_id\": \"<string>\",\n \"increment_usage\": 1,\n \"conditions\": {}\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.polar.sh/v1/license-keys/validate")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"key\": \"<string>\",\n \"organization_id\": \"<string>\",\n \"activation_id\": \"<string>\",\n \"benefit_id\": \"<string>\",\n \"customer_id\": \"<string>\",\n \"increment_usage\": 1,\n \"conditions\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.polar.sh/v1/license-keys/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 \"key\": \"<string>\",\n \"organization_id\": \"<string>\",\n \"activation_id\": \"<string>\",\n \"benefit_id\": \"<string>\",\n \"customer_id\": \"<string>\",\n \"increment_usage\": 1,\n \"conditions\": {}\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"modified_at": "2023-11-07T05:31:56Z",
"organization_id": "<string>",
"customer_id": "<string>",
"customer": {
"id": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"modified_at": "2023-11-07T05:31:56Z",
"metadata": {},
"email_verified": true,
"name": "John Doe",
"billing_name": "John Doe",
"billing_address": {
"line1": "<string>",
"line2": "<string>",
"postal_code": "<string>",
"city": "<string>",
"state": "<string>"
},
"tax_id": {
"[0]": "<string>"
},
"organization_id": "<string>",
"deleted_at": "2023-11-07T05:31:56Z",
"avatar_url": "https://www.gravatar.com/avatar/xxx?d=404",
"external_id": "usr_1337",
"email": "customer@example.com",
"locale": "<string>",
"default_payment_method_id": "<string>"
},
"benefit_id": "<string>",
"key": "<string>",
"display_key": "<string>",
"limit_activations": 123,
"usage": 123,
"limit_usage": 123,
"validations": 123,
"last_validated_at": "2023-11-07T05:31:56Z",
"expires_at": "2023-11-07T05:31:56Z",
"activation": {
"id": "<string>",
"license_key_id": "<string>",
"label": "<string>",
"meta": {},
"created_at": "2023-11-07T05:31:56Z",
"modified_at": "2023-11-07T05:31:56Z"
}
}{
"error": "<string>",
"detail": "<string>"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Authorizations
patoat
Body
application/json
The benefit ID.
Required range:
x >= 0Key-value object allowing you to set conditions that must match when validating the license key.
The key must be a string with a maximum length of 40 characters. The value must be either:
- A string with a maximum length of 500 characters
- An integer
- A floating-point number
- A boolean
You can store up to 50 key-value pairs.
Show child attributes
Show child attributes
Response
Successful Response
The ID of the object.
Creation timestamp of the object.
Last modification timestamp of the object.
Show child attributes
Show child attributes
The benefit ID.
Available options:
granted, revoked, disabled Show child attributes
Show child attributes
Was this page helpful?
⌘I
python (new sdk)
from polar.v2026_04 import Polar
polar = Polar("polar_oat_xxx")
response = polar.license_keys.validate(
key='string',
organization_id='00000000-0000-4000-8000-000000000000',
)
print(response)import { createPolar } from "@polar-sh/sdk/2026-04";
const polar = createPolar({
accessToken: "polar_oat_xxx",
});
const response = await polar.licenseKeys.validate(
{
"key": "string",
"organization_id": "00000000-0000-4000-8000-000000000000"
},
);
console.log(response);curl --request POST \
--url https://api.polar.sh/v1/license-keys/validate \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"key": "<string>",
"organization_id": "<string>",
"activation_id": "<string>",
"benefit_id": "<string>",
"customer_id": "<string>",
"increment_usage": 1,
"conditions": {}
}
'import requests
url = "https://api.polar.sh/v1/license-keys/validate"
payload = {
"key": "<string>",
"organization_id": "<string>",
"activation_id": "<string>",
"benefit_id": "<string>",
"customer_id": "<string>",
"increment_usage": 1,
"conditions": {}
}
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({
key: '<string>',
organization_id: '<string>',
activation_id: '<string>',
benefit_id: '<string>',
customer_id: '<string>',
increment_usage: 1,
conditions: {}
})
};
fetch('https://api.polar.sh/v1/license-keys/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://api.polar.sh/v1/license-keys/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([
'key' => '<string>',
'organization_id' => '<string>',
'activation_id' => '<string>',
'benefit_id' => '<string>',
'customer_id' => '<string>',
'increment_usage' => 1,
'conditions' => [
]
]),
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.polar.sh/v1/license-keys/validate"
payload := strings.NewReader("{\n \"key\": \"<string>\",\n \"organization_id\": \"<string>\",\n \"activation_id\": \"<string>\",\n \"benefit_id\": \"<string>\",\n \"customer_id\": \"<string>\",\n \"increment_usage\": 1,\n \"conditions\": {}\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.polar.sh/v1/license-keys/validate")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"key\": \"<string>\",\n \"organization_id\": \"<string>\",\n \"activation_id\": \"<string>\",\n \"benefit_id\": \"<string>\",\n \"customer_id\": \"<string>\",\n \"increment_usage\": 1,\n \"conditions\": {}\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.polar.sh/v1/license-keys/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 \"key\": \"<string>\",\n \"organization_id\": \"<string>\",\n \"activation_id\": \"<string>\",\n \"benefit_id\": \"<string>\",\n \"customer_id\": \"<string>\",\n \"increment_usage\": 1,\n \"conditions\": {}\n}"
response = http.request(request)
puts response.read_body{
"id": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"modified_at": "2023-11-07T05:31:56Z",
"organization_id": "<string>",
"customer_id": "<string>",
"customer": {
"id": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"modified_at": "2023-11-07T05:31:56Z",
"metadata": {},
"email_verified": true,
"name": "John Doe",
"billing_name": "John Doe",
"billing_address": {
"line1": "<string>",
"line2": "<string>",
"postal_code": "<string>",
"city": "<string>",
"state": "<string>"
},
"tax_id": {
"[0]": "<string>"
},
"organization_id": "<string>",
"deleted_at": "2023-11-07T05:31:56Z",
"avatar_url": "https://www.gravatar.com/avatar/xxx?d=404",
"external_id": "usr_1337",
"email": "customer@example.com",
"locale": "<string>",
"default_payment_method_id": "<string>"
},
"benefit_id": "<string>",
"key": "<string>",
"display_key": "<string>",
"limit_activations": 123,
"usage": 123,
"limit_usage": 123,
"validations": 123,
"last_validated_at": "2023-11-07T05:31:56Z",
"expires_at": "2023-11-07T05:31:56Z",
"activation": {
"id": "<string>",
"license_key_id": "<string>",
"label": "<string>",
"meta": {},
"created_at": "2023-11-07T05:31:56Z",
"modified_at": "2023-11-07T05:31:56Z"
}
}{
"error": "<string>",
"detail": "<string>"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}
