{"openapi":"3.1.0","info":{"title":"Vertical Weather API","summary":"Wind, temperature and air density at any height above a location, from NOAA GFS.","description":"Vertical Weather returns wind, temperature, pressure, humidity and air density\nat the heights you ask for, above a latitude/longitude at a given time. Use it\nwhen something flies: rockets, drones, balloons, gliders, experimental aircraft.\n\nSend one `POST /v1/atmosphere/profile` with up to 32 heights in metres, either\nabove ground level (`agl`) or above mean sea level (`msl`). Each returned level\nhas eastward/northward wind components plus wind speed and the direction the\nwind blows *from*, all in SI units. Data comes from NOAA's GFS global forecast\nmodel (up to 14 days ahead and the recent past); the response states the model\nrun and actual valid time used, which can differ from the time you asked for.\n\nHeights outside the model's usable column are refused with `409` and the\nsupported range, rather than guessed. Authenticate with an `X-API-Key` header.\nNot for flight-safety or life-safety decisions.\n","version":"0.1.0"},"paths":{"/health":{"get":{"summary":"Health","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/ready":{"get":{"summary":"Ready","operationId":"ready_ready_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"503":{"description":"Service Unavailable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AtmosphereProblem"}}}}}}},"/v1/atmosphere/usage":{"get":{"summary":"Usage","operationId":"usage_v1_atmosphere_usage_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BetaUsage"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AtmosphereProblem"}}}},"503":{"description":"Service Unavailable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AtmosphereProblem"}}}}},"security":[{"APIKeyHeader":[]}]}},"/v1/atmosphere/capabilities":{"get":{"summary":"Capabilities","operationId":"capabilities_v1_atmosphere_capabilities_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/atmosphere/profile":{"post":{"summary":"Get wind, temperature and density at chosen heights above a location","description":"Returns one atmospheric profile: conditions at each requested height above the\ngiven point, at the model time nearest to `time`.\n\n- `altitudes_m`: 1–32 unique heights in metres; `altitude_reference` says whether\n  they are above ground (`agl`) or above sea level (`msl`). Ground comes from the\n  model terrain unless you pass `ground_elevation_m_msl`.\n- `time`: an ISO-8601 timestamp with a timezone. Compare `valid_time` in the\n  response with `requested_time` to see which model time was actually used.\n- Winds: `wind_u_ms` (towards east) and `wind_v_ms` (towards north), plus\n  `wind_speed_ms` and `wind_direction_deg` (degrees clockwise from true north that\n  the wind blows *from*; 0 at zero speed means calm).\n- Very low heights (near 0–10 m AGL) are usually outside the pressure-level column\n  and return `409` with the supported `coverage` range.\n\nThe example is a real recorded response for illustration; live values differ.\nErrors use `application/problem+json` with a stable `code`. Respect `Retry-After`\non `429` and `503`.","operationId":"get_atmospheric_profile","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AtmosphereRequest"},"examples":{"three_heights_agl":{"summary":"Wind at 1, 2 and 5 km above ground","value":{"latitude":35.052,"longitude":-117.985,"time":"2026-09-08T12:10:00Z","altitudes_m":[1000,2000,5000],"altitude_reference":"agl"}}}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AtmosphereResponse"},"example":{"latitude":35.052,"longitude":-117.985,"requested_time":"2026-09-08T12:10:00Z","valid_time":"2026-09-08T12:00:00Z","altitude_reference":"agl","ground_elevation_m_msl":753.7485367066475,"model_ground_elevation_m_msl":753.7485367066475,"supplied_ground_elevation_m_msl":null,"ground_source":"model","coverage":{"minimum_msl_m":780.9364594793992,"maximum_msl_m":10937.094107165602,"minimum_agl_m":27.187922772751676,"maximum_agl_m":10183.345570458954},"levels":[{"altitude_agl_m":1000,"altitude_msl_m":1753.7485367066474,"wind_u_ms":3.679389919079603,"wind_v_ms":1.1163725864976923,"wind_speed_ms":3.8450224873865375,"wind_direction_deg":253.12155120805502,"temperature_k":293.66748393309285,"pressure_pa":82734.3208847534,"specific_humidity_kg_kg":0.008574039134040905,"relative_humidity_pct":46.9711339410645,"density_kg_m3":0.9763716831689078},{"altitude_agl_m":2000,"altitude_msl_m":2753.7485367066474,"wind_u_ms":5.586487711558693,"wind_v_ms":3.1285560901612124,"wind_speed_ms":6.402867182808112,"wind_direction_deg":240.75021355187897,"temperature_k":286.8391740852655,"pressure_pa":73573.0119450468,"specific_humidity_kg_kg":0.007483832526248116,"relative_humidity_pct":56.23324861986829,"density_kg_m3":0.8895118757482096},{"altitude_agl_m":5000,"altitude_msl_m":5753.748536706647,"wind_u_ms":8.424886745294033,"wind_v_ms":8.373201859604713,"wind_speed_ms":11.87809858743052,"wind_direction_deg":225.17628889449685,"temperature_k":265.9837924670181,"pressure_pa":50856.29755967961,"specific_humidity_kg_kg":0.0024623300051281392,"relative_humidity_pct":56.248480717752,"density_kg_m3":0.6650933474527685}],"provenance":{"model":"GFS","dataset":"NOAA GFS 0.25 degree pressure levels","model_run_at":"2026-09-08T00:00:00Z","forecast_hour":12,"quality":"forecast","is_final":false,"retrieved_at":"2026-09-13T03:09:27.174917Z","sampled_latitude":35,"sampled_longitude":-118,"grid_spacing_degrees":0.25,"source_sha256":"c8d49bd89754f422a25933701f712ef8a830a062d50c8d28c92acaaed30b1a87","processing_version":"atmosphere-0.1.0","spatial_interpolation":"nearest_grid_point","temporal_interpolation":"nearest_available_model_step","vertical_interpolation":"linear_u_v_temperature_specific_humidity_log_pressure_in_geometric_height","height_convention":"spherical_geometric_above_model_geoid_R6371229m","humidity_convention":"relative_to_liquid_water_murphy_koop2005","density_method":"ideal_moist_gas_from_specific_humidity_excludes_condensate","attribution":"Derived from NOAA/NCEP GFS model data; interpolated by this service","source_url":"https://www.nco.ncep.noaa.gov/pmb/products/gfs/","licence_url":"https://www.weather.gov/disclaimer"}}}}},"400":{"description":"Invalid request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AtmosphereProblem"}}}},"401":{"description":"Invalid beta key","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AtmosphereProblem"}}}},"404":{"description":"Outside source coverage","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AtmosphereProblem"}}}},"409":{"description":"Outside supported vertical range","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AtmosphereProblem"}}}},"429":{"description":"Profile request rate or daily upstream-attempt limit reached","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AtmosphereProblem"}}}},"500":{"description":"Internal error","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AtmosphereProblem"}}}},"502":{"description":"Unusable source column","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AtmosphereProblem"}}}},"503":{"description":"Source busy or service unavailable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AtmosphereProblem"}}}}},"security":[{"APIKeyHeader":[]}]}},"/v1/account":{"get":{"summary":"Account","operationId":"account_v1_account_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountInfo"}}}},"400":{"description":"Bad Request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AtmosphereProblem"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AtmosphereProblem"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AtmosphereProblem"}}}},"404":{"description":"Not Found","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AtmosphereProblem"}}}},"409":{"description":"Conflict","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AtmosphereProblem"}}}},"429":{"description":"Too Many Requests","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AtmosphereProblem"}}}},"503":{"description":"Service Unavailable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AtmosphereProblem"}}}}},"security":[{"ClerkSession":[]}]},"delete":{"summary":"Delete Account","description":"Permanently delete this account and all its API keys. The Clerk sign-in\nprofile is separate; the dashboard asks Clerk to delete it afterwards.","operationId":"delete_account_v1_account_delete","responses":{"204":{"description":"Successful Response"},"400":{"description":"Bad Request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AtmosphereProblem"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AtmosphereProblem"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AtmosphereProblem"}}}},"404":{"description":"Not Found","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AtmosphereProblem"}}}},"409":{"description":"Conflict","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AtmosphereProblem"}}}},"429":{"description":"Too Many Requests","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AtmosphereProblem"}}}},"503":{"description":"Service Unavailable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AtmosphereProblem"}}}}},"security":[{"ClerkSession":[]}]}},"/v1/account/keys":{"get":{"summary":"Keys","operationId":"keys_v1_account_keys_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KeyList"}}}},"400":{"description":"Bad Request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AtmosphereProblem"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AtmosphereProblem"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AtmosphereProblem"}}}},"404":{"description":"Not Found","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AtmosphereProblem"}}}},"409":{"description":"Conflict","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AtmosphereProblem"}}}},"429":{"description":"Too Many Requests","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AtmosphereProblem"}}}},"503":{"description":"Service Unavailable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AtmosphereProblem"}}}}},"security":[{"ClerkSession":[]}]},"post":{"summary":"Create Key","operationId":"create_key_v1_account_keys_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NewKey"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatedKey"}}}},"400":{"description":"Bad Request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AtmosphereProblem"}}}},"401":{"description":"Unauthorized","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AtmosphereProblem"}}}},"403":{"description":"Forbidden","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AtmosphereProblem"}}}},"404":{"description":"Not Found","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AtmosphereProblem"}}}},"409":{"description":"Conflict","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AtmosphereProblem"}}}},"429":{"description":"Too Many Requests","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AtmosphereProblem"}}}},"503":{"description":"Service Unavailable","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AtmosphereProblem"}}}}},"security":[{"ClerkSession":[]}]}},"/v1/account/keys/{key_id}":{"delete":{"summary":"Revoke Key","operationId":"revoke_key_v1_account_keys__key_id__delete","security":[{"ClerkSession":[]}],"parameters":[{"name":"key_id","in":"path","required":true,"schema":{"type":"string","title":"Key Id"}}],"responses":{"204":{"description":"Successful Response"},"400":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AtmosphereProblem"}}},"description":"Bad Request"},"401":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AtmosphereProblem"}}},"description":"Unauthorized"},"403":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AtmosphereProblem"}}},"description":"Forbidden"},"404":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AtmosphereProblem"}}},"description":"Not Found"},"409":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AtmosphereProblem"}}},"description":"Conflict"},"429":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AtmosphereProblem"}}},"description":"Too Many Requests"},"503":{"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/AtmosphereProblem"}}},"description":"Service Unavailable"}}}}},"components":{"schemas":{"AccountInfo":{"properties":{"id":{"type":"string","title":"Id"},"billing_enabled":{"type":"boolean","title":"Billing Enabled"},"allowance_kind":{"type":"string","title":"Allowance Kind"},"period":{"type":"string","title":"Period"},"upstream_attempts":{"type":"integer","title":"Upstream Attempts"},"limit":{"type":"integer","title":"Limit"},"remaining":{"type":"integer","title":"Remaining"},"reset_after_seconds":{"type":"integer","title":"Reset After Seconds"}},"type":"object","required":["id","billing_enabled","allowance_kind","period","upstream_attempts","limit","remaining","reset_after_seconds"],"title":"AccountInfo"},"AtmosphereLevel":{"properties":{"altitude_agl_m":{"type":"number","title":"Altitude Agl M"},"altitude_msl_m":{"type":"number","title":"Altitude Msl M"},"wind_u_ms":{"type":"number","title":"Wind U Ms"},"wind_v_ms":{"type":"number","title":"Wind V Ms"},"wind_speed_ms":{"type":"number","minimum":0.0,"title":"Wind Speed Ms"},"wind_direction_deg":{"type":"number","exclusiveMaximum":360.0,"minimum":0.0,"title":"Wind Direction Deg"},"temperature_k":{"type":"number","exclusiveMinimum":0.0,"title":"Temperature K"},"pressure_pa":{"type":"number","exclusiveMinimum":0.0,"title":"Pressure Pa"},"specific_humidity_kg_kg":{"type":"number","exclusiveMaximum":1.0,"minimum":0.0,"title":"Specific Humidity Kg Kg"},"relative_humidity_pct":{"type":"number","minimum":0.0,"title":"Relative Humidity Pct"},"density_kg_m3":{"type":"number","exclusiveMinimum":0.0,"title":"Density Kg M3"}},"type":"object","required":["altitude_agl_m","altitude_msl_m","wind_u_ms","wind_v_ms","wind_speed_ms","wind_direction_deg","temperature_k","pressure_pa","specific_humidity_kg_kg","relative_humidity_pct","density_kg_m3"],"title":"AtmosphereLevel"},"AtmosphereProblem":{"properties":{"type":{"type":"string","title":"Type"},"title":{"type":"string","title":"Title"},"status":{"type":"integer","title":"Status"},"code":{"type":"string","title":"Code"},"detail":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Detail"},"request_id":{"type":"string","title":"Request Id"},"coverage":{"anyOf":[{"$ref":"#/components/schemas/VerticalCoverage"},{"type":"null"}]}},"type":"object","required":["type","title","status","code","request_id"],"title":"AtmosphereProblem"},"AtmosphereProvenance":{"properties":{"model":{"type":"string","const":"GFS","title":"Model","default":"GFS"},"dataset":{"type":"string","title":"Dataset","default":"NOAA GFS 0.25 degree pressure levels"},"model_run_at":{"type":"string","format":"date-time","title":"Model Run At"},"forecast_hour":{"type":"integer","minimum":0.0,"title":"Forecast Hour"},"quality":{"type":"string","enum":["forecast","analysis"],"title":"Quality"},"is_final":{"type":"boolean","const":false,"title":"Is Final","default":false},"retrieved_at":{"type":"string","format":"date-time","title":"Retrieved At"},"sampled_latitude":{"type":"number","title":"Sampled Latitude"},"sampled_longitude":{"type":"number","title":"Sampled Longitude"},"grid_spacing_degrees":{"type":"number","title":"Grid Spacing Degrees","default":0.25},"source_sha256":{"type":"string","title":"Source Sha256"},"processing_version":{"type":"string","title":"Processing Version","default":"atmosphere-0.1.0"},"spatial_interpolation":{"type":"string","title":"Spatial Interpolation","default":"nearest_grid_point"},"temporal_interpolation":{"type":"string","title":"Temporal Interpolation","default":"nearest_available_model_step"},"vertical_interpolation":{"type":"string","title":"Vertical Interpolation","default":"linear_u_v_temperature_specific_humidity_log_pressure_in_geometric_height"},"height_convention":{"type":"string","title":"Height Convention","default":"spherical_geometric_above_model_geoid_R6371229m"},"humidity_convention":{"type":"string","title":"Humidity Convention","default":"relative_to_liquid_water_murphy_koop2005"},"density_method":{"type":"string","title":"Density Method","default":"ideal_moist_gas_from_specific_humidity_excludes_condensate"},"attribution":{"type":"string","title":"Attribution","default":"Derived from NOAA/NCEP GFS model data; interpolated by this service"},"source_url":{"type":"string","title":"Source Url","default":"https://www.nco.ncep.noaa.gov/pmb/products/gfs/"},"licence_url":{"type":"string","title":"Licence Url","default":"https://www.weather.gov/disclaimer"}},"type":"object","required":["model_run_at","forecast_hour","quality","retrieved_at","sampled_latitude","sampled_longitude","source_sha256"],"title":"AtmosphereProvenance"},"AtmosphereRequest":{"properties":{"latitude":{"type":"number","maximum":90.0,"minimum":-90.0,"title":"Latitude"},"longitude":{"type":"number","maximum":180.0,"minimum":-180.0,"title":"Longitude"},"time":{"type":"string","format":"date-time","title":"Time"},"altitudes_m":{"items":{"type":"number"},"type":"array","maxItems":32,"minItems":1,"title":"Altitudes M"},"altitude_reference":{"type":"string","enum":["agl","msl"],"title":"Altitude Reference"},"ground_elevation_m_msl":{"anyOf":[{"type":"number","maximum":10000.0,"minimum":-1000.0},{"type":"null"}],"title":"Ground Elevation M Msl"},"quality":{"type":"string","enum":["best_available","immediate"],"title":"Quality","default":"best_available"}},"additionalProperties":false,"type":"object","required":["latitude","longitude","time","altitudes_m","altitude_reference"],"title":"AtmosphereRequest"},"AtmosphereResponse":{"properties":{"latitude":{"type":"number","title":"Latitude"},"longitude":{"type":"number","title":"Longitude"},"requested_time":{"type":"string","format":"date-time","title":"Requested Time"},"valid_time":{"type":"string","format":"date-time","title":"Valid Time"},"altitude_reference":{"type":"string","enum":["agl","msl"],"title":"Altitude Reference"},"ground_elevation_m_msl":{"type":"number","title":"Ground Elevation M Msl"},"model_ground_elevation_m_msl":{"type":"number","title":"Model Ground Elevation M Msl"},"supplied_ground_elevation_m_msl":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Supplied Ground Elevation M Msl"},"ground_source":{"type":"string","enum":["caller","model"],"title":"Ground Source"},"coverage":{"$ref":"#/components/schemas/VerticalCoverage"},"levels":{"items":{"$ref":"#/components/schemas/AtmosphereLevel"},"type":"array","title":"Levels"},"provenance":{"$ref":"#/components/schemas/AtmosphereProvenance"}},"type":"object","required":["latitude","longitude","requested_time","valid_time","altitude_reference","ground_elevation_m_msl","model_ground_elevation_m_msl","supplied_ground_elevation_m_msl","ground_source","coverage","levels","provenance"],"title":"AtmosphereResponse"},"BetaUsage":{"properties":{"period":{"type":"string","const":"utc_day","title":"Period","default":"utc_day"},"upstream_attempts":{"type":"integer","minimum":0.0,"title":"Upstream Attempts"},"limit":{"type":"integer","title":"Limit"},"remaining":{"type":"integer","minimum":0.0,"title":"Remaining"},"reset_after_seconds":{"type":"integer","minimum":1.0,"title":"Reset After Seconds"},"billing_enabled":{"type":"boolean","const":false,"title":"Billing Enabled","default":false}},"type":"object","required":["upstream_attempts","limit","remaining","reset_after_seconds"],"title":"BetaUsage"},"CreatedKey":{"properties":{"id":{"type":"string","title":"Id"},"key":{"type":"string","title":"Key","description":"Shown once. Store securely; never embed in a browser app."},"name":{"type":"string","title":"Name"}},"type":"object","required":["id","key","name"],"title":"CreatedKey"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"KeyInfo":{"properties":{"id":{"type":"string","title":"Id"},"prefix":{"type":"string","title":"Prefix"},"name":{"type":"string","title":"Name"},"created_at":{"type":"number","title":"Created At"},"revoked_at":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Revoked At"}},"type":"object","required":["id","prefix","name","created_at","revoked_at"],"title":"KeyInfo"},"KeyList":{"properties":{"keys":{"items":{"$ref":"#/components/schemas/KeyInfo"},"type":"array","title":"Keys"}},"type":"object","required":["keys"],"title":"KeyList"},"NewKey":{"properties":{"name":{"type":"string","maxLength":80,"minLength":1,"pattern":"^[^\\x00-\\x1f\\x7f]+$","title":"Name"}},"additionalProperties":false,"type":"object","required":["name"],"title":"NewKey"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"VerticalCoverage":{"properties":{"minimum_msl_m":{"type":"number","title":"Minimum Msl M"},"maximum_msl_m":{"type":"number","title":"Maximum Msl M"},"minimum_agl_m":{"type":"number","title":"Minimum Agl M"},"maximum_agl_m":{"type":"number","title":"Maximum Agl M"}},"type":"object","required":["minimum_msl_m","maximum_msl_m","minimum_agl_m","maximum_agl_m"],"title":"VerticalCoverage"}},"securitySchemes":{"APIKeyHeader":{"type":"apiKey","in":"header","name":"X-API-Key"},"ClerkSession":{"type":"http","scheme":"bearer"}}},"servers":[{"url":"https://api.verticalweather.com","description":"Vertical Weather API"}]}