Kora/extensions/core/API Reference

API Reference

The validation endpoints and the management API for licenses, products, policies, customers, addons, whitelists, access rules and logs.

Your product only needs POST /api/v1/licenses/validate, which is public, and GET /api/v1/public-key to check signatures. POST /api/v1/licenses/activate and POST /api/v1/licenses/deactivate manage device seats with the license key alone. See Checking a Key.

Everything else manages your data and needs an API token from API Tokens in the dashboard, sent as Authorization: Bearer <token>. Set host in the playground to your own API address.

POST
/v1/licenses/validate

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

curl -X POST "https://example.com/v1/licenses/validate" \  -H "Content-Type: application/json" \  -d '{    "license_key": "string"  }'
{  "valid": true,  "code": "string",  "message": "string",  "license": {    "key": "string",    "status": "string",    "product": {      "id": 0,      "name": "string",      "version": "string",      "active": true    },    "customer": {      "id": 0,      "name": "string",      "email": "string",      "discord_id": "string",      "blocked": true    },    "policy": {      "id": 0,      "name": "string",      "type": "subscription"    },    "addons": [      {}    ],    "expires_at": "string",    "whitelists": {      "property1": [        "string"      ],      "property2": [        "string"      ]    }  },  "timestamp": 0}
POST
/v1/licenses/activate

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

curl -X POST "https://example.com/v1/licenses/activate" \  -H "Content-Type: application/json" \  -d '{    "license_key": "string"  }'
{  "valid": true,  "code": "string",  "message": "string",  "license": {    "key": "string",    "status": "string",    "product": {      "id": 0,      "name": "string",      "version": "string",      "active": true    },    "customer": {      "id": 0,      "name": "string",      "email": "string",      "discord_id": "string",      "blocked": true    },    "policy": {      "id": 0,      "name": "string",      "type": "subscription"    },    "addons": [      {}    ],    "expires_at": "string",    "whitelists": {      "property1": [        "string"      ],      "property2": [        "string"      ]    }  },  "timestamp": 0}
POST
/v1/licenses/deactivate

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

curl -X POST "https://example.com/v1/licenses/deactivate" \  -H "Content-Type: application/json" \  -d '{    "license_key": "string"  }'
{  "success": true,  "code": "deactivated",  "message": "string",  "removed": 0,  "timestamp": 0}
GET
/v1/public-key

Response Body

application/json

curl -X GET "https://example.com/v1/public-key"
{  "algorithm": "string",  "publicKey": "string",  "raw": "string"}
GET
/v1/licenses
AuthorizationBearer <token>

API token created in Kora dashboard API Tokens page.

In: header

Query Parameters

search?string
product_id?integer
customer_id?integer
status?string
limit?integer
Default25
offset?integer
Default0

Response Body

application/json

application/json

curl -X GET "https://example.com/v1/licenses"
{  "total": 0,  "rows": [    {      "id": 0,      "key": "string",      "product_id": 0,      "customer_id": 0,      "policy_id": 0,      "policy_name": "string",      "max_machines": 0,      "status": "string",      "expires_at": "string",      "addons": [        0      ],      "last_validated_at": "string",      "leaked_at": "string",      "created_at": "string"    }  ]}
POST
/v1/licenses
AuthorizationBearer <token>

API token created in Kora dashboard API Tokens page.

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

curl -X POST "https://example.com/v1/licenses" \  -H "Content-Type: application/json" \  -d '{    "product_id": 0,    "customer_id": 0  }'
{  "id": 0,  "key": "string",  "product_id": 0,  "customer_id": 0,  "policy_id": 0,  "policy_name": "string",  "max_machines": 0,  "status": "string",  "expires_at": "string",  "addons": [    0  ],  "last_validated_at": "string",  "leaked_at": "string",  "created_at": "string"}
GET
/v1/licenses/{id}
AuthorizationBearer <token>

API token created in Kora dashboard API Tokens page.

In: header

Path Parameters

id*integer

Response Body

application/json

application/json

curl -X GET "https://example.com/v1/licenses/0"
{  "id": 0,  "key": "string",  "product_id": 0,  "customer_id": 0,  "policy_id": 0,  "policy_name": "string",  "max_machines": 0,  "status": "string",  "expires_at": "string",  "addons": [    0  ],  "last_validated_at": "string",  "leaked_at": "string",  "created_at": "string"}
PATCH
/v1/licenses/{id}
AuthorizationBearer <token>

