Complete API documentation for integrating voting rewards into your MUD. Let players earn in-game rewards for supporting your game!
Finding Your MUD ID: Hover over your MUD card and click the copy button next to "Play Now". The URL contains your MUD ID.
API Key Format: Your full API key looks like: mv_<mud_id>_<secret> — use the entire string as your API key.
123)mudvault.org/profile and gets a verification codeverify ABC123ch->pcdata->mudvault_verified = TRUE)reward_idcheckvotesGET /rewards/pending/<mud_id>For each pending reward:
IF character is online:
1. Generate random reward (gold/items/quest points)
2. Give to player immediately
3. POST to /rewards/claim/<reward_id>
4. Log successful delivery
ELSE:
1. Save to local pending file
2. Check again when player logs in
3. Deliver and claim when possible
POST https://mudvault.org/api/rewards/verify/confirm
Headers:
X-API-Key: mv_<mud_id>_<your_api_key>
Content-Type: application/json
Body:
{
"verification_code": "ABC123",
"character_name": "Despair"
}
Response: HTTP 200 on success, 400 on invalid codecharacter_name is case-sensitive
GET https://mudvault.org/api/rewards/pending/<mud_id>
Headers:
X-API-Key: mv_<mud_id>_<your_api_key>
Response:
{
"mud_id": 123,
"pending_rewards": [
{
"reward_id": "2df28ed3-c14e-407e-b6e5-da37514eb619",
"vote_id": "ed2718b6-30f0-4b26-9324-19013112f0c6",
"character_name": "Despair",
"reward_token": "de713c9befb04144910a541ed36a9dda",
"voted_at": "2025-10-02T09:55:53.813636+00:00",
"delivery_attempts": 0
}
],
"count": 1,
"timestamp": "2025-10-02T10:54:56.656Z"
}POST https://mudvault.org/api/rewards/claim/<reward_id>
Headers:
X-API-Key: mv_<mud_id>_<your_api_key>
Body: Empty or {}
Response: HTTP 200 on successInstead of polling every 5 minutes, MudVault can notify you instantly when someone votes. Think of it like MudVault calling your MUD directly saying "Hey, Despair just voted!"
POST https://yourmud.com/mudvault-webhook
Headers:
X-MudVault-Signature: sha256=abc123...
Content-Type: application/json
Body:
{
"reward_id": "2df28ed3-c14e-407e-b6e5-da37514eb098",
"vote_id": "ed2718b6-30f0-4b26-9324-19013112f0c6",
"character_name": "Despair",
"reward_token": "de713c9befb04144910a541ed43a8dda",
"voted_at": "2025-10-02T09:55:53.813636+00:00",
"mud_id": 123,
"mud_name": "Your MUD Name"
}Verify the Signature!
Instant notification, but your server must be up. Best for real-time delivery.
Check every 5 minutes, always works. Great as a backup or standalone.
Best practice: Use both! Webhook for speed, polling for reliability. If your server is down when someone votes, MudVault will retry 3 times, and you can still get it via polling.
GET https://mudvault.org/api/rewards/stats
Headers:
X-API-Key: mv_<mud_id>_<your_api_key>Returns total rewards created/delivered/pending, last 24 hours activity, and top voters (great for leaderboards!)
GET https://mudvault.org/api/rewards/claim/<reward_id>
Headers:
X-API-Key: mv_<mud_id>_<your_api_key>Returns current status (pending/delivered/claimed/failed), character name, reward token, and timestamps.
GET https://mudvault.org/api/rewards/characters/unlink
Headers:
X-API-Key: mv_<mud_id>_<your_api_key>
Query params (optional):
?verified_only=true
Response:
{
"mud_id": 123,
"characters": [
{
"id": "uuid-here",
"character_name": "Despair",
"verified": true,
"created_at": "2025-10-02T09:55:53.813636+00:00",
"updated_at": "2025-10-02T09:55:53.813636+00:00"
}
],
"count": 1,
"timestamp": "2025-10-02T10:54:56.656Z"
}Lists all characters registered for your MUD. Use verified_only=true to only show verified characters.
DELETE https://mudvault.org/api/rewards/characters/unlink?character_name=Despair
Headers:
X-API-Key: mv_<mud_id>_<your_api_key>
Response:
{
"success": true,
"message": "Character unlinked successfully",
"character_name": "Despair",
"was_verified": true
}When to use this:
Always exactly 32 hexadecimal characters (UUID without dashes)
de713c9befb04144910a541ed36a9ddaSafe to store as binary (16 bytes) if you want to save database space. Generated using UUID v4, guaranteed unique.
Standard UUID format with dashes (36 characters)
2df28ed3-c14e-407e-b6e5-da37514eb619100 API calls per minute per MUD
This is plenty for normal use (polling every 5 min = 12 calls/hour). If you hit the limit, wait a minute and retry.
Despair votes at 9:00 AM → MudVault creates reward_id abc-123
MUD polls at 9:05 AM → Gets pending reward for "Despair"
Despair is online → MUD gives 500,000 gold
MUD claims abc-123 → MudVault marks as delivered
Next poll at 9:10 AM → No pending rewards (already claimed)
If you have any questions, comments, concerns, or ideas, please let me know on Discord.
Join Discord (opens in a new tab)— Asmodeus (MudVault Founder)