START BUILDING

One API call. One probability.

Get probability and pricing for any scenario. Simple to integrate, built for production. The nodalmetrics API converts live options market data into implied probabilities — all endpoints are RESTful and return JSON.

Introduction

Base URL for all requests:

https://api.nodalmetrics.xyz/

Supported endpoints:

  • GET/check_probReturns above and below probabilities for a given scenario
  • GET/all_assetsReturns all supported asset symbols
  • GET/min_max_expiryReturns the min and max expiry in minutes for a given asset

Authentication

All API requests require a public and private API key passed as request headers. Reach out at partners@nodalmetrics.xyz to receive your keys.

BASH
curl -H "X-Public-Key: your_public_key" \
     -H "X-Private-Key: your_private_key" \
     "https://api.nodalmetrics.xyz/check_prob?asset=BTC&strike=67000&minutes=1440"

GET /check_prob main

The main endpoint. Returns the implied probability that the asset price will be above or below a given strike at expiry.

Query Parameters

PARAMETERTYPEREQUIREDDESCRIPTION
assetstringYesAsset symbol (e.g. BTC, ETH)
strikefloatYesStrike price to evaluate
minutesfloatYesTime horizon in minutes from now

Example Request

BASH
curl -H "X-Public-Key: example_public" -H "X-Private-Key: example_private" \
     "https://api.nodalmetrics.xyz/check_prob?asset=BTC&strike=67000&minutes=1440"
PYTHON
import requests

headers = {
    "X-Public-Key": "your_public_key",
    "X-Private-Key": "your_private_key"
}

response = requests.get(
    "https://api.nodalmetrics.xyz/check_prob",
    headers=headers,
    params={"asset": "BTC", "strike": 67000, "minutes": 1440}
)
data = response.json()
print(data["result"]["above"])  # 0.63
print(data["result"]["below"])  # 0.37

Response Format — Success

EXAMPLE RESPONSE
{"asset": "BTC","strike": 60000,"minutes": 1440,"result": {"above": 0.63,"below": 0.37},"status": "valid"}

Response Fields

FIELDTYPEDESCRIPTION
assetstringRequested asset
strikefloatInput strike price
minutesfloatTime horizon in minutes
result.abovefloatProbability asset price > strike at expiry
result.belowfloatProbability asset price ≤ strike
statusstringCalculation status

GET /all_assets

Returns a list of all currently supported asset symbols. No query parameters required.

Example Request

BASH
curl -H "X-Public-Key: example_public" -H "X-Private-Key: example_private" \
     "https://api.nodalmetrics.xyz/all_assets"

Response Format — Success

EXAMPLE RESPONSE
["BTC","ETH"]

GET /min_max_expiry

Returns the minimum and maximum number of minutes a valid request must include for a given asset.

Query Parameters

PARAMETERTYPEREQUIREDDESCRIPTION
assetstringYesAsset symbol (e.g. BTC, ETH)

Example Request

BASH
curl -H "X-Public-Key: example_public" -H "X-Private-Key: example_private" \
     "https://api.nodalmetrics.xyz/min_max_expiry?asset=BTC"

Response Format — Success

EXAMPLE RESPONSE — [min_minutes, max_minutes]
[1,434221]

Response Schema

All endpoints return HTTP 200 OK — including for calculation errors. Always check the status field to determine success.

Important: This API never returns HTTP errors for calculation issues. HTTP status is always 200 OK. Failures are indicated via the status field.

Status Values & Error Handling

SCENARIOBEHAVIOUR
Successful computationstatus: "valid"
Missing expiry dataReturns "beyond final expiry"
Invalid numeric paramsParsed as 0 (Go default behavior)

Beyond Final Expiry

When the requested time exceeds available option expiries, probabilities return as 0:

BEYOND FINAL EXPIRY RESPONSE
{"asset": "BTC","strike": 60000,"minutes": 999999,"result": {"above": 0,"below": 0},"status": "beyond final expiry"}

Need Access?

Reach out at partners@nodalmetrics.xyz and we'll get back to you shortly.