API token created in Kora dashboard API Tokens page.

In: header

Path Parameters

id*integer

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

curl -X PATCH "https://example.com/v1/licenses/0" \  -H "Content-Type: application/json" \  -d '{    "product_id": 0,    "customer_id": 0  }'
{  "id": 0,  "key": "string",  "product_id": 0,  "customer_id": 0,  "policy_id": 0,  "policy_name": "string",  "max_machines": 0,  "status": "string",  "expires_at": "string",  "addons": [    0  ],  "last_validated_at": "string",  "leaked_at": "string",  "created_at": "string"}
DELETE
/v1/licenses/{id}
AuthorizationBearer <token>

API token created in Kora dashboard API Tokens page.

In: header

Path Parameters

id*integer

Response Body

application/json

curl -X DELETE "https://example.com/v1/licenses/0"
Empty
GET
/v1/licenses/{id}/file
AuthorizationBearer <token>

API token created in Kora dashboard API Tokens page.

In: header

Path Parameters

id*integer

Response Body

application/octet-stream

application/json

curl -X GET "https://example.com/v1/licenses/0/file"
"string"
GET
/v1/licenses/whitelists
AuthorizationBearer <token>

API token created in Kora dashboard API Tokens page.

In: header

Query Parameters

license_id*integer

Response Body

application/json

application/json

curl -X GET "https://example.com/v1/licenses/whitelists?license_id=0"
[  {    "id": 0,    "license_id": 0,    "group_id": 0,    "value": "string",    "created_at": "string"  }]
POST
/v1/licenses/whitelists
AuthorizationBearer <token>

API token created in Kora dashboard API Tokens page.

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

curl -X POST "https://example.com/v1/licenses/whitelists" \  -H "Content-Type: application/json" \  -d '{    "license_id": 0,    "group": "string",    "value": "string"  }'
Empty
DELETE
/v1/licenses/whitelists/{id}
AuthorizationBearer <token>

API token created in Kora dashboard API Tokens page.

In: header

Path Parameters

id*integer

Response Body

application/json

curl -X DELETE "https://example.com/v1/licenses/whitelists/0"
Empty
POST
/v1/licenses/whitelists/reset
AuthorizationBearer <token>

API token created in Kora dashboard API Tokens page.

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

curl -X POST "https://example.com/v1/licenses/whitelists/reset" \  -H "Content-Type: application/json" \  -d '{    "license_id": 0  }'
Empty
GET
/v1/products
AuthorizationBearer <token>

API token created in Kora dashboard API Tokens page.

In: header

Query Parameters

search?string
active?boolean
limit?integer
Default25
offset?integer
Default0

Response Body

application/json

application/json

curl -X GET "https://example.com/v1/products"
{  "total": 0,  "rows": [    {      "id": 0,      "name": "string",      "description": "string",      "version": "string",      "price": 0,      "currency": "string",      "duration": 0,      "duration_unit": "string",      "active": true,      "whitelist_groups": [        "string"      ],      "created_at": "string"    }  ]}
POST
/v1/products
AuthorizationBearer <token>

API token created in Kora dashboard API Tokens page.

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

curl -X POST "https://example.com/v1/products" \  -H "Content-Type: application/json" \  -d '{    "name": "string"  }'
{  "id": 0,  "name": "string",  "description": "string",  "version": "string",  "price": 0,  "currency": "string",  "duration": 0,  "duration_unit": "string",  "active": true,  "whitelist_groups": [    "string"  ],  "created_at": "string"}
GET
/v1/products/{id}
AuthorizationBearer <token>

API token created in Kora dashboard API Tokens page.

In: header

Path Parameters

id*integer

Response Body

application/json

application/json

curl -X GET "https://example.com/v1/products/0"
{  "id": 0,  "name": "string",  "description": "string",  "version": "string",  "price": 0,  "currency": "string",  "duration": 0,  "duration_unit": "string",  "active": true,  "whitelist_groups": [    "string"  ],  "created_at": "string"}
PATCH
/v1/products/{id}
AuthorizationBearer <token>

API token created in Kora dashboard API Tokens page.

In: header

Path Parameters

id*integer

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

