⚙ Developer API v1 100% бесплатно

Публичный JSON-API для сторонних лоадеров и GUI. Полностью бесплатный — без платных тарифов и лимитов по подписке. Ты делаешь свой интерфейс — авторизация, ключи, платежи и хранение скриптов остаются на GrieferHub.
Все эндпоинты отвечают JSON (кроме /script — он отдаёт код). GET-запросы работают отовсюду, включая game:HttpGet в Roblox. POST принимает JSON или form-body с теми же параметрами.

Как сделать свой лоадер (пошагово)

Твой GUI — это просто «оболочка»: он спрашивает у сервера GrieferHub, может ли игрок запустить скрипт, показывает ссылку на ключ, затем скачивает и запускает скрипт. Вся схема: твой GUI → /checkkey → /script → скрипт работает. Ключи и код нигде не хранятся у тебя — всё остаётся на GrieferHub.

Откуда брать параметры

ЧтоОписание
pidID скрипта из ссылки его страницы: /script?pid=ab12cd34 → pid = ab12cd34.
hwidRoblox UserId игрока: tostring(Players.LocalPlayer.UserId). Один аккаунт = один hwid.
keyСтрока KEY-..., которую игрок получил после прохождения чекпоинтов твоей key system.
tokenНеобязательно. Создаётся в профиле (вкладка ⚙ API): выше лимит + лог обращений.

Весь процесс за 4 шага

1. Дай игроку получить ключ

Запроси /api/v1/getkey?pid=... — вернётся ссылка на key system. Покажи её в GUI или скопируй в буфер.

2. Игрок вводит ключ

После прохождения чекпоинтов игрок получает строку KEY-... и вводит её в твой GUI.

3. Проверь через /checkkey

Статус "valid" → грузи скрипт через /script. Любая ошибка → просто покажи поле message — там уже человекочитаемый текст.

4. Пингуй /heartbeat во время игры

Раз в несколько минут. Кормит счётчики онлайна и блокирует использование одного ключа на двух устройствах сразу.

Готовый пример лоадера (Lua)

Полный минимальный лоадер на нашей библиотеке окон GHUI + API. Замени DOMAIN и PID — это всё.

-- 1) наша библиотека окон
local HttpService = game:GetService("HttpService")
local API  = "https://secret.griefer.world/api/v1"
local PID  = "ab12cd34"   -- pid вашего скрипта
local HWID = tostring(game.Players.LocalPlayer.UserId)

local function getJSON(url)
    local ok, res = pcall(function() return game:HttpGet(url) end)
    if not ok then return nil end
    local ok2, data = pcall(function() return HttpService:JSONDecode(res) end)
    return ok2 and data or nil
end

local UI = loadstring(game:HttpGet("https://secret.griefer.world/library/raw/ghui"))()
local Window = UI:CreateWindow({ Title = "My Loader" })
local Tab = Window:CreateTab("Key")
local KeyInput = Tab:CreateInput({ Title = "Your key", Placeholder = "KEY-..." })

-- 2) ссылка key system — в буфер обмена
Tab:CreateButton({
    Title = "Get Key (copy link)",
    Callback = function()
        local info = getJSON(API .. "/getkey?pid=" .. PID)
        if info and info.key_link and setclipboard then
            setclipboard(info.key_link)
        end
    end,
})

-- 3) проверяем ключ и грузим скрипт
Tab:CreateButton({
    Title = "Check & Load",
    Callback = function()
        local q = "?pid=" .. PID .. "&hwid=" .. HWID .. "&key=" .. KeyInput:Get()
        local data = getJSON(API .. "/checkkey" .. q)
        if data and data.success and data.status == "valid" then
            local code = game:HttpGet(API .. "/script" .. q)
            loadstring(code)()
        end
    end,
})

-- heartbeat каждые 3 минуты, пока скрипт работает
task.spawn(function()
    while true do
        task.wait(180)
        getJSON(API .. "/heartbeat?pid=" .. PID .. "&hwid=" .. HWID .. "&key=" .. KeyInput:Get())
    end
end)
Сначала создайте проект — код загрузите потом

Чтобы получить pid, не нужно сначала выкладывать скрипт. Создайте проект в профиле — pid и ключ-система работают сразу. Интегрируйте свой GUI с API, а Lua-код загрузите, когда будете готовы: он хранится на GrieferHub, и /script выдаёт его после проверки ключа, как и у обычных загрузок.

1. Создайте проект

Профиль → «Создать проект». Укажите название, добавьте свои Linkvertise-ссылки (необязательно) — pid появится сразу.

2. Интегрируйте /api/v1

Как и для загруженных скриптов: /getkey → игрок проходит чекпоинты → /checkkey → /heartbeat.

3. Загрузите код

Редактировать → вставьте Lua-код. Он хранится на GrieferHub; до этого /script отвечает no_code. Публичные проекты проходят одобрение администратора.

4. Готово — всё работает через нас

После одобрения скрипт появляется в каталоге, а /script выдаёт код после проверки ключа. Сторонние хостинги не участвуют ни на одном шаге.

Токен доступа опционально

Создаётся в профиле (вкладка ⚙ API). Передавайте его заголовком X-API-Token: gh_live_... или параметром &token=gh_live_.... Без токена — 60 запросов/мин с одного IP, с токеном — 300/мин, плюс каждый вызов виден в вашем профиле. Отозванный/несуществующий токен → 401.

