Getting Started

Create an account, get your API key, and price your first instrument in under five minutes.

1. Create your account

Go to app.quantra.io and sign in with your Google account. The Quantra Portal is the central hub for managing your API keys, market data, and instruments.

2. Create an API key

Once signed in, you'll see the API Keys panel on the Dashboard. Give your key a name and click Create. Copy the key immediately — it won't be shown again.

The free tier allows up to 3 API keys. Keys can be toggled on/off or deleted at any time from the Dashboard.

3. Make your first request

The API lives at https://api.quantra.io. Authenticate by including your API key in the X-API-Key header. All pricing endpoints accept POST requests with JSON bodies.

Health check

curl
curl https://api.quantra.io/health

Price a fixed rate bond

Here's a complete example that bootstraps a discount curve from two market instruments and prices a 5-year fixed rate bond:

curl
curl -X POST https://api.quantra.io/price-fixed-rate-bond \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "pricing": {
    "as_of_date": "2025-06-15",
    "curves": [{
      "id": "discount",
      "day_counter": "Actual365Fixed",
      "interpolator": "LogLinear",
      "bootstrap_trait": "Discount",
      "reference_date": "2025-06-15",
      "points": [
        {
          "point_type": "DepositHelper",
          "point": {
            "rate": 0.04,
            "tenor_number": 6,
            "tenor_time_unit": "Months",
            "fixing_days": 2,
            "calendar": "TARGET",
            "business_day_convention": "ModifiedFollowing",
            "day_counter": "Actual365Fixed"
          }
        },
        {
          "point_type": "SwapHelper",
          "point": {
            "rate": 0.035,
            "tenor_number": 5,
            "tenor_time_unit": "Years",
            "calendar": "TARGET",
            "sw_fixed_leg_frequency": "Annual",
            "sw_fixed_leg_convention": "ModifiedFollowing",
            "sw_fixed_leg_day_counter": "Thirty360",
            "float_index": { "id": "EUR_6M" },
            "spread": 0.0,
            "fwd_start_days": 0
          }
        }
      ]
    }],
    "indices": [{
      "id": "EUR_6M",
      "name": "Euribor",
      "index_type": "Ibor",
      "tenor_number": 6,
      "tenor_time_unit": "Months",
      "fixing_days": 2,
      "calendar": "TARGET",
      "business_day_convention": "ModifiedFollowing",
      "day_counter": "Actual360",
      "end_of_month": false,
      "currency": "EUR"
    }]
  },
  "bonds": [{
    "fixed_rate_bond": {
      "settlement_days": 2,
      "face_amount": 100,
      "rate": 0.045,
      "accrual_day_counter": "ActualActualBond",
      "payment_convention": "ModifiedFollowing",
      "redemption": 100.0,
      "issue_date": "2025-01-15",
      "schedule": {
        "calendar": "TARGET",
        "effective_date": "2025-01-15",
        "termination_date": "2030-01-15",
        "frequency": "Annual",
        "convention": "ModifiedFollowing",
        "termination_date_convention": "ModifiedFollowing",
        "date_generation_rule": "Backward"
      }
    },
    "discounting_curve": "discount"
  }]
}'

Response

json
{
  "bonds": [{
    "npv": 104.72,
    "clean_price": 104.72,
    "dirty_price": 106.60,
    "accrued_amount": 1.88,
    "yield": 0.0351,
    "macaulay_duration": 4.31,
    "modified_duration": 4.16,
    "convexity": 21.36,
    "bps": 0.0416
  }]
}

4. Or use the Portal

If you prefer a visual interface, the Portal lets you do the same thing without writing code:

  1. Settings: Click Load Example (No Market Data) and then Load Market Data.
  2. Products: Open Fixed Rate Bond, Floating Rate Bond, or IR Swap.
  3. Fill in the form and click Price.

The Portal sends exactly the same JSON to the API under the hood — you can inspect the request in the Pricing Playground on the Dashboard.

Authentication

Quantra supports two authentication methods:

api key authentication
curl -X POST https://api.quantra.io/price-fixed-rate-bond \
  -H "X-API-Key: qk_abc123..." \
  -H "Content-Type: application/json" \
  -d @my_request.json

Available endpoints

All pricing endpoints are POST and accept the same pricing block for curves and market data:

For full schema details, see the API Reference.

Key concepts

The pricing block

Every pricing request contains a pricing object that defines the valuation context: the as-of date, yield curves, indices, volatility surfaces, and models. This is shared across all products — you build your market environment once and reference curves by id in each instrument.

Yield curves

Curves are bootstrapped on-the-fly from market instruments (deposits, FRAs, futures, swaps, OIS, bonds). You specify the interpolation method, day counter, and bootstrap trait. Instruments reference curves by their id for discounting and forwarding.

Indices

Floating-rate instruments need an index definition (e.g., Euribor 6M, SOFR). These are defined in the indices array of the pricing block and referenced by id in instruments and curve helpers.