Skip to main content
This guide walks you through the minimum steps to go from zero to receiving live arbitrage data from the Predexy API. By the end you will have an account, a working API key, and a real response from the arbitrage endpoint. All examples use curl so you can run them directly in your terminal.
1

Register a developer account

Create your Predexy account by sending your email, password, and name to the registration endpoint. Your password must be at least 8 characters.
curl -s -X POST https://api.predexy.com/api/v1/auth/register \
  -H "Content-Type: application/json" \
  -d '{
    "email": "you@company.com",
    "password": "your-password",
    "name": "Your Name"
  }'
A successful registration returns 201 with your account details and JWT tokens:
{
  "data": {
    "id": "usr_01hx...",
    "email": "you@company.com",
    "name": "Your Name"
  },
  "tokens": {
    "access_token": "<jwt>",
    "refresh_token": "<jwt>"
  }
}
If you see EMAIL_EXISTS, an account already exists for that address. Log in instead (Step 2).
2

Log in and get your session token

Log in with your email and password. The response includes a short-lived access token (15 minutes) and a refresh token (7 days). Copy the access_token — you’ll need it in the next step.
curl -s -X POST https://api.predexy.com/api/v1/auth/login \
  -H "Content-Type: application/json" \
  -d '{
    "email": "you@company.com",
    "password": "your-password"
  }'
Response:
{
  "data": {
    "id": "usr_01hx...",
    "email": "you@company.com",
    "name": "Your Name"
  },
  "tokens": {
    "access_token": "<your-access-token>",
    "refresh_token": "<your-refresh-token>"
  }
}
3

Create an API key

API keys let your code authenticate without managing short-lived session tokens. Create one using your session’s access token. Give the key a descriptive name so you can identify it later in the Developer Console.
curl -s -X POST https://api.predexy.com/api/v1/console/keys \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <your-access-token>" \
  -d '{
    "name": "Production Trading Bot",
    "permissions": "[\"read:arbitrage\",\"read:markets\",\"read:questions\"]"
  }'
The response includes the full key exactly once:
{
  "data": {
    "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "name": "Production Trading Bot",
    "key": "pdx_a1b2c3d4e5f6...",
    "key_prefix": "pdx_a1b2c3d4",
    "permissions": "[\"read:arbitrage\",\"read:markets\",\"read:questions\"]",
    "rate_limit": 60
  },
  "message": "Save this API key — it will not be shown again."
}
Copy the key value now and store it securely (for example, in an environment variable or secrets manager). Predexy only stores a hash — you cannot retrieve the full key again after this response.
4

Fetch arbitrage opportunities

With your API key in hand, you can call the external arbitrage endpoint. This endpoint is designed for programmatic access and is rate-limited to 600 requests per minute.
curl -s "https://api.predexy.com/api/v1/external/arbitrage/opportunities?classification=actionable&limit=5" \
  -H "X-API-Key: pdx_a1b2c3d4e5f6..."
A successful response looks like this:
{
  "data": {
    "opportunities": [
      {
        "id": "arb_poly_limit_abc123",
        "question_title": "Will BTC reach $100k by 2026?",
        "type": "direct",
        "buy_platform": { "slug": "limitless", "name": "Limitless" },
        "sell_platform": { "slug": "polymarket", "name": "Polymarket" },
        "buy_price": 0.42,
        "sell_price": 0.48,
        "spread": 0.06,
        "spread_bps": 600,
        "net_spread": 0.02,
        "estimated_profit": 2.00,
        "arbitrage_score": 78,
        "classification": "actionable",
        "status": "active",
        "fees": {
          "buy_fee": 0.02,
          "sell_fee": 0.02,
          "total_fees": 0.04
        },
        "detected_at": "2026-04-26T10:15:00Z"
      }
    ],
    "stats": {
      "total_opportunities": 47,
      "actionable_count": 12,
      "avg_spread": 0.034,
      "max_profit": 8.50
    }
  },
  "meta": {
    "count": 5,
    "offset": 0,
    "limit": 5,
    "total": 12
  }
}
Use min_score, classification, category, and status query parameters to narrow results. Filter by guarantee=STRICT to see only opportunities that passed all policy checks.
estimated_profit is per $100 deployed, fee-adjusted. arbitrage_score ranges 0–100; anything ≥ 70 with classification=actionable is worth evaluating for execution.
5

Browse markets with the discovery endpoint

The discovery endpoint returns canonical questions with unified index prices and divergence metrics across all seven platforms. This is the starting point for building research dashboards or finding questions to monitor.
curl -s "https://api.predexy.com/api/v1/discover?category=crypto&limit=10" \
  -H "Authorization: Bearer <your-access-token>"
Example response item:
{
  "data": [
    {
      "id": "9f8e7d6c-...",
      "title": "Will BTC reach $100k by 2026?",
      "slug": "will-btc-reach-100k-by-2026",
      "category": "crypto",
      "market_count": 3,
      "platform_slugs": ["polymarket", "limitless", "predictfun"],
      "index_price": 0.62,
      "divergence": 0.034,
      "divergence_category": "medium",
      "best_buy_price": 0.58,
      "best_buy_platform": "limitless",
      "spread_bps": 400
    }
  ],
  "meta": {
    "count": 10,
    "offset": 0,
    "limit": 10,
    "total": 142
  }
}
index_price is the volume-weighted consensus probability (0–1). divergence_category tells you how much platforms disagree: low is under 2%, medium is 2–5%, and high is above 5%.
The discovery endpoint uses session authentication (Authorization: Bearer), not an API key. For machine access to market data, check the API reference for available external endpoints.

Next steps

You now have a working API key and know how to pull arbitrage opportunities and browse markets. From here:
  • Read the Authentication guide to understand token lifetimes, key rotation, and rate limits in detail.
  • Explore the full API Reference to see all available endpoints, query parameters, and response schemas.
  • Filter the arbitrage feed by guarantee=STRICT and status=active to focus on the highest-confidence opportunities.