Apple Weather — how to connect

The plugin ships one node type, AppleWeather/Weather: a node whose page is a weather dashboard — one card per place with current conditions and the daily forecast. The WeatherKit developer key belongs to the instance: an administrator sets it once in Administration › Integrations, and nobody else is asked for a key. You only pin your places, in the Apple Weather tab of your own settings (/{you}/Settings/AppleWeather); they are stored in your own space and nobody else can read them.

A key you stored yourself before this change keeps working until the instance key is set (your page says so), stays private to you, and is never copied anywhere.

1. Create the WeatherKit credentials (administrators; Apple Developer Program required)

WeatherKit needs two things from developer.apple.com/account, and people routinely miss the second:

  1. A key — Certificates, Identifiers & Profiles ▸ Keys ▸ +, name it and enable WeatherKit. Download the .p8 (Apple offers this exactly once) and note the 10-character Key ID.
  2. A Services ID configured for WeatherKit — Certificates, Identifiers & Profiles ▸ Identifiers ▸ +: first register an App ID (e.g. com.yourname.weather) with the WeatherKit capability ticked under both Capabilities and App Services, then register a Services ID (e.g. com.yourname.weather-web) grouped with that App ID. The Services ID identifier is your serviceId — the REST API's token names the Services ID, and WeatherKit refuses a key alone.

Your 10-character Team ID is under Membership details. A newly enabled capability can take a few minutes to propagate on Apple's side.

2. Set the instance key, then pin your places

Administrators open Administration › Integrations and set the four values once. Each is write-only: it is encrypted, filed as a secret write for the control plane, and shown afterwards only as a mask.

Setting Value
AppleWeather:TeamId the 10-character Team ID
AppleWeather:KeyId the 10-character Key ID
AppleWeather:PrivateKey the full text of the .p8 file — BEGIN/END lines included, line breaks intact
AppleWeather:ServiceId the Services ID identifier from step 1.2, e.g. com.yourname.weather-web

Everyone pins places, one per line as Name; latitude; longitude (for example Zurich; 47.3769; 8.5417), and may set the forecast language (en, de, …).

Each location becomes a card: the current conditions line (temperature, feels-like, humidity, wind, UV) and the daily forecast as a data grid — day, pictogram, condition, min, max, rain. The card is built from the platform's controls, so its labels and column headers follow your language (English or German) while the numbers stay as WeatherKit reports them. Refresh re-reads WeatherKit; the page never polls on its own.

Time — two different rules, both deliberate

Attribution — a license requirement

Apple's WeatherKit terms require visible attribution wherever the data appears. Every rendered page — the setup and empty states included — therefore carries the Apple Weather footer linking Apple's data-source page. Keep it — removing it puts your WeatherKit access out of compliance. (The label is the plain words "Apple Weather": Apple's mark is a private-use glyph that renders as an empty box outside Apple's own platforms.)

Security, by design

What the mesh calls

weatherkit.apple.com — /api/v1/weather/{lang}/{lat}/{lon} (current conditions + daily forecast), one GET per pinned place per refresh, through the mesh's bounded HTTP pool; a stalled call degrades to a diagnosis on the page, never a hang. Your developer membership includes 500,000 calls per month — a dashboard refreshed by hand does not approach it.