Lightning API — Documentation

API Reference

One endpoint. Pass your API key and get back a JSON array of lightning flashes. Filter by time window and geographic bounding box. No SDK required.


Authentication

All requests must include your API key in the X-API-Key header. Keys are generated from your dashboard and can be rotated at any time. Never expose your key in client-side code — proxy requests through your own backend.

curl "https://api.warpulse.com/v1/flashes?since_minutes=15" \
  -H "X-API-Key: YOUR_API_KEY"

Endpoint

GEThttps://api.warpulse.com/v1/flashes

Returns an array of lightning flash events matching the given filters.


Query Parameters

All parameters are optional. Without a bounding box, the response covers the full Americas and Atlantic region.

Parameter

Type

Default

Description

since_minutes

integer

15

Return flashes from the last N minutes. Minimum: 1. Maximum: 20,160 (14 days). Defaults to 15.

min_lat

float

Minimum latitude of bounding box (-90 to 90). Must be provided with max_lat, min_lon, max_lon.

max_lat

float

Maximum latitude of bounding box (-90 to 90).

min_lon

float

Minimum longitude of bounding box (-180 to 180).

max_lon

float

Maximum longitude of bounding box (-180 to 180).

limit

integer

5000

Maximum number of flashes to return. Starter cap: 2,000. Pro/Ultimate cap: 20,000.


Geographic Filtering

Narrow results to any rectangular region by passing all four bounding box parameters together. All four must be present — a partial set returns a 400 error. Coordinates use decimal degrees (WGS84).

Bounding box format

# Florida
curl "https://api.warpulse.com/v1/flashes" \
  -H "X-API-Key: YOUR_API_KEY" \
  -G \
  -d since_minutes=15 \
  -d min_lat=24.52 \
  -d max_lat=31.00 \
  -d min_lon=-87.63 \
  -d max_lon=-80.03

# Custom box — NYC metro area
curl "https://api.warpulse.com/v1/flashes" \
  -H "X-API-Key: YOUR_API_KEY" \
  -G \
  -d since_minutes=30 \
  -d min_lat=40.45 \
  -d max_lat=41.15 \
  -d min_lon=-74.30 \
  -d max_lon=-73.65

Response Format

Successful responses return HTTP 200 with a JSON object containing a flashes array. Each flash has four fields.

{
  "flashes": [
    {
      "flash_id": 58097,
      "lat": -5.91299,
      "lon": -77.38203,
      "flash_timestamp_utc": "2026-06-25T21:58:59.348063"
    },
    ...
  ]
}

Field

Type

Description

flash_id

integer

Unique identifier for this flash event.

lat

float

Latitude of the flash centroid in decimal degrees (WGS84).

lon

float

Longitude of the flash centroid in decimal degrees (WGS84).

flash_timestamp_utc

string

UTC timestamp of the flash in ISO 8601 format.


Rate Limits

Limits apply per API key, not per account. Exceeding the rate limit returns HTTP 429.

Plan

Daily calls

Rate limit

Starter

100,000

5 req/sec

Pro

1,000,000

100 req/sec

Ultimate

25,000,000

120 req/sec

Daily quotas reset at midnight UTC. Usage is visible on your dashboard.


Error Codes

400

Bad Request

Invalid parameter value or combination (e.g. min_lat without max_lat, limit exceeds plan cap).

401

Unauthorized

Missing or invalid X-API-Key header.

429

Too Many Requests

Rate limit exceeded for your plan. Back off and retry.

500

Server Error

Unexpected server error. Contact support if the issue persists.


Interactive Query Builder

Pick a US state or region, draw a custom bounding box, or enter coordinates manually. The query updates live in your chosen language.

Bounding box (or use the map below)

Regions

US States

Generated query

curl "https://api.warpulse.com/v1/flashes" \
  -H "X-API-Key: YOUR_API_KEY" \
  -G \
  -d since_minutes=15