Коды ошибок и что делать
ПараметрОписание
key_requiredУ скрипта включена key system — игроку нужен ключ. Покажи ссылку из /getkey.
invalid_keyНеверный ключ или он выдан другому Roblox-аккаунту
expired_keyКлюч истёк — игроку нужен новый
not_whitelistedПриватный скрипт: этого игрока нет в вайтлисте
pendingСкрипт ещё не одобрен админом
no_codeПроект существует, но автор ещё не загрузил код. Загрузите его через «Редактировать» в профиле.
rate_limitedСлишком много запросов — подожди минуту
api_disabledAPI отключён администрацией
Эндпоинты

GET/api/v1/info

Публичные метаданные скрипта (без авторизации): имя, автор, нужен ли ключ, цена, онлайн.

ПараметрОбязателенОписание
pidдаID скрипта
{
  "success": true, "status": "ok",
  "script": { "pid": "ab12cd34", "name": "My Script", "use_key": true,
               "price": 0, "visibility": "public", "online": 3,
               "updated_at": 1725000000.0, "author_id": "123..." }
}

GET/api/v1/getkey

Ссылка на прохождение key system — для кнопки «Get Key» в вашем GUI.

ПараметрОбязателенОписание
pidдаID скрипта
{
  "success": true, "status": "ok",
  "key_link": "https://link-center.net/...",
  "key_url": "https://secret.griefer.world/get-key?pid=ab12cd34"
}

Возможные статусы: no_key_system (ключи выключены для этого скрипта).

GET/api/v1/checkkey token

Главная проверка: разрешён ли запуск этому hwid с этим key. Учитывает приватные скрипты (вайтлист). Ответ подписан HMAC.

ПараметрОбязателенОписание
pidдаID скрипта
hwidдаRoblox UserId игрока
keyесли включена key systemКлюч игрока
{
  "success": true, "status": "valid", "message": "Key is valid",
  "expires_at": 1725086400.0,   -- unix time окончания ключа (или null)
  "expires_in": 86400,          -- секунд до окончания
  "online": 3,                  -- сейчас в игре (по heartbeat)
  "script_version": 1725000000, -- unix time последнего обновления скрипта
  "sig": "0af31c..."            -- HMAC-SHA256(secret, "pid:hwid:expires_at"), первые 32 символа
}

GET/api/v1/script token

Код скрипта (тот же обфусцированный payload, что получает встроенный лоадер). Успех — text/plain с Lua-кодом, ошибка — JSON. Каждый уникальный hwid раз в 24 часа засчитывается в загрузки скрипта.

ПараметрОбязателенОписание
pid / hwid / keyкак в /checkkeyПолная авторизация обязательна

GET/api/v1/heartbeat

Пинг «скрипт жив» каждые несколько минут во время работы. Защита от шаринга ключей: один ключ может быть активен только на одном устройстве — второе получит key_in_use (403), пока первое молчит дольше 30 минут. Возвращает число онлайн-игроков.

ПараметрОбязателенОписание
pid / hwid / keyкак в /checkkeyПолная авторизация обязательна
{
  "success": true, "status": "ok",
  "session": "same",   -- new | same | took_over
  "online": 3,
  "expires_in": 86400,
  "sig": "0af31c..."
}

GET POST/api/v1/report

Краш-репорт из вашего GUI — попадает в админ-панель GrieferHub.

ПараметрОбязателенОписание
pidдаID скрипта
messageдаТекст ошибки (до 2000 символов)
hwidопциональноКто отправил репорт
kindопциональноТип: crash / error / feedback
Проверка подписи (sig)

Ответы /checkkey и /heartbeat содержат sig = первые 32 символа HMAC-SHA256 от строки "pid:hwid:expires_at" секретом проекта. Секрет показывается автору на странице редактирования скрипта (блок «Developer API secret»). Так ваш GUI может убедиться, что ответ пришёл действительно от сервера GrieferHub, а не подменён.

-- Lua (экзекьюторы с crypt):
local expected = crypt.hmac.crypt(crypt.base64encode("pid:hwid:" .. tostring(expires_at)), secret)
-- сравните первые 32 символа с полем data.sig
Частые вопросы

Где взять мой pid?
Открой страницу своего скрипта в каталоге. Ссылка вида /script?pid=ab12cd34 — ab12cd34 и есть pid.

Обязательно ли использовать key system?
Если key system у скрипта выключена, /checkkey работает без параметра key — передавай только hwid.

Зачем нужен токен?
Он необязателен. Без токена — 60 запросов/мин на IP; с ним — 300/мин и лог обращений в профиле. Создаётся во вкладке ⚙ API профиля.

checkkey пишет invalid_key, но ключ вроде верный
Ключ привязан к Roblox-аккаунту (hwid), который его получил. Чужой аккаунт = invalid_key — именно так работает защита от шаринга ключей.

Можно начать использовать API до выкладки скрипта?
Да — используйте «Создать проект» в профиле. pid выдаётся мгновенно, весь ключевой поток /api/v1 работает. Lua-код загружается на GrieferHub потом (на странице редактирования) и раздаётся через /script, как у обычного скрипта.

Лимиты и правила

• API полностью бесплатный: платных тарифов и платных токенов не существует.
• Без токена — 60 запросов/мин на IP, с токеном — 300/мин на токен (429 при превышении).
• Ключи, покупки и доступ полностью повторяют правила встроенного лоадера — отдельной логики у API нет.
• Токен — не секретный ключ от аккаунта: он только идентифицирует ваши запросы. Не публикуйте его.
• Для своего GUI берите готовую библиотеку из GUI Library — наш GHUI SDK даёт CreateWindow/табы/кнопки одной строкой.
• Администрация может временно отключить API целиком — тогда все эндпоинты отвечают 503 api_disabled.
• Вопросы и расширенные лимиты — Discord-сообщество GrieferHub.