{
  "openapi": "3.1.0",
  "info": {
    "title": "AirdropPulse API",
    "description": "Machine-readable airdrop/points-campaign and concentrated-liquidity (LP) analytics, sold per-call via x402 micropayments (USDC on Base plus additional networks) — no API keys, agents pay programmatically. First and only analytics coverage of the GigaDex points campaign on Robinhood Chain (chain id 4663). All endpoints are deterministic: computed live from on-chain data and the open GigaDex indexer, no LLM in the response path. AirdropPulse provides educational analytics computed from public on-chain data — historical observations and model-based scenario estimates, not predictions, not investment advice, not a recommendation to enter any position. Non-custodial: never holds funds or keys, never executes transactions. Not registered with or regulated by the SEC or any financial regulator.",
    "version": "1.0.0",
    "contact": {
      "url": "https://airdroppulse.theaslangroupllc.com"
    }
  },
  "servers": [
    {
      "url": "https://airdroppulse.theaslangroupllc.com"
    }
  ],
  "paths": {
    "/api/points/pool-ev": {
      "get": {
        "summary": "Points-per-$1k-TVL-per-day ranking of every eligible GigaDex pool",
        "description": "GigaDex points-per-dollar ranking (Robinhood Chain) — every eligible pool ranked by historically observed campaign points earned per $1k of TVL per day, with multiplier, TVL, volume and fee context. The pools differ by 100x+ on this metric; computed live from the open on-chain indexer. Analytics only.",
        "operationId": "pointsPoolEv",
        "x-agent-use-case": "on-demand",
        "x-deterministic": true,
        "parameters": [
          {
            "name": "min_tvl_usd",
            "in": "query",
            "required": false,
            "schema": { "type": "number", "default": 1000 },
            "description": "Exclude pools below this TVL in USD (default: 1000)"
          }
        ],
        "responses": {
          "200": {
            "description": "Ranked pool table",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object",
                  "properties": {
                    "campaign": { "type": ["object", "null"] },
                    "pools": {
                      "type": "array",
                      "items": {
                        "type": "object",
                        "properties": {
                          "rank": { "type": "integer" },
                          "pair": { "type": "string" },
                          "address": { "type": "string" },
                          "multiplier": { "type": "number" },
                          "tvl_usd": { "type": "number" },
                          "points_total": { "type": "number" },
                          "points_per_1k_tvl_per_day": { "type": "number" },
                          "volume_24h_usd": { "type": "number" },
                          "fee_apr_pct": { "type": "number" }
                        }
                      }
                    },
                    "method": { "type": "string" },
                    "generated_at": { "type": "string", "format": "date-time" },
                    "disclaimer": { "type": "string" }
                  }
                },
                "example": {
                  "campaign": { "id": "giga-points-season-1", "days_elapsed": 5.2, "days_left": 36.8, "farmers": 120 },
                  "pools": [{ "rank": 1, "pair": "PONS/USDG", "address": "0x50e4…", "multiplier": 1.5, "tvl_usd": 37800, "points_total": 9575.5, "points_per_1k_tvl_per_day": 48.7, "volume_24h_usd": 5900000, "fee_apr_pct": 12.1 }],
                  "method": "points_per_1k_tvl_per_day = cumulative pool points ÷ campaign days elapsed ÷ (TVL/$1k); historical average, not a forward rate",
                  "disclaimer": "Educational analytics… not investment advice."
                }
              }
            }
          },
          "402": { "description": "Payment required — x402 USDC on Base (or another supported network)." }
        },
        "x-price-usd": 0.15
      }
    },
    "/api/points/campaign-status": {
      "get": {
        "summary": "GigaDex points campaign clock, emission math, hypothetical value-per-point scenarios",
        "description": "GigaDex points campaign clock (Robinhood Chain) — status, elapsed/remaining days, farmer count and emission progress read live from the on-chain indexer, plus a hypothetical implied-value scenario table across illustrative FDVs. Analytics only, no redemption terms are official or implied.",
        "operationId": "pointsCampaignStatus",
        "x-agent-use-case": "on-demand",
        "x-deterministic": true,
        "parameters": [
          {
            "name": "giga_per_point",
            "in": "query",
            "required": false,
            "schema": { "type": "number", "default": 15 },
            "description": "UNOFFICIAL community-implied GIGA-per-point figure used only for the hypothetical scenario table (default: 15; GigaDex has not confirmed any redemption terms)"
          },
          {
            "name": "fdv_usd",
            "in": "query",
            "required": false,
            "schema": { "type": "number" },
            "description": "Optional additional fully-diluted-valuation scenario in USD to add to the illustrative table"
          }
        ],
        "responses": {
          "200": {
            "description": "Campaign clock and implied-value scenarios",
            "content": {
              "application/json": {
                "example": {
                  "campaign": { "id": "giga-points-season-1", "status": "ACTIVE", "start": "2026-07-01T00:00:00.000Z", "end": "2026-08-31T00:00:00.000Z", "days_elapsed": 24.3, "days_left": 36.7, "farmers": 132, "eligible_pools": 6, "emission_rate_per_day": 50000, "emitted_points": 1214000, "total_points": 4600000, "pct_emitted": 26.4 },
                  "implied_value_scenarios": [{ "fdv_usd": 10000000, "giga_per_point": 15, "implied_usd_per_point": 0.00015 }],
                  "method": "Hypothetical scenario illustrations only — GIGA supply (1B) is an assumption and redemption terms (points -> GIGA) are unannounced by GigaDex.",
                  "disclaimer": "Educational analytics… not investment advice."
                }
              }
            }
          },
          "402": { "description": "Payment required — x402 USDC on Base (or another supported network)." }
        },
        "x-price-usd": 0.05
      }
    },
    "/api/points/position-audit": {
      "get": {
        "summary": "Points earned, share, in-range status and projection for a position or account",
        "description": "GigaDex position points audit (Robinhood Chain) — historical points accrual, in-range status and share of total emitted campaign points for a single position NFT or every position under an account, computed live from the open on-chain indexer and a fresh RPC tick read. Analytics only.",
        "operationId": "pointsPositionAudit",
        "x-agent-use-case": "on-demand",
        "x-deterministic": true,
        "parameters": [
          {
            "name": "token_id",
            "in": "query",
            "required": false,
            "schema": { "type": "string" },
            "description": "GigaDex position NFT token id (either this or account is required)"
          },
          {
            "name": "account",
            "in": "query",
            "required": false,
            "schema": { "type": "string" },
            "description": "Account address 0x… — audits every position held by the account (either this or token_id is required)"
          }
        ],
        "responses": {
          "200": {
            "description": "Position or account points audit",
            "content": {
              "application/json": {
                "example": {
                  "position": { "token_id": "4821", "owner": "0xabc…", "pool": "0x50e4…", "pair": "WETH/PONS", "tick_lower": 104960, "tick_upper": 110400, "in_range": true, "pct_through_band": 0.52, "points": 812.4, "raw_points": 812.4, "fee_pending_0": 0.0021, "fee_pending_1": 4.1 },
                  "share_of_emitted_points_pct": 0.067,
                  "projected_points_at_campaign_end": 3120.5,
                  "method": "projected_points assumes the trailing accrual rate (points ÷ days elapsed) persists to campaign end — a historical extrapolation, not a prediction.",
                  "disclaimer": "Educational analytics… not investment advice."
                }
              }
            }
          },
          "402": { "description": "Payment required — x402 USDC on Base (or another supported network)." }
        },
        "x-price-usd": 0.1
      }
    },
    "/api/points/entry-guide": {
      "get": {
        "summary": "How to participate: contracts, eligible pools, mechanics, GIGA Protect + fake-token warnings",
        "description": "GigaDex points-campaign entry reference (Robinhood Chain) — campaign clock, the full eligible-pool table ranked by multiplier and TVL, deterministic on-chain participation mechanics (network, contracts, flow), and load-bearing risk warnings drawn from official GigaDex docs. Analytics only, not investment advice.",
        "operationId": "pointsEntryGuide",
        "x-agent-use-case": "on-demand",
        "x-deterministic": true,
        "parameters": [
          {
            "name": "min_tvl_usd",
            "in": "query",
            "required": false,
            "schema": { "type": "number", "default": 1000 },
            "description": "Exclude pools below this TVL in USD when listing eligible pools (default: 1000)"
          }
        ],
        "responses": {
          "200": {
            "description": "Entry mechanics, eligible pools and risk warnings",
            "content": {
              "application/json": {
                "example": {
                  "campaign": { "id": "giga-points-season-1", "status": "ACTIVE", "days_elapsed": 24.3, "days_left": 36.7 },
                  "eligible_pools": [{ "pair": "WETH/PONS", "address": "0x50e4…", "fee_tier": 3000, "tick_spacing": 60, "multiplier": 1.5, "tvl_usd": 37800 }],
                  "participation_mechanics": { "network": "Robinhood Chain (Arbitrum Orbit, chain id 4663)" },
                  "warnings": ["GIGA Protect: per official GigaDex docs, rapid add/remove liquidity cycling can forfeit campaign rewards…", "A FAKE token named GIGA already trades — the real GIGA token is not deployed until Genesis."],
                  "method": "Static reference facts + a live-ranked pool table; not a recommendation to enter any position.",
                  "disclaimer": "Educational analytics… not investment advice."
                }
              }
            }
          },
          "402": { "description": "Payment required — x402 USDC on Base (or another supported network)." }
        },
        "x-price-usd": 0.1
      }
    },
    "/api/lp/range-model": {
      "get": {
        "summary": "Realized-vol range scenario table for a GigaDex pool",
        "description": "Concentrated-liquidity range scenario model for GigaDex on Robinhood Chain — realized volatility from hourly on-chain price history, plus a backtested width table: probability-in-range at your horizon, expected time-in-range share, capital-efficiency multiple and naive fee-capture estimate per candidate range. Analytics only, non-custodial, no execution.",
        "operationId": "lpRangeModel",
        "x-agent-use-case": "on-demand",
        "x-deterministic": true,
        "parameters": [
          {
            "name": "pool",
            "in": "query",
            "required": true,
            "schema": { "type": "string" },
            "description": "GigaDex pool address 0x… (required — discover pools via /api/points/pool-ev or /api/points/entry-guide)"
          },
          {
            "name": "horizon_days",
            "in": "query",
            "required": false,
            "schema": { "type": "number", "default": 14, "maximum": 90 },
            "description": "Holding-period horizon in days for the scenario table (default: 14, max 90)"
          },
          {
            "name": "lookback_hours",
            "in": "query",
            "required": false,
            "schema": { "type": "number", "default": 168, "maximum": 720 },
            "description": "Hours of price history used for realized volatility (default: 168, max 720)"
          }
        ],
        "responses": {
          "200": {
            "description": "Range scenario table",
            "content": {
              "application/json": {
                "example": {
                  "pool": "0x50e4…", "pair": "WETH/PONS", "current_tick": 107697, "current_price": 0.0000451,
                  "realized_vol_per_day_pct": 9.8, "horizon_days": 14,
                  "scenarios": [{ "width_pct": 15, "tick_lower": 104960, "tick_upper": 110400, "prob_in_range_at_horizon": 0.55, "expected_time_in_range_share": 0.71, "capital_efficiency_x": 13.7, "est_fee_apr_pct": 61.2 }],
                  "method": "zero-drift GBM on trailing realized vol; fee estimate = pool fee APR × efficiency × time-in-range share",
                  "disclaimer": "Educational analytics… not investment advice."
                }
              }
            }
          },
          "402": { "description": "Payment required — x402 USDC on Base (or another supported network)." }
        },
        "x-price-usd": 0.25
      }
    },
    "/api/lp/il-forecast": {
      "get": {
        "summary": "Impermanent-loss vs fees scenario table across price moves for a pool + range",
        "description": "Impermanent-loss scenario table for a GigaDex concentrated-liquidity range on Robinhood Chain — exact CL-vs-HODL value at a spread of hypothetical exit-price moves, plus a naive fee-capture estimate over a holding horizon from realized volatility. Analytics only, non-custodial, no execution.",
        "operationId": "lpIlForecast",
        "x-agent-use-case": "on-demand",
        "x-deterministic": true,
        "parameters": [
          {
            "name": "pool",
            "in": "query",
            "required": true,
            "schema": { "type": "string" },
            "description": "GigaDex pool address 0x… (required — discover pools via /api/points/pool-ev or /api/points/entry-guide)"
          },
          {
            "name": "lower_pct",
            "in": "query",
            "required": false,
            "schema": { "type": "number", "default": 15, "minimum": 0.5, "maximum": 95 },
            "description": "Lower range bound as % below current price, e.g. 15 = price × 0.85 (default: 15, clamped 0.5-95)"
          },
          {
            "name": "upper_pct",
            "in": "query",
            "required": false,
            "schema": { "type": "number", "default": 15, "minimum": 0.5, "maximum": 500 },
            "description": "Upper range bound as % above current price, e.g. 15 = price × 1.15 (default: 15, clamped 0.5-500)"
          },
          {
            "name": "horizon_days",
            "in": "query",
            "required": false,
            "schema": { "type": "number", "default": 14, "maximum": 90 },
            "description": "Holding-period horizon in days for the fee/probability estimate (default: 14, max 90)"
          }
        ],
        "responses": {
          "200": {
            "description": "Impermanent-loss scenario table",
            "content": {
              "application/json": {
                "example": {
                  "pool": "0x50e4…", "pair": "WETH/PONS", "current_tick": 107697, "current_price": 0.0000451,
                  "range": { "lower_pct": 15, "upper_pct": 15, "tick_lower": 104960, "tick_upper": 110400 },
                  "horizon_days": 14,
                  "il_table": [{ "price_move_pct": -50, "lp_value_per_dollar": 0.86, "hodl_value_per_dollar": 0.75, "il_pct": -3.2 }],
                  "est_fees_over_horizon_pct": 2.1, "prob_in_range_at_horizon": 0.55,
                  "method": "Exact piecewise CL-vs-HODL valuation at each hypothetical exit price; fee estimate is a naive scenario metric, not a forecast.",
                  "disclaimer": "Educational analytics… not investment advice."
                }
              }
            }
          },
          "402": { "description": "Payment required — x402 USDC on Base (or another supported network)." }
        },
        "x-price-usd": 0.15
      }
    },
    "/api/lp/position-health": {
      "get": {
        "summary": "In-range status, % through band, edge distances, pending fees — the cheap monitoring poll",
        "description": "GigaDex LP position health check (Robinhood Chain) — fast, cheap monitoring poll for a single position NFT: in-range status, position through the band, distance to each edge in price terms, pending fees and accrued points, read live from the on-chain indexer and a fresh RPC tick. Analytics only.",
        "operationId": "lpPositionHealth",
        "x-agent-use-case": "high-frequency",
        "x-deterministic": true,
        "parameters": [
          {
            "name": "token_id",
            "in": "query",
            "required": true,
            "schema": { "type": "string" },
            "description": "GigaDex position NFT token id (required)"
          }
        ],
        "responses": {
          "200": {
            "description": "Position health snapshot",
            "content": {
              "application/json": {
                "example": {
                  "token_id": "4821", "owner": "0xabc…", "pool": "0x50e4…", "pair": "WETH/PONS", "fee_tier": 3000,
                  "in_range": true, "current_tick": 107697, "tick_lower": 104960, "tick_upper": 110400,
                  "pct_through_band": 0.52, "distance_to_lower_edge_pct": 2.6, "distance_to_upper_edge_pct": 2.4,
                  "fee_pending_0": 0.0021, "fee_pending_1": 4.1, "points": 812.4, "liquidity": "184028481028", "deposited": true,
                  "method": "Fresh RPC slot0 tick where available, falling back to the indexer pool tick; edge distances in price terms via 1.0001^Δtick.",
                  "disclaimer": "Educational analytics… not investment advice."
                }
              }
            }
          },
          "402": { "description": "Payment required — x402 USDC on Base (or another supported network)." }
        },
        "x-price-usd": 0.05
      }
    },
    "/api/lp/rebalance-check": {
      "get": {
        "summary": "Current range vs recentered range, side-by-side scenario comparison",
        "description": "GigaDex rebalance scenario comparison (Robinhood Chain) — side-by-side model of a position's current range versus a same-width range recentered on the current price: probability-in-range at horizon, expected time-in-range share and capital-efficiency, plus static GIGA Protect / rebalance-cost considerations. Analytics only, not a recommendation to act.",
        "operationId": "lpRebalanceCheck",
        "x-agent-use-case": "on-demand",
        "x-deterministic": true,
        "parameters": [
          {
            "name": "token_id",
            "in": "query",
            "required": true,
            "schema": { "type": "string" },
            "description": "GigaDex position NFT token id (required)"
          },
          {
            "name": "horizon_days",
            "in": "query",
            "required": false,
            "schema": { "type": "number", "default": 14, "maximum": 90 },
            "description": "Holding-period horizon in days for the scenario comparison (default: 14, max 90)"
          }
        ],
        "responses": {
          "200": {
            "description": "Current-vs-recentered scenario comparison",
            "content": {
              "application/json": {
                "example": {
                  "token_id": "4821", "pair": "WETH/PONS", "current_tick": 107697,
                  "current_range": { "tick_lower": 104960, "tick_upper": 110400, "prob_in_range_at_horizon": 0.55, "expected_time_in_range_share": 0.71, "capital_efficiency_x": 13.7, "distance_to_lower_edge_pct": 2.6, "distance_to_upper_edge_pct": 2.4 },
                  "recentered_same_width": { "tick_lower": 105300, "tick_upper": 110740, "prob_in_range_at_horizon": 0.62, "expected_time_in_range_share": 0.78, "capital_efficiency_x": 13.7, "distance_to_lower_edge_pct": 3.1, "distance_to_upper_edge_pct": 3.0 },
                  "considerations": ["GIGA Protect: rapid liquidity add/remove cycling can forfeit campaign rewards — per official docs, avoid rapid rebalance cycles during points campaigns.", "Rebalancing realizes any divergence loss and incurs gas + swap fees."],
                  "method": "Side-by-side scenario comparison under zero-drift GBM on trailing realized vol; not a recommendation to act.",
                  "disclaimer": "Educational analytics… not investment advice."
                }
              }
            }
          },
          "402": { "description": "Payment required — x402 USDC on Base (or another supported network)." }
        },
        "x-price-usd": 0.1
      }
    },
    "/api/long/launch-check": {
      "get": {
        "summary": "Launch provenance verdict for a LONG.xyz / Doppler token on Robinhood Chain",
        "description": "Launch provenance check for LONG.xyz / Doppler tokens on Robinhood Chain — one call verifies a token against the on-chain Doppler Airlock registry: registered launch or not, which stock token backs it (and whether that numeraire is an official Robinhood stock token), launching integrator (LONG primary vs other launchpads vs suffix imitators), factory creator match, 1e18 vanity suffix, governance burn status and supply structure. Deterministic verification analytics from verified contracts.",
        "operationId": "longLaunchCheck",
        "x-agent-use-case": "on-demand",
        "x-deterministic": true,
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": true,
            "schema": { "type": "string" },
            "description": "ERC-20 token address 0x… on Robinhood Chain (required)"
          }
        ],
        "responses": {
          "200": {
            "description": "Launch provenance verdict",
            "content": {
              "application/json": {
                "example": {
                  "token": "0x2e8c…111e18", "registered_doppler_launch": true,
                  "verdict": "long_official",
                  "checks": {
                    "airlock_registered": true, "created_by_doppler_factory": true,
                    "integrator": "0x92d4…F765", "integrator_label": "long.xyz (primary)",
                    "address_1e18_suffix": true, "governance_burned": true
                  },
                  "numeraire": { "address": "0xd060…9EEC", "label": "NVDA (NVIDIA • Robinhood Token)", "is_official_robinhood_asset": true },
                  "token_meta": { "name": "Artificial Inu", "symbol": "AI", "total_supply": "1000000000" },
                  "warnings": [],
                  "disclaimer": "Educational analytics… not investment advice."
                }
              }
            }
          },
          "402": { "description": "Payment required — x402 USDC on Base (or another supported network)." }
        },
        "x-price-usd": 0.05
      }
    },
    "/api/long/launch-feed": {
      "get": {
        "summary": "Live new-launches feed for LONG.xyz / Doppler launchpads on Robinhood Chain",
        "description": "Live launch feed for LONG.xyz / Doppler launchpads on Robinhood Chain — the most recent token launches decoded straight from the on-chain Airlock: token name/symbol, which stock or asset each launch is paired against (official Robinhood stock tokens flagged), launching integrator (LONG vs other launchpads), 1e18 suffix and provenance flags. The new-pairs radar for the stock-paired memecoin market format. Analytics only.",
        "operationId": "longLaunchFeed",
        "x-agent-use-case": "on-demand",
        "x-deterministic": true,
        "parameters": [
          {
            "name": "limit",
            "in": "query",
            "required": false,
            "schema": { "type": "number", "default": 20, "maximum": 50 },
            "description": "number of most-recent launches to return (default: 20, max: 50)"
          },
          {
            "name": "only_long",
            "in": "query",
            "required": false,
            "schema": { "type": "boolean", "default": false },
            "description": "true = only launches through LONG's primary integrator (default: false, all Doppler launches)"
          }
        ],
        "responses": {
          "200": {
            "description": "Recent launches with provenance flags",
            "content": {
              "application/json": {
                "example": {
                  "launches": [{
                    "token": "0x2e8c…111e18", "name": "Artificial Inu", "symbol": "AI",
                    "numeraire": { "address": "0xd060…9EEC", "label": "NVDA (NVIDIA • Robinhood Token)", "is_official_robinhood_asset": true },
                    "integrator_label": "long.xyz (primary)", "long_primary": true, "address_1e18_suffix": true,
                    "tx": "0x7632…", "block": 1234567
                  }],
                  "counts": { "total": 20, "long_primary": 6, "stock_paired": 9 },
                  "disclaimer": "Educational analytics… not investment advice."
                }
              }
            }
          },
          "402": { "description": "Payment required — x402 USDC on Base (or another supported network)." }
        },
        "x-price-usd": 0.1
      }
    },
    "/api/long/stock-backing": {
      "get": {
        "summary": "Stock-backing analytics for LONG.xyz / Doppler tokens on Robinhood Chain",
        "description": "Stock-backing analytics for LONG.xyz / Doppler launches on Robinhood Chain — how much real tokenized stock sits behind a meme token: live price in stock and USD terms, FDV, active-range depth (stock extractable at -2/-5/-10/-25% price moves), cumulated pool fees, and the backing stock's share held in meme pools. Without a token param: the per-stock aggregate table — what share of each official Robinhood stock token's on-chain float sits inside the v4 meme-pool singleton. Deterministic on-chain reads.",
        "operationId": "longStockBacking",
        "x-agent-use-case": "on-demand",
        "x-deterministic": true,
        "parameters": [
          {
            "name": "token",
            "in": "query",
            "required": false,
            "schema": { "type": "string" },
            "description": "Doppler-launched token address 0x… (optional — omit for the per-stock aggregate backing table)"
          }
        ],
        "responses": {
          "200": {
            "description": "Per-token stock-backing report, or the per-stock aggregate table if no token param",
            "content": {
              "application/json": {
                "example": {
                  "token": "0x2e8c…111e18", "name": "Artificial Inu", "symbol": "AI",
                  "backing_stock": { "address": "0xd060…9EEC", "label": "NVDA (NVIDIA • Robinhood Token)", "price_usd": 207.5 },
                  "price": { "in_stock": 0.0000217, "usd": 0.0045 }, "fdv": { "stock": 21700, "usd": 4502500 },
                  "pool": { "status": "live", "active_liquidity": "3.19e23", "sell_side_depth_stock": { "pct_2": 12.4, "pct_5": 30.7, "pct_10": 60.2, "pct_25": 143.1 } },
                  "cumulated_fees": { "meme": 1234.5, "stock": 8.2 },
                  "stock_in_meme_pools": { "balance": 8109.9, "chain_supply": 20128.6, "pct": 40.29 },
                  "disclaimer": "Educational analytics… not investment advice."
                }
              }
            }
          },
          "402": { "description": "Payment required — x402 USDC on Base (or another supported network)." }
        },
        "x-price-usd": 0.15
      }
    }
  }
}
