Vine

roblox keysystem

Vine KeySystem

Get started

Sign up, create a project with your prefix, then generate keys.

Pricing

Start free. Upgrade when your hub grows.

Free

$0

  • 500 keys / month
  • 1 project
  • 10k verify / month
  • 30 rpm
  • 1 checkpoint
  • 32kb per request

Plus

$5

  • 50k keys / month
  • 5 projects
  • 200k verify / month
  • 120 rpm
  • 5 checkpoints
  • 128kb per request

Ultra

$30

  • 1M keys / month
  • 30 projects
  • 2M verify / month
  • 600 rpm
  • 15 checkpoints
  • 256kb per request

Guide

How to run your hub on Vine — checkpoints, keys, and the loader.

For players — getting a key

  1. Open your hub's key page (/key.html?project=…).
  2. Press Start and complete each checkpoint (Linkvertise / LootLabs / Work.ink).
  3. Copy the key and paste it into the script's key prompt. Done.
  4. Paste it into the script's key prompt. Done.

For developers — setting up a project

  1. Create a project in Get Started — the prefix becomes your brand (WOLF_HUB-…).
  2. Click Add checkpoint — Vine shows its redirect URL. Create your ad around it: in the provider dashboard make a new ad (e.g. work.ink/1212/vine) with the redirect URL as Target / Destination.
  3. Paste the finished ad link back into the checkpoint, repeat for 2, 3…, set the key expiry (0 = lifetime), and save. After the final step the player gets the key — nothing to configure there.
  4. Share your key page URL (/key.html?project=YOUR_ID) in your Discord / script.
  5. Need keys without checkpoints (testing, staff, premium)? Call POST /v1/generate with your owner login token — same math keys, no UI, no storage.
  6. Verify keys from your loader with GET /v1/verify:
local HttpService = game:GetService("HttpService")
local res = request({
  Url = "https://vinekey.space/v1/verify?project=" .. HttpService:UrlEncode("YOUR_PROJECT_ID"),
  Method = "GET",
  Headers = {
    ["x-api-key"] = "vine_YOUR_PROJECT_KEY",
    ["x-project-id"] = "YOUR_PROJECT_ID",
    ["x-key"] = Key,
    ["x-hwid"] = gethwid and gethwid() or "unknown",
  },
})
local data = HttpService:JSONDecode(res.Body)
if data.valid then print("welcome") else print(data.reason) end

Full loader with key prompt: vine_keysystem.lua

Fast loader — verify + auto-run

Set your hub's Main script in Project settings, then ship this loader. It verifies the key with GET /v1/verify, fetches your script with GET /v1/script?key= (valid keys only), and runs it — calling your callback after:

local Vine = loadstring(game:HttpGet("https://vinekey.space/vine_loader.lua"))()
Vine.Config.ProjectId = "YOUR_PROJECT_ID"
Vine.Config.ApiKey = "vine_YOUR_PROJECT_KEY"
Vine.Prompt(function(ok, err)
  if not ok then return end
end)

Loader source: vine_loader.lua · the UI is draggable, closable, has a Get Key button (copies the key-page link with the player's HWID prefilled), and rate-limits attempts. No script set? The loader reports no_script_set — use the verify-only flow instead.

About + API

Endpoints

POST /v1/generate   (owner JWT + projectId, expiresInHours, hwid?) → { key }
GET  /v1/verify?key=  (x-api-key + x-project-id + x-hwid) → { valid }
GET  /v1/status?key=  (lightweight poll, no quota burn)
GET/PATCH /v1/projects (owner JWT — checkpoints, expiry defaults)
POST /v1/checkpoint/start · GET /v1/checkpoint/go · GET /v1/checkpoint/return · POST /v1/checkpoint/redeem
GET  /v1/project-info?project= (public key-page card) · GET /v1/usage
GET  /v1/script?key= (x-api-key + x-project-id — main script for valid keys only)

LuaU: vine_loader.lua (verify + auto-run) · vine_keysystem.lua (verify only) · embed widget