Skip to main content

Community Program API

Returns the full community program state for the authenticated user, including reward status, unlocked perks, founding badge, and governance eligibility.

Get community program

GET /api/community/program
Requires session authentication. Returns the community program data for the current user. If the user has claimed token rewards, the response includes their founding badge, unlocked perks, and governance voting power.

Response

{
  "rewards": {
    "connected": true,
    "walletAddress": "7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU",
    "claimed": true,
    "currentTier": {
      "id": "builder",
      "label": "Builder",
      "credits": 100,
      "minBalance": 10000
    },
    "balanceUi": 15000,
    "creditsClaimed": 100,
    "claimedAt": "2026-04-10T12:00:00.000Z",
    "availability": "live",
    "detail": null
  },
  "perks": [
    {
      "key": "credits",
      "title": "Free Agent Credits",
      "detail": "100 Agentbot credits are active on your account.",
      "unlocked": true
    },
    {
      "key": "basefm-pass",
      "title": "baseFM Guest Pass",
      "detail": "Builder and Whale holders can create a baseFM DJ stream without holding the full RAVE threshold.",
      "unlocked": true
    },
    {
      "key": "governance",
      "title": "Governance Rights",
      "detail": "Your community vote is active with 3x voting power.",
      "unlocked": true
    },
    {
      "key": "airdrop",
      "title": "Airdrop Ready",
      "detail": "Your claimed wallet is included in export-ready holder snapshots for future reward operations.",
      "unlocked": true
    }
  ],
  "foundingBadge": {
    "key": "founding-community",
    "title": "Founding Community",
    "detail": "Builder claim verified on Agentbot.",
    "walletAddress": "7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU",
    "createdAt": "2026-04-10T12:00:00.000Z"
  },
  "governance": {
    "eligible": true,
    "votingPower": 3,
    "proposals": [
      {
        "id": "cgp_a1b2c3d4-...",
        "slug": "first-community-vote-abc123",
        "title": "First community vote",
        "summary": "Should Agentbot expand baseFM access to Holder tier?",
        "details": null,
        "status": "active",
        "startsAt": "2026-04-10T10:00:00.000Z",
        "endsAt": null,
        "totals": {
          "yes": 16,
          "no": 3,
          "abstain": 1
        },
        "userVote": {
          "choice": "yes",
          "votingPower": 3
        }
      }
    ]
  },
  "admin": false
}

Response fields

FieldTypeDescription
rewardsobjectCurrent community reward status for the user
rewards.connectedbooleanWhether a wallet is connected
rewards.walletAddressstring | nullConnected Solana wallet address
rewards.claimedbooleanWhether the user has claimed community rewards
rewards.currentTierobject | nullTier details based on token balance
rewards.currentTier.idstringTier identifier (whale, builder, or holder)
rewards.currentTier.labelstringDisplay name for the tier
rewards.currentTier.creditsnumberCredits granted at this tier
rewards.currentTier.minBalancenumberMinimum token balance for this tier
rewards.balanceUinumberHuman-readable token balance
rewards.creditsClaimednumberNumber of credits claimed
rewards.claimedAtstring | nullISO 8601 timestamp of the claim
rewards.availabilitystringService availability: live or degraded
rewards.detailstring | nullAdditional status information when degraded
perksarrayList of community perks and their unlock status
perks[].keystringPerk identifier (credits, basefm-pass, governance, airdrop)
perks[].titlestringDisplay title
perks[].detailstringDescription of the perk and its current status
perks[].unlockedbooleanWhether the perk is active for the user
foundingBadgeobject | nullFounding Community badge, or null if not earned
foundingBadge.keystringBadge identifier (founding-community)
foundingBadge.titlestringBadge display title
foundingBadge.detailstring | nullBadge description
foundingBadge.walletAddressstring | nullWallet address associated with the badge
foundingBadge.createdAtstringISO 8601 timestamp of badge creation
governanceobjectGovernance participation details
governance.eligiblebooleanWhether the user can vote (requires a claim)
governance.votingPowernumberVoting weight: 10 for Whale, 3 for Builder, 1 for Holder, 0 if unclaimed
governance.proposalsarrayRecent governance proposals (up to 12)
governance.proposals[].idstringProposal identifier
governance.proposals[].slugstringURL-safe slug
governance.proposals[].titlestringProposal title
governance.proposals[].summarystringShort summary
governance.proposals[].detailsstring | nullExtended description
governance.proposals[].statusstringactive or closed
governance.proposals[].startsAtstringISO 8601 start timestamp
governance.proposals[].endsAtstring | nullISO 8601 end timestamp, or null for open-ended
governance.proposals[].totalsobjectAggregated vote totals
governance.proposals[].totals.yesnumberTotal weighted yes votes
governance.proposals[].totals.nonumberTotal weighted no votes
governance.proposals[].totals.abstainnumberTotal weighted abstain votes
governance.proposals[].userVoteobject | nullThe current user’s vote on this proposal, or null
governance.proposals[].userVote.choicestringyes, no, or abstain
governance.proposals[].userVote.votingPowernumberVoting weight used
adminbooleanWhether the current user has admin privileges

Perk unlock rules

PerkUnlock condition
creditsAny tier claim
basefm-passBuilder or Whale tier claim
governanceAny tier claim
airdropAny tier claim

Voting power by tier

TierVoting power
Whale10
Builder3
Holder1
Unclaimed0

Errors

CodeDescription
401Unauthorized — no valid session