API: Домены
Эндпоинты для работы с кастомными доменами. Авторизация: Bearer JWT, Telegram initData или API-токен.
Список доменов
http
GET /api/domainsОтвет:
json
{
"data": [
{
"id": 1,
"domain": "brand.link",
"status": "verified",
"cname_target": "links.tgio.app",
"is_default": 1,
"is_active": 1,
"verified_at": "2026-04-10T12:00:00.000Z",
"last_check_at": "2026-04-10T03:00:00.000Z",
"check_error": null,
"created_at": "2026-04-09T10:00:00.000Z",
"updated_at": "2026-04-10T12:00:00.000Z"
}
],
"count": 1
}Добавить домен
http
POST /api/domains
Content-Type: application/json
{
"domain": "brand.link",
"is_default": true
}| Поле | Тип | Обязательное | Описание |
|---|---|---|---|
domain | string | ✅ | Домен без протокола (макс. 253 сим.) |
is_default | boolean | ❌ | Использовать как домен по умолчанию |
Ответ: объект домена со статусом pending.
Ошибки:
| Код | Причина |
|---|---|
| 400 | Некорректный формат домена |
| 400 | Домен tgio.app, tg.io — запрещён |
| 400 | Домен уже зарегистрирован |
| 403 | Превышен лимит доменов для вашего тарифа |
Обновить домен
http
PUT /api/domains/:id
Content-Type: application/json
{
"is_default": true
}| Поле | Тип | Описание |
|---|---|---|
is_default | boolean | Сделать доменом по умолчанию |
is_active | boolean | Включить/выключить домен |
Проверить DNS
http
POST /api/domains/:id/verifyИнициирует немедленную проверку CNAME-записи. Возвращает обновлённый объект домена.
Ответ:
json
{
"id": 1,
"domain": "brand.link",
"status": "verified",
"verified_at": "2026-04-10T12:00:00.000Z",
"last_check_at": "2026-04-10T12:00:00.000Z",
"check_error": null
}Статус домена
http
GET /api/domains/:id/statusОтвет:
json
{
"id": 1,
"domain": "brand.link",
"status": "verified",
"check_error": null,
"last_check_at": "2026-04-10T03:00:00.000Z",
"verified_at": "2026-04-10T12:00:00.000Z"
}Удалить домен
http
DELETE /api/domains/:idОтвет: { "ok": true }
У ссылок, привязанных к удалённому домену, domain_id обнулится. Они продолжат работать через tgio.app.
Создание ссылки с кастомным доменом
При создании ссылки передайте domain_id:
http
POST /api/links
Content-Type: application/json
{
"url": "https://example.com",
"domain_id": 1
}В ответе trackingUrl будет содержать кастомный домен:
json
{
"id": 42,
"code": "x7k2m1",
"trackingUrl": "https://brand.link/x7k2m1"
}Если domain_id не передан, но у пользователя есть домен по умолчанию — он подставляется автоматически.
