拠点周辺のライブ・履歴落雷のための REST API。以下は予定している仕様で、本番提供はバックエンドと共に開始します。
https://api.zappollo.appv1すべてのエンドポイントは /v1 配下。互換性のない変更は廃止予定期間つきの新バージョンとして提供します。
API キーを bearer トークンとして渡します:
Authorization: Bearer zpk_live_…
curl -H "Authorization: Bearer zpk_live_…" \ "https://api.zappollo.app/v1/lightning?lat=48.2&lon=11.6&radius_km=50&since=2026-06-03T13:00:00Z"
/v1/lightning?bbox={w,s,e,n}&since={iso}&limit=1000Recent strikes in a bounding box.
/v1/lightning?lat={lat}&lon={lon}&radius_km=50&since={iso}Recent strikes within a radius.
/v1/lightning/queryQuery by GeoJSON polygon, type (CG/IC), polarity and min peak current (kA).
/v1/lightning/history?lat=&lon=&radius_km=&from=&to=Historical strikes for a point, radius and time range.
/v1/lightning/{id}Full detail: kA, polarity, error ellipse, stations, confidence.
/v1/lightning/density?bbox=&cell=h3:7&since=Gridded strike counts (H3/geohash) for heatmaps.
/v1/cells?bbox=Active storm cells with centroid, intensity, heading and speed.
/v1/cells/{id}/forecast?minutes=600–60 min nowcast track + ETA to a point.
/v1/risk?lat=&lon=Combined storm-risk score (lightning + precipitation + wind).
wss://stream.zappollo.app/v1/lightning?bbox=Live strike stream over WebSocket.
/v1/stream/sse?bbox=Live strike stream over Server-Sent Events.
/v1/alerts/subscribeGeofence webhook subscription (signed deliveries).
/v1/safety?lat=&lon=&radius_km=13Safety status: watch / warning / all-clear (30-30 rule).
/v1/tiles/density/{z}/{x}/{y}.pngRaster density tiles.
/v1/tiles/strikes/{z}/{x}/{y}.mvtVector tiles (MVT) of strikes and cells.
/v1/static?lat=&lon=&zoom=&w=800&h=600Static map PNG snapshot (embeddable in reports).
/v1/weather?lat=&lon=Current conditions + short-term precipitation nowcast.
/v1/reports/verifyWas there a strike within R km of a point between T1–T2? Returns JSON + signed PDF.
/v1/reports/{id}Fetch a generated report or strike certificate.
/v1/stats?region=DE-BY&from=&to=&interval=hourAggregated counts and trends.
/v1/export?from=&to=&format=ndjsonBulk export (enterprise).
{
"data": [
{
"id": "a1b2c3",
"t": "2026-06-03T14:02:11.482Z",
"lat": 48.214, "lon": 11.553,
"type": "CG", "polarity": "-", "peak_kA": 14.2,
"ellipse_km": 0.4, "stations": 9, "confidence": 0.97,
"source": "certified-net"
}
],
"next": "c2Vfb2Zmc2V0PTEwMDA",
"count": 1
}type・status・request_id を持つ一貫した problem+json(RFC 7807)。
カーソル方式 — レスポンスの "next" を ?cursor として渡します。
キーごとのクォータ。X-RateLimit-* レスポンスヘッダーを参照。
書き込み時に Idempotency-Key ヘッダーを送ると再試行が安全になります。
{
"type": "https://docs.zappollo.app/errors/rate-limit",
"title": "Rate limit exceeded",
"status": 429,
"detail": "60 req/min exceeded. Retry after 12s.",
"request_id": "req_8f2a91c4"
}ジオフェンスを購読し、署名付き POST を受信。X-Zappollo-Signature の HMAC を検証します。
POST https://your-app.com/hooks/zappollo
X-Zappollo-Signature: t=1717423331,v1=5e1b…
{ "event": "strike.near", "place_id": "venue-12",
"strike": { "id": "a1b2c3", "distance_km": 7, "t": "…" } }公式の JavaScript/TypeScript・Python SDK、Postman コレクション、OpenAPI 3 仕様。
何か作っていますか?イベントやプラットフォーム用の API キーを取得しましょう。
API アクセスを申請Zapollo · OpenStreetMap · OpenWeather · Blitzortung.org