Get a profile
POST
/v1/atmosphere/profile
const url = 'https://api.verticalweather.com/v1/atmosphere/profile';const options = { method: 'POST', headers: {'X-API-Key': '<X-API-Key>', 'Content-Type': 'application/json'}, body: '{"altitude_reference":"agl","altitudes_m":[1000,2000,5000],"latitude":35.052,"longitude":-117.985,"time":"2026-09-08T12:10:00Z"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://api.verticalweather.com/v1/atmosphere/profile \ --header 'Content-Type: application/json' \ --header 'X-API-Key: <X-API-Key>' \ --data '{ "altitude_reference": "agl", "altitudes_m": [ 1000, 2000, 5000 ], "latitude": 35.052, "longitude": -117.985, "time": "2026-09-08T12:10:00Z" }'Returns one atmospheric profile: conditions at each requested height above the
given point, at the model time nearest to time.
altitudes_m: 1–32 unique heights in metres;altitude_referencesays whether they are above ground (agl) or above sea level (msl). Ground comes from the model terrain unless you passground_elevation_m_msl.time: an ISO-8601 timestamp with a timezone. Comparevalid_timein the response withrequested_timeto see which model time was actually used.- Winds:
wind_u_ms(towards east) andwind_v_ms(towards north), pluswind_speed_msandwind_direction_deg(degrees clockwise from true north that the wind blows from; 0 at zero speed means calm). - Very low heights (near 0–10 m AGL) are usually outside the pressure-level column
and return
409with the supportedcoveragerange.
The example response was recorded from a real request. Errors use
application/problem+json with a stable code. After a 429 or 503, wait for
the number of seconds in Retry-After before retrying.
Authorizations
Section titled “Authorizations”Request Bodyrequired
Section titled “Request Bodyrequired”Media typeapplication/json
object
Examples
Examplethree_heights_agl
Wind at 1, 2 and 5 km above ground
{ "altitude_reference": "agl", "altitudes_m": [ 1000, 2000, 5000 ], "latitude": 35.052, "longitude": -117.985, "time": "2026-09-08T12:10:00Z"}Responses
Section titled “ Responses ”Successful Response
Media typeapplication/json
object
altitude_reference
required
string
coverage
required
object
maximum_agl_m
required
number
maximum_msl_m
required
number
minimum_agl_m
required
number
minimum_msl_m
required
number
ground_elevation_m_msl
required
number
ground_source
required
string
latitude
required
number
levels
required
Array<object>
object
altitude_agl_m
required
number
altitude_msl_m
required
number
density_kg_m3
required
number
pressure_pa
required
number
relative_humidity_pct
required
number
specific_humidity_kg_kg
required
number
temperature_k
required
number
wind_direction_deg
required
number
wind_speed_ms
required
number
wind_u_ms
required
number
wind_v_ms
required
number
longitude
required
number
model_ground_elevation_m_msl
required
number
provenance
required
object
attribution
string
dataset
string
density_method
string
forecast_hour
required
integer
grid_spacing_degrees
number
height_convention
string
humidity_convention
string
is_final
boolean
licence_url
string
model
string
model_run_at
required
string format: date-time
processing_version
string
quality
required
string
retrieved_at
required
string format: date-time
sampled_latitude
required
number
sampled_longitude
required
number
source_sha256
required
string
source_url
string
spatial_interpolation
string
temporal_interpolation
string
vertical_interpolation
string
requested_time
required
string format: date-time
valid_time
required
string format: date-time
Example
{ "altitude_reference": "agl", "coverage": { "maximum_agl_m": 10183.345570458954, "maximum_msl_m": 10937.094107165602, "minimum_agl_m": 27.187922772751676, "minimum_msl_m": 780.9364594793992 }, "ground_elevation_m_msl": 753.7485367066475, "ground_source": "model", "latitude": 35.052, "levels": [ { "altitude_agl_m": 1000, "altitude_msl_m": 1753.7485367066474, "density_kg_m3": 0.9763716831689078, "pressure_pa": 82734.3208847534, "relative_humidity_pct": 46.9711339410645, "specific_humidity_kg_kg": 0.008574039134040905, "temperature_k": 293.66748393309285, "wind_direction_deg": 253.12155120805502, "wind_speed_ms": 3.8450224873865375, "wind_u_ms": 3.679389919079603, "wind_v_ms": 1.1163725864976923 }, { "altitude_agl_m": 2000, "altitude_msl_m": 2753.7485367066474, "density_kg_m3": 0.8895118757482096, "pressure_pa": 73573.0119450468, "relative_humidity_pct": 56.23324861986829, "specific_humidity_kg_kg": 0.007483832526248116, "temperature_k": 286.8391740852655, "wind_direction_deg": 240.75021355187897, "wind_speed_ms": 6.402867182808112, "wind_u_ms": 5.586487711558693, "wind_v_ms": 3.1285560901612124 }, { "altitude_agl_m": 5000, "altitude_msl_m": 5753.748536706647, "density_kg_m3": 0.6650933474527685, "pressure_pa": 50856.29755967961, "relative_humidity_pct": 56.248480717752, "specific_humidity_kg_kg": 0.0024623300051281392, "temperature_k": 265.9837924670181, "wind_direction_deg": 225.17628889449685, "wind_speed_ms": 11.87809858743052, "wind_u_ms": 8.424886745294033, "wind_v_ms": 8.373201859604713 } ], "longitude": -117.985, "model_ground_elevation_m_msl": 753.7485367066475, "provenance": { "attribution": "Derived from NOAA/NCEP GFS model data; interpolated by this service", "dataset": "NOAA GFS 0.25 degree pressure levels", "density_method": "ideal_moist_gas_from_specific_humidity_excludes_condensate", "forecast_hour": 12, "grid_spacing_degrees": 0.25, "height_convention": "spherical_geometric_above_model_geoid_R6371229m", "humidity_convention": "relative_to_liquid_water_murphy_koop2005", "is_final": false, "licence_url": "https://www.weather.gov/disclaimer", "model": "GFS", "model_run_at": "2026-09-08T00:00:00Z", "processing_version": "atmosphere-0.1.0", "quality": "forecast", "retrieved_at": "2026-09-13T03:09:27.174917Z", "sampled_latitude": 35, "sampled_longitude": -118, "source_sha256": "c8d49bd89754f422a25933701f712ef8a830a062d50c8d28c92acaaed30b1a87", "source_url": "https://www.nco.ncep.noaa.gov/pmb/products/gfs/", "spatial_interpolation": "nearest_grid_point", "temporal_interpolation": "nearest_available_model_step", "vertical_interpolation": "linear_u_v_temperature_specific_humidity_log_pressure_in_geometric_height" }, "requested_time": "2026-09-08T12:10:00Z", "supplied_ground_elevation_m_msl": null, "valid_time": "2026-09-08T12:00:00Z"}400: Invalid request; 401: Invalid beta key; 404: Outside source coverage; 409: Outside supported vertical range; 429: Profile request rate or daily upstream-attempt limit reached. See the guide’s Errors page.
Media typeapplication/problem+json
object
Examplegenerated
{ "code": "example", "coverage": { "maximum_agl_m": 1, "maximum_msl_m": 1, "minimum_agl_m": 1, "minimum_msl_m": 1 }, "detail": "example", "request_id": "example", "status": 1, "title": "example", "type": "example"}500: Internal error; 502: Unusable source column; 503: Source busy or service unavailable. See the guide’s Errors page.
Media typeapplication/problem+json
object
Examplegenerated
{ "code": "example", "coverage": { "maximum_agl_m": 1, "maximum_msl_m": 1, "minimum_agl_m": 1, "minimum_msl_m": 1 }, "detail": "example", "request_id": "example", "status": 1, "title": "example", "type": "example"}