NakedPnL

The public registry of verified investment performance. Every return sourced from SEC filings, exchange APIs, or platform data.

Registry

  • Registry
  • Market Context
  • How It Works
  • Community

Verification

  • Get Verified
  • Connect Exchange

Legal

  • Terms of Service
  • Privacy Policy
  • Refund & Cancellation
  • Support
  • GDPR Rights
  • Cookie Policy
  • Disclaimers
  • Methodology
  • Compliance
Follow

NakedPnL is a publisher of verified performance data. Nothing on this site constitutes investment advice, a recommendation, or a solicitation to buy, sell, or hold any security, commodity, or digital asset. Past performance does not indicate future results. Trading carries a high risk of total capital loss.

© 2026 NakedPnLAll performance data is verified by the NakedPnL teamcontact@nakedpnl.com
Skip to content
NakedPnL
RegistryPricingHow It WorksCommunitySupport
Registry/API Documentation

API Reference

Public API for accessing registry data, agent profiles, market benchmarks, and performance metrics. Public v1 endpoints return a standard envelope with data and meta fields. Other public endpoints return JSON with domain-specific keys.

Base URL
https://nakedpnl.com
Rate Limiting

Public v1 endpoints: 30 requests per 60 seconds per IP. Rate limit headers (X-RateLimit-Limit, X-RateLimit-Remaining) are included in every response.

Response Envelope
// Success
{
  "data": { ... },
  "meta": {
    "timestamp": "2026-03-19T12:00:00.000Z",
    "version": "1.0"
  }
}

// Error
{
  "error": "Description of what went wrong",
  "meta": {
    "timestamp": "2026-03-19T12:00:00.000Z",
    "version": "1.0"
  }
}

Endpoints

GET/api/v1/healthPublic

System health check. Returns database connectivity and sync freshness status.

Cache-Control: s-maxage=10, stale-while-revalidate=30
Response
{
  "data": {
    "status": "healthy",
    "db": "ok",
    "sync": "ok",
    "version": "abc1234"
  },
  "meta": {
    "timestamp": "2026-03-19T12:00:00.000Z",
    "version": "1.0"
  }
}
GET/api/v1/registryPublic

Public registry data. Returns both institutional funds and verified private accounts.

Cache-Control: s-maxage=60, stale-while-revalidate=300
Response
{
  "data": {
    "institutional": [ { "name": "...", "ar": 12.4, ... } ],
    "private": [ { "name": "...", "ar": 8.2, ... } ],
    "count": { "institutional": 8, "private": 8 }
  },
  "meta": { "timestamp": "...", "version": "1.0" }
}
GET/api/v1/agentsPublic

Agent registry. Returns all active, publicly visible agents with their latest metrics, connection state, and builder info.

Cache-Control: s-maxage=60, stale-while-revalidate=300
Response
{
  "data": {
    "agents": [
      {
        "id": "...",
        "callsign": "APEX-1",
        "strategy": "Multi-factor equity long-short",
        "verificationTier": "BROKERAGE_API",
        "metrics": {
          "annualReturn": 18.4,
          "maxDrawdown": -8.2,
          "sharpeRatio": 2.1,
          "stabilityGrade": "A"
        },
        "builder": { "username": "..." },
        "connection": { "state": "READ_ONLY_VERIFIED" }
      }
    ],
    "count": 8
  },
  "meta": { "timestamp": "...", "version": "1.0" }
}
GET/api/v1/agents/:callsignPublic

Single agent lookup by callsign (case-insensitive). Returns full detail including metrics, version history, builder info, and recent attestation events.

Cache-Control: s-maxage=30, stale-while-revalidate=120
Path Parameters
callsignstringAgent callsign (e.g., APEX-1)
Response
{
  "data": {
    "id": "...",
    "callsign": "APEX-1",
    "strategy": "...",
    "metrics": { ... },
    "versions": [ ... ],
    "recentEvents": [ ... ]
  },
  "meta": { "timestamp": "...", "version": "1.0" }
}
GET/api/v1/agents/:callsign/returnsPublic

Multi-window rolling returns. Computes rolling return metrics across 30d, 90d, 365d, and all-time windows.

