К ссылкам

API

Создавайте, проверяйте и удаляйте ссылки через API.

Базовый URLhttps://api.anon.legal

Аккаунт и API-токен не нужны.

OpenAPI · Python-клиент

Работоспособность

Проверьте готовность приложения, базы и настроек открытия ссылок. Запрос не создаёт ссылку и не требует ключа.

200 — сервис готов. 503 — временно недоступен. Ответы не кешируются и не раскрывают устройство инфраструктуры.

GET/v1/health
curl https://api.anon.legal/v1/health
Ответ200 OK · Пример
{
  "ok": true
}

Создать ссылку

Передайте адрес назначения и нужные настройки. В ответе — публичная ссылка и ключ. Сохраните ключ: он возвращается только один раз.

Параметры JSON

urlstring · обязательно
HTTP/HTTPS-адрес. Если протокол не указан, добавляется HTTPS. До 8192 символов, без встроенных логина и пароля.
formatstring
token (по умолчанию), uuid или words.
lengthinteger
Длина token: 8–128, по умолчанию 16.
expires_ininteger | null
Секунд от создания: 60–315360000. Не указывайте или передайте null для бессрочности.
Остальные параметры8
alphabetstring
mixed (по умолчанию), lowercase или hex. Минимальная длина — 8, 10 и 12 соответственно.
word_countinteger
6, 9, 12 или 15 независимых слов BIP39. По умолчанию 12; это не seed-фраза кошелька.
passwordstring
Необязательно, 8–128 символов. Хранится только scrypt-хеш с солью.
max_visitsinteger | null
1–10000 успешных открытий. Не указывайте или передайте null для отсутствия лимита.
open_modestring
direct (по умолчанию) или page со страницей подтверждения.
not_before_ininteger
Задержка открытия в секундах: 0–31536000, по умолчанию 0. Раньше срока истечения.
page_titlestring
Необязательный заголовок подтверждения, до 80 символов.
page_notestring
Необязательное сообщение подтверждения, до 240 символов.

Пароль, лимит или режим page открывают форму подтверждения. GET и HEAD не расходуют лимит; успешный POST атомарно расходует одно открытие. До назначенного времени ссылка возвращает 404.

POST/v1/links
curl https://api.anon.legal/v1/links \
  -H 'Content-Type: application/json' \
  -d '{
    "url": "https://example.com/page",
    "length": 16,
    "expires_in": 86400
  }'
Ответ201 Created
{
  "id": "Ab3dEf6hJk9mNp2Q",
  "url": "https://anon.legal/r/Ab3dEf6hJk9mNp2Q",
  "key": "<43-character-key; save it once>",
  "expires_at": "2026-10-22T12:00:00.000Z",
  "available_at": null,
  "format": "token",
  "alphabet": "mixed",
  "password_protected": false,
  "max_visits": null,
  "open_mode": "direct"
}

Проверить ссылку

Получите адрес назначения, настройки и состояние по ключу удаления. Запрос не открывает ссылку и не расходует остаток открытий.

Состояния: active, scheduled, expired, exhausted. Удалённая ссылка, уже очищенная при открытии истёкшая ссылка и неверный ключ возвращают одинаковый 404.

GET/v1/links/:id
curl https://api.anon.legal/v1/links/LINK_ID \
  -H "Authorization: Bearer $KEY"
Ответ200 OK
{
  "id": "Ab3dEf6hJk9mNp2Q",
  "url": "https://anon.legal/r/Ab3dEf6hJk9mNp2Q",
  "destination": "https://example.com/page",
  "status": "active",
  "expires_at": null,
  "available_at": null,
  "format": "token",
  "password_protected": false,
  "max_visits": null,
  "remaining_visits": null,
  "open_mode": "direct",
  "page_title": null,
  "page_note": null,
  "created_at": "2026-10-22T12:00:00.000Z",
  "age_seconds": 3600,
  "visits": "42",
  "stats_since": "2026-10-22T12:00:00.000Z"
}

Удалить ссылку

Нужны ID ссылки и её приватный ключ. Передавайте ключ в заголовке Authorization, а не в URL. Отменить удаление нельзя.

204: удалено. 401: ключ отсутствует или имеет неверный формат. 404: ссылка не найдена или ключ неверен.

DELETE/v1/links/:id
curl -X DELETE \
  https://api.anon.legal/v1/links/LINK_ID \
  -H "Authorization: Bearer $KEY"
Ответ204 No Content

Без тела ответа.

Лимиты и ошибки

Только JSON, не более 16 KiB. Неверные данные возвращают 400. Приблизительный лимит — 1000 запросов/сек/IP; для паролей он строже. Ответ 429 содержит Retry-After. Не повторяйте создание автоматически после тайм-аута или 503: ссылка уже могла создаться. Python-клиент повторяет только чтение, с ограниченным ожиданием.