> ## Documentation Index
> Fetch the complete documentation index at: https://docs.revalonlabs.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# Quickstart: Fetch Live Arbitrage Data from Arbitrage

> Register an account, create an API key, and fetch your first live arbitrage opportunities from seven prediction market venues — all in under five minutes.

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.

<Steps>
  <Step title="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.

    ```bash theme={null}
    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:

    ```json theme={null}
    {
      "data": {
        "id": "usr_01hx...",
        "email": "you@company.com",
        "name": "Your Name"
      },
      "tokens": {
        "access_token": "<jwt>",
        "refresh_token": "<jwt>"
      }
    }
    ```

    <Note>
      If you see `EMAIL_EXISTS`, an account already exists for that address. Log in instead (Step 2).
    </Note>
  </Step>

  <Step title="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.

    ```bash theme={null}
    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:

    ```json theme={null}
    {
      "data": {
        "id": "usr_01hx...",
        "email": "you@company.com",
        "name": "Your Name"
      },
      "tokens": {
        "access_token": "<your-access-token>",
        "refresh_token": "<your-refresh-token>"
      }
    }
    ```
  </Step>

  <Step title="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.

    ```bash theme={null}
    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:

    ```json theme={null}
    {
      "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."
    }
    ```

    <Warning>
      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.
    </Warning>
  </Step>

  <Step title="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.

    ```bash theme={null}
    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:

    ```json theme={null}
    {
      "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.

    <Tip>
      `estimated_profit` is per \$100 deployed, fee-adjusted. `arbitrage_score` ranges 0–100; anything ≥ 70 with `classification=actionable` is worth evaluating for execution.
    </Tip>
  </Step>

  <Step title="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.

    ```bash theme={null}
    curl -s "https://api.predexy.com/api/v1/discover?category=crypto&limit=10" \
      -H "Authorization: Bearer <your-access-token>"
    ```

    Example response item:

    ```json theme={null}
    {
      "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%.

    <Note>
      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.
    </Note>
  </Step>
</Steps>

## 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](/authentication) to understand token lifetimes, key rotation, and rate limits in detail.
* Explore the full [API Reference](/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.
