Skip to main content
Базовый URL: https://l402kit.com Все ответы имеют тип application/json. CORS включён для всех источников.

Инвойсы

Создать инвойс

POST /api/invoice Создаёт Lightning-инвойс BOLT11. Вызывается автоматически через ManagedProvider — вам редко нужно вызывать это напрямую. Тело запроса
ПолеТипОбязательноОписание
amountSatsnumberСумма в satoshis (мин. 1)
ownerAddressstringВаш Lightning Address. Обязателен для выполнения сплита.
Ответ 200
{
  "paymentRequest": "lnbc10n1p...",
  "paymentHash":    "a1b2c3...",
  "macaroon":       "eyJoYXNoIjoiYTFiMm..."
}
Ошибки
КодПричина
400Отсутствует или недопустимое значение amountSats
429Превышен лимит запросов (20 запросов/мин на IP)
503Lightning-провайдер временно недоступен

Проверить токен

POST /api/verify Проверяет токен L402 на стороне сервера без SDK. Тело запроса
{ "token": "<macaroon>:<preimage>" }
Ответ 200
{ "valid": true }
{ "valid": false, "error": "Token expired" }

Сплит и платежи

Выполнить сплит

POST /api/split Вручную запускает разделение платежа 99,7/0,3% на Lightning Address. Требует заголовок x-split-secret.
В большинстве случаев сплит запускается автоматически через вебхук Blink. Используйте этот эндпоинт только для ручного восстановления или кастомных интеграций.
Заголовки
ЗаголовокЗначение
x-split-secretВаша переменная окружения SPLIT_SECRET
Тело запроса
{
  "amountSats":   1000,
  "ownerAddress": "you@blink.sv"
}
Ответ 200
{ "ok": true, "ownerSats": 997 }
Ответ 200 (пропущено — ниже минимума)
{ "ok": true, "skipped": true }

Дашборд и статистика

Получить статистику

GET /api/stats Возвращает аналитику платежей. Требует токен сессии LNURL-auth в заголовке Authorization. Ответ 200
{
  "totalPayments": 42,
  "totalSats":     8400,
  "shinydappsFee": 25,
  "walletSats":    12345,
  "walletUsdCents": 456789,
  "byOwner": {
    "dev@blink.sv": { "count": 42, "sats": 8400 }
  },
  "byDay": {
    "2026-04-24": { "count": 5, "sats": 1000 }
  },
  "trend": {
    "payments7d": 12,
    "sats7d": 2400
  },
  "recent": [
    {
      "id": "uuid",
      "endpoint": "/api/data",
      "payment_hash": "a1b2...",
      "amount_sats": 100,
      "owner_address": "dev@blink.sv",
      "paid_at": "2026-04-24T10:00:00Z"
    }
  ]
}

Pro-тариф

Проверить Pro-доступ

GET /api/pro-check?address=you@blink.sv Возвращает информацию о наличии активной Pro-подписки для указанного Lightning Address. Ответ 200
{ "active": true,  "expiresAt": "2026-05-24T10:00:00Z" }
{ "active": false }

Оформить подписку Pro

GET /api/dev-token?address=you@blink.sv Возвращает Lightning-инвойс для приобретения 30-дневной Pro-подписки (~9 000 sats). Ответ 200
{
  "priceSats": 9000,
  "invoice":   "lnbc90n1p...",
  "macaroon":  "eyJoYXNoIjoiY..."
}
POST /api/dev-token Активирует Pro после оплаты инвойса. Тело запроса
{ "macaroon": "...", "preimage": "..." }
Ответ 200
{ "access": true, "expiresAt": "2026-05-24T10:00:00Z" }

Аутентификация (LNURL-auth)

Инициировать вход

GET /api/lnurl-auth Возвращает LNURL-auth-запрос для входа в дашборд. Отсканируйте QR-код в дашборде.

LNURL-pay эндпоинт

GET /.well-known/lnurlp/:username Стандартные метаданные LNURL-pay для разрешения Lightning Address. Используется внутри механизма сплита.

Демо

Демо-индекс

GET /api/demo Возвращает информацию о доступных демо-эндпоинтах.

Цена BTC (платный)

GET /api/demo/btc-price Возвращает актуальную цену BTC. Требует действительный токен L402 (1 sat). При первом вызове возвращает 402 с инвойсом и macaroon. Повторите запрос с заголовком Authorization: L402 <macaroon>:<preimage>.

Получить preimage

GET /api/demo/preimage?hash=<paymentHash> После оплаты демо-инвойса вызовите этот эндпоинт с paymentHash, чтобы получить ваш preimage и сформировать токен L402.

Вебхуки

POST /api/blink-webhook Внутренний эндпоинт. Принимает подписанные подтверждения платежей от Blink (Svix HMAC-SHA256). Запускает сплит и записывает платёж в журнал. Не предназначен для прямого использования.

Каталог API

Зарегистрировать API

POST /api/register Регистрирует ваш L402-защищённый API в публичном каталоге. Вызывается автоматически через ManagedProvider.fromAddress(), если указан параметр registerDirectory. Идемпотентен — безопасно вызывать при каждом запуске сервера. Тело запроса
ПолеТипОбязательноОписание
urlstringПубличный URL вашего L402-эндпоинта
namestringОтображаемое название
price_satsnumberЦена за вызов в satoshis (мин. 1)
lightning_addressstringВаш Lightning Address
descriptionstringКраткое описание
categorystringdata, ai, finance, weather, compute, storage или other
Ответ 200
{ "ok": true, "id": "uuid" }

Список API

GET /api/apis.json Возвращает все зарегистрированные API. Машиночитаемый формат — предназначен для агентов, обнаруживающих платные API. Параметры запроса
ПараметрОписание
categoryФильтр по категории (data, ai, finance, weather, compute, storage, other)
Ответ 200
{
  "version": "1",
  "count": 3,
  "apis": [
    {
      "url": "https://api.example.com/weather",
      "name": "Weather API",
      "description": "Live weather data, 1 sat per query",
      "price_sats": 1,
      "category": "weather",
      "created_at": "2026-04-26T10:00:00Z"
    }
  ]
}

Конфиденциальность данных

Удалить мои данные

POST /api/delete-data Инициирует LNURL-auth-запрос. После верификации через кошелёк все записи о платежах, связанные с аутентифицированным pubkey, безвозвратно удаляются (право на удаление по GDPR).