API
Примеры запросов в PostMan
https://www.postman.com/statusnick/workspace/public
При составлении запросов в PostMan для v1 убирайте Header User-Agent.
Примеры кода
В спойлерах приведены примеры использования сервиса с запросом к API v2.
CURL
curl -X POST 'https://api.statusnick.com/lf/' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer XXXXXXXXXXXXXXXXXX' \
-H 'Api-Version: v2' \
-d '{
"endpoint": "text/check",
"payload": {
"text": "some_text",
"dicts": {
"rus": [
"childhood",
"expletive",
"hate",
"heavy",
"terrorism",
"weapons"
]
},
"modes": [
"tags",
"patterns",
// "translit", не работает одновременно с "subst"
"subst",
"masks",
"deep"
]
}
}'PHP
declare(strict_types=1);
class Check
{
private const URL = 'https://api.statusnick.com/lf/';
public function run(
string $token,
string $text,
array $dicts = [
'rus' => ['heavy', 'expletive', 'weapons', 'terrorism']
],
array $modes = ['deep', 'masks', 'patterns', 'tags'],
string $endpoint = 'text/check',
string $apiVersion = 'v2'
): array {
$body = [
'endpoint' => $endpoint,
'payload' => [
'text' => $text,
'dicts' => $dicts,
'modes' => $modes,
],
];
$handle = curl_init();
curl_setopt_array($handle, [
CURLOPT_URL => self::URL,
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 10,
CURLOPT_TCP_KEEPALIVE => 1,
CURLOPT_POSTFIELDS =>
json_encode(
$body,
JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES
),
CURLOPT_HTTPHEADER => [
'Content-Type: application/json',
'Authorization: Bearer ' . $token,
'Api-Version: ' . $apiVersion,
],
]);
$response = curl_exec($handle);
curl_close($handle);
return is_string($response) ? (json_decode($response, true) ?? []) : [];
}
}
// Пример использования
$checker = new Check();
$result =$checker->run('XXXXXXX', 'content for check');
if (!empty($result['data']['f'])) {
// Обнаружены запрещенные слова
}JS
async function check(
token,
text,
dicts = { rus: ['heavy', 'expletive', 'weapons', 'terrorism'] },
modes = ['deep', 'masks', 'patterns', 'tags'],
endpoint = 'text/check',
apiVersion = 'v2'
) {
const url = 'https://api.statusnick.com/lf/';
const body = {
endpoint: endpoint,
payload: {
text: text,
dicts: dicts,
modes: modes
}
};
const response = await fetch(url, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${token}`,
'Api-Version': apiVersion
},
body: JSON.stringify(body)
});
const result = await response.json();
if (result?.data?.f?.length > 0) {
// Обнаружены запрещенные слова
}
return result;
}
// Пример использования
check('XXXXXXX', 'content for check');Python
import requests
def check(
token: str,
text: str,
dicts: dict = None,
modes: list = None,
endpoint: str = 'text/check',
api_version: str = 'v2'
) -> dict:
url = 'https://api.statusnick.com/lf/'
if dicts is None:
dicts = {'rus': ['heavy', 'expletive', 'weapons', 'terrorism']}
if modes is None:
modes = ['deep', 'masks', 'patterns', 'tags']
payload = {
'endpoint': endpoint,
'payload': {
'text': text,
'dicts': dicts,
'modes': modes
}
}
headers = {
'Content-Type': 'application/json',
'Authorization': f'Bearer {token}',
'Api-Version': api_version
}
response = requests.post(url, json=payload, headers=headers, timeout=30)
result = response.json()
return result
# Пример использования
res = check('XXXXXXX', 'content for check')
if res.get('data', {}).get('f'):
print('Найдены запрещенные слова:', res['data']['f'])
else:
print('OK')Версии API
API v2
Вторая версия с полностью измененным подходом. Быстрее, дешевле.
API v1
Признана устаревшей с 27.09.26, будет закрыта 27.02.27.
Первая версия.
API v1_up_limits
Признана устаревшей с 27.09.26, будет закрыта 27.02.27.
Дубликат первой версии с повышенными границами лимитов и другой стоимостью. Подходит для проверки больших текстов, не подходит для частых запросов и проверки коротких текстов. Поскольку по логике это дубликат API v1, то удобно в коде переключаться с одной версии проверки на другую всего лишь меняя один параметр в зависимости от длины текста. Также можно компоновать множество коротких текстов в один большой, чтобы добиться ускорения обработки.