Quick Start Guide - Get Your API Key in 30 Seconds | FlashAlpha
Getting Started Quick Start Guide

Quick Start Guide

Get your API key and make your first options exposure call in under 2 minutes. No credit card required.

CME futures are supported. Per-symbol endpoints also accept ES=F (E-mini S&P 500) and NQ=F (E-mini Nasdaq-100) - URL-encode the = as %3D, e.g. /v1/exposure/gex/ES%3DF. Options-on-futures use Black-76 ($50/pt ES, $20/pt NQ); CME futures are Growth-tier. See the futures hub.

What You'll Get

The FlashAlpha Lab API gives you programmatic access to real-time options exposure analytics:

  • GEX - Gamma exposure by strike (dealer hedging pressure)
  • DEX - Delta exposure (directional positioning)
  • VEX - Vanna exposure (vol-sensitivity of dealer delta)
  • CHEX - Charm exposure (time-decay of dealer delta)
  • Stock & option quotes, key levels, AI narrative, and more

The Free plan includes 5 requests/day - enough to explore the API. You can also use the interactive tools to visualize exposure data without writing code.

Step 1: Create Your Free Account

  1. Go to flashalpha.com/pricing
  2. Click Get Started Free under the Free plan
  3. Enter your email and choose a password
  4. Check your inbox for a 6-digit code and enter it to verify your email

No credit card required. The Free plan has no time limit - upgrade when you need higher limits.

Step 2: Copy Your API Key

  1. Sign in to your FlashAlpha account
  2. Your API key is displayed on the Profile page
  3. Click the copy button next to your key

Your API key authenticates every request. Pass it in the X-Api-Key header.

Step 3: Make Your First Call

Install an SDK All SDKs
Python: pip install flashalpha
JS/TS: npm install flashalpha
C#: dotnet add package FlashAlpha
Go: go get github.com/FlashAlpha-lab/flashalpha-go

Make your first meaningful request on AAPL, a supported individual equity. First discover its listed expirations; then request one date after today. This uses two requests from the Free allowance of 5 requests/day.

Authenticated SPY/QQQ requests require Basic and above for a single future expiry. Full-chain GEX requires Growth and above; today's expiry requires Growth and above. These are API access rules, not a promise of a hosted SPY/QQQ chart.

Download the complete Python example (Python 3.10+, standard library). Set the FLASHALPHA_API_KEY environment variable locally; keep your key out of shared notebooks and source control. Then run python first-gex.py.

import json
import os
from datetime import datetime, timezone
from urllib.error import HTTPError, URLError
from urllib.parse import urlencode
from urllib.request import Request, urlopen


def get(path, params=None):
    key = os.environ.get("FLASHALPHA_API_KEY")
    if not key:
        raise RuntimeError("Set FLASHALPHA_API_KEY to your API key.")
    url = "https://lab.flashalpha.com" + path
    if params:
        url += "?" + urlencode(params)
    try:
        with urlopen(Request(url, headers={"X-Api-Key": key}), timeout=20) as response:
            return json.load(response)
    except HTTPError as error:
        hints = {401: "Check your API key.", 403: "Check symbol, expiry and plan access.",
                 429: "Request allowance or concurrency limit reached; wait before retrying."}
        raise RuntimeError(f"HTTP {error.code}. " + hints.get(error.code, "API request failed.")) from None
    except (URLError, TimeoutError, json.JSONDecodeError):
        raise RuntimeError("No usable API response; check service status and retry later.") from None


def main():
    symbol = "AAPL"
    options = get(f"/v1/options/{symbol}")
    # UTC is a conservative date cutoff: any later date is also after today in New York.
    # Near midnight UTC this can skip an otherwise eligible next-day NY expiration.
    today = datetime.now(timezone.utc).date().isoformat()
    expiries = sorted(row["expiration"] for row in options.get("expirations", [])
                      if row.get("expiration", "") > today)
    if not expiries:
        raise RuntimeError("No listed future expiry returned. Do not invent an expiration.")
    expiry = expiries[0]
    result = get(f"/v1/exposure/gex/{symbol}", {"expiration": expiry})
    print(f"Symbol: {symbol}; expiration: {expiry}")
    print(f"Response as_of: {result.get('as_of', 'not supplied')}")
    print(f"Net GEX ($ per 1% move): {result.get('net_gex')}")
    print(f"Gamma flip: {result.get('gamma_flip')}; status: {result.get('gamma_flip_status', 'not supplied')}")
    print(json.dumps(result, indent=2))


main()
# 1. List supported equity expirations (one API request)
curl --fail-with-body -H "X-Api-Key: YOUR_API_KEY" \
  "https://lab.flashalpha.com/v1/options/AAPL"

# 2. Replace YYYY-MM-DD with one listed date after today (second request)
curl --fail-with-body -H "X-Api-Key: YOUR_API_KEY" \
  "https://lab.flashalpha.com/v1/exposure/gex/AAPL?expiration=YYYY-MM-DD"

Inspect the returned result: confirm as_of, the selected expiration, net_gex and gamma_flip_status. A missing/unavailable flip is a valid result; do not replace it with zero or infer it by summing strike bars. A 403 means access must be checked; a 429 means wait before retrying. Neither is a successful evaluation.

For SPY full-chain aggregation and downloadable charts you build yourself, continue with the runnable dashboard guide. For all SDKs, use the GEX endpoint reference.

Step 4: Try the Interactive Tools

Don't want to write code yet? Use the interactive tools to visualize exposure data in your browser:

Sign in on a tool page to use your API key. Tool requests use your plan allowance and symbol/endpoint access rules; a Free key does not unlock every ticker or tool. Start with AAPL in the GEX tool.

What's Next

Ready to build with FlashAlpha?

Get your free API key and start pulling live options data in 30 seconds.

No credit card required Setup in 60 seconds Secure & reliable