Документация API

Интегрируйте сокращение ссылок и QR-коды в ваши приложения

Обзор

API NexaLink позволяет программно создавать короткие ссылки и QR-коды. Поддерживается два режима:

Без аутентификации
  • Лимит 100 кликов на ссылку
  • Только базовые параметры
  • 30 запросов в минуту
С API-ключом
  • Неограниченное число кликов
  • Категории, кастомные слаги, срок жизни
  • 30 запросов в минуту

Базовый URL всех запросов: https://nexalink.ru


Аутентификация

Передайте API-ключ в заголовке X-API-Key. Ключ доступен в личном кабинете.

X-API-Key: ваш_api_ключ_здесь
Храните ключ в безопасном месте. Не передавайте его в URL-параметрах и не публикуйте в публичных репозиториях.

Ограничения запросов

ЭндпоинтЛимитОкно
POST /api/shorten30 запросов1 минута (по IP)

При превышении лимита возвращается HTTP 429 Too Many Requests. Подождите 60 секунд и повторите запрос.


Коды ошибок

HTTP-кодmessageПричина
200success: falseОшибка валидации (см. поле message)
429Too many requests...Превышен rate limit
Типичные значения message
URL is requiredПараметр url не передан
Invalid URL formatURL не прошёл валидацию (не http/https)
This domain is blockedДомен заблокирован администрацией
Invalid or missing API keyКлюч не найден или аккаунт заблокирован
Invalid or unauthorized categoryКатегория не существует или чужая

POST

/api/shorten

Создаёт короткую ссылку и возвращает QR-код в формате base64.

Заголовки
ЗаголовокЗначениеОбязательный
Content-Typeapplication/json или application/x-www-form-urlencodedДа
X-API-KeyВаш API-ключНет (без ключа — лимит 100 кликов)
Параметры тела запроса
ПараметрТипОбяз.Описание
urlstringдаИсходный URL (только http/https)
category_idintegerнетID категории из дашборда (только с ключом)
custom_codestringнетКастомный слаг, 2–40 символов, только [a-zA-Z0-9-] (только с ключом)
expires_atstringнетДата истечения в формате 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 строка

Попробовать