API ссылок
API создаёт анонимные короткие ссылки, возвращает статистику переходов, изменяет настройки и удаляет ссылки. Запросы и ответы передаются в формате JSON. CORS включён, поэтому вызовы работают и из кода в браузере.
Базовый адрес:
http://anonym.es/api/v1
Быстрый старт
Чтобы создать короткую ссылку, отправьте адрес назначения:
curl -X POST http://anonym.es/api/v1/links \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com/article"}'
Токен для этого вызова не требуется. Без него ссылка создаётся как гостевая в рамках квоты Free вашего IP-адреса.
С токеном аккаунта тот же вызов помещает ссылку в ваш кабинет и учитывает её в квоте тарифа:
curl -X POST http://anonym.es/api/v1/links \
-H "Authorization: Bearer anon_YOUR_ACCOUNT_TOKEN" \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com/article"}'
Ответ содержит короткий адрес, идентификатор ссылки и токен управления этой ссылкой. Сохраните токен: он понадобится, чтобы позже прочитать или удалить ссылку.
{
"ok": true,
"link": {
"id": 4821,
"short": "http://anonym.es/k7m2q",
"url": "https://example.com/article",
"status": "active",
"password": false,
"created_at": "2026-09-05T14:02:11Z",
"expires_at": null,
"max_hits": null,
"self_destruct": false,
"delay": null,
"no_countdown": false,
"adult": false,
"note": null,
"tags": [],
"clicks": 0,
"uniques": 0
},
"token": "3f9c1b7e2d4a4c0e9b8f7a6d5c4b3a21",
"left": 4
}
Поля объекта ссылки
Все эндпоинты, возвращающие ссылку, используют эту структуру. Время указано в формате ISO 8601 в UTC. Счётчики clicks и uniques охватывают весь срок жизни ссылки.
| Поле | Тип | Что делает |
|---|---|---|
id | integer | Числовой идентификатор ссылки, используется в остальных вызовах. |
short | string | Короткий адрес, которым делятся. |
url | string | null | Адрес назначения, null у ссылки-заметки. |
status | string | active | expired | exhausted (лимит переходов исчерпан) | flagged (назначение в списке безопасности) | banned. |
password | boolean | Посетителю нужен пароль. |
created_at | string | ISO 8601, UTC. |
expires_at | string | null | Когда ссылка истекает, null = без срока. |
max_hits | integer | null | Лимит переходов, null = без лимита. |
self_destruct | boolean | Ссылка удаляется безвозвратно по достижении лимита или срока жизни. |
delay | integer | null | Секунды на странице перехода, null = значение тарифа, 0 = мгновенно. |
no_countdown | boolean | Страница перехода без отсчёта, ждёт нажатия на адрес. |
adult | boolean | Visitors confirm being 18 or older before the forwarding page. |
note | string | null | Заметка на странице перехода. |
tags | string[] | Теги в нижнем регистре. |
clicks | integer | Переходы за всё время жизни ссылки. |
uniques | integer | Уникальные посетители (один на адрес в сутки) за всё время жизни ссылки. |
Авторизация
Авторизованные запросы передают токен в заголовке Authorization. Как альтернатива принимается заголовок X-API-Key. В строке запроса токены не передаются.
Authorization: Bearer YOUR_TOKEN
| Токен | Где получить | Для чего |
|---|---|---|
| Токен аккаунта | В личном кабинете | Все ссылки аккаунта с правами тарифа |
| Токен ссылки | Возвращается при создании ссылки | Одна конкретная ссылка с правами тарифа Free |
Токен аккаунта начинается с anon_. Токен ссылки состоит из 32 символов. Создание нового токена аккаунта отменяет предыдущий.
Пример:
curl http://anonym.es/api/v1/me \ -H "Authorization: Bearer anon_YOUR_ACCOUNT_TOKEN"
Создать токен аккаунта в личном кабинете
Эндпоинты
Тело запроса передаётся как application/json или application/x-www-form-urlencoded. Имена параметров и коды ошибок одинаковы для всех эндпоинтов.
| Метод | Путь | Токен | Цена | Что делает |
|---|---|---|---|---|
GET | /api/v1 | не обязателен | 1 | Сведения об API: версия, адреса документации и схемы. |
POST | /api/v1/links | не обязателен | 5 + 1/url | Создать ссылку или до 50 сразу. Без токена: как гость, в рамках квоты Free. Возвращает ссылку с её токеном. |
GET | /api/v1/names/check | не обязателен | 2 | Свободно ли это имя? Если занято, варианты. |
GET | /api/v1/links | аккаунта | 2 | Ссылки аккаунта, новые первыми. |
GET | /api/v1/links/lookup | ссылки или аккаунта | 1 | Найти свою ссылку по короткому адресу. |
GET | /api/v1/links/{id} | ссылки или аккаунта | 1 | Одна ссылка: настройки, состояние, переходы и уникальные посетители за всё время. Токен аккаунта может добавить отчёт статистики. |
PATCH | /api/v1/links/{id} | ссылки или аккаунта | 3 | Изменить настройки. Меняются только переданные поля. Платные тарифы (у токена ссылки права Free, редактировать он не может). |
DELETE | /api/v1/links/{id} | ссылки или аккаунта | 2 | Удалить ссылку. Имя снова становится свободным. |
GET | /api/v1/links/{id}/qr | ссылки или аккаунта | 3 | QR-код короткого адреса картинкой (PNG или SVG). Требует токен, поэтому подходит серверному коду. |
GET | /api/v1/qr | не обязателен | 3 | QR-код короткого адреса картинкой без токена: ключом служит сам адрес. Сделан для тегов <img>. |
GET | /api/v1/me | аккаунта | 1 | Аккаунт: тариф, ограничения, остаток квоты, дополнительные домены, доступные настройки. |
GET | /api/v1/openapi.json | не обязателен | 1 | Это API в виде документа OpenAPI 3.1. |
Стоимость указана в единицах лимита запросов, см. раздел «Лимиты запросов».
Создание ссылки
POST /api/v1/links
Минимальный запрос содержит только поле url:
curl -X POST http://anonym.es/api/v1/links \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com/article"}'
С токеном аккаунта ссылка принадлежит аккаунту и учитывается в квоте тарифа. Без токена это гостевая ссылка в квоте IP-адреса:
curl -X POST http://anonym.es/api/v1/links \
-H "Authorization: Bearer anon_YOUR_ACCOUNT_TOKEN" \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com/article"}'
Успешный запрос возвращает статус 201 вместе со ссылкой, её токеном и числом ссылок, оставшихся в текущем периоде квоты.
Поля ответа:
| Поле | Тип | Что делает |
|---|---|---|
link | object | Созданная ссылка. |
token | string | Токен ссылки (32 символа), управляет этой ссылкой. |
left | integer | null | Сколько ссылок осталось в текущем периоде квоты, null у тарифа без ограничения. |
qr | object | QR-код, есть в ответе, если передан qr=true. |
batch | boolean | true, если передано несколько адресов. |
results | array | По записи на каждый адрес в порядке отправки: {ok: true, link, token, qr} либо {ok: false, url, error, message, field}. |
Ссылка с собственным именем
Короткий адрес получит имя my-article, если оно свободно и соответствует правилам ниже.
curl -X POST http://anonym.es/api/v1/links \
-H "Content-Type: application/json" \
-d '{"url":"https://example.com/article","name":"my-article"}'
Правила имён:
- Латинские буквы, цифры, дефис и подчёркивание. От 5 символов на тарифе Free и от 3 на платных тарифах, не более 32. Регистр не учитывается: Promo и promo считаются одной ссылкой.
- Имена страниц сайта, коды языков и служебные слова зарезервированы.
- Названия брендов и оскорбительные слова отклоняются. Имена проходят проверку по списку слов и автоматическую модерацию. Число собственных имён в час ограничено тарифом.
- Занятое имя возвращает статус 409 со свободными вариантами в поле suggest.
- Имя сабдомена (sub: true, тариф Max) состоит из одной DNS-метки: буквы, цифры и дефисы, без дефиса по краям и без подчёркивания. Имена вида www, mail или ns1 зарезервированы.
Имя можно проверить до создания ссылки:
curl "http://anonym.es/api/v1/names/check?name=my-article"
Поля ответа проверки:
| Поле | Тип | Что делает |
|---|---|---|
available | boolean | true, если имя можно использовать. |
name | string | Проверенное имя. |
error | string | Почему имя недоступно: taken, reserved, too_short и другие ошибки имён. |
message | string | Причина словами. |
field | string | Всегда name. |
suggest | array | Свободные варианты, если имя занято. |
Несколько ссылок за один запрос
Поле urls принимает до 50 адресов в виде JSON-массива или текста с одним адресом в строке. Каждый адрес становится отдельной ссылкой со своим токеном, а остальные поля применяются ко всем. Собственное имя в пакете недоступно.
curl -X POST http://anonym.es/api/v1/links \
-H "Content-Type: application/json" \
-d '{"urls":["https://example.com/a","https://example.com/b","https://example.com/c"]}'
Ответ содержит batch: true и массив results с записью на каждый адрес в порядке отправки. Ошибочный адрес даёт запись с ok: false и кодом ошибки, не прерывая остальные.
Дополнительные настройки
curl -X POST http://anonym.es/api/v1/links \
-H "Authorization: Bearer anon_YOUR_ACCOUNT_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com/article",
"name": "my-article",
"expires_days": 30,
"max_hits": 1000,
"self_destruct": true,
"password": "secret",
"note": "Available until the end of the month",
"delay": 5,
"tags": "blog,promo",
"qr": true,
"qr_size": 300,
"qr_format": "png"
}'
Опции, отмеченные как платные, игнорируются для гостей и на тарифе Free. Ответ отражает настройки, которые ссылка получила фактически.
| Поле | Тип | Что делает |
|---|---|---|
url | string, обязательное | Адрес назначения. Либо urls: несколько адресов, по одному в строке или JSON-массивом (до 50), каждый становится отдельной ссылкой. |
name | string | Собственное имя для одной ссылки (проверяется по правилам и фильтру имён). |
domain | string | One of the alias domains, random, or random-alias (random among the alias domains only). Paid plans; default is random: links never sit on the main domain. Free and guests: anonymes.click. |
sub | boolean | Адрес вида name.alias вместо alias/name. Тариф Max, только на дополнительных доменах. |
expires_days | integer | Срок действия в днях. Платные тарифы. |
max_hits | integer | Лимит переходов. Платные тарифы. |
self_destruct | boolean | Удалить ссылку безвозвратно по достижении лимита переходов или срока жизни (требует max_hits или expires_days). |
password | string | Пароль, который вводит посетитель. Платные тарифы. |
note | string | Текст на странице перехода. Платные тарифы, длина по тарифу. |
note_only | boolean | Ссылка открывает саму заметку, без перехода. Pro+ и выше. |
delay | integer | Секунды на странице перехода, 0 = мгновенно. Платные тарифы. |
no_countdown | boolean | Без отсчёта на странице перехода: нет таймера и автоматического перехода, посетитель нажимает на адрес. Платные тарифы. |
adult | boolean | Adult content (18+): visitors confirm their age on a page of its own before anything else is shown. Every plan. |
tags | string | Теги через запятую (до 5, по 24 символа). Токен аккаунта на платном тарифе. |
qr | boolean | Добавить в ответ QR-код короткого адреса (base64). |
qr_size | integer | Сторона изображения QR в пикселях, 100–1000 (по умолчанию 300, PNG округляется до целых модулей). |
qr_format | string | png (по умолчанию) или svg. |
qr_logo | boolean | false = код без логотипа. Только платные тарифы, иначе игнорируется. |
Список ссылок
GET /api/v1/links
Требуется токен аккаунта.
Требуется токен аккаунта. Ссылки возвращаются от новых к старым.
curl "http://anonym.es/api/v1/links?page=1&per=50" \ -H "Authorization: Bearer anon_YOUR_ACCOUNT_TOKEN"
| Поле | Тип | Что делает |
|---|---|---|
page | integer | Номер страницы (по умолчанию 1). |
per | integer | Ссылок на странице, 1–100 (по умолчанию 50). |
q | string | Поиск по имени, домену и адресу назначения (один плоский список до 50). |
tag | string | Только ссылки с этим тегом. |
Поиск и фильтр по тегу можно сочетать:
curl "http://anonym.es/api/v1/links?q=example&tag=promo" \ -H "Authorization: Bearer anon_YOUR_ACCOUNT_TOKEN"
Поля ответа:
| Поле | Тип | Что делает |
|---|---|---|
page | integer | Текущая страница. |
per | integer | Ссылок на странице. |
total | integer | Сколько ссылок найдено. |
pages | integer | Сколько страниц. |
links | array | Объекты ссылок, новые первыми. |
Поиск ссылки по короткому адресу
Ссылка адресуется числовым идентификатором (поле id, например 4821), а не именем из короткого адреса. Если известен только короткий адрес, идентификатор можно получить любым токеном, который управляет этой ссылкой:
curl --get http://anonym.es/api/v1/links/lookup \ -H "Authorization: Bearer YOUR_TOKEN" \ --data-urlencode "short=http://anonym.es/k7m2q"
Сведения о ссылке и статистика
GET /api/v1/links/{id}
Возвращает настройки ссылки, её состояние, число переходов и число уникальных посетителей за всё время:
curl http://anonym.es/api/v1/links/4821 \ -H "Authorization: Bearer YOUR_TOKEN"
С токеном аккаунта параметр stats добавляет отчёт о переходах:
curl "http://anonym.es/api/v1/links/4821?stats=day" \ -H "Authorization: Bearer anon_YOUR_ACCOUNT_TOKEN"
| Значение | Период отчёта |
|---|---|
day | Последние 30 дней, по дням |
week | Последние 26 недель, по неделям ISO |
month | Последние 24 месяца, по месяцам |
Поля ответа: stats
| Поле | Тип | Что делает |
|---|---|---|
mode | string | day, week или month. |
from | string | Первый день отчёта, ГГГГ-ММ-ДД. |
to | string | Последний день отчёта. |
series | array | По записи на период, старые первыми: [from, to, visits, uniques]. |
summary | object | cur (текущий период), prev (предыдущий), avg (среднее по периодам до текущего), в каждом hits и uniq. |
dims | object | Разбивка за диапазон: ref, country, device, os, browser, hour, в каждом список [значение, переходы]. |
Изменение ссылки
PATCH /api/v1/links/{id}
Изменяются только переданные поля:
curl -X PATCH http://anonym.es/api/v1/links/4821 \
-H "Authorization: Bearer anon_YOUR_ACCOUNT_TOKEN" \
-H "Content-Type: application/json" \
-d '{"max_hits": 2000, "delay": 3, "tags": "blog,updated"}'
Изменение доступно на платных тарифах. Токен ссылки обладает правами тарифа Free и не позволяет менять настройки.
| Поле | Тип | Что делает |
|---|---|---|
url | string | Новый адрес назначения. Pro+ и выше. |
name | string | Новое имя (правила те же, что у собственного имени). |
expires_days | integer | Новый срок действия в днях, пусто = без срока. |
max_hits | integer | Новый лимит переходов, пусто = без лимита. |
self_destruct | boolean | Удалить безвозвратно по достижении лимита или срока, false отключает. |
password | string | Новый пароль, пустая строка удаляет пароль. |
note | string | Новая заметка, пусто удаляет её (ссылке-заметке заметка нужна всегда). |
delay | integer | Секунды на странице перехода, пусто = значение тарифа по умолчанию. |
no_countdown | boolean | true = без отсчёта на странице перехода, false возвращает отсчёт. |
adult | boolean | true = age confirmation (18+) before the forwarding page; false removes it. |
tags | string | Новый список тегов через запятую, пусто удаляет все теги. |
Сброс значения
- password, note и tags: пустая строка удаляет значение.
- expires_days и max_hits: null, пустая строка или 0 снимают ограничение. self_destruct отключается, когда не остаётся ни лимита, ни срока.
- delay: null или пустая строка возвращают значение тарифа по умолчанию. 0 означает мгновенный переход.
- url нельзя сделать пустым, а ссылке-заметке по-прежнему нужна заметка.
curl -X PATCH http://anonym.es/api/v1/links/4821 \
-H "Authorization: Bearer anon_YOUR_ACCOUNT_TOKEN" \
-H "Content-Type: application/json" \
-d '{"password": "", "note": "", "expires_days": null, "max_hits": null, "delay": 0}'
Удаление ссылки
DELETE /api/v1/links/{id}
curl -X DELETE http://anonym.es/api/v1/links/4821 \ -H "Authorization: Bearer YOUR_TOKEN"
После удаления собственное имя снова становится свободным. Статистика удаляется вместе со ссылкой.
Поля ответа:
| Поле | Тип | Что делает |
|---|---|---|
deleted | integer | Идентификатор удалённой ссылки. |
QR-код
Для HTML-тега img запрашивайте код по короткому адресу. Этот эндпоинт не требует токена: ключом служит сам короткий адрес, и любой, кто его знает, может получить такой же код.
<img src="http://anonym.es/api/v1/qr?short=http%3A%2F%2Fanonym.es%2Fk7m2q&qr_size=400" alt="QR code" >
Серверный код может также запросить изображение по идентификатору с токеном или получить его в JSON в кодировке base64, добавив qr=true к запросу создания или сведений:
curl "http://anonym.es/api/v1/links/4821/qr?qr_size=400&qr_format=svg" \ -H "Authorization: Bearer YOUR_TOKEN" -o qr.svg
Параметры обоих эндпоинтов изображения:
| Поле | Тип | Что делает |
|---|---|---|
short | string, обязательное | Короткий адрес, например https://anonym.es/abc12. |
qr_size | integer | Сторона изображения QR в пикселях, 100–1000 (по умолчанию 300, PNG округляется до целых модулей). |
qr_format | string | png (по умолчанию) или svg. |
qr_logo | boolean | false = код без логотипа. Только платные тарифы, иначе игнорируется. |
Поле qr в ответах JSON:
| Поле | Тип | Что делает |
|---|---|---|
format | string | png или svg. |
mime | string | image/png или image/svg+xml. |
size | integer | Запрошенная сторона в пикселях. |
logo | boolean | Нарисован ли логотип в центре. |
base64 | string | Изображение в кодировке base64. |
Сведения об аккаунте
GET /api/v1/me
Требуется токен аккаунта. Возвращает тариф, его ограничения и остаток квоты:
curl http://anonym.es/api/v1/me \ -H "Authorization: Bearer anon_YOUR_ACCOUNT_TOKEN"
| Поле | Тип | Что делает |
|---|---|---|
login | string | Логин аккаунта. |
plan | string | Ключ тарифа: free, pro, pro_plus, max или enterprise. |
plan_label | string | Название тарифа, как на сайте. |
until | string | null | Когда заканчивается платный тариф, ISO 8601. null на Free или без даты окончания. |
limits | object | links (за период), per (day или month), ai_hourly (собственных имён в час), name_min (минимальная длина имени), note_max (длина заметки), api_units (бюджет API в минуту). |
left | integer | null | Сколько ссылок осталось в текущем периоде квоты, null без ограничения. |
aliases | array | Дополнительные домены, доступные тарифу. |
can | object | По флагу на настройку: password, ttl, edit, edit_url, tags, note, note_only, alias, sub, instant, qr_no_logo. |
Ошибки
Ошибки возвращаются в едином JSON-формате:
{
"ok": false,
"error": "taken",
"message": "This name is already taken.",
"field": "name",
"suggest": ["my-article-26", "my-my-article", "my-article-link"]
}
field содержит имя некорректного параметра или null, если ошибка не относится к конкретному полю. Занятое имя добавляет suggest, платная опция добавляет upgrade, квоты и лимиты частоты добавляют заголовок Retry-After.
| HTTP | Значение |
|---|---|
400 | Ошибка в параметрах запроса |
401 | Токен отсутствует или недействителен |
403 | Тариф или тип токена не позволяет этот вызов |
404 | Ссылка не существует или принадлежит другому пользователю |
405 | Метод не поддерживается для этого пути |
409 | Собственное имя занято |
429 | Исчерпан лимит запросов или квота, см. Retry-After |
501 | PNG недоступен на этом сервере, запросите svg |
Все коды ошибок
| Код | HTTP | Поле | Что делает |
|---|---|---|---|
bad_request | 400 | Некорректный запрос. | |
bad_url | 400 | url | Адрес отсутствует или не является корректным URL http(s). |
blocked | 400 | url | На этот адрес ссылку создать нельзя. |
bad_name | 400 | name | Это имя недопустимо. |
dirty | 400 | name | Это имя недопустимо. |
brand | 400 | name | Имя похоже на название бренда и недоступно. |
reserved | 400 | name | Это имя зарезервировано. |
too_short | 400 | name | Имя слишком короткое для вашего тарифа. |
sub_format | 400 | name | Имя сабдомена это 3–32 буквы, цифры или дефисы. |
sub_main | 400 | domain | Ссылки-сабдомены есть только на дополнительных доменах. |
name_batch | 400 | name | Собственное имя работает для одного адреса, не для пакета. |
taken | 409 | name | Это имя уже занято. |
note_long | 400 | note | Заметка длиннее, чем разрешает ваш тариф. |
note_required | 400 | note | Ссылке-заметке нужна заметка. |
bad_tag | 400 | tags | Теги: до 5, каждый до 24 символов. |
pro_only | 403 | Эта опция требует платного тарифа. | |
max_only | 403 | Ссылки-сабдомены требуют тарифа Max. | |
account_only | 403 | Этот вызов требует токена аккаунта. | |
limit | 429 | Квота ссылок на этот период исчерпана. | |
domain_limit | 429 | url | Дневной лимит ссылок на этот сайт без аккаунта исчерпан. |
ai_limit | 429 | name | Слишком много собственных имён за час, повторите позже. |
rate_limited | 429 | Слишком много запросов, снизьте частоту. | |
busy | 429 | Слишком много ссылок создаётся одновременно, повторите через мгновение. | |
auth | 401 | Токен отсутствует или недействителен. | |
not_found | 404 | Такой ссылки нет. | |
no_route | 404 | Такого эндпоинта нет. | |
method | 405 | Метод не поддерживается. | |
fetch | 500 | Не удалось создать ссылку, повторите попытку. | |
qr_unavailable | 501 | qr_format | QR-коды PNG недоступны на этом сервере, запросите svg. |
Лимиты частоты
Каждый вызов стоит единицы, а у каждого тарифа есть бюджет единиц в минуту (см. «Тарифы и ограничения»). Чтение стоит 1 единицу, страница списка 2, QR-код 3, редактирование 3, удаление 2, создание 5 плюс 1 за каждый адрес. Каждый ответ содержит заголовки:
| Заголовок | Значение |
|---|---|
X-RateLimit-Limit | Бюджет единиц в минуту |
X-RateLimit-Remaining | Сколько единиц осталось в текущей минуте |
X-RateLimit-Reset | Через сколько секунд бюджет обновится |
Retry-After | При 429: через сколько секунд повторить запрос |
В любом окне длиной 10 секунд можно потратить не более четверти минутного бюджета, но не менее 20 единиц. При исчерпании бюджета API отвечает статусом 429.
Тарифы и ограничения
Точные ограничения каждого тарифа. Ссылки считаются за сутки на IP-адрес на Free и за месяц на аккаунт на платных тарифах. Последний столбец перечисляет настройки, доступные тарифу.
| Тариф | Ссылок | Собственных имён в час | Мин. длина имени | Длина заметки | Единиц в минуту | Настройки |
|---|---|---|---|---|---|---|
| Free | 5 в сутки на IP-адрес | 5 | 5 | 0 | 60 | нет |
| Pro | 500 в месяц | 10 | 3 | 300 | 150 | password, expires_days, max_hits, edit, tags, note, domain, delay, qr_logo |
| Pro+ | 2,000 в месяц | 50 | 3 | 2,000 | 400 | password, expires_days, max_hits, edit, edit url, tags, note, note_only, domain, delay, qr_logo |
| Max | 50,000 в месяц | 200 | 3 | 5,000 | 1,000 | password, expires_days, max_hits, edit, edit url, tags, note, note_only, domain, sub, delay, qr_logo |
| Enterprise | без ограничений | без ограничений | 3 | 5,000 | 2,500 | password, expires_days, max_hits, edit, edit url, tags, note, note_only, domain, sub, delay, qr_logo |
Без токена аккаунта создание учитывается в квоте Free для IP-адреса: 5 ссылок в сутки. Ссылки на домен, зарегистрированный меньше года назад, делят одну гостевую квоту в 5 ссылок в сутки, кто бы их ни создавал. Одновременно у одного вызывающего может создаваться не более 2 ссылок.
Спецификация OpenAPI
Полное техническое описание в виде документа OpenAPI 3.1: http://anonym.es/api/v1/openapi.json
Документ содержит схемы и примеры всех запросов и ответов, ограничения тарифов, правила имён и коды ошибок. Подходит для Swagger UI, Postman, Insomnia и генераторов клиентов.