Every API here is available over the APIs.io API and to AI agents over MCP.
openapi: 3.2.0
info:
title: Horizon Pulse Weather API
version: 1.1.0
termsOfService: https://horizonpulse.dev/terms/buyer
summary: Pay-per-call APIs for AI agents, settled in USDC on Base, Solana or Polygon, or RLUSD on the XRP Ledger, with x402.
description: 'Pay-per-call APIs for AI agents, paid in USDC on Base, Solana or Polygon, or RLUSD on the XRP Ledger, with x402: web search, page fetch and extract, PDF to text, an HTTP proxy, and crypto market data. No signup or API key.
On Base, you only pay for a successful response; errors are not charged except where an operation says so (for /api/tx-status, a not_found status is a charged answer; poll again after pollAgainSeconds). These no-charge statements are made for USDC on Base. On USDC on Solana, and RLUSD on the XRP Ledger, a refused or failed request may still be charged. charged: false means Horizon Pulse did not settle the payment; on USDC on Solana, and RLUSD on the XRP Ledger, this is not a guarantee that no funds moved. Every paid operation carries `x-payment-info` with the exact price, asset, network and payTo of its Base entry; these match the 402 challenge and https://horizonpulse.dev/.well-known/x402. The 402 challenge also offers the same price in USDC on Solana mainnet (`exact`, network solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp, USDC mint EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v, payTo BjY98A6dS3GGLZdz2zHy8wK7XAwnQgNhCc66mfmBTRPz, PayAI facilitator https://facilitator.payai.network), and in native USDC on Polygon PoS mainnet (`exact`, network eip155:137, USDC 0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359, payTo 0x5b32c973596078a967562ca652761404f19be0e9, facilitator: Coinbase CDP), and in RLUSD on the XRP Ledger mainnet (`exact`, network xrpl:0, currency RLUSD = 524C555344000000000000000000000000000000, issuer rMxCKbEDwqr76QuheSUMdEGf4B9xJ8m5De, payTo r3FbirL83RAB2CwnUdxE5pCohMkuo6LQcf, verified on the validated ledger). Recorded example responses (fixed input, dated, informational; not paid operations): GET /api/demo/{route}.
Agent integration: step-by-step skill at https://horizonpulse.dev/skill.md; guide with MCP setup at https://horizonpulse.dev/agents (hosted MCP at https://horizonpulse.dev/mcp for x402-aware clients, plus a local stdio MCP server in the repo''s mcp/ folder that pays from your own wallet with spend caps).
Services for API owners (web pages, not API operations; not paid via x402): Bazaar listing fix at https://horizonpulse.dev/listing-fix; agent promotion at https://horizonpulse.dev/agent-promotion.'
contact:
name: Horizon Pulse
email: horizonpulse.co@proton.me
url: https://horizonpulse.dev
x-guidance: 'Read PAYMENT-REQUIRED (base64 JSON). Pay exact USDC on Base (CDP), Solana (PayAI feePayer), Polygon, or RLUSD on XRPL at the listed payTo. Unpaid samples: /api/demo/{route}. Skill: /skill.md. Hosted MCP: /mcp (Base USDC only).'
servers:
- url: https://horizonpulse.dev
description: Production
security:
- x402: []
tags:
- name: Weather
paths:
/api/weather/alerts:
get:
operationId: getWeatherAlerts
summary: Active NWS weather alerts ($0.02)
description: 'Active alerts for one point (lat, lon) or one US state (area), passed through from api.weather.gov: event, severity, urgency, headline, expires, areaDesc, instruction, description, status, messageType and id. Not an official warning service; not affiliated with or endorsed by NOAA/NWS. For life-safety decisions use weather.gov and local authorities. Up to 60 s old. Charged per answer, including when no alerts are active; bad input is refused before payment, not charged. USDC on Base or Polygon. On USDC on Base, errors are not charged, apart from the exceptions noted on a route. On USDC on Solana, and RLUSD on the XRP Ledger, a refused or failed request may still be charged. On Polygon (native USDC), a request is settled only when it succeeds (HTTP status below 400). Failed requests are not charged.'
x-payment-info:
protocol: x402
x402Version: 2
scheme: exact
network: eip155:8453
asset: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
assetSymbol: USDC
decimals: 6
priceUsd: $0.02
amount: '20000'
payTo: '0x5b32c973596078a967562ca652761404f19be0e9'
facilitator: https://api.cdp.coinbase.com/platform/v2/x402
networks:
- eip155:8453
- eip155:137
polygon:
network: eip155:137
asset: '0x3c499c542cEF5E3811e1192ce70d8cC03d5c3359'
payTo: '0x5b32c973596078a967562ca652761404f19be0e9'
responses:
'200':
description: Result.
content:
application/json:
schema:
type: object
'400':
description: Bad input. Not charged.
content:
application/json:
schema:
type: object
'402':
description: 'Payment required: PAYMENT-REQUIRED header, $0.02 USDC on Base or Polygon.'
content:
application/json:
schema:
type: object
tags:
- Weather
/api/weather/storm-events:
get:
operationId: getWeatherStormEvents
summary: Preliminary SPC reports and one state of active NWS alerts ($0.002)
description: Preliminary SPC reports (hail, wind, tornado) for one convective day, 12:00 UTC through 11:59 UTC the next day, and the six UTC dates before it. Active NWS alerts from one state feed. Not complete bbox, history, marine, or territory coverage. Not a forecast or property-damage proof. An empty valid result is charged as a full successful answer. Source errors, stale data, oversized responses, and too many matches are not charged. Comments are omitted. Bad input is not charged. USDC on Base only.
x-payment-info:
protocol: x402
x402Version: 2
scheme: exact
network: eip155:8453
asset: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
assetSymbol: USDC
decimals: 6
priceUsd: $0.002
amount: '2000'
payTo: '0x5b32c973596078a967562ca652761404f19be0e9'
facilitator: https://api.cdp.coinbase.com/platform/v2/x402
responses:
'200':
description: Result.
content:
application/json:
schema:
type: object
'400':
description: Bad input. Not charged.
content:
application/json:
schema:
type: object
'402':
description: 'Payment required: PAYMENT-REQUIRED header, $0.002 USDC on Base only.'
content:
application/json:
schema:
type: object
tags:
- Weather
/api/weather/forecast:
get:
operationId: getWeatherForecast
summary: NWS point forecast by lat/lon ($0.005)
description: 'NWS point forecast for one US lat/lon via api.weather.gov /points then the linked forecast: name, startTime, endTime, isDaytime, temperature, windSpeed, shortForecast, detailedForecast. Not an official forecast service; not affiliated with or endorsed by NOAA/NWS. For life-safety decisions use weather.gov and local authorities. Up to 60 s old. Charged per answer; bad input and points outside NWS coverage are refused before settlement and not charged. USDC on Base only.'
x-payment-info:
protocol: x402
x402Version: 2
scheme: exact
network: eip155:8453
asset: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913'
assetSymbol: USDC
decimals: 6
priceUsd: $0.005
amount: '5000'
payTo: '0x5b32c973596078a967562ca652761404f19be0e9'
facilitator: https://api.cdp.coinbase.com/platform/v2/x402
responses:
'200':
description: Result.
content:
application/json:
schema:
type: object
'400':
description: Bad input. Not charged.
content:
application/json:
schema:
type: object
'402':
description: 'Payment required: PAYMENT-REQUIRED header, $0.005 USDC on Base only.'
content:
application/json:
schema:
type: object
tags:
- Weather
components:
securitySchemes:
x402:
type: apiKey
in: header
name: PAYMENT-SIGNATURE
description: x402 v2 payment payload (base64 JSON), built from the 402 PAYMENT-REQUIRED challenge. No account or API key. See https://www.x402.org/.
externalDocs:
description: 'Agent guide: discovery, the x402 pay flow, skill file and MCP setup'
url: https://horizonpulse.dev/agents