Admin PLG

Waitlist management, access code generation, and product-led growth analytics.

Overview

The Admin PLG (Product-Led Growth) API provides internal endpoints for managing the waitlist, generating access codes, syncing with Google Sheets, and viewing PLG analytics. These endpoints require admin authentication.


List Waitlist

GET /api/admin/plg/waitlist

List waitlist entries for admin review.

Query Parameters

NameTypeRequiredDescription
statusstringNoFilter by status (default: "waiting")
limitintegerNoMax results (default: 50)
offsetintegerNoPagination offset (default: 0)

Example Request

curl "https://api.praxiomai.xyz/api/admin/plg/waitlist?status=waiting&limit=20" \
  -H "Authorization: Bearer $TOKEN"

Response (200 OK)

{
  "entries": [
    {
      "id": "a1b2c3d4-...",
      "email": "user@example.com",
      "name": "Jane Doe",
      "position": 42,
      "referral_count": 3,
      "status": "waiting",
      "source": "website",
      "created_at": "2026-03-20T09:00:00Z"
    }
  ],
  "total": 156
}

Approve Waitlist Entries

POST /api/admin/plg/waitlist/approve

Approve waitlist entries and generate access codes for them. Sends invitation emails.

Request Body

NameTypeRequiredDescription
waitlist_entry_idsstring[]YesList of waitlist entry IDs to approve

Response (200 OK)

{
  "approved_count": 5,
  "codes_generated": 5,
  "emails_sent": 5
}

Generate Access Codes

POST /api/admin/plg/codes/generate

Generate a batch of access codes (not tied to waitlist entries).

Request Body

NameTypeRequiredDescription
countintegerYesNumber of codes to generate
metadataobjectNoOptional metadata (e.g., trial_days, trial_credits)

Response (200 OK)

{
  "codes": [
    {
      "code": "PRAXIOM-A1B2C3",
      "metadata": {"trial_days": 14, "trial_credits": 20}
    }
  ],
  "count": 1
}

List Access Codes

GET /api/admin/plg/codes

List all generated access codes with redemption status.

Response (200 OK)

{
  "codes": [
    {
      "id": "b2c3d4e5-...",
      "code": "PRAXIOM-A1B2C3",
      "status": "redeemed",
      "redeemed_by_email": "user@example.com",
      "redeemed_at": "2026-03-25T10:00:00Z",
      "metadata": {"trial_days": 14, "trial_credits": 20}
    }
  ],
  "total": 42
}

Sync Google Sheets

POST /api/admin/plg/sync-sheets

Trigger a sync of waitlist data to Google Sheets for external tracking.

Response (200 OK)

{
  "status": "ok",
  "synced_count": 156
}

Get PLG Stats

GET /api/admin/plg/stats

Get product-led growth analytics.

Example Request

curl https://api.praxiomai.xyz/api/admin/plg/stats \
  -H "Authorization: Bearer $TOKEN"

Response (200 OK)

{
  "total_waitlist": 156,
  "total_approved": 89,
  "total_codes_generated": 120,
  "total_codes_redeemed": 67,
  "total_active_users": 45,
  "conversion_rate": 0.56
}

Was this helpful?