API
Создавайте, проверяйте и удаляйте ссылки через API.
Работоспособность
Проверьте готовность приложения, базы и настроек открытия ссылок. Запрос не создаёт ссылку и не требует ключа.
200 — сервис готов. 503 — временно недоступен. Ответы не кешируются и не раскрывают устройство инфраструктуры.
/v1/healthcurl https://api.anon.legal/v1/health200 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.
/v1/linkscurl 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.
/v1/links/:idcurl 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: ссылка не найдена или ключ неверен.
/v1/links/:idcurl -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-клиент повторяет только чтение, с ограниченным ожиданием.