Skip to main content

vertical-weather

Python client for the Vertical Weather API. Ask for wind, temperature, pressure, humidity and air density at the heights you choose above a point, from NOAA's GFS model.

pip install vertical-weather

Needs Python 3.11 or later. Get an API key from the dashboard; the API is in free beta.

Example

import os
from vertical_weather import get_profile

profile = get_profile(os.environ["VERTICAL_WEATHER_API_KEY"], {
    "latitude": 35.052,
    "longitude": -117.985,
    "time": "2026-10-03T18:00:00Z",
    "altitudes_m": [1000, 2000, 5000],
    "altitude_reference": "agl",
})
for level in profile.levels:
    print(level.altitude_agl_m, level.wind_speed_ms, level.wind_direction_deg)

In async code, use await async_get_profile(...) with the same arguments. The result is a typed Pydantic model; profile.model_dump(mode="json") gives plain data. PROFILE_UNITS names the unit of every level field.

Keep the key on a server. Don't ship it in a mobile app, browser code or a public repository.

Reading the results

  • Heights are metres above ground (agl) or above mean sea level (msl). Ground is the model's terrain unless you pass ground_elevation_m_msl.
  • Wind u points east and v north, in m/s. wind_direction_deg is where the wind comes from, clockwise from true north; 0 at zero speed means calm.
  • valid_time is the model time actually used and can differ from the time you asked for. provenance names the model run and grid point.
  • Relative humidity can be above 100%.

Options

Keyword arguments to both functions:

Option Default Meaning
base_url https://api.verticalweather.com API address
timeout_ms 30000 Time limit per attempt (1 to 300000)
max_elapsed_ms 30000 Time limit for the whole call, including waits
max_attempts 1 Up to 5; retries only 429 rate_limited and 503 source_busy

Retries wait for Retry-After when the server sends it. Timeouts and network errors are never retried, since the server may already have done the work.

Errors

Every failure raises AtmosphereError with code, status, request_id, retry_after_ms and coverage.

Code What to do
unauthorized (401) Check the key.
profile_out_of_range (409) A height is outside the model column; coverage has the available range.
rate_limited (429) Wait retry_after_ms, or allow retries.
source_busy (503) Try again shortly.
timeout, network_error The request may or may not have completed.
invalid_response, unexpected_status The response didn't match the contract.
invalid_request, missing_key, invalid_url, invalid_options Fix the input.

The client checks every response against the request (heights, time, ground, coverage, derived wind) and never fills in missing values. It follows no redirects, ignores proxy environment variables and never logs your key.

MIT license.

Release files for vertical-weather 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for vertical-weather 0.1.0
File Size Uploaded
vertical_weather-0.1.0.tar.gz 14.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for vertical-weather 0.1.0
File Interpreter ABI Platform
vertical_weather-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 24.7 kB

Release files / vertical_weather-0.1.0.tar.gz

Download URL vertical_weather-0.1.0.tar.gz
Size 14.5 kB
Tags Source
SHA-256 checksum
How to use checksums
c0e15ba1480f91bfaa4c57fcd77928d9c27e5227977633a52f904275c00a52aa
BLAKE2b-256 checksum
How to use checksums
6260eb05aa4d92bc072fa8e6b4f1c447c83b8526f27a1e424d37fc7988efd723
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / vertical_weather-0.1.0-py3-none-any.whl

Download URL vertical_weather-0.1.0-py3-none-any.whl
Size 10.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
1d4908f5bbbd1756f4cbfda7c3636ce6640e6cfe64fc7cc5925819f757f1891a
BLAKE2b-256 checksum
How to use checksums
6ee8392b6147256bf7318df2e9e983dd3371d532b8cb4e78aa2b22cab6865ce7
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page