Skip to main content
This guide walks you through your first Reppo API calls. You will start with public endpoints that need no authentication, then authenticate with your wallet and create a pod draft. All examples use curl — swap in your HTTP client of choice.
On-chain operations (minting pods, claiming emissions) require transactions on Base (chain ID 8453). Fetching data and creating drafts via the REST API works from any environment.
1

Fetch public network stats

The GET /api/v1/stats endpoint is public — no authentication required. Call it to get a live snapshot of the Reppo network.
curl https://reppo.ai/api/v1/stats
Response shape:
{
  "data": {
    "totalPods": 1482,
    "totalActiveSubnets": 12,
    "totalSubnetFees": 94500.0,
    "totalSubnetFeesBurnt": 12300.0,
    "totalSubnetFeesAccumulatedToPerformancePool": 47200.0,
    "totalSubnetFeesLocked": 35000.0,
    "epochLengthSeconds": 172800,
    "governanceLocked": 520000.0,
    "communityLocked": 310000.0,
    "lastUpdatedAt": "2026-04-24T10:00:00Z",
    "reppoPriceUSD": 0.043,
    "totalReppoLocked": 830000.0,
    "totalUsers": 3740,
    "totalLocks": 2910,
    "averageLockedPerUser": 222.0,
    "activeSubnetIds": [
      { "id": "subnet_abc" },
      { "id": "subnet_def" }
    ]
  }
}
Key fields to note:
data.totalPods
integer
Total number of pods published across all datanets.
data.totalActiveSubnets
integer
Number of currently active datanets.
data.reppoPriceUSD
number
Current REPPO token price in USD.
data.epochLengthSeconds
integer
Duration of each epoch in seconds (typically 172800, or 48 hours).
data.totalReppoLocked
number
Total REPPO locked for veREPPO voting power across all participants.
2

List public pods

Browse published pods without authentication using GET /api/v1/public/pods. Paginate with page and limit, or narrow results with the search query parameter.
curl "https://reppo.ai/api/v1/public/pods?page=1&limit=5&search=machine+learning"
Response shape:
{
  "data": {
    "pods": [
      {
        "id": "pod_xyz789",
        "name": "Annotated ML benchmark comparison",
        "description": "Side-by-side evaluation of five open-source ML benchmarks with human annotations.",
        "tokenId": 204,
        "privateSubnetId": "subnet_abc",
        "url": "https://x.com/user/status/1234567890",
        "imageUrl": null,
        "thumbnailUrl": "https://cdn.reppo.ai/thumbs/pod_xyz789.jpg",
        "videoUrl": null,
        "pdfUrl": null,
        "creator": {
          "id": "user_111",
          "username": "mlresearcher",
          "avatarUrl": "https://cdn.reppo.ai/avatars/user_111.jpg"
        },
        "createdAt": "2026-04-20T14:32:00Z",
        "updatedAt": "2026-04-22T09:10:00Z",
        "podValidityEpoch": 31,
        "cumulativeUpVotesVolume": 12400.0,
        "cumulativeDownVotesVolume": 200.0
      }
    ]
  }
}
Supported query parameters:
ParameterTypeDefaultDescription
pageinteger1Page number (minimum 1)
limitinteger10Items per page (minimum 1)
searchstringFree-text search term
filters[currentEpoch]integerFilter to pods active in a specific epoch
filters[subnet]stringFilter to pods in a specific datanet
3

Authenticate with your wallet

The Reppo API has two separate authentication surfaces. The Platform API (reppo.ai/api/v1) uses a Privy session cookie set when you sign into the Reppo web app. The Agent/Chat API (api.reppo.xyz) uses a wallet signature flow. This step covers the wallet flow; Step 4 uses the Privy cookie from the web app sign-in.Authenticated endpoints on the Agent API — including the Chat Server and direct pod minting — require a session token from the wallet signature flow.First, request a nonce:
curl -X POST https://api.reppo.xyz/auth/nonce \
  -H "Content-Type: application/json" \
  -d '{"walletAddress": "0xYourWalletAddress"}'
Sign the returned message with your wallet using EIP-191 personal_sign, then verify:
curl -X POST https://api.reppo.xyz/auth/verify \
  -H "Content-Type: application/json" \
  -d '{
    "walletAddress": "0xYourWalletAddress",
    "signature": "0xYourSignature",
    "nonce": "nonce-uuid-from-previous-step"
  }'
The response includes your 24-hour session token:
{
  "token": "eyJhbGci...",
  "walletAddress": "0xyourwalletaddress"
}
See Authentication for the complete walkthrough including how to use the privy-token cookie for Platform API endpoints.
4

Create your first pod draft

Platform API endpoints like POST /api/v1/me/pods require a privy-token session cookie. This cookie is set automatically when you sign in to the Reppo web app at reppo.ai using your wallet through Privy. Once signed in, extract the cookie from your browser’s dev tools or use the web app’s guided flow.With a valid Privy session cookie, create a pod draft. A draft records your pod’s metadata before you mint it on-chain.
curl -X POST https://reppo.ai/api/v1/me/pods \
  -H "Content-Type: application/json" \
  -H "Cookie: privy-token=<your-privy-token>" \
  -d '{
    "subnetId": "subnet_abc",
    "podName": "GPT-4 vs Llama 3 annotation comparison",
    "url": "https://x.com/user/status/9876543210",
    "platform": "X (Twitter)",
    "category": "Model Evaluation",
    "podDescription": "Human-annotated comparison of GPT-4 and Llama 3 outputs across 50 reasoning tasks.",
    "agreeToTerms": true
  }'
Response:
{
  "data": {
    "id": "pod_draft_001"
  }
}
Required fields for POST /me/pods:
subnetId
string
required
The ID of the datanet you are publishing to. Use GET /api/v1/public/subnets to browse available datanets.
podName
string
required
Display name for your pod. Between 3 and 50 characters.
url
string
required
Source URL for the content (e.g., a tweet URL or article link). Must be a valid URI.
platform
string
required
Platform the content originates from (e.g., "X (Twitter)", "YouTube"). Between 2 and 50 characters.
category
string
required
Content category within the datanet (e.g., "Model Evaluation", "RLHF"). Between 2 and 50 characters.
podDescription
string
required
Brief description of the content. Between 10 and 200 characters.
agreeToTerms
boolean
required
Must be true. Confirms you accept the Reppo publishing terms.
Optional fields: imageURL, thumbnailURL, pdfURL, videoURL (all valid URIs).
Save the id from the response — you will need it to mint the pod on-chain with POST /me/pods/{id}/mint.

What’s next

Mint a pod on-chain

Turn your pod draft into an NFT on Base using the minting endpoint.

Claim emissions

Check and claim your accumulated REPPO rewards from the Chat Server.

Create a datanet

Launch your own domain-specific data market with custom fees and rules.

Agent integration

Automate pod discovery, submission, and emissions claims with the Agent API.