REST API
Запускайте проверки прямо из своего кода. API доступен на тарифе Pro и выше, авторизуется bearer-ключом и оплачивается кредитами.
Последнее обновление: 4 сентября 2026
Аутентификация
Создайте ключ в разделе Настройки → API-ключи. Ключ в открытом виде показывается один раз и потом не восстанавливается; в читаемом виде хранится только его префикс. Передавайте его как bearer-токен в каждом запросе.
curl https://api.namescope.dev/v1/usage \
-H "Authorization: Bearer ns_live_..."У каждого ключа есть набор областей доступа. Запрос, которому нужна отсутствующая у ключа область, отклоняется с кодом 403 — поэтому ключ, выданный интеграции только для чтения, не сможет запустить платную проверку.
| Область доступа | Что разрешает |
|---|---|
| scans:write | POST /v1/scans — запуск проверки, за которую списываются кредиты |
| scans:read | GET /v1/scans, GET /v1/scans/{id}, GET /v1/usage |
| reference:read | Справочные эндпоинты /v1/ref/* |
Кредиты и квота
Любая проверка оплачивается кредитами — запущена она отсюда или из веб-приложения. Стоимость равна сумме запускаемых модулей: 100 кредитов при пяти модулях по умолчанию и меньше, если один отключить. Тариф начисляет кредиты каждый месяц, неизрасходованные переносятся.
Списание записывается до того, как задачи попадут в очередь, поэтому неоплаченная проверка никогда не запускается и не оставляет после себя записи. Если постановка в очередь не удалась уже после списания, кредиты возвращаются автоматически.
- Недостаточный баланс → 429 с телом problem, где описана нехватка
- Тариф без доступа к API → 402 и ссылка на повышение тарифа
- Расходование кредитов отключено для рабочего пространства → 403
Запуск проверки
POST /v1/scans ставит проверку в очередь и сразу отвечает кодом 202. Проверка выполняется асинхронно: в ответе приходит scanId, а не результат.
curl -X POST https://api.namescope.dev/v1/scans \
-H "Authorization: Bearer ns_live_..." \
-H "Content-Type: application/json" \
-d '{
"name": "tion studios",
"regions": ["TR", "EM", "US"],
"niceClasses": [9, 41],
"tlds": ["com", "io"],
"modules": ["trademark", "domain", "social"]
}'{ "scanId": "scn_...", "totalJobs": 12, "creditsSpent": 100, "balance": 1900 }| Поле | Обязательное | Значение |
|---|---|---|
| name | да | Проверяемое название бренда, 2–64 символа |
| regions | нет | Ведомства для поиска товарных знаков. По умолчанию — значение рабочего пространства |
| niceClasses | нет | Классы товаров и услуг 1–45. Сужают попадания по товарным знакам до реальных конфликтов |
| tlds | нет | Доменные зоны, без начальной точки |
| modules | нет | trademark, domain, social, dev, appstore |
| adapters | нет | Ограничить проверку конкретными адаптерами источников по id |
| projectId | нет | Отнести проверку к существующему проекту |
| options.alternatives | нет | Дополнительно сгенерировать альтернативные названия и бегло их проверить |
| options.similarSearch | нет | Нечёткий поиск похожих товарных знаков (Pro и выше) |
Чтение результата
Опрашивайте GET /v1/scans/{id}, пока status не станет completed или completed_partial. Обычная проверка завершается меньше чем за минуту; опрашивайте примерно раз в секунду и увеличивайте интервал по мере ожидания, чтобы долгая проверка не съела лимит запросов.
curl https://api.namescope.dev/v1/scans/scn_... \
-H "Authorization: Bearer ns_live_..."| status | Значение |
|---|---|
| queued | Принято, ни один источник ещё не опрошен |
| running | Часть проверок выполнена; прогресс показывают doneJobs / totalJobs |
| completed | Все проверки завершены |
| completed_partial | Завершено, но хотя бы один источник не удалось подтвердить |
| failed | Проверку не удалось выполнить |
Каждая запись в checks — это ответ одного источника по одной цели, со своим вердиктом, адресом sourceUrl, откуда он прочитан, и меткой времени fetchedAt. Объект summary появляется после завершения проверки и содержит оценку, уровень риска и сводку по товарным знакам.
| verdict | Значение |
|---|---|
| available | Источник сообщает, что название свободно |
| taken | Занято — зарегистрированный аккаунт, работающий домен |
| conflict | Действующий товарный знак, пересекающийся с запрошенными классами |
| risky | Используется так, что может помешать вам, а может и нет |
| unknown | Источник не удалось подтвердить |
| error | Сбой источника; причина указана в errorCode |
Справочные данные
Четыре справочных эндпоинта описывают, что может содержать запрос на проверку. Им нужна область доступа reference:read, и они бесплатны.
| Эндпоинт | Что возвращает |
|---|---|
| GET /v1/ref/nice-classes | 45 классов Ниццкой классификации |
| GET /v1/ref/regions | Ведомства по товарным знакам, доступные для поиска |
| GET /v1/ref/tlds | Доменные зоны, сгруппированные по уровням |
| GET /v1/ref/adapters | Все адаптеры источников с указанием модуля |
Ошибки и лимиты запросов
Ошибки возвращаются как problem-документы по RFC 9457 с типом содержимого application/problem+json. Поле type определяет вид сбоя, detail поясняет его, а некоторые ответы несут дополнительные поля, например upgradeUrl.
{
"type": "https://namescope.dev/errors/quota-exceeded",
"title": "Quota exceeded",
"status": 429,
"detail": "Not enough credits (balance 0, need 100). Top up or switch off a module to continue."
}| Статус | Когда |
|---|---|
| 400 | Тело запроса не прошло валидацию |
| 401 | Ключ отсутствует, неизвестен, отозван или истёк |
| 402 | Тариф не включает публичный API |
| 403 | У ключа нет нужной области доступа либо расходование кредитов отключено |
| 404 | В этом рабочем пространстве такой проверки нет |
| 429 | Превышен лимит запросов или исчерпан баланс кредитов |
Лимиты считаются по каждому ключу в скользящем окне в одну минуту и передаются в каждом ответе, чтобы вы могли снизить нагрузку до того, как получите отказ.
x-ratelimit-limit: 60
x-ratelimit-remaining: 58
x-ratelimit-reset: 41OpenAPI
Полное машиночитаемое описание доступно по адресу /v1/openapi.json. Аутентификация для него не нужна, поэтому клиент можно сгенерировать ещё до получения ключа.