Webhooks

WindBorne webhooks let you receive real-time HTTP POST notifications as forecast outputs become available. Instead of polling the API, register a webhook URL and configure the subscriptions you care about.

From Subscription to Delivery

  1. Create a webhook with your server's URL and the subscriptions you need. You can add subscriptions later.
    WeatherMesh6 0Z and 12Z with gridded forecasts returned
  2. When a subscription is triggered, WindBorne sends an HTTP POST to your URL with a JSON payload. You can also include API responses in the payload.
  3. Your server verifies the webhook signature and returns a 2xx status to acknowledge receipt.
  4. If an automatic delivery fails, WindBorne retries up to three times with increasing delays.

Subscription Types

Choose the subscriptions that match the updates you want to receive. Each subscription's reference page describes when it is triggered and its available filters and response options. Each webhook can contain at most one subscription of each type.

Attaching Forecast Responses

Use response_options to include an API response in the webhook payload when a subscription is triggered. WindBorne prepares the response using the forecast that triggered the subscription and includes it in data.response .

The available response options depend on the subscription type. See the reference pages for gridded forecasts, interpolated point forecasts, tropical cyclones, and degree days for configuration details.

Delivery Identifiers

Webhook deliveries do not include a separate delivery-attempt identifier or delivery_id field. Use subscription_id and trigger_id together to identify one logical notification. Each retry is another attempt for that notification and reuses both its trigger_id and subscription_id .

Delivery & Retries

Return a 2xx response to acknowledge a delivery. Failed automatic deliveries are retried up to three times with increasing delays. A ping makes one immediate delivery attempt and returns an error without scheduling retries.

Webhook Authentication

The secret is only created once for you. Store it securely, as it is used to authenticate webhook callbacks separately from the API request authentication used to manage webhooks.

Every delivery includes Trigger-Id , Webhook-Timestamp , and Webhook-Signature headers. Read the unmodified request body as bytes, reject stale timestamps, and verify the HMAC before processing the payload.

Check that a webhook came from WindBorne and hasn't been altered

The timestamp check limits replay attempts to five minutes. To avoid processing the same update twice for a subscription, keep track of recently processed Trigger-Id and subscription_id pairs and skip any pair you have already processed.