curl -X PATCH "https://example.com/v1/products/0" \  -H "Content-Type: application/json" \  -d '{    "name": "string"  }'
{  "id": 0,  "name": "string",  "description": "string",  "version": "string",  "price": 0,  "currency": "string",  "duration": 0,  "duration_unit": "string",  "active": true,  "whitelist_groups": [    "string"  ],  "created_at": "string"}
DELETE
/v1/products/{id}
AuthorizationBearer <token>

API token created in Kora dashboard API Tokens page.

In: header

Path Parameters

id*integer

Response Body

application/json

curl -X DELETE "https://example.com/v1/products/0"
Empty
GET
/v1/customers
AuthorizationBearer <token>

API token created in Kora dashboard API Tokens page.

In: header

Query Parameters

search?string
limit?integer
Default25
offset?integer
Default0

Response Body

application/json

application/json

curl -X GET "https://example.com/v1/customers"
{  "total": 0,  "rows": [    {      "id": 0,      "name": "string",      "email": "string",      "discord_id": "string",      "blocked": true,      "notes": "string",      "created_at": "string"    }  ]}
POST
/v1/customers
AuthorizationBearer <token>

API token created in Kora dashboard API Tokens page.

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

curl -X POST "https://example.com/v1/customers" \  -H "Content-Type: application/json" \  -d '{    "name": "string"  }'
{  "id": 0,  "name": "string",  "email": "string",  "discord_id": "string",  "blocked": true,  "notes": "string",  "created_at": "string"}
GET
/v1/customers/{id}
AuthorizationBearer <token>

API token created in Kora dashboard API Tokens page.

In: header

Path Parameters

id*integer

Response Body

application/json

application/json

curl -X GET "https://example.com/v1/customers/0"
{  "id": 0,  "name": "string",  "email": "string",  "discord_id": "string",  "blocked": true,  "notes": "string",  "created_at": "string"}
PATCH
/v1/customers/{id}
AuthorizationBearer <token>

API token created in Kora dashboard API Tokens page.

In: header

Path Parameters

id*integer

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

curl -X PATCH "https://example.com/v1/customers/0" \  -H "Content-Type: application/json" \  -d '{    "name": "string"  }'
{  "id": 0,  "name": "string",  "email": "string",  "discord_id": "string",  "blocked": true,  "notes": "string",  "created_at": "string"}
DELETE
/v1/customers/{id}
AuthorizationBearer <token>

API token created in Kora dashboard API Tokens page.

In: header

Path Parameters

id*integer

Response Body

application/json

curl -X DELETE "https://example.com/v1/customers/0"
Empty
POST
/v1/customers/{id}/merge
AuthorizationBearer <token>

API token created in Kora dashboard API Tokens page.

In: header

Path Parameters

id*integer

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

curl -X POST "https://example.com/v1/customers/0/merge" \  -H "Content-Type: application/json" \  -d '{    "customer_id": 0  }'
{  "id": 0,  "name": "string",  "email": "string",  "discord_id": "string",  "blocked": true,  "notes": "string",  "created_at": "string"}
GET
/v1/policies
AuthorizationBearer <token>

API token created in Kora dashboard API Tokens page.

In: header

Query Parameters

product_id?integer
type?string

Value in

  • "subscription"
  • "perpetual"

Response Body

application/json

application/json

curl -X GET "https://example.com/v1/policies"
{  "total": 0,  "rows": [    {      "id": 0,      "product_id": 0,      "product_name": "string",      "name": "string",      "type": "subscription",      "max_machines": 0,      "duration": 0,      "duration_unit": "days",      "addons": [        0      ],      "licenses": 0,      "created_at": "string"    }  ]}
POST
/v1/policies
AuthorizationBearer <token>

API token created in Kora dashboard API Tokens page.

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

curl -X POST "https://example.com/v1/policies" \  -H "Content-Type: application/json" \  -d '{    "product_id": 0,    "name": "string"  }'
{  "id": 0,  "product_id": 0,  "product_name": "string",  "name": "string",  "type": "subscription",  "max_machines": 0,  "duration": 0,  "duration_unit": "days",  "addons": [    0  ],  "licenses": 0,  "created_at": "string"}
GET
/v1/policies/{id}
AuthorizationBearer <token>

API token created in Kora dashboard API Tokens page.

In: header