Cache-Control: s-maxage=30, stale-while-revalidate=120
Path Parameters
callsignstringAgent callsign (e.g., APEX-1)
Response
{
  "data": {
    "agentId": "...",
    "callsign": "APEX-1",
    "windows": {
      "30d":  { "return": 2.1, "volatility": 5.3, ... },
      "90d":  { "return": 6.8, ... },
      "365d": { "return": 18.4, ... },
      "allTime": { "return": 24.2, ... }
    }
  },
  "meta": { "timestamp": "...", "version": "1.0" }
}
GET/api/marketsPublic

Market benchmarks (5-minute edge cache). Returns equity indices, rates, commodities, FX, and macro indicators sourced from Yahoo Finance.

Cache-Control: s-maxage=300, stale-while-revalidate=600
Response
{
  "success": true,
  "data": {
    "asOfUtc": "2026-03-23T14:30:00.000Z",
    "source": "yahoo-finance",
    "BM": { "SPX": { "price": 5200.1, "chg1d": 0.42 }, ... },
    "BM_RATES": { "US10Y": { "price": 4.25, ... }, ... },
    "BM_CMD": { "GOLD": { "price": 2180.5, ... }, ... },
    "BM_FX": { "EURUSD": { "price": 1.082, ... }, ... },
    "BM_MACRO": { "VIX": { "price": 14.2, ... }, ... }
  }
}
GET/api/crypto/tradersPublic

Public crypto trader list. Returns active and stale crypto traders with exchange, PnL, and balance data ordered by annualized return.

Response
{
  "traders": [
    {
      "id": "...",
      "exchange": "BINANCE",
      "displayName": "TraderX",
      "status": "ACTIVE",
      "annualReturn": 42.5,
      "totalPnlUsd": 125000,
      "currentBalance": 310000,
      "lastSyncAt": "2026-03-23T10:00:00.000Z",
      "createdAt": "2025-11-01T00:00:00.000Z"
    }
  ]
}
GET/api/prediction-markets/profilesPublic

Prediction market profiles. Returns ranked profiles from Polymarket and Kalshi with performance metrics. Supports optional query filters.

Query Parameters
platformstring?Filter by platform: POLYMARKET or KALSHI
claimedstring?Filter by claim status: "true" or "false"
Response
{
  "profiles": [
    {
      "id": "...",
      "platform": "POLYMARKET",
      "publicHandle": "trader_handle",
      "displayName": "Top Predictor",
      "claimed": false,
      "profileStatus": "UNCLAIMED",
      "rankingEligible": true,
      "annualReturn": 38.2,
      "totalPnlUsd": 95000,
      "currentEquity": 210000,
      "maxDrawdown": -8.4,
      "sharpeRatio": 1.95,
      "winRate": 68.3,
      "lastSyncAt": "2026-03-23T08:00:00.000Z"
    }
  ]
}
POST/api/stripe/checkoutAuthenticated

Create a Stripe Checkout session for tier upgrade. Returns a redirect URL.

Request Body
tier"PRO" | "FUND_DESK"Target subscription tier. Note: PREMIUM and ALLOCATOR are deprecated and migrated to PRO and FUND_DESK respectively; do not pass the deprecated values for new checkouts.
Response
{
  "success": true,
  "url": "https://checkout.stripe.com/..."
}
POST/api/submitAuthenticated

Submit performance data for verification. Creates a new submission for admin review.

Request Body
exchangestringExchange or brokerage name
annualReturnPctnumberAnnualized return as a percentage. Reporting period varies by venue and account age. Legacy API clients may still see the column name 'monthlyPnlPct' in CSV exports.
totalPnlUsdnumberTotal PnL in USD
winRatePctnumberWin rate percentage
volumeUsdnumberTrading volume in USD
proofTextstring?Additional proof or context
proofLinksstring[]?Links to supporting evidence
Response
{
  "success": true,
  "data": { "id": "...", ... },
  "message": "Submission created successfully."
}
POST/api/agents/syncAdmin

Trigger agent sync pipeline. Runs a full sync cycle or syncs a single agent's accounts and metrics.

Request Body
agentIdstring?Optional. Sync only this agent (omit for full cycle)
Response
{
  "success": true,
  "triggeredBy": "admin",
  "mode": "full_cycle",
  "data": { ... }
}
All timestamps are ISO 8601 UTC. Responses are JSON with Content-Type: application/json. For questions or integration support, contact the NakedPnL team.