Dokumentation

Die Entwicklerdokumentation ist auf Englisch.

Kartentyp

sun_moon

Sunrise, sunset, daylight and moon phase for a place and date.

Version 1 · schema sun_moon.v1.schema.json

Layouts

Every card type has full. Pick a layout with the element's layout attribute, render.layout, or a theme.

Fields

The fields of card.data. Values a source doesn't provide are null; new optional fields can appear within version 1.

FieldTypeRequiredNotes
locationobjectyes
location.namestringyes
location.timezonestringyes
datedateyesISO 8601 calendar date.
local_timeHH:MMyesTime at the location when answered, so a renderer can place the sun.
sunobjectyes
sun.riseHH:MM | nullyesnull during polar night or day.
sun.setHH:MM | nullyes
sun.day_length_minintegeryes
moonobjectyes
moon.phaseenumyesnew · waxing_crescent · first_quarter · waxing_gibbous · full · waning_gibbous · last_quarter · waning_crescent
moon.illumination_pctnumberyes
moon.next_fulldateyesISO 8601 calendar date.
moon.next_newdateyesISO 8601 calendar date.

Example

A recorded answer to “When is sunset today?”. Open it in the Answer Lab to see every layout and style.

Response
{
  "v": 2,
  "id": "ans_fi4rj7dsu6yyym5p",
  "matched": true,
  "locale": "en",
  "skill": "sun_moon",
  "confidence": 0.9,
  "text": "Today the sun sets at 6:02 PM.",
  "speech": "Today the sun sets at 6:02 PM.",
  "card": {
    "type": "sun_moon",
    "version": 1,
    "data": {
      "location": {
        "name": "51.05° N, 13.74° E",
        "timezone": "Europe/Berlin"
      },
      "date": "2026-10-21",
      "local_time": "14:00",
      "sun": {
        "rise": "07:36",
        "set": "18:02",
        "day_length_min": 626
      },
      "moon": {
        "phase": "waxing_gibbous",
        "illumination_pct": 77,
        "next_full": "2026-10-26",
        "next_new": "2026-11-09"
      }
    }
  },
  "sources": [
    {
      "name": "Calculated from date and location",
      "url": null,
      "license": null
    }
  ],
  "follow_ups": [],
  "actions": [],
  "usage": {
    "billable": true
  }
}