Path Parameters

id*integer

Response Body

application/json

application/json

curl -X GET "https://example.com/v1/policies/0"
{  "id": 0,  "product_id": 0,  "product_name": "string",  "name": "string",  "type": "subscription",  "max_machines": 0,  "duration": 0,  "duration_unit": "days",  "addons": [    0  ],  "licenses": 0,  "created_at": "string"}
PATCH
/v1/policies/{id}
AuthorizationBearer <token>

API token created in Kora dashboard API Tokens page.

In: header

Path Parameters

id*integer

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

curl -X PATCH "https://example.com/v1/policies/0" \  -H "Content-Type: application/json" \  -d '{    "product_id": 0,    "name": "string"  }'
{  "id": 0,  "product_id": 0,  "product_name": "string",  "name": "string",  "type": "subscription",  "max_machines": 0,  "duration": 0,  "duration_unit": "days",  "addons": [    0  ],  "licenses": 0,  "created_at": "string"}
DELETE
/v1/policies/{id}
AuthorizationBearer <token>

API token created in Kora dashboard API Tokens page.

In: header

Path Parameters

id*integer

Response Body

application/json

curl -X DELETE "https://example.com/v1/policies/0"
Empty
GET
/v1/addons
AuthorizationBearer <token>

API token created in Kora dashboard API Tokens page.

In: header

Query Parameters

product_id?integer

Response Body

application/json

application/json

curl -X GET "https://example.com/v1/addons"
{  "total": 0,  "rows": [    {      "id": 0,      "product_id": 0,      "name": "string",      "price": 0,      "currency": "string",      "created_at": "string"    }  ]}
POST
/v1/addons
AuthorizationBearer <token>

API token created in Kora dashboard API Tokens page.

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

curl -X POST "https://example.com/v1/addons" \  -H "Content-Type: application/json" \  -d '{    "product_id": 0,    "name": "string"  }'
{  "id": 0,  "product_id": 0,  "name": "string",  "price": 0,  "currency": "string",  "created_at": "string"}
GET
/v1/addons/{id}
AuthorizationBearer <token>

API token created in Kora dashboard API Tokens page.

In: header

Path Parameters

id*integer

Response Body

application/json

application/json

curl -X GET "https://example.com/v1/addons/0"
{  "id": 0,  "product_id": 0,  "name": "string",  "price": 0,  "currency": "string",  "created_at": "string"}
PATCH
/v1/addons/{id}
AuthorizationBearer <token>

API token created in Kora dashboard API Tokens page.

In: header

Path Parameters

id*integer

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

curl -X PATCH "https://example.com/v1/addons/0" \  -H "Content-Type: application/json" \  -d '{    "product_id": 0,    "name": "string"  }'
{  "id": 0,  "product_id": 0,  "name": "string",  "price": 0,  "currency": "string",  "created_at": "string"}
DELETE
/v1/addons/{id}
AuthorizationBearer <token>

API token created in Kora dashboard API Tokens page.

In: header

Path Parameters

id*integer

Response Body

application/json

curl -X DELETE "https://example.com/v1/addons/0"
Empty
GET
/v1/whitelists/groups
AuthorizationBearer <token>

API token created in Kora dashboard API Tokens page.

In: header

Response Body

application/json

application/json

curl -X GET "https://example.com/v1/whitelists/groups"
{  "total": 0,  "rows": [    {      "id": 0,      "name": "string",      "type": "ip",      "key": "string",      "limit": 0,      "description": "string",      "created_at": "string"    }  ]}
POST
/v1/whitelists/groups
AuthorizationBearer <token>

API token created in Kora dashboard API Tokens page.

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

curl -X POST "https://example.com/v1/whitelists/groups" \  -H "Content-Type: application/json" \  -d '{    "name": "string",    "type": "ip"  }'
{  "id": 0,  "name": "string",  "type": "ip",  "key": "string",  "limit": 0,  "description": "string",  "created_at": "string"}
GET
/v1/whitelists/groups/{id}
AuthorizationBearer <token>

API token created in Kora dashboard API Tokens page.

In: header

Path Parameters

id*integer

Response Body

application/json

application/json

curl -X GET "https://example.com/v1/whitelists/groups/0"
{  "id": 0,  "name": "string",  "type": "ip",  "key": "string",  "limit": 0,  "description": "string",  "created_at": "string"}
PATCH
/v1/whitelists/groups/{id}
AuthorizationBearer <token>

API token created in Kora dashboard API Tokens page.

In: header

Path Parameters

id*integer

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

curl -X PATCH "https://example.com/v1/whitelists/groups/0" \  -H "Content-Type: application/json" \  -d '{    "name": "string",    "type": "ip"  }'
{  "id": 0,  "name": "string",  "type": "ip",  "key": "string",  "limit": 0,  "description": "string",  "created_at": "string"}
DELETE
/v1/whitelists/groups/{id}
AuthorizationBearer <token>

API token created in Kora dashboard API Tokens page.

In: header

Path Parameters

id*integer

Response Body

application/json

curl -X DELETE "https://example.com/v1/whitelists/groups/0"
Empty
POST
/v1/whitelists/attach
AuthorizationBearer <token>

API token created in Kora dashboard API Tokens page.

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

curl -X POST "https://example.com/v1/whitelists/attach" \  -H "Content-Type: application/json" \  -d '{    "product_id": 0,    "group": "string"  }'
Empty
POST
/v1/whitelists/detach
AuthorizationBearer <token>

API token created in Kora dashboard API Tokens page.

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

curl -X POST "https://example.com/v1/whitelists/detach" \  -H "Content-Type: application/json" \  -d '{    "product_id": 0,    "group": "string"  }'
Empty
GET
/v1/rules
AuthorizationBearer <token>

API token created in Kora dashboard API Tokens page.

In: header

Query Parameters

mode?string

Value in

  • "block"
  • "exclude"
type?string

Value in

  • "ip"
  • "device"
  • "country"
product_id?integer

Response Body

application/json

application/json

curl -X GET "https://example.com/v1/rules"
{  "success": true,  "total": 0,  "rules": [    {      "id": 0,      "type": "ip",      "mode": "block",      "value": "string",      "product_id": 0,      "product_name": "string",      "note": "string",      "hits": 0,      "created_at": "string"    }  ]}
POST
/v1/rules
AuthorizationBearer <token>

API token created in Kora dashboard API Tokens page.

In: header

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

curl -X POST "https://example.com/v1/rules" \  -H "Content-Type: application/json" \  -d '{    "type": "ip",    "value": "string"  }'
{  "id": 0,  "type": "ip",  "mode": "block",  "value": "string",  "product_id": 0,  "product_name": "string",  "note": "string",  "hits": 0,  "created_at": "string"}
GET
/v1/rules/{id}
AuthorizationBearer <token>

API token created in Kora dashboard API Tokens page.

In: header

Path Parameters

id*integer

Response Body

application/json

application/json

curl -X GET "https://example.com/v1/rules/0"
{  "id": 0,  "type": "ip",  "mode": "block",  "value": "string",  "product_id": 0,  "product_name": "string",  "note": "string",  "hits": 0,  "created_at": "string"}
PATCH
/v1/rules/{id}
AuthorizationBearer <token>

API token created in Kora dashboard API Tokens page.

In: header

Path Parameters

id*integer

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

curl -X PATCH "https://example.com/v1/rules/0" \  -H "Content-Type: application/json" \  -d '{    "type": "ip",    "value": "string"  }'
{  "id": 0,  "type": "ip",  "mode": "block",  "value": "string",  "product_id": 0,  "product_name": "string",  "note": "string",  "hits": 0,  "created_at": "string"}
DELETE
/v1/rules/{id}
AuthorizationBearer <token>

API token created in Kora dashboard API Tokens page.

In: header

Path Parameters

id*integer

Response Body

application/json

curl -X DELETE "https://example.com/v1/rules/0"
Empty
GET
/v1/validations
AuthorizationBearer <token>

API token created in Kora dashboard API Tokens page.

In: header

Query Parameters

license_id?integer
product_id?integer
code?string
valid?boolean
search?string
limit?integer
Default25
offset?integer
Default0

Response Body

application/json

application/json

curl -X GET "https://example.com/v1/validations"
{  "total": 0,  "rows": [    {      "id": 0,      "license_id": 0,      "product_id": 0,      "key": "string",      "code": "string",      "valid": true,      "ip": "string",      "hwid": "string",      "version": "string",      "excluded": true,      "created_at": "string"    }  ]}