PLEXICHATNarrative Docs

Features

Guides, route-group overviews, and live schema entry points for the Plexichat backend.

REST http://api.plexichat.com/api/v1Gateway ws://api.plexichat.com/gatewayVersion a.1.0-49

User Features API

Endpoints for managing user features, badges, and rate limit tiers.

Public Endpoints

GET /users/@me/features

Get current user's features and badges.

Headers


Authorization: Bearer <token>

Response (200 OK)


{
  "badges": [
    {
      "name": "alpha_tester",
      "display_name": "Alpha Tester",
      "description": "Early alpha tester",
      "icon": ":test_tube:",
      "color": "#9b59b6"
    }
  ],
  "tier": "alpha",
  "tier_limits": {
    "multiplier": 2.0,
    "max_voice_minutes_per_day": 480,
    "max_file_uploads_per_day": 200,
    "max_file_size_mb": 25
  }
}

Response Fields

FieldTypeDescription
badgesarrayUser's badges with display info
tierstringUser's rate limit tier
tier_limitsobjectTier-specific limits

---

Admin Endpoints

These endpoints require administrator permission.

GET /admin/users/{user_id}/features

Get features for a specific user.

Headers


Authorization: Bearer <token>

Response (200 OK)


{
  "user_id": "123456789012345678",
  "rate_limit_tier": "alpha",
  "badges": ["alpha_tester", "early_supporter"],
  "tier_limits": {
    "multiplier": 2.0,
    "max_voice_minutes_per_day": 480,
    "max_file_uploads_per_day": 200,
    "max_file_size_mb": 25
  },
  "expires_at": null
}

PUT /admin/users/{user_id}/features

Update features for a specific user.

Headers


Authorization: Bearer <token>

Request Body

FieldTypeRequiredDescription
rate_limit_tierstringNoRate limit tier
expires_atintNoUnix timestamp when features expire
notesstringNoAdmin notes

Example Request


{
  "rate_limit_tier": "premium"
}

Response (200 OK)

Returns the updated user features object.

PUT /admin/users/{user_id}/tier

Set rate limit tier for a user.

Headers


Authorization: Bearer <token>

Request Body

FieldTypeRequiredDescription
tierstringYesTier name
expires_atintNoUnix timestamp when tier expires

Example Request


{
  "tier": "premium",
  "expires_at": 1735689600
}

Response (200 OK)

Returns the updated user features object.

POST /admin/users/{user_id}/badges/{badge}

Add a badge to a user.

Headers


Authorization: Bearer <token>

Response (200 OK)


{
  "success": true,
  "badges": ["alpha_tester", "early_supporter", "staff"]
}

Error Responses

StatusCodeDescription
400Invalid badgeBadge name not recognized
404User not foundUser doesn't exist

DELETE /admin/users/{user_id}/badges/{badge}

Remove a badge from a user.

Headers


Authorization: Bearer <token>

Response (200 OK)


{
  "success": true,
  "badges": ["alpha_tester", "early_supporter"]
}

GET /admin/tiers

Get all available rate limit tiers.

Headers


Authorization: Bearer <token>

Response (200 OK)


{
  "tiers": {
    "standard": {
      "multiplier": 1.0,
      "max_voice_minutes_per_day": 120,
      "max_file_uploads_per_day": 50,
      "max_file_size_mb": 10
    },
    "alpha": {
      "multiplier": 2.0,
      "max_voice_minutes_per_day": 480,
      "max_file_uploads_per_day": 200,
      "max_file_size_mb": 25
    },
    "premium": {
      "multiplier": 3.0,
      "max_voice_minutes_per_day": -1,
      "max_file_uploads_per_day": 500,
      "max_file_size_mb": 100
    }
  },
  "default": "standard"
}

GET /admin/badges

Get all available badges.

Headers


Authorization: Bearer <token>

Response (200 OK)


{
  "badges": [
    {
      "name": "alpha_tester",
      "display_name": "Alpha Tester",
      "description": "Early alpha tester",
      "icon": ":test_tube:",
      "color": "#9b59b6"
    },
    {
      "name": "early_supporter",
      "display_name": "Early Supporter",
      "description": "Supported the project early",
      "icon": ":gem:",
      "color": "#3498db"
    },
    {
      "name": "staff",
      "display_name": "Staff",
      "description": "Plexichat staff member",
      "icon": ":gear:",
      "color": "#e74c3c"
    },
    {
      "name": "verified",
      "display_name": "Verified",
      "description": "Verified account",
      "icon": ":check:",
      "color": "#2ecc71"
    }
  ]
}

---

Rate Limit Tiers

TierMultiplierVoice Minutes/DayFile Uploads/DayMax File Size
standard1.0x1205010 MB
alpha2.0x48020025 MB
premium3.0xUnlimited500100 MB

The multiplier affects rate limit windows - higher multipliers allow more requests.

---

Available Badges

BadgeDisplay NameDescription
alpha_testerAlpha TesterEarly alpha tester
early_supporterEarly SupporterSupported the project early
staffStaffPlexichat staff member
verifiedVerifiedVerified account

---

Related Endpoints