ColorfulClouds Weather API
Combined weather envelope returning realtime, minutely, hourly, daily, and alerts in one call.
Combined weather envelope returning realtime, minutely, hourly, daily, and alerts in one call.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/colorfulclouds-weather-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Caiyun Air Quality Weather API
version: '2.6'
description: Caiyun Weather API v2.6 from ColorfulClouds Tech (彩云科技). Hyperlocal weather, minute-level precipitation nowcasting, hourly forecast up to 360 hours, daily forecast up to 15 days, real-time air quality with CHN + USA AQI standards, severe-weather alerts, life indices, and a precipitation map raster. All operations share a single base URL pattern with the API token embedded in the path and lng,lat as a path tuple.
contact:
name: ColorfulClouds Tech (彩云科技)
url: https://docs.caiyunapp.com/weather-api/
email: hi@caiyunapp.com
license:
name: Commercial — Caiyun Weather API Terms
url: https://platform.caiyunapp.com/
x-generated-from: documentation+sdk
x-source-urls:
- https://docs.caiyunapp.com/weather-api/
- https://github.com/caiyunapp/mcp-caiyun-weather
- https://github.com/caiyunapp/caiyun-weather-api-python-sdk
x-last-validated: '2026-05-30'
servers:
- url: https://api.caiyunapp.com/v2.6
description: Caiyun Weather API v2.6 production endpoint
security:
- pathToken: []
tags:
- name: Weather
description: Combined weather envelope returning realtime, minutely, hourly, daily, and alerts in one call.
paths:
/{token}/{lnglat}/weather:
parameters:
- $ref: '#/components/parameters/Token'
- $ref: '#/components/parameters/LngLat'
get:
operationId: getWeatherCombined
summary: Caiyun Weather Get Combined Weather Envelope
description: Returns a combined response containing realtime, minutely, hourly, and daily forecast blocks in a single call, optionally with severe- weather alerts. The granu parameter narrows the response to a single granularity (realtime, minutely, hourly, daily) when only part of the envelope is needed.
tags:
- Weather
parameters:
- $ref: '#/components/parameters/Lang'
- $ref: '#/components/parameters/Unit'
- $ref: '#/components/parameters/DailySteps'
- $ref: '#/components/parameters/HourlySteps'
- $ref: '#/components/parameters/Alert'
- $ref: '#/components/parameters/Begin'
- $ref: '#/components/parameters/Granu'
responses:
'200':
description: Combined weather payload
content:
application/json:
schema:
$ref: '#/components/schemas/WeatherResponse'
'400':
$ref: '#/components/responses/BadRequest'
'401':
$ref: '#/components/responses/Unauthorized'
'429':
$ref: '#/components/responses/RateLimited'
x-microcks-operation:
delay: 0
dispatcher: FALLBACK
components:
schemas:
Precipitation:
title: Precipitation
type: object
properties:
local:
$ref: '#/components/schemas/PrecipitationLocal'
nearest:
$ref: '#/components/schemas/PrecipitationNearest'
required:
- local
DailyWindProperty:
title: DailyWindProperty
type: object
properties:
speed:
type: number
format: float
direction:
type: number
format: float
required:
- speed
- direction
PrecipitationLocal:
title: PrecipitationLocal
type: object
description: Realtime local precipitation reading at the requested point.
properties:
status:
type: string
description: Local precipitation reading status (ok / error).
example: ok
datasource:
type: string
description: Origin of the precipitation reading (radar, satellite, observation).
example: radar
intensity:
type: number
format: float
description: Precipitation intensity in mm/hr at the point.
example: 0.0
required:
- status
- datasource
- intensity
HourlyAQIItem:
title: HourlyAQIItem
type: object
properties:
datetime:
type: string
format: date-time
value:
$ref: '#/components/schemas/AQIValueDual'
required:
- datetime
- value
DailyAirQuality:
title: DailyAirQuality
type: object
properties:
aqi:
type: array
items:
$ref: '#/components/schemas/DailyAQIItem'
pm25:
type: array
items:
$ref: '#/components/schemas/DailyMinMaxAvgItem'
DailyLifeIndex:
title: DailyLifeIndex
type: object
properties:
ultraviolet:
type: array
items:
$ref: '#/components/schemas/DailyLifeIndexEntry'
carWashing:
type: array
items:
$ref: '#/components/schemas/DailyLifeIndexEntry'
dressing:
type: array
items:
$ref: '#/components/schemas/DailyLifeIndexEntry'
comfort:
type: array
items:
$ref: '#/components/schemas/DailyLifeIndexEntry'
coldRisk:
type: array
items:
$ref: '#/components/schemas/DailyLifeIndexEntry'
AQIValueDual:
title: AQIValueDual
type: object
description: AQI numeric value under both Chinese and US standards.
properties:
chn:
type: number
format: float
example: 78.0
usa:
type: number
format: float
example: 95.0
required:
- chn
- usa
HourlyPM25Item:
title: HourlyPM25Item
type: object
properties:
datetime:
type: string
format: date-time
value:
type: number
format: float
required:
- datetime
- value
DailyPrecipitationItem:
title: DailyPrecipitationItem
type: object
properties:
date:
type: string
format: date
max:
type: number
format: float
min:
type: number
format: float
avg:
type: number
format: float
probability:
type: number
format: float
required:
- date
- max
- min
- avg
- probability
DailyMinMaxAvgItem:
title: DailyMinMaxAvgItem
type: object
properties:
date:
type: string
format: date
max:
type: number
format: float
min:
type: number
format: float
avg:
type: number
format: float
required:
- date
- max
- min
- avg
DailyAstroItem:
title: DailyAstroItem
type: object
properties:
date:
type: string
format: date
sunrise:
$ref: '#/components/schemas/DailyAstroTime'
sunset:
$ref: '#/components/schemas/DailyAstroTime'
required:
- date
- sunrise
- sunset
EnvelopeBase:
title: EnvelopeBase
type: object
description: Common envelope fields returned by every Caiyun Weather endpoint.
properties:
status:
type: string
example: ok
api_version:
type: string
example: v2.6
api_status:
type: string
example: active
lang:
type: string
example: en_US
unit:
type: string
example: metric:v2
tzshift:
type: integer
description: Time zone shift in seconds from UTC.
example: 28800
timezone:
type: string
example: Asia/Shanghai
server_time:
type: integer
description: Server time as Unix epoch seconds.
example: 1748563200
location:
type: array
items:
type: number
format: float
minItems: 2
maxItems: 2
description: Resolved (lat,lng) the response was generated for.
required:
- status
- api_version
- api_status
AlertAdcode:
title: AlertAdcode
type: object
properties:
adcode:
type: integer
example: 110108
name:
type: string
example: Haidian
required:
- adcode
- name
Realtime:
title: Realtime
type: object
description: Realtime weather block.
properties:
status:
type: string
example: ok
temperature:
type: number
format: float
example: 22.4
humidity:
type: number
format: float
description: Relative humidity, 0-1 ratio.
example: 0.58
cloudrate:
type: number
format: float
description: Cloud cover ratio, 0-1.
example: 0.32
skycon:
$ref: '#/components/schemas/SkyCon'
visibility:
type: number
format: float
description: Visibility in km.
example: 14.2
dswrf:
type: number
format: float
description: Downward shortwave radiation flux in W/m².
example: 412.0
wind:
$ref: '#/components/schemas/Wind'
pressure:
type: number
format: float
description: Surface pressure in Pa.
example: 100240.0
apparent_temperature:
type: number
format: float
example: 21.8
precipitation:
$ref: '#/components/schemas/Precipitation'
air_quality:
$ref: '#/components/schemas/AirQualityRealtime'
life_index:
$ref: '#/components/schemas/RealtimeLifeIndex'
required:
- status
- temperature
- humidity
- cloudrate
- skycon
- wind
HourlyAirQuality:
title: HourlyAirQuality
type: object
properties:
aqi:
type: array
items:
$ref: '#/components/schemas/HourlyAQIItem'
pm25:
type: array
items:
$ref: '#/components/schemas/HourlyPM25Item'
HourlySkyconItem:
title: HourlySkyconItem
type: object
properties:
datetime:
type: string
format: date-time
value:
$ref: '#/components/schemas/SkyCon'
required:
- datetime
- value
WeatherResponse:
title: WeatherResponse
allOf:
- $ref: '#/components/schemas/EnvelopeBase'
- type: object
properties:
result:
$ref: '#/components/schemas/Result'
required:
- result
Minutely:
title: Minutely
type: object
description: Minute-level precipitation nowcast block (next 120 minutes).
properties:
status:
type: string
example: ok
datasource:
type: string
example: radar
precipitation_2h:
type: array
items:
type: number
format: float
minItems: 120
maxItems: 120
description: 120 minutes of precipitation intensity in mm/hr.
precipitation:
type: array
items:
type: number
format: float
minItems: 60
maxItems: 60
description: 60 minutes of precipitation intensity in mm/hr.
probability:
type: array
items:
type: number
format: float
description: Per-segment precipitation probability (0-1).
description:
type: string
description: Natural-language summary of the precipitation pattern.
example: clear weather over the next 2 hours
required:
- status
- description
HourlyPrecipitationItem:
title: HourlyPrecipitationItem
type: object
properties:
datetime:
type: string
format: date-time
value:
type: number
format: float
description: Precipitation intensity in mm/hr.
probability:
type: number
format: float
description: Per-hour precipitation probability (0-100).
required:
- datetime
- value
- probability
HourlyWindItem:
title: HourlyWindItem
type: object
properties:
datetime:
type: string
format: date-time
speed:
type: number
format: float
direction:
type: number
format: float
required:
- datetime
- speed
- direction
Result:
title: Result
type: object
description: Unified result envelope for the combined /weather endpoint.
properties:
primary:
type: integer
description: Primary block index in the envelope.
example: 0
forecast_keypoint:
type: string
example: clear weather, overcast after 20 o'clock
realtime:
$ref: '#/components/schemas/Realtime'
minutely:
$ref: '#/components/schemas/Minutely'
hourly:
$ref: '#/components/schemas/Hourly'
daily:
$ref: '#/components/schemas/Daily'
alert:
$ref: '#/components/schemas/Alert'
AirQualityRealtime:
title: AirQualityRealtime
type: object
description: Realtime pollutant concentrations and AQI.
properties:
aqi:
$ref: '#/components/schemas/AQIValueDual'
description:
$ref: '#/components/schemas/AQIDescDual'
pm25:
type: number
format: float
description: PM2.5 concentration in µg/m³.
example: 32.0
pm10:
type: number
format: float
example: 48.0
o3:
type: number
format: float
example: 96.0
so2:
type: number
format: float
example: 4.0
no2:
type: number
format: float
example: 21.0
co:
type: number
format: float
description: CO concentration in mg/m³.
example: 0.6
required:
- aqi
- description
Hourly:
title: Hourly
type: object
description: Hourly forecast series block.
properties:
status:
type: string
example: ok
description:
type: string
example: clear weather over the next 24 hours
precipitation:
type: array
items:
$ref: '#/components/schemas/HourlyPrecipitationItem'
temperature:
type: array
items:
$ref: '#/components/schemas/DateTimeValuePair'
apparent_temperature:
type: array
items:
$ref: '#/components/schemas/DateTimeValuePair'
humidity:
type: array
items:
$ref: '#/components/schemas/DateTimeValuePair'
cloudrate:
type: array
items:
$ref: '#/components/schemas/DateTimeValuePair'
skycon:
type: array
items:
$ref: '#/components/schemas/HourlySkyconItem'
pressure:
type: array
items:
$ref: '#/components/schemas/DateTimeValuePair'
visibility:
type: array
items:
$ref: '#/components/schemas/DateTimeValuePair'
dswrf:
type: array
items:
$ref: '#/components/schemas/DateTimeValuePair'
wind:
type: array
items:
$ref: '#/components/schemas/HourlyWindItem'
air_quality:
$ref: '#/components/schemas/HourlyAirQuality'
required:
- status
- description
ErrorResponse:
title: ErrorResponse
type: object
description: Error envelope returned for invalid requests, auth failures, and rate-limit violations.
properties:
status:
type: string
example: failed
error:
type: string
example: Invalid token
api_status:
type: string
example: deactive
required:
- status
SkyCon:
title: SkyCon
type: string
description: Normalized weather phenomenon (sky condition) enum.
enum:
- CLEAR_DAY
- CLEAR_NIGHT
- PARTLY_CLOUDY_DAY
- PARTLY_CLOUDY_NIGHT
- CLOUDY
- LIGHT_HAZE
- MODERATE_HAZE
- HEAVY_HAZE
- LIGHT_RAIN
- MODERATE_RAIN
- HEAVY_RAIN
- STORM_RAIN
- FOG
- LIGHT_SNOW
- MODERATE_SNOW
- HEAVY_SNOW
- STORM_SNOW
- DUST
- SAND
- WIND
example: PARTLY_CLOUDY_DAY
AQIDescDual:
title: AQIDescDual
type: object
description: AQI category description under both standards.
properties:
chn:
type: string
example: Good
usa:
type: string
example: Moderate
required:
- chn
- usa
LifeIndexItem:
title: LifeIndexItem
type: object
properties:
index:
oneOf:
- type: number
- type: string
description: Index numeric value (0-5) or string code.
example: 3
desc:
type: string
description: Localized description of the index level.
example: Moderate
required:
- index
- desc
Wind:
title: Wind
type: object
description: Wind speed and direction.
properties:
speed:
type: number
format: float
description: Wind speed in the active unit system (km/h for metric:v2).
example: 12.4
direction:
type: number
format: float
description: Wind direction in degrees from north, clockwise.
example: 215.0
DailyWindItem:
title: DailyWindItem
type: object
properties:
date:
type: string
format: date
max:
$ref: '#/components/schemas/DailyWindProperty'
min:
$ref: '#/components/schemas/DailyWindProperty'
avg:
$ref: '#/components/schemas/DailyWindProperty'
required:
- date
- max
- min
- avg
DailySkyconItem:
title: DailySkyconItem
type: object
properties:
date:
type: string
format: date
value:
$ref: '#/components/schemas/SkyCon'
required:
- date
- value
RealtimeLifeIndex:
title: RealtimeLifeIndex
type: object
properties:
ultraviolet:
$ref: '#/components/schemas/LifeIndexItem'
comfort:
$ref: '#/components/schemas/LifeIndexItem'
required:
- ultraviolet
- comfort
DailyAstroTime:
title: DailyAstroTime
type: object
properties:
time:
type: string
example: 05:48
required:
- time
AlertContentItem:
title: AlertContentItem
type: object
properties:
province:
type: string
example: Beijing
status:
type: string
example: active
code:
type: string
description: Alert code per China Meteorological Administration scheme.
example: 0902
description:
type: string
pubtimestamp:
type: number
format: double
description: Publication time as Unix epoch seconds.
city:
type: string
adcode:
type: string
regionId:
type: string
latlon:
type: array
items:
type: number
format: float
minItems: 2
maxItems: 2
county:
type: string
alertId:
type: string
request_status:
type: string
source:
type: string
title:
type: string
location:
type: string
required:
- code
- description
- title
- status
Alert:
title: Alert
type: object
properties:
status:
type: string
example: ok
content:
type: array
items:
$ref: '#/components/schemas/AlertContentItem'
adcodes:
type: array
items:
$ref: '#/components/schemas/AlertAdcode'
DailyAQIItem:
title: DailyAQIItem
type: object
properties:
date:
type: string
format: date
max:
$ref: '#/components/schemas/AQIValueDual'
min:
$ref: '#/components/schemas/AQIValueDual'
avg:
$ref: '#/components/schemas/AQIValueDual'
required:
- date
- max
- min
- avg
PrecipitationNearest:
title: PrecipitationNearest
type: object
description: Nearest precipitation echo to the requested point.
properties:
status:
type: string
example: ok
distance:
type: number
format: float
description: Distance to the nearest precipitation echo in km.
example: 8.7
intensity:
type: number
format: float
example: 0.4
DailyLifeIndexEntry:
title: DailyLifeIndexEntry
type: object
properties:
date:
type: string
format: date
index:
oneOf:
- type: number
- type: string
desc:
type: string
required:
- date
- index
- desc
Daily:
title: Daily
type: object
description: Daily forecast series block.
properties:
status:
type: string
example: ok
astro:
type: array
items:
$ref: '#/components/schemas/DailyAstroItem'
precipitation:
type: array
items:
$ref: '#/components/schemas/DailyPrecipitationItem'
precipitation_08h_20h:
type: array
items:
$ref: '#/components/schemas/DailyPrecipitationItem'
precipitation_20h_32h:
type: array
items:
$ref: '#/components/schemas/DailyPrecipitationItem'
temperature:
type: array
items:
$ref: '#/components/schemas/DailyMinMaxAvgItem'
temperature_08h_20h:
type: array
items:
$ref: '#/components/schemas/DailyMinMaxAvgItem'
temperature_20h_32h:
type: array
items:
$ref: '#/components/schemas/DailyMinMaxAvgItem'
humidity:
type: array
items:
$ref: '#/components/schemas/DailyMinMaxAvgItem'
cloudrate:
type: array
items:
$ref: '#/components/schemas/DailyMinMaxAvgItem'
pressure:
type: array
items:
$ref: '#/components/schemas/DailyMinMaxAvgItem'
visibility:
type: array
items:
$ref: '#/components/schemas/DailyMinMaxAvgItem'
dswrf:
type: array
items:
$ref: '#/components/schemas/DailyMinMaxAvgItem'
wind:
type: array
items:
$ref: '#/components/schemas/DailyWindItem'
wind_08h_20h:
type: array
items:
$ref: '#/components/schemas/DailyWindItem'
wind_20h_32h:
type: array
items:
$ref: '#/components/schemas/DailyWindItem'
skycon:
type: array
items:
$ref: '#/components/schemas/DailySkyconItem'
skycon_08h_20h:
type: array
items:
$ref: '#/components/schemas/DailySkyconItem'
skycon_20h_32h:
type: array
items:
$ref: '#/components/schemas/DailySkyconItem'
life_index:
$ref: '#/components/schemas/DailyLifeIndex'
air_quality:
$ref: '#/components/schemas/DailyAirQuality'
required:
- status
DateTimeValuePair:
title: DateTimeValuePair
type: object
properties:
datetime:
type: string
format: date-time
example: '2026-05-30T15:00:00+08:00'
value:
type: number
format: float
example: 23.1
required:
- datetime
- value
parameters:
LngLat:
name: lnglat
in: path
required: true
description: Longitude,latitude tuple as `lng,lat` (note the order — longitude first). Use WGS84 decimal degrees.
schema:
type: string
pattern: ^-?\d+(\.\d+)?,-?\d+(\.\d+)?$
example: 116.4074,39.9042
Alert:
name: alert
in: query
required: false
description: Include severe-weather alerts in the combined weather response.
schema:
type: boolean
default: false
example: true
Token:
name: token
in: path
required: true
description: Caiyun Weather API token issued by the Open Platform (platform.caiyunapp.com). Embedded in the path rather than a header.
schema:
type: string
example: TAkhjf8d1nlSlspN
Unit:
name: unit
in: query
required: false
description: Unit system for numeric values (temperature, wind, precipitation, pressure).
schema:
type: string
enum:
- metric
- metric:v1
- metric:v2
- imperial
- SI
default: metric
example: metric:v2
DailySteps:
name: dailysteps
in: query
required: false
description: Number of daily forecast days to return. Free tier caps at 3.
schema:
type: integer
minimum: 1
maximum: 15
default: 5
example: 7
Granu:
name: granu
in: query
required: false
description: Restrict the combined /weather response to a single granularity instead of returning the full envelope.
schema:
type: string
enum:
- realtime
- minutely
- hourly
- daily
- weather
example: hourly
HourlySteps:
name: hourlysteps
in: query
required: false
description: Number of hourly forecast steps to return.
schema:
type: integer
minimum: 1
maximum: 360
default: 48
example: 72
Lang:
name: lang
in: query
required: false
description: Response language for description fields.
schema:
type: string
enum:
- zh_CN
- zh_TW
- ja
- en_GB
- en_US
default: en_US
example: en_US
Begin:
name: begin
in: query
required: false
description: Anchor the forecast or historical series at a specific Unix epoch second instead of "now". Used to fetch past 24h (historical) or shift the start of the forecast window.
schema:
type: integer
example: 1748563200
responses:
RateLimited:
description: Per-token quota exceeded
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
BadRequest:
description: Malformed request (invalid coordinates, parameter out of range)
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
Unauthorized:
description: Invalid or missing API token
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
securitySchemes:
pathToken:
type: apiKey
in: query
name: token
description: Caiyun Weather API token. Note that the token is conventionally embedded in the path between the API version and the lng,lat segment rather than sent as a header or query parameter. This security scheme is recorded for tooling completeness; clients should construct the URL with the token in the path as documented.