Keys
Create, look up, edit, reset and export keys, and ban devices.
Each key belongs to one software and has a duration and a device limit. Time starts at its first successful check.
Keep in mind
- Keys are addressed by value
- Actions on one key take the full key in
key. Keys have no numeric id in the API. - Durations
- Days, a negative number for hours, or
lifetimefor a key that never expires. - Key format
- Patterns can use
{RANDOM:N},{NAME},{DURATION},{UPLINK}and{GAME}. - Export is a file
export-keysanswers with a txt, csv or json file instead of the JSON envelope.
List keys
https://dev.mod.wtf/api/v2/action
methodget-keys
List software keys.
Body
-
soft_idinteger requiredID of a software you own
-
qstring optionalSubstring search
-
statusoptionalFilter: 1 normal, 0 blocked
-
activeboolean optionalFilter: 1 active, 0 paused
-
gamestring optionalFilter by game
-
key_typestring optionalFilter by type: APK or INJECTOR
-
limitinteger optionalNumber of records to return, 1..200, default 50
-
offsetinteger optionalNumber of records to skip for pagination
Errors it can return
POST /api/v2/action HTTP/1.1
Host: dev.mod.wtf
Content-Type: application/json
Accept: application/json
{
"api_key": "YOUR_API_KEY",
"method": "get-keys",
"soft_id": 123
}
curl -sS -X POST 'https://dev.mod.wtf/api/v2/action' \
-H 'Content-Type: application/json' \
-d '{
"api_key": "YOUR_API_KEY",
"method": "get-keys",
"soft_id": 123
}'
const response = await fetch("https://dev.mod.wtf/api/v2/action", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
"api_key": "YOUR_API_KEY",
"method": "get-keys",
"soft_id": 123
}),
});
const result = await response.json();
$ch = curl_init('https://dev.mod.wtf/api/v2/action');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
CURLOPT_POSTFIELDS => json_encode([
'api_key' => 'YOUR_API_KEY',
'method' => 'get-keys',
'soft_id' => 123,
]),
]);
$result = json_decode(curl_exec($ch), true);
import requests
response = requests.post(
"https://dev.mod.wtf/api/v2/action",
json={
"api_key": "YOUR_API_KEY",
"method": "get-keys",
"soft_id": 123,
},
timeout=10,
)
result = response.json()
{
"ok": true,
"data": {
"total": 150,
"limit": 50,
"offset": 0,
"items": [
{
"id": 100,
"key": "MYCHEATS-7D-AB12CD34",
"game": "standoff2",
"soft_id": 123,
"duration": 7,
"expired_date": null,
"max_devices": 2,
"devices": [],
"devices_used": 0,
"status": 1,
"active": 1,
"single": false,
"is_admin": false,
"hwid_reset_limit": 2,
"hwid_resets_used": 0,
"registrator": "JohnDoe",
"registrator_id": 1,
"key_type": "APK",
"created_at": "2025-06-01 12:00:00",
"updated_at": "2025-06-01 12:00:00"
}
]
}
}
{
"ok": false,
"error": "not_found",
"message": "soft not found or not yours"
}
{
"ok": false,
"error": "unauthorized",
"message": "Invalid or missing api_key"
}
Create keys
https://dev.mod.wtf/api/v2/action
methodcreate-keys
Generate 1 to 1000 keys. Uses the software key_format unless overridden.
Body
-
soft_idinteger requiredID of a software you own
-
gamestring requiredGame identifier, for example
standoff2 -
durationinteger | string requiredDays, a negative number for hours, or
lifetimefor a key that never expires -
max_devicesinteger optionalInteger of at least 1, default 1
-
key_typestring optionalAPK or INJECTOR, default APK
-
countinteger optionalDefault 1, maximum 1000
-
singleboolean optionalSingle-use key: it is deleted right after its first successful binding
-
key_formatstring optionalPattern using {RANDOM:N}, {NAME}, {DURATION}, {UPLINK}, {GAME}
-
hwid_reset_limitinteger optional-1 for unlimited, or 0 to 1000
Errors it can return
POST /api/v2/action HTTP/1.1
Host: dev.mod.wtf
Content-Type: application/json
Accept: application/json
{
"api_key": "YOUR_API_KEY",
"method": "create-keys",
"soft_id": 123,
"game": "standoff2",
"duration": 7,
"count": 5,
"max_devices": 1
}
curl -sS -X POST 'https://dev.mod.wtf/api/v2/action' \
-H 'Content-Type: application/json' \
-d '{
"api_key": "YOUR_API_KEY",
"method": "create-keys",
"soft_id": 123,
"game": "standoff2",
"duration": 7,
"count": 5,
"max_devices": 1
}'
const response = await fetch("https://dev.mod.wtf/api/v2/action", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
"api_key": "YOUR_API_KEY",
"method": "create-keys",
"soft_id": 123,
"game": "standoff2",
"duration": 7,
"count": 5,
"max_devices": 1
}),
});
const result = await response.json();
$ch = curl_init('https://dev.mod.wtf/api/v2/action');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
CURLOPT_POSTFIELDS => json_encode([
'api_key' => 'YOUR_API_KEY',
'method' => 'create-keys',
'soft_id' => 123,
'game' => 'standoff2',
'duration' => 7,
'count' => 5,
'max_devices' => 1,
]),
]);
$result = json_decode(curl_exec($ch), true);
import requests
response = requests.post(
"https://dev.mod.wtf/api/v2/action",
json={
"api_key": "YOUR_API_KEY",
"method": "create-keys",
"soft_id": 123,
"game": "standoff2",
"duration": 7,
"count": 5,
"max_devices": 1,
},
timeout=10,
)
result = response.json()
{
"ok": true,
"data": {
"count": 5,
"items": [
{
"id": 100,
"key": "MYCHEATS-7D-AB12CD34",
"game": "standoff2",
"soft_id": 123,
"duration": 7,
"expired_date": null,
"max_devices": 1,
"devices": [],
"devices_used": 0,
"status": 1,
"active": 1,
"single": false,
"is_admin": false,
"hwid_reset_limit": 2,
"hwid_resets_used": 0,
"registrator": "JohnDoe",
"registrator_id": 1,
"key_type": "APK",
"created_at": "2025-06-01 12:00:00",
"updated_at": "2025-06-01 12:00:00"
}
]
}
}
{
"ok": false,
"error": "validation",
"message": "count must be 1..1000"
}
{
"ok": false,
"error": "unauthorized",
"message": "Invalid or missing api_key"
}
Get key
https://dev.mod.wtf/api/v2/action
methodget-key
Get one key by its user_key string.
Body
-
keystring requiredLicense key string (user_key)
-
soft_idinteger requiredID of a software you own
Errors it can return
POST /api/v2/action HTTP/1.1
Host: dev.mod.wtf
Content-Type: application/json
Accept: application/json
{
"api_key": "YOUR_API_KEY",
"method": "get-key",
"soft_id": 123,
"key": "KEY-EXAMPLE"
}
curl -sS -X POST 'https://dev.mod.wtf/api/v2/action' \
-H 'Content-Type: application/json' \
-d '{
"api_key": "YOUR_API_KEY",
"method": "get-key",
"soft_id": 123,
"key": "KEY-EXAMPLE"
}'
const response = await fetch("https://dev.mod.wtf/api/v2/action", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
"api_key": "YOUR_API_KEY",
"method": "get-key",
"soft_id": 123,
"key": "KEY-EXAMPLE"
}),
});
const result = await response.json();
$ch = curl_init('https://dev.mod.wtf/api/v2/action');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
CURLOPT_POSTFIELDS => json_encode([
'api_key' => 'YOUR_API_KEY',
'method' => 'get-key',
'soft_id' => 123,
'key' => 'KEY-EXAMPLE',
]),
]);
$result = json_decode(curl_exec($ch), true);
import requests
response = requests.post(
"https://dev.mod.wtf/api/v2/action",
json={
"api_key": "YOUR_API_KEY",
"method": "get-key",
"soft_id": 123,
"key": "KEY-EXAMPLE",
},
timeout=10,
)
result = response.json()
{
"ok": true,
"data": {
"id": 100,
"key": "MYCHEATS-7D-AB12CD34",
"game": "standoff2",
"soft_id": 123,
"duration": 7,
"expired_date": null,
"max_devices": 2,
"devices": [],
"devices_used": 0,
"status": 1,
"active": 1,
"single": false,
"is_admin": false,
"hwid_reset_limit": 2,
"hwid_resets_used": 0,
"registrator": "JohnDoe",
"registrator_id": 1,
"key_type": "APK",
"created_at": "2025-06-01 12:00:00",
"updated_at": "2025-06-01 12:00:00"
}
}
{
"ok": false,
"error": "not_found",
"message": "key not found"
}
{
"ok": false,
"error": "unauthorized",
"message": "Invalid or missing api_key"
}
Update key
https://dev.mod.wtf/api/v2/action
methodedit-key
Update one key.
Body
-
keystring requiredLicense key string (user_key)
-
soft_idinteger requiredID of a software you own
-
durationinteger | string optionalDays, a negative number for hours, or
lifetime -
max_devicesinteger optionalInteger of at least 1
-
hwid_reset_limitinteger optional-1 for unlimited, or 0 to 1000
-
activeboolean optionalTrue resumes the key, false pauses it
-
statusoptional1 or true unblocks the key, 0 or false blocks it
-
key_typestring optionalAPK or INJECTOR
Errors it can return
POST /api/v2/action HTTP/1.1
Host: dev.mod.wtf
Content-Type: application/json
Accept: application/json
{
"api_key": "YOUR_API_KEY",
"method": "edit-key",
"soft_id": 123,
"key": "KEY-EXAMPLE",
"duration": 30,
"max_devices": 5
}
curl -sS -X POST 'https://dev.mod.wtf/api/v2/action' \
-H 'Content-Type: application/json' \
-d '{
"api_key": "YOUR_API_KEY",
"method": "edit-key",
"soft_id": 123,
"key": "KEY-EXAMPLE",
"duration": 30,
"max_devices": 5
}'
const response = await fetch("https://dev.mod.wtf/api/v2/action", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
"api_key": "YOUR_API_KEY",
"method": "edit-key",
"soft_id": 123,
"key": "KEY-EXAMPLE",
"duration": 30,
"max_devices": 5
}),
});
const result = await response.json();
$ch = curl_init('https://dev.mod.wtf/api/v2/action');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
CURLOPT_POSTFIELDS => json_encode([
'api_key' => 'YOUR_API_KEY',
'method' => 'edit-key',
'soft_id' => 123,
'key' => 'KEY-EXAMPLE',
'duration' => 30,
'max_devices' => 5,
]),
]);
$result = json_decode(curl_exec($ch), true);
import requests
response = requests.post(
"https://dev.mod.wtf/api/v2/action",
json={
"api_key": "YOUR_API_KEY",
"method": "edit-key",
"soft_id": 123,
"key": "KEY-EXAMPLE",
"duration": 30,
"max_devices": 5,
},
timeout=10,
)
result = response.json()
{
"ok": true,
"data": {
"id": 100,
"key": "MYCHEATS-7D-AB12CD34",
"game": "standoff2",
"soft_id": 123,
"duration": 30,
"expired_date": null,
"max_devices": 5,
"devices": [],
"devices_used": 0,
"status": 1,
"active": 1,
"single": false,
"is_admin": false,
"hwid_reset_limit": 2,
"hwid_resets_used": 0,
"registrator": "JohnDoe",
"registrator_id": 1,
"key_type": "APK",
"created_at": "2025-06-01 12:00:00",
"updated_at": "2025-06-01 12:00:00"
}
}
{
"ok": false,
"error": "validation",
"message": "invalid duration"
}
{
"ok": false,
"error": "unauthorized",
"message": "Invalid or missing api_key"
}
Delete key
https://dev.mod.wtf/api/v2/action
methoddelete-key
Delete one key.
Body
-
keystring requiredLicense key string (user_key)
-
soft_idinteger requiredID of a software you own
Errors it can return
POST /api/v2/action HTTP/1.1
Host: dev.mod.wtf
Content-Type: application/json
Accept: application/json
{
"api_key": "YOUR_API_KEY",
"method": "delete-key",
"soft_id": 123,
"key": "KEY-EXAMPLE"
}
curl -sS -X POST 'https://dev.mod.wtf/api/v2/action' \
-H 'Content-Type: application/json' \
-d '{
"api_key": "YOUR_API_KEY",
"method": "delete-key",
"soft_id": 123,
"key": "KEY-EXAMPLE"
}'
const response = await fetch("https://dev.mod.wtf/api/v2/action", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
"api_key": "YOUR_API_KEY",
"method": "delete-key",
"soft_id": 123,
"key": "KEY-EXAMPLE"
}),
});
const result = await response.json();
$ch = curl_init('https://dev.mod.wtf/api/v2/action');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
CURLOPT_POSTFIELDS => json_encode([
'api_key' => 'YOUR_API_KEY',
'method' => 'delete-key',
'soft_id' => 123,
'key' => 'KEY-EXAMPLE',
]),
]);
$result = json_decode(curl_exec($ch), true);
import requests
response = requests.post(
"https://dev.mod.wtf/api/v2/action",
json={
"api_key": "YOUR_API_KEY",
"method": "delete-key",
"soft_id": 123,
"key": "KEY-EXAMPLE",
},
timeout=10,
)
result = response.json()
{
"ok": true,
"data": {
"deleted": true,
"key": "MYCHEATS-7D-AB12CD34"
}
}
{
"ok": false,
"error": "not_found",
"message": "key not found"
}
{
"ok": false,
"error": "unauthorized",
"message": "Invalid or missing api_key"
}
Reset key HWID
https://dev.mod.wtf/api/v2/action
methodreset-key-hwid
Reset a key's linked devices and increment hwid_resets_used by 1.
Body
-
keystring requiredLicense key string (user_key)
-
soft_idinteger requiredID of a software you own
Errors it can return
POST /api/v2/action HTTP/1.1
Host: dev.mod.wtf
Content-Type: application/json
Accept: application/json
{
"api_key": "YOUR_API_KEY",
"method": "reset-key-hwid",
"soft_id": 123,
"key": "KEY-EXAMPLE"
}
curl -sS -X POST 'https://dev.mod.wtf/api/v2/action' \
-H 'Content-Type: application/json' \
-d '{
"api_key": "YOUR_API_KEY",
"method": "reset-key-hwid",
"soft_id": 123,
"key": "KEY-EXAMPLE"
}'
const response = await fetch("https://dev.mod.wtf/api/v2/action", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
"api_key": "YOUR_API_KEY",
"method": "reset-key-hwid",
"soft_id": 123,
"key": "KEY-EXAMPLE"
}),
});
const result = await response.json();
$ch = curl_init('https://dev.mod.wtf/api/v2/action');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
CURLOPT_POSTFIELDS => json_encode([
'api_key' => 'YOUR_API_KEY',
'method' => 'reset-key-hwid',
'soft_id' => 123,
'key' => 'KEY-EXAMPLE',
]),
]);
$result = json_decode(curl_exec($ch), true);
import requests
response = requests.post(
"https://dev.mod.wtf/api/v2/action",
json={
"api_key": "YOUR_API_KEY",
"method": "reset-key-hwid",
"soft_id": 123,
"key": "KEY-EXAMPLE",
},
timeout=10,
)
result = response.json()
{
"ok": true,
"data": {
"id": 100,
"key": "MYCHEATS-7D-AB12CD34",
"game": "standoff2",
"soft_id": 123,
"duration": 7,
"expired_date": null,
"max_devices": 2,
"devices": [],
"devices_used": 0,
"status": 1,
"active": 1,
"single": false,
"is_admin": false,
"hwid_reset_limit": 2,
"hwid_resets_used": 1,
"registrator": "JohnDoe",
"registrator_id": 1,
"key_type": "APK",
"created_at": "2025-06-01 12:00:00",
"updated_at": "2025-06-01 12:00:00"
}
}
{
"ok": false,
"error": "not_found",
"message": "key not found"
}
{
"ok": false,
"error": "unauthorized",
"message": "Invalid or missing api_key"
}
Export keys
https://dev.mod.wtf/api/v2/action
methodexport-keys
Export a list as a file, up to 10000 rows.
Body
-
soft_idinteger requiredID of a software you own
-
formatstring optionalExport format: txt, csv or json
-
gamestring optionalFilter by game
-
activeboolean optionalFilter: 1 active, 0 paused
Errors it can return
A file, not JSON
A successful export answers with the file itself, up to 10000 rows.
POST /api/v2/action HTTP/1.1
Host: dev.mod.wtf
Content-Type: application/json
Accept: application/json
{
"api_key": "YOUR_API_KEY",
"method": "export-keys",
"soft_id": 123
}
curl -sS -X POST 'https://dev.mod.wtf/api/v2/action' \
-H 'Content-Type: application/json' \
-d '{
"api_key": "YOUR_API_KEY",
"method": "export-keys",
"soft_id": 123
}'
const response = await fetch("https://dev.mod.wtf/api/v2/action", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
"api_key": "YOUR_API_KEY",
"method": "export-keys",
"soft_id": 123
}),
});
const result = await response.json();
$ch = curl_init('https://dev.mod.wtf/api/v2/action');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
CURLOPT_POSTFIELDS => json_encode([
'api_key' => 'YOUR_API_KEY',
'method' => 'export-keys',
'soft_id' => 123,
]),
]);
$result = json_decode(curl_exec($ch), true);
import requests
response = requests.post(
"https://dev.mod.wtf/api/v2/action",
json={
"api_key": "YOUR_API_KEY",
"method": "export-keys",
"soft_id": 123,
},
timeout=10,
)
result = response.json()
Returns a txt/csv/json file instead of the usual JSON envelope
{
"ok": false,
"error": "validation",
"message": "format must be txt, csv or json"
}
{
"ok": false,
"error": "unauthorized",
"message": "Invalid or missing api_key"
}
List bans
https://dev.mod.wtf/api/v2/action
methodget-bans
List banned device serials with refused attempts.
Body
-
soft_idinteger requiredID of a software you own
-
limitinteger optional1-200, default 50
-
offsetinteger optionalDefault 0
Errors it can return
POST /api/v2/action HTTP/1.1
Host: dev.mod.wtf
Content-Type: application/json
Accept: application/json
{
"api_key": "YOUR_API_KEY",
"method": "get-bans",
"soft_id": 123
}
curl -sS -X POST 'https://dev.mod.wtf/api/v2/action' \
-H 'Content-Type: application/json' \
-d '{
"api_key": "YOUR_API_KEY",
"method": "get-bans",
"soft_id": 123
}'
const response = await fetch("https://dev.mod.wtf/api/v2/action", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
"api_key": "YOUR_API_KEY",
"method": "get-bans",
"soft_id": 123
}),
});
const result = await response.json();
$ch = curl_init('https://dev.mod.wtf/api/v2/action');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
CURLOPT_POSTFIELDS => json_encode([
'api_key' => 'YOUR_API_KEY',
'method' => 'get-bans',
'soft_id' => 123,
]),
]);
$result = json_decode(curl_exec($ch), true);
import requests
response = requests.post(
"https://dev.mod.wtf/api/v2/action",
json={
"api_key": "YOUR_API_KEY",
"method": "get-bans",
"soft_id": 123,
},
timeout=10,
)
result = response.json()
{
"ok": true,
"data": {
"total": 1,
"limit": 50,
"offset": 0,
"items": [
{
"id": 7,
"serial": "device-serial",
"banned_by": "JohnDoe",
"attempts": 3
}
]
}
}
{
"ok": false,
"error": "not_found",
"message": "soft not found or not yours"
}
{
"ok": false,
"error": "unauthorized",
"message": "Invalid or missing api_key"
}
Ban device
https://dev.mod.wtf/api/v2/action
methodban-device
Ban a device serial. Connect refuses it on every key of the software.
Body
-
soft_idinteger requiredID of a software you own
-
serialstring requiredUp to 255 characters, no commas
Errors it can return
POST /api/v2/action HTTP/1.1
Host: dev.mod.wtf
Content-Type: application/json
Accept: application/json
{
"api_key": "YOUR_API_KEY",
"method": "ban-device",
"soft_id": 123,
"serial": "device-serial"
}
curl -sS -X POST 'https://dev.mod.wtf/api/v2/action' \
-H 'Content-Type: application/json' \
-d '{
"api_key": "YOUR_API_KEY",
"method": "ban-device",
"soft_id": 123,
"serial": "device-serial"
}'
const response = await fetch("https://dev.mod.wtf/api/v2/action", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
"api_key": "YOUR_API_KEY",
"method": "ban-device",
"soft_id": 123,
"serial": "device-serial"
}),
});
const result = await response.json();
$ch = curl_init('https://dev.mod.wtf/api/v2/action');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
CURLOPT_POSTFIELDS => json_encode([
'api_key' => 'YOUR_API_KEY',
'method' => 'ban-device',
'soft_id' => 123,
'serial' => 'device-serial',
]),
]);
$result = json_decode(curl_exec($ch), true);
import requests
response = requests.post(
"https://dev.mod.wtf/api/v2/action",
json={
"api_key": "YOUR_API_KEY",
"method": "ban-device",
"soft_id": 123,
"serial": "device-serial",
},
timeout=10,
)
result = response.json()
{
"ok": true,
"data": {
"id": 7,
"serial": "device-serial",
"banned_by": "JohnDoe",
"attempts": 0
}
}
{
"ok": false,
"error": "duplicate",
"message": "this serial is already banned"
}
{
"ok": false,
"error": "unauthorized",
"message": "Invalid or missing api_key"
}
Unban device
https://dev.mod.wtf/api/v2/action
methodunban-device
Remove a ban.
Body
-
soft_idinteger requiredID of a software you own
-
ban_idinteger requiredBan ID from get-bans
Errors it can return
POST /api/v2/action HTTP/1.1
Host: dev.mod.wtf
Content-Type: application/json
Accept: application/json
{
"api_key": "YOUR_API_KEY",
"method": "unban-device",
"soft_id": 123,
"ban_id": 7
}
curl -sS -X POST 'https://dev.mod.wtf/api/v2/action' \
-H 'Content-Type: application/json' \
-d '{
"api_key": "YOUR_API_KEY",
"method": "unban-device",
"soft_id": 123,
"ban_id": 7
}'
const response = await fetch("https://dev.mod.wtf/api/v2/action", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
"api_key": "YOUR_API_KEY",
"method": "unban-device",
"soft_id": 123,
"ban_id": 7
}),
});
const result = await response.json();
$ch = curl_init('https://dev.mod.wtf/api/v2/action');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
CURLOPT_POSTFIELDS => json_encode([
'api_key' => 'YOUR_API_KEY',
'method' => 'unban-device',
'soft_id' => 123,
'ban_id' => 7,
]),
]);
$result = json_decode(curl_exec($ch), true);
import requests
response = requests.post(
"https://dev.mod.wtf/api/v2/action",
json={
"api_key": "YOUR_API_KEY",
"method": "unban-device",
"soft_id": 123,
"ban_id": 7,
},
timeout=10,
)
result = response.json()
{
"ok": true,
"data": {
"id": 7,
"deleted": true
}
}
{
"ok": false,
"error": "not_found",
"message": "ban not found"
}
{
"ok": false,
"error": "unauthorized",
"message": "Invalid or missing api_key"
}