🔑 Unshared KV API v2.0

Unified API for KV (KeyVault) validation, shared detection, and rarity checking.

Quick Test
Response will appear here...
📡 Endpoints
GET /api/?action=info&id={serial}

Public endpoint - Check if a KV is shared and get info

ParameterTypeDescription
id *string12-character KV serial
statusintOptional: 1=unbanned, 2=banned (logs the check)
{"shared":false,"info":{"id":"000000000000","amount":0,"status":"1","timestamp":"Just Now","from_us":false,"logged":false}}
POST /api/?action=check

Check KV shared status (used by validator)

ParameterTypeDescription
id *string12-character KV serial
statusint1=unbanned, 2=banned
GET /api/?action=rarity&date={MM-DD-YY}

Get KV rarity based on manufacturing date

ParameterTypeDescription
date *stringDate in MM-DD-YY format
{"success":true,"rarity":"Common","production":"8M","console":"Phat (Jasper)"}
POST /api/?action=validate

Validate one or more KV files or ZIP packs (multipart). Fields: kv_files[], kv_file, or file. Raw KV must be 16384 bytes. Multiple 16 KB files return multi:true with results[]. Powered by KVChecker.com.

ParameterTypeDescription
file / kv_file / kv_files[] *filekv.bin and/or .zip containing 16 KB KeyVaults
POST /api/?action=validate_url

Fetch and validate a remote .bin or .zip URL. Optional product name sets expected KV count for packs.

ParameterTypeDescription
url *stringhttps URL of kv.bin or a ZIP pack
productstringShop product name, e.g. 2keys
POST /api/?action=store

Store KV data in session

ParameterTypeDescription
serial *stringSerial number
mfg *stringManufacturing date
partstringPart number
modelstringModel number
drivestringDrive ID
GET /api/?action=data&type={view|dl}

Get or download stored session data

🔐 Authentication Endpoints
POST /api/?action=login

Authenticate with username/password to get API token

ParameterTypeDescription
username *stringAccount username
password *stringAccount password
{"success":true,"user":{"id":1,"username":"example","email":"user@example.com","level":1},"api_token":"abc123..."}
GET /api/?action=profile

Get authenticated user's profile (requires token)

Header/ParamTypeDescription
AuthorizationheaderBearer {api_token}
api_tokenstringAlternative: pass token as parameter
POST /api/?action=regenerate_token

Generate a new API token (requires authentication)

📦 Downloads & Purchases
GET /api/?action=downloads

Get list of user's purchased downloads (requires token)

{"success":true,"count":2,"purchases":[{"transaction_id":"TXN123","product_name":"KV","download_url":"/api/?action=download&token=..."}]}
GET /api/?action=download&token={token}&txn={txn_id}

Download a purchased file (requires token). Default JSON includes redirect to dl.unshared.shop. Add stream=1 to receive file bytes (extract=1 unpacks a single KV from ZIP).

ParameterTypeDescription
token *stringDownload token from purchases list
txn *stringTransaction ID
streamint1 = stream bytes instead of JSON redirect
extractint1 (default) extract kv.bin from ZIP when streaming
POST /api/?action=purchase

Buy a digital product with store credits (requires token)

ParameterTypeDescription
product_name *stringCatalog name, e.g. 1key
product_idintMust match product_name if sent
discount_codestringOptional percent-off code
GET /api/?action=products

Get available products (public)

🔑 Authentication Methods

Pass your API token using one of these methods:

🔗 Legacy Support

The following legacy endpoints are still supported for backward compatibility: