Эти методы не требуют токена и подходят для сайтов-витрин, ботов и интеграций. Лимит — 240 запросов в минуту с одного IP.
Каталог — GET /public/catalog
{"ok": true, "plans": [{"id": "2:10", "preset_id": 10, "dc_id": 2, "tier": "Start", "name": "2 vCPU · 4 ГБ · 40 ГБ", "country": "Нидерланды", "flag": "nl", "city": "Амстердам", "cpu_name": "AMD EPYC", "cpu": 2, "ram": 4, "disk": 40, "eth": "1 Гбит/с", "ipv6": true, "os": [{"id": 5, "name": "Ubuntu 24.04"}, {"id": 7, "name": "Debian 12"}], "prices": {"720": 1090, "2160": 3090, "4320": 6090, "8640": 11900}}], "periods": [{"id": 720, "name": "1 месяц", "months": 1, "discount": 0}, {"id": 2160, "name": "3 месяца", "months": 3, "discount": 5}], "support": "@dobyrhostbot"}
prices — за весь период в рублях, ключ — период в часах. Скрытые конфигурации не отдаются. При недоступности поставщика — 503 catalog_unavailable.
Список ПО — GET /public/software
{"ok": true, "recipes": [{"id": "docker", "name": "Docker CE + Compose", "description": "Docker Engine, Compose и Buildx…", "group": "Разработка", "requires": [], "conflicts": [], "ram": 1}, {"id": "3x-ui", "name": "3x-ui", "group": "Сеть и панели", "requires": [], "conflicts": [], "ram": 1}]}
requires — зависимости, ставятся автоматически; conflicts — нельзя выбрать вместе; ram — минимум ГБ.
База знаний
GET /public/kb— разделы и статьи (articles[]:slug,title,summary,category,tags,views),popular[].GET /public/kb/search?q=firewall&limit=5— поиск по заголовку, тегам и тексту:
{"ok": true, "q": "firewall", "results": [{"id": 13, "slug": "firewall", "category": "manage", "category_title": "Управление сервером", "title": "Firewall: пресеты, порты, белый список", "summary": "Управление ufw из кабинета без риска закрыть себе SSH.", "score": 23}]}
GET /public/kb/{slug}— статья:article.body(Markdown),article.minutes,related[].POST /public/kb/{slug}/helpful{"helpful": true}— оценка (по одной с адреса/аккаунта).
Ссылка на статью на сайте: https://dobry.pw/help/<slug>.html.
Looking Glass
GET /public/lg— точки с тест-IP, файлами и замерами задержки из российских сетей:
{"ok": true, "points": [{"id": 2, "city": "Франкфурт", "country": "Германия", "flag": "de", "ip": "81.19.141.48", "bandwidth": 2000, "files": [{"size": "100 МБ", "url": "https://…/100.mb"}], "samples": [{"network": "MTS", "city": "Moscow", "avg": 31.1, "loss": 0}], "updated": 1789738000, "best": 31.1, "avg": 49.9}], "networks": ["MTS", "Rostelecom", "Vimpelcom"], "updated": 1789738000}
POST /public/lg/check{"target_id": 2}— измерение до точки из региона отправителя (до 10 с, 4 запроса за 15 минут с адреса):
{"ok": true, "from_city": "Moscow", "from_country": "Russia", "finished": true, "rows": [{"network": "MTS", "city": "Moscow", "country": "RU", "avg": 33.4, "loss": 0, "status": "responded"}]}