REST API
Создавайте короткие ссылки, читайте статистику переходов и генерируйте QR-коды из своего кода. JSON поверх HTTPS и один заголовок для авторизации.
- Базовый адрес
- https://urlik.xyz/api/
- Авторизация
- X-Api-Key
- Формат
- JSON · UTF-8
- Методов
- 10
- Webhooks
- Webhooks
Быстрый старт
Первая короткая ссылка — одним запросом.
Получите ключ
Создайте его в аккаунте, в разделе API. Права ключа можно ограничить.
Отправьте запрос
Отправьте POST с длинным адресом и заголовком X-Api-Key, при желании — с алиасом.
Используйте результат
return.url — короткая ссылка, return.qr — её QR-код, return.stats — страница статистики.
Ваш первый запрос
curl -X POST https://urlik.xyz/api/getLink.json \ -H "X-Api-Key: $URLIK_KEY" \ -d "url=https://example.com/spring-sale" \ -d "alias=spring" \ -d "mode=redirect"
const res = await fetch("https://urlik.xyz/api/getLink.json", {
method: "POST",
headers: { "X-Api-Key": process.env.URLIK_KEY },
body: new URLSearchParams({ url: "https://example.com/spring-sale", alias: "spring" })
});
const data = await res.json();
console.log(data.return.url); // https://urlik.xyz/spring$ch = curl_init("https://urlik.xyz/api/getLink.json");
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ["X-Api-Key: " . getenv("URLIK_KEY")],
CURLOPT_POSTFIELDS => ["url" => "https://example.com/spring-sale", "alias" => "spring"],
CURLOPT_RETURNTRANSFER => true,
]);
$data = json_decode(curl_exec($ch), true);
echo $data["return"]["url"]; // https://urlik.xyz/springimport os, requests
r = requests.post(
"https://urlik.xyz/api/getLink.json",
headers={"X-Api-Key": os.environ["URLIK_KEY"]},
data={"url": "https://example.com/spring-sale", "alias": "spring"},
)
print(r.json()["return"]["url"]) # https://urlik.xyz/spring{
"status": "success",
"return": {
"hex": "spring",
"url": "https://urlik.xyz/spring",
"qr": "https://urlik.xyz/qr/spring.png",
"stats": "https://urlik.xyz/spring+",
"mode": "redirect"
}
}Авторизация
Передавайте ключ в заголовке X-Api-Key. Простое сокращение работает и без ключа; ссылки, созданные с ключом, привязываются к вашему аккаунту.
Формат ответа
Каждый метод отвечает JSON: status — success или error, message объясняет ошибку, return содержит данные.
{ "status": "success", "message": "...", "return": { ... } }Ссылки
POST/api/getLink.jsonСоздать короткую ссылкуКлюч необязателен
| Параметр | Обязательность | Описание |
|---|---|---|
url | обязательный | Целевой адрес, http или https |
alias | необязательный | Свой код, 2–32 символа: буквы, цифры, _ и - |
mode | необязательный | redirect (по умолчанию), preview или frame |
expire | необязательный | Срок жизни в секундах, 0 — без срока |
password | необязательный | Пароль, который нужно ввести для перехода |
curl -X POST https://urlik.xyz/api/getLink.json -H "X-Api-Key: $URLIK_KEY" \ -d "url=https://example.com/spring-sale"
const res = await fetch("https://urlik.xyz/api/getLink.json", {
method: "POST",
headers: { "X-Api-Key": process.env.URLIK_KEY },
body: new URLSearchParams({ url: "https://example.com/spring-sale" })
});
console.log(await res.json());$ch = curl_init("https://urlik.xyz/api/getLink.json");
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ["X-Api-Key: " . getenv("URLIK_KEY")],
CURLOPT_POSTFIELDS => ["url" => "https://example.com/spring-sale"],
CURLOPT_RETURNTRANSFER => true,
]);
print_r(json_decode(curl_exec($ch), true));import os, requests
r = requests.post(
"https://urlik.xyz/api/getLink.json",
headers={"X-Api-Key": os.environ["URLIK_KEY"]},
data={"url": "https://example.com/spring-sale"},
)
print(r.json())POST/api/stats.jsonСтатистика ссылки: переходы по дням, источники, устройства и браузерыКлюч необязателен
| Параметр | Обязательность | Описание |
|---|---|---|
code | обязательный | Короткий код ссылки |
curl -X POST https://urlik.xyz/api/stats.json -H "X-Api-Key: $URLIK_KEY" \ -d "code=spring"
const res = await fetch("https://urlik.xyz/api/stats.json", {
method: "POST",
headers: { "X-Api-Key": process.env.URLIK_KEY },
body: new URLSearchParams({ code: "spring" })
});
console.log(await res.json());$ch = curl_init("https://urlik.xyz/api/stats.json");
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ["X-Api-Key: " . getenv("URLIK_KEY")],
CURLOPT_POSTFIELDS => ["code" => "spring"],
CURLOPT_RETURNTRANSFER => true,
]);
print_r(json_decode(curl_exec($ch), true));import os, requests
r = requests.post(
"https://urlik.xyz/api/stats.json",
headers={"X-Api-Key": os.environ["URLIK_KEY"]},
data={"code": "spring"},
)
print(r.json())POST/api/links.jsonСписок ваших ссылокНужен ключ
Без параметров: аккаунт определяется по ключу.
curl -X POST https://urlik.xyz/api/links.json -H "X-Api-Key: $URLIK_KEY"
const res = await fetch("https://urlik.xyz/api/links.json", {
method: "POST",
headers: { "X-Api-Key": process.env.URLIK_KEY },
body: new URLSearchParams({ })
});
console.log(await res.json());$ch = curl_init("https://urlik.xyz/api/links.json");
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ["X-Api-Key: " . getenv("URLIK_KEY")],
CURLOPT_POSTFIELDS => [],
CURLOPT_RETURNTRANSFER => true,
]);
print_r(json_decode(curl_exec($ch), true));import os, requests
r = requests.post(
"https://urlik.xyz/api/links.json",
headers={"X-Api-Key": os.environ["URLIK_KEY"]},
data={},
)
print(r.json())POST/api/update.jsonИзменить ссылкуНужен ключ
| Параметр | Обязательность | Описание |
|---|---|---|
code | обязательный | Короткий код ссылки |
url, mode, expire, password | необязательный | Новые значения полей, которые меняете |
curl -X POST https://urlik.xyz/api/update.json -H "X-Api-Key: $URLIK_KEY" \ -d "code=spring"
const res = await fetch("https://urlik.xyz/api/update.json", {
method: "POST",
headers: { "X-Api-Key": process.env.URLIK_KEY },
body: new URLSearchParams({ code: "spring" })
});
console.log(await res.json());$ch = curl_init("https://urlik.xyz/api/update.json");
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ["X-Api-Key: " . getenv("URLIK_KEY")],
CURLOPT_POSTFIELDS => ["code" => "spring"],
CURLOPT_RETURNTRANSFER => true,
]);
print_r(json_decode(curl_exec($ch), true));import os, requests
r = requests.post(
"https://urlik.xyz/api/update.json",
headers={"X-Api-Key": os.environ["URLIK_KEY"]},
data={"code": "spring"},
)
print(r.json())POST/api/delete.jsonУдалить ссылкуНужен ключ
| Параметр | Обязательность | Описание |
|---|---|---|
code | обязательный | Короткий код ссылки |
curl -X POST https://urlik.xyz/api/delete.json -H "X-Api-Key: $URLIK_KEY" \ -d "code=spring"
const res = await fetch("https://urlik.xyz/api/delete.json", {
method: "POST",
headers: { "X-Api-Key": process.env.URLIK_KEY },
body: new URLSearchParams({ code: "spring" })
});
console.log(await res.json());$ch = curl_init("https://urlik.xyz/api/delete.json");
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_HTTPHEADER => ["X-Api-Key: " . getenv("URLIK_KEY")],
CURLOPT_POSTFIELDS => ["code" => "spring"],
CURLOPT_RETURNTRANSFER => true,
]);
print_r(json_decode(curl_exec($ch), true));import os, requests
r = requests.post(
"https://urlik.xyz/api/delete.json",
headers={"X-Api-Key": os.environ["URLIK_KEY"]},
data={"code": "spring"},
)
print(r.json())Медиа, QR и временная почта
Для этих методов нужен заголовок X-Api-Key или вызов через RapidAPI.
GET/api/download.jsonСкачать видео или фото с 1000+ сайтов: форматы с готовыми подписанными ссылкамиНужен ключ
| Параметр | Обязательность | Описание |
|---|---|---|
url | обязательный | Адрес страницы с видео или фото |
curl -H "X-Api-Key: $URLIK_KEY" "https://urlik.xyz/api/download.json?url=https%3A%2F%2Fexample.com%2Fspring-sale"
const res = await fetch("https://urlik.xyz/api/download.json?" + new URLSearchParams({ url: "https://example.com/spring-sale" }), {
headers: { "X-Api-Key": process.env.URLIK_KEY }
});
console.log(await res.json());$ch = curl_init("https://urlik.xyz/api/download.json?" . http_build_query(["url" => "https://example.com/spring-sale"]));
curl_setopt_array($ch, [
CURLOPT_HTTPHEADER => ["X-Api-Key: " . getenv("URLIK_KEY")],
CURLOPT_RETURNTRANSFER => true,
]);
print_r(json_decode(curl_exec($ch), true));import os, requests
r = requests.get(
"https://urlik.xyz/api/download.json",
headers={"X-Api-Key": os.environ["URLIK_KEY"]},
params={"url": "https://example.com/spring-sale"},
)
print(r.json())GET/api/qr.jsonСгенерировать QR-код в PNG или SVGНужен ключ
| Параметр | Обязательность | Описание |
|---|---|---|
data | обязательный | Текст или адрес для кодирования |
format | необязательный | png или svg |
fg, bg | необязательный | Цвет узора и фона, hex |
ecc | необязательный | Коррекция ошибок: L, M, Q или H |
size | необязательный | Размер изображения в пикселях |
curl -H "X-Api-Key: $URLIK_KEY" "https://urlik.xyz/api/qr.json?data=https%3A%2F%2Furlik.xyz"
const res = await fetch("https://urlik.xyz/api/qr.json?" + new URLSearchParams({ data: "https://urlik.xyz" }), {
headers: { "X-Api-Key": process.env.URLIK_KEY }
});
console.log(await res.json());$ch = curl_init("https://urlik.xyz/api/qr.json?" . http_build_query(["data" => "https://urlik.xyz"]));
curl_setopt_array($ch, [
CURLOPT_HTTPHEADER => ["X-Api-Key: " . getenv("URLIK_KEY")],
CURLOPT_RETURNTRANSFER => true,
]);
print_r(json_decode(curl_exec($ch), true));import os, requests
r = requests.get(
"https://urlik.xyz/api/qr.json",
headers={"X-Api-Key": os.environ["URLIK_KEY"]},
params={"data": "https://urlik.xyz"},
)
print(r.json())GET/api/mailbox.jsonПолучить или создать временный адресНужен ключ
| Параметр | Обязательность | Описание |
|---|---|---|
address | username | необязательный | Временный адрес или имя для нового; пусто — случайный адрес |
curl -H "X-Api-Key: $URLIK_KEY" "https://urlik.xyz/api/mailbox.json?address=demo%40example.com"
const res = await fetch("https://urlik.xyz/api/mailbox.json?" + new URLSearchParams({ address: "[email protected]" }), {
headers: { "X-Api-Key": process.env.URLIK_KEY }
});
console.log(await res.json());$ch = curl_init("https://urlik.xyz/api/mailbox.json?" . http_build_query(["address" => "[email protected]"]));
curl_setopt_array($ch, [
CURLOPT_HTTPHEADER => ["X-Api-Key: " . getenv("URLIK_KEY")],
CURLOPT_RETURNTRANSFER => true,
]);
print_r(json_decode(curl_exec($ch), true));import os, requests
r = requests.get(
"https://urlik.xyz/api/mailbox.json",
headers={"X-Api-Key": os.environ["URLIK_KEY"]},
params={"address": "[email protected]"},
)
print(r.json())GET/api/messages.jsonСписок писем во временном ящикеНужен ключ
| Параметр | Обязательность | Описание |
|---|---|---|
address | обязательный | Временный адрес |
curl -H "X-Api-Key: $URLIK_KEY" "https://urlik.xyz/api/messages.json?address=demo%40example.com"
const res = await fetch("https://urlik.xyz/api/messages.json?" + new URLSearchParams({ address: "[email protected]" }), {
headers: { "X-Api-Key": process.env.URLIK_KEY }
});
console.log(await res.json());$ch = curl_init("https://urlik.xyz/api/messages.json?" . http_build_query(["address" => "[email protected]"]));
curl_setopt_array($ch, [
CURLOPT_HTTPHEADER => ["X-Api-Key: " . getenv("URLIK_KEY")],
CURLOPT_RETURNTRANSFER => true,
]);
print_r(json_decode(curl_exec($ch), true));import os, requests
r = requests.get(
"https://urlik.xyz/api/messages.json",
headers={"X-Api-Key": os.environ["URLIK_KEY"]},
params={"address": "[email protected]"},
)
print(r.json())GET/api/message.jsonПрочитать одно письмоНужен ключ
| Параметр | Обязательность | Описание |
|---|---|---|
address | обязательный | Временный адрес |
id | обязательный | Номер письма из списка ящика |
curl -H "X-Api-Key: $URLIK_KEY" "https://urlik.xyz/api/message.json?address=demo%40example.com&id=1"
const res = await fetch("https://urlik.xyz/api/message.json?" + new URLSearchParams({ address: "[email protected]", id: "1" }), {
headers: { "X-Api-Key": process.env.URLIK_KEY }
});
console.log(await res.json());$ch = curl_init("https://urlik.xyz/api/message.json?" . http_build_query(["address" => "[email protected]", "id" => "1"]));
curl_setopt_array($ch, [
CURLOPT_HTTPHEADER => ["X-Api-Key: " . getenv("URLIK_KEY")],
CURLOPT_RETURNTRANSFER => true,
]);
print_r(json_decode(curl_exec($ch), true));import os, requests
r = requests.get(
"https://urlik.xyz/api/message.json",
headers={"X-Api-Key": os.environ["URLIK_KEY"]},
params={"address": "[email protected]", "id": "1"},
)
print(r.json())Ничего не найдено
Ни один метод не подходит. Попробуйте путь, например qr или stats.
Попробовать вживую
Изучайте и вызывайте любой эндпоинт прямо здесь. Вставьте API-ключ через кнопку Authorize для авторизованных запросов.
Встроить сокращатель
Вставьте этот сниппет на любую страницу, чтобы добавить рабочий сокращатель ссылок со ссылкой на urlik.xyz:
<iframe src="https://urlik.xyz/embed" style="width:100%;max-width:520px;height:150px;border:0" title="URL shortener by urlik.xyz" loading="lazy"></iframe>
Простой REST API для коротких ссылок
REST API Urlik позволяет создавать, читать, обновлять и удалять короткие ссылки из вашего собственного кода и получать статистику кликов в формате JSON. Это обычный HTTPS API — отправьте POST-запрос и получите предсказуемый JSON-ответ — поэтому он работает из любого языка или платформы.
Для базового сокращения учётные данные не нужны. Чтобы привязывать ссылки к вашему аккаунту и управлять ими позже, отправляйте свой ключ в заголовке X-Api-Key, который находится в вашем аккаунте. Ответы всегда следуют одному и тому же формату со статусом, сообщением и полем return, показанному ниже.
Нужен ли мне ключ API?
Для базового сокращения — нет, ссылку можно создать анонимно. Ключ, который есть в вашем аккаунте, привязывает ссылки к вам и требуется, чтобы просматривать, обновлять или удалять их.
В каком формате приходят ответы?
Каждая конечная точка возвращает JSON со статусом, понятным человеку сообщением и объектом return, содержащим данные, поэтому разбор ответов одинаков для всех вызовов.
Есть ли ограничение по частоте запросов?
Да, запросы ограничиваются по частоте для каждого вызывающего, чтобы сервис оставался быстрым и справедливым. Аутентифицированные ключи получают больший лимит, чем анонимный трафик.
Можно ли использовать его из любого языка?
Да. Это стандартный HTTPS JSON API, поэтому им может пользоваться всё, что умеет отправлять POST-запрос — curl, Python, PHP, JavaScript или Go.
Urlik объединяет набор быстрых и уважающих приватность веб-инструментов в одном месте, чтобы решать повседневные задачи со ссылками, не переключаясь между разными сервисами и не создавая аккаунтов. Делитесь ли вы кампанией, принимаете оплату, проверяете регистрацию или отправляете конфиденциальный файл — для каждой задачи есть свой бесплатный инструмент.