Документация API
Интегрируйте сокращение ссылок и QR-коды в ваши приложения
Обзор
API NexaLink позволяет программно создавать короткие ссылки и QR-коды. Поддерживается два режима:
Без аутентификации
- Лимит 100 кликов на ссылку
- Только базовые параметры
- 30 запросов в минуту
С API-ключом
- Неограниченное число кликов
- Категории, кастомные слаги, срок жизни
- 30 запросов в минуту
Базовый URL всех запросов: https://nexalink.ru
Аутентификация
Передайте API-ключ в заголовке X-API-Key. Ключ доступен в личном кабинете.
X-API-Key: ваш_api_ключ_здесь
Храните ключ в безопасном месте. Не передавайте его в URL-параметрах и не публикуйте в публичных репозиториях.
Ограничения запросов
| Эндпоинт | Лимит | Окно |
|---|---|---|
POST /api/shorten | 30 запросов | 1 минута (по IP) |
При превышении лимита возвращается HTTP 429 Too Many Requests. Подождите 60 секунд и повторите запрос.
Коды ошибок
| HTTP-код | message | Причина |
|---|---|---|
200 | success: false | Ошибка валидации (см. поле message) |
429 | Too many requests... | Превышен rate limit |
Типичные значения message |
||
| — | URL is required | Параметр url не передан |
| — | Invalid URL format | URL не прошёл валидацию (не http/https) |
| — | This domain is blocked | Домен заблокирован администрацией |
| — | Invalid or missing API key | Ключ не найден или аккаунт заблокирован |
| — | Invalid or unauthorized category | Категория не существует или чужая |
POST
/api/shorten
Создаёт короткую ссылку и возвращает QR-код в формате base64.
Заголовки
| Заголовок | Значение | Обязательный |
|---|---|---|
Content-Type | application/json или application/x-www-form-urlencoded | Да |
X-API-Key | Ваш API-ключ | Нет (без ключа — лимит 100 кликов) |
Параметры тела запроса
| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
url | string | да | Исходный URL (только http/https) |
category_id | integer | нет | ID категории из дашборда (только с ключом) |
custom_code | string | нет | Кастомный слаг, 2–40 символов, только [a-zA-Z0-9-] (только с ключом) |
expires_at | string | нет | Дата истечения в формате YYYY-MM-DD HH:MM:SS (только с ключом) |
Успешный ответ
{
"success": true,
"shortUrl": "https://nexalink.ru/abc123",
"qrCode": "data:image/png;base64,iVBORw0KGgo..."
}
Ответ с ошибкой
{
"success": false,
"message": "Invalid URL format"
}
Примеры кода
# Без аутентификации
curl -X POST https://nexalink.ru/api/shorten \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com"}'
# С API-ключом + кастомный слаг + срок жизни
curl -X POST https://nexalink.ru/api/shorten \
-H "Content-Type: application/json" \
-H "X-API-Key: ваш_api_ключ" \
-d '{
"url": "https://example.com/very/long/path",
"custom_code": "my-link",
"category_id": 1,
"expires_at": "2026-12-31 23:59:59"
}'
async function shortenUrl(url, apiKey = null) {
const headers = { 'Content-Type': 'application/json' };
if (apiKey) headers['X-API-Key'] = apiKey;
const res = await fetch('https://nexalink.ru/api/shorten', {
method: 'POST',
headers,
body: JSON.stringify({
url,
custom_code: 'my-link', // опционально
expires_at: '2026-12-31 23:59:59' // опционально
})
});
const data = await res.json();
if (data.success) {
console.log('Короткая ссылка:', data.shortUrl);
// data.qrCode — base64 PNG, можно вставить в <img src="...">
} else {
console.error('Ошибка:', data.message);
}
}
shortenUrl('https://example.com', 'ваш_api_ключ');
<?php
function nexalinkShorten(string $url, string $apiKey = ''): array {
$headers = ['Content-Type: application/json'];
if ($apiKey) $headers[] = "X-API-Key: $apiKey";
$ch = curl_init('https://nexalink.ru/api/shorten');
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => $headers,
CURLOPT_POSTFIELDS => json_encode([
'url' => $url,
'custom_code' => 'my-link', // опционально
'expires_at' => '2026-12-31 23:59:59', // опционально
]),
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 10,
]);
$result = json_decode(curl_exec($ch), true);
curl_close($ch);
return $result;
}
$data = nexalinkShorten('https://example.com', 'ваш_api_ключ');
if ($data['success']) {
echo $data['shortUrl']; // https://nexalink.ru/my-link
// $data['qrCode'] — base64 PNG
}
import requests
def shorten_url(url: str, api_key: str = None) -> dict:
headers = {"Content-Type": "application/json"}
if api_key:
headers["X-API-Key"] = api_key
payload = {
"url": url,
"custom_code": "my-link", # опционально
"expires_at": "2026-12-31 23:59:59" # опционально
}
r = requests.post(
"https://nexalink.ru/api/shorten",
json=payload,
headers=headers,
timeout=10
)
return r.json()
data = shorten_url("https://example.com", "ваш_api_ключ")
if data["success"]:
print(data["shortUrl"]) # https://nexalink.ru/my-link
# data["qrCode"] — base64 PNG строка