Read-only astronomy calculations: sun, moon, planets, eclipses, twilight and star positions.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Optional. Without a key, tools work up to 50 calls a day per network address; a key raises the daily limit. Bearer YOUR_KEY, where YOUR_KEY is a CycleCalcs API key from RapidAPI (the Basic plan is free): https://rapidapi.com/info-8KZIhinZ9/api/cyclecalcs-astronomy-api3
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
The genuinely dark, moonless observing window for a night: astronomical night intersected with the Moon being down, ranked across up to 62 nights with a trend. The right tool for "when should I stargaze / photograph the Milky Way / observe deep-sky objects". Location required. For plain twilight times use astro_sun.
IANA timezone like "Europe/Lisbon" to render event times in local time. Optional; a resolved place supplies its own timezone.
Latitude in decimal degrees, north positive. Send lat and lon together.
Longitude in decimal degrees, east positive (Lisbon is about -9.14). Send lat and lon together.
Night to start from. ISO 8601 UTC date or datetime, e.g. "2026-08-06" or "2026-08-06T21:00:00Z". Or jd: followed by a Julian Day on the UT scale, e.g. "jd:2461000.5". On astro_positions, date may list up to 24 datetimes separated by commas, answered in the order sent. Omit for the current moment. Years 1700 to 2200 only; outside that range the API refuses with DATE_OUT_OF_RANGE because the ephemeris is not reliable there.
Place name instead of lat/lon, as "City" or "City,CC" with an ISO country code, e.g. "Lisbon,PT". Resolved server-side; the response then carries a required GeoNames CC BY 4.0 credit in its attribution field, which must be preserved when shown.
How many nights to evaluate and rank. Default 1.
Treat the Moon as tolerable below this illuminated fraction (0..1) even when up.
The genuinely dark, moonless observing window for a night: astronomical night intersected with the Moon being down, ranked across up to 62 nights with a trend. The right tool for "when should I stargaze / photograph the Milky Way / observe deep-sky objects". Location required. For plain twilight times use astro_sun.
| Argument | Type | Description |
|---|---|---|
| tz | string | IANA timezone like "Europe/Lisbon" to render event times in local time. Optional; a resolved place supplies its own timezone. |
| lat | number | Latitude in decimal degrees, north positive. Send lat and lon together. |
| lon | number | Longitude in decimal degrees, east positive (Lisbon is about -9.14). Send lat and lon together. |
| date | string | Night to start from. ISO 8601 UTC date or datetime, e.g. "2026-08-06" or "2026-08-06T21:00:00Z". Or jd: followed by a Julian Day on the UT scale, e.g. "jd:2461000.5". On astro_positions, date may list up to 24 datetimes separated by commas, answered in the order sent. Omit for the current moment. Years 1700 to 2200 only; outside that range the API refuses with DATE_OUT_OF_RANGE because the ephemeris is not reliable there. |
| place | string | Place name instead of lat/lon, as "City" or "City,CC" with an ISO country code, e.g. "Lisbon,PT". Resolved server-side; the response then carries a required GeoNames CC BY 4.0 credit in its attribution field, which must be preserved when shown. |
| nights | integer | How many nights to evaluate and rank. Default 1. |
| moon_illumination_max | number | Treat the Moon as tolerable below this illuminated fraction (0..1) even when up. |
{
"type": "object",
"anyOf": [
{
"required": [
"lat",
"lon"
]
},
{
"required": [
"place"
]
}
],
"properties": {
"tz": {
"type": "string",
"description": "IANA timezone like \"Europe/Lisbon\" to render event times in local time. Optional; a resolved place supplies its own timezone."
},
"lat": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "Latitude in decimal degrees, north positive. Send lat and lon together."
},
"lon": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Longitude in decimal degrees, east positive (Lisbon is about -9.14). Send lat and lon together."
},
"date": {
"type": "string",
"description": "Night to start from. ISO 8601 UTC date or datetime, e.g. \"2026-08-06\" or \"2026-08-06T21:00:00Z\". Or jd: followed by a Julian Day on the UT scale, e.g. \"jd:2461000.5\". On astro_positions, date may list up to 24 datetimes separated by commas, answered in the order sent. Omit for the current moment. Years 1700 to 2200 only; outside that range the API refuses with DATE_OUT_OF_RANGE because the ephemeris is not reliable there."
},
"place": {
"type": "string",
"description": "Place name instead of lat/lon, as \"City\" or \"City,CC\" with an ISO country code, e.g. \"Lisbon,PT\". Resolved server-side; the response then carries a required GeoNames CC BY 4.0 credit in its attribution field, which must be preserved when shown."
},
"nights": {
"type": "integer",
"maximum": 62,
"minimum": 1,
"description": "How many nights to evaluate and rank. Default 1."
},
"moon_illumination_max": {
"type": "number",
"maximum": 1,
"minimum": 0,
"description": "Treat the Moon as tolerable below this illuminated fraction (0..1) even when up."
}
},
"additionalProperties": false
}Solar and lunar eclipses: the next or previous from a date, or all in a range, with type, magnitude, obscuration, Saros series and global geometry. A solar eclipse also carries a computed hybrid flag and, when central, the duration, path width and Sun altitude at greatest eclipse. With a location it adds local circumstances, contact times, and an explicit visible-from-here answer; set visible_only to true to keep only eclipses visible there. include adds the precomputed central path or the circumstances at greatest local eclipse. NOTE: count applies per type, so count=3 with type "both" can return six events.
| Argument | Type | Description |
|---|---|---|
| tz | string | IANA timezone like "Europe/Lisbon" to render event times in local time. Optional; a resolved place supplies its own timezone. |
| end | string | Last day of an explicit window. ISO 8601 UTC date or datetime, e.g. "2026-08-06" or "2026-08-06T21:00:00Z". Or jd: followed by a Julian Day on the UT scale, e.g. "jd:2461000.5". On astro_positions, date may list up to 24 datetimes separated by commas, answered in the order sent. Omit for the current moment. Years 1700 to 2200 only; outside that range the API refuses with DATE_OUT_OF_RANGE because the ephemeris is not reliable there. |
| lat | number | Latitude in decimal degrees, north positive. Send lat and lon together. |
| lon | number | Longitude in decimal degrees, east positive (Lisbon is about -9.14). Send lat and lon together. |
| date | string | Anchor date to search from. ISO 8601 UTC date or datetime, e.g. "2026-08-06" or "2026-08-06T21:00:00Z". Or jd: followed by a Julian Day on the UT scale, e.g. "jd:2461000.5". On astro_positions, date may list up to 24 datetimes separated by commas, answered in the order sent. Omit for the current moment. Years 1700 to 2200 only; outside that range the API refuses with DATE_OUT_OF_RANGE because the ephemeris is not reliable there. |
Resolve a place name to coordinates, region, country, IANA timezone and a stable place_id, or reverse-look-up the nearest places to a lat/lon. Results are GeoNames data (CC BY 4.0); the response carries the required credit in its attribution field, which must be preserved when results are shown. Note the other tools accept a place argument directly, so this is only needed to disambiguate a name, filter by country, or reverse-geocode.
| Argument | Type | Description |
|---|---|---|
| id | string | A place_id from an earlier result, to fetch that exact place. |
| lat | number | Latitude in decimal degrees, north positive. Send lat and lon together. |
| lon | number | Longitude in decimal degrees, east positive (Lisbon is about -9.14). Send lat and lon together. |
| limit | integer | Maximum matches to return. Default 5. |
| query | string | Place name to search for, e.g. "Springfield". |
| country | string | Two-letter ISO country code filter, e.g. "US". |
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "A place_id from an earlier result, to fetch that exact place."
},
"lat": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "Latitude in decimal degrees, north positive. Send lat and lon together."
},
"lon": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Longitude in decimal degrees, east positive (Lisbon is about -9.14). Send lat and lon together."
},
"limit": {
"type": "integer",
"maximum": 20,
"minimum": 1,
"description": "Maximum matches to return. Default 5."
},
"query": {
"type": "string",
"description": "Place name to search for, e.g. \"Springfield\"."
},
"country": {
"type": "string",
"description": "Two-letter ISO country code filter, e.g. \"US\"."
}
},
"additionalProperties": false
}The Moon at an instant or as a daily series: phase name and angle, illuminated fraction, distance, apparent size, libration, bright limb, and the next quarter phases. A location adds rise/set and altitude. For a calendar of new and full moons use astro_moon_phases; for the Moon's exact coordinates use astro_positions.
| Argument | Type | Description |
|---|---|---|
| tz | string | IANA timezone like "Europe/Lisbon" to render event times in local time. Optional; a resolved place supplies its own timezone. |
| end | string | Last day of a daily series. ISO 8601 UTC date or datetime, e.g. "2026-08-06" or "2026-08-06T21:00:00Z". Or jd: followed by a Julian Day on the UT scale, e.g. "jd:2461000.5". On astro_positions, date may list up to 24 datetimes separated by commas, answered in the order sent. Omit for the current moment. Years 1700 to 2200 only; outside that range the API refuses with DATE_OUT_OF_RANGE because the ephemeris is not reliable there. |
| lat | number | Latitude in decimal degrees, north positive. Send lat and lon together. |
| lon | number | Longitude in decimal degrees, east positive (Lisbon is about -9.14). Send lat and lon together. |
| date | string | ISO 8601 UTC date or datetime, e.g. "2026-08-06" or "2026-08-06T21:00:00Z". Or jd: followed by a Julian Day on the UT scale, e.g. "jd:2461000.5". On astro_positions, date may list up to 24 datetimes separated by commas, answered in the order sent. Omit for the current moment. Years 1700 to 2200 only; outside that range the API refuses with DATE_OUT_OF_RANGE because the ephemeris is not reliable there. |
Every new moon, quarter and full moon in a window (or the next few from a date): each with its exact instant, distance, apparent size, supermoon classification under both competing definitions, traditional full-moon name, and any eclipse falling on it. Use for "when is the next full moon" and phase calendars. For the Moon's state right now use astro_moon.
| Argument | Type | Description |
|---|---|---|
| tz | string | IANA timezone like "Europe/Lisbon" to render event times in local time. Optional; a resolved place supplies its own timezone. |
| end | string | Last day of a window. ISO 8601 UTC date or datetime, e.g. "2026-08-06" or "2026-08-06T21:00:00Z". Or jd: followed by a Julian Day on the UT scale, e.g. "jd:2461000.5". On astro_positions, date may list up to 24 datetimes separated by commas, answered in the order sent. Omit for the current moment. Years 1700 to 2200 only; outside that range the API refuses with DATE_OUT_OF_RANGE because the ephemeris is not reliable there. |
| lat | number | Latitude in decimal degrees, north positive. Send lat and lon together. |
| lon | number | Longitude in decimal degrees, east positive (Lisbon is about -9.14). Send lat and lon together. |
| date | string | Anchor date; the next phases follow it. ISO 8601 UTC date or datetime, e.g. "2026-08-06" or "2026-08-06T21:00:00Z". Or jd: followed by a Julian Day on the UT scale, e.g. "jd:2461000.5". On astro_positions, date may list up to 24 datetimes separated by commas, answered in the order sent. Omit for the current moment. Years 1700 to 2200 only; outside that range the API refuses with DATE_OUT_OF_RANGE because the ephemeris is not reliable there. |
All eight planets in one call for a date and optional location: constellation, magnitude, apparent size, elongation from the Sun, morning or evening sky, retrograde state with the next station, rise/set, and a worth-looking-tonight assessment. The right tool for "which planets are visible tonight". For exact coordinates of specific bodies use astro_positions.
| Argument | Type | Description |
|---|---|---|
| tz | string | IANA timezone like "Europe/Lisbon" to render event times in local time. Optional; a resolved place supplies its own timezone. |
| lat | number | Latitude in decimal degrees, north positive. Send lat and lon together. |
| lon | number | Longitude in decimal degrees, east positive (Lisbon is about -9.14). Send lat and lon together. |
| date | string | ISO 8601 UTC date or datetime, e.g. "2026-08-06" or "2026-08-06T21:00:00Z". Or jd: followed by a Julian Day on the UT scale, e.g. "jd:2461000.5". On astro_positions, date may list up to 24 datetimes separated by commas, answered in the order sent. Omit for the current moment. Years 1700 to 2200 only; outside that range the API refuses with DATE_OUT_OF_RANGE because the ephemeris is not reliable there. |
| sort | string | Optional result ordering. Default is by distance from the Sun. |
| place | string | Place name instead of lat/lon, as "City" or "City,CC" with an ISO country code, e.g. "Lisbon,PT". Resolved server-side; the response then carries a required GeoNames CC BY 4.0 credit in its attribution field, which must be preserved when shown. |
Dated planet events. For Mercury and Venus, the apparition cycle: inferior and superior conjunctions, greatest eastern and western elongations, peak brightness (a Venus-only event: Mercury's brightness peaks behind the Sun where it cannot be seen), and the rare transits across the Sun; with no dates it also reports where each is in its cycle right now: morning star or evening star, the conjunctions bounding the current apparition, and the live elongation, phase, magnitude and apparent size. For Mars, Jupiter, Saturn, Uranus and Neptune: conjunction with the Sun, western quadrature, opposition and eastern quadrature, the instants the planet's apparent geocentric ecliptic longitude minus the Sun's reaches 0, 270, 180 and 90 deg, each with the planet's constellation, distance, magnitude and elongation. For any of the seven, constellation_entry, returned only when listed in kinds: each crossing of an IAU constellation boundary, with the two constellations and the direction of motion. The right tool for "when does Venus become the morning star", "when is Mars at opposition", or "when does Uranus cross from Taurus into Gemini". For tonight's visibility of all eight planets use astro_planet_board. Mercury and Venus conjunction instants use the classical heliocentric convention, named on each event.
| Argument | Type | Description |
|---|---|---|
| tz | string | IANA timezone like "Europe/Lisbon" to render event times in local time. Optional; a resolved place supplies its own timezone. |
| end | string | Last day of an explicit window, exclusive. ISO 8601 UTC date or datetime, e.g. "2026-08-06" or "2026-08-06T21:00:00Z". Or jd: followed by a Julian Day on the UT scale, e.g. "jd:2461000.5". On astro_positions, date may list up to 24 datetimes separated by commas, answered in the order sent. Omit for the current moment. Years 1700 to 2200 only; outside that range the API refuses with DATE_OUT_OF_RANGE because the ephemeris is not reliable there. |
Exact positions for up to 20 bodies at an instant or over a time grid: right ascension and declination in both J2000 and of-date frames, ecliptic longitude and latitude, distance, and, with a location, altitude and azimuth with refraction stated per field. With a location the position is topocentric, but tropical_sign and constellation stay geocentric, and meta.conventions.label_origin says so. Use for "where exactly is X". Do not pass earth. For rise and set TIMES use astro_rise_set; for a visibility overview of all planets use astro_planet_board.
| Argument | Type | Description |
|---|---|---|
| tz | string | IANA timezone like "Europe/Lisbon" to render event times in local time. Optional; a resolved place supplies its own timezone. |
| end | string | Grid end. ISO 8601 UTC date or datetime, e.g. "2026-08-06" or "2026-08-06T21:00:00Z". Or jd: followed by a Julian Day on the UT scale, e.g. "jd:2461000.5". On astro_positions, date may list up to 24 datetimes separated by commas, answered in the order sent. Omit for the current moment. Years 1700 to 2200 only; outside that range the API refuses with DATE_OUT_OF_RANGE because the ephemeris is not reliable there. |
| lat | number | Latitude in decimal degrees, north positive. Send lat and lon together. |
| lon | number | Longitude in decimal degrees, east positive (Lisbon is about -9.14). Send lat and lon together. |
| date | string | ISO 8601 UTC date or datetime, e.g. "2026-08-06" or "2026-08-06T21:00:00Z". Or jd: followed by a Julian Day on the UT scale, e.g. "jd:2461000.5". On astro_positions, date may list up to 24 datetimes separated by commas, answered in the order sent. Omit for the current moment. Years 1700 to 2200 only; outside that range the API refuses with DATE_OUT_OF_RANGE because the ephemeris is not reliable there. |
Rise, upper transit, set and lower transit for one body at one location, with an explicit status at extreme latitudes (circumpolar, never rises) instead of missing values. Accepts fixed radec targets. For the Sun specifically, astro_sun returns richer twilight structure; for positions between events use astro_positions.
| Argument | Type | Description |
|---|---|---|
| tz | string | IANA timezone like "Europe/Lisbon" to render event times in local time. Optional; a resolved place supplies its own timezone. |
| end | string | Last day of a daily series. ISO 8601 UTC date or datetime, e.g. "2026-08-06" or "2026-08-06T21:00:00Z". Or jd: followed by a Julian Day on the UT scale, e.g. "jd:2461000.5". On astro_positions, date may list up to 24 datetimes separated by commas, answered in the order sent. Omit for the current moment. Years 1700 to 2200 only; outside that range the API refuses with DATE_OUT_OF_RANGE because the ephemeris is not reliable there. |
| lat | number | Latitude in decimal degrees, north positive. Send lat and lon together. |
| lon | number | Longitude in decimal degrees, east positive (Lisbon is about -9.14). Send lat and lon together. |
| body* | string | One of sun, moon, mercury, venus, mars, jupiter, saturn, uranus, neptune, pluto, or a fixed J2000 target as "radec:RA,DEC" with RA in hours (0-24) and DEC in degrees (-90..90), e.g. "radec:5.6,-5.4" for the Orion Nebula region. |
One-call snapshot of the whole sky for a place and moment: moon phase and illumination, which planets are up and worth looking at, the next eclipse, and (with a location) sun times. Reach for this first when the question is broad, like "what is in the sky tonight". For solar-day detail use astro_sun; for choosing an observing night use astro_dark_window; for one planet's exact position use astro_positions.
| Argument | Type | Description |
|---|---|---|
| tz | string | IANA timezone like "Europe/Lisbon" to render event times in local time. Optional; a resolved place supplies its own timezone. |
| lat | number | Latitude in decimal degrees, north positive. Send lat and lon together. |
| lon | number | Longitude in decimal degrees, east positive (Lisbon is about -9.14). Send lat and lon together. |
| date | string | ISO 8601 UTC date or datetime, e.g. "2026-08-06" or "2026-08-06T21:00:00Z". Or jd: followed by a Julian Day on the UT scale, e.g. "jd:2461000.5". On astro_positions, date may list up to 24 datetimes separated by commas, answered in the order sent. Omit for the current moment. Years 1700 to 2200 only; outside that range the API refuses with DATE_OUT_OF_RANGE because the ephemeris is not reliable there. |
| place | string | Place name instead of lat/lon, as "City" or "City,CC" with an ISO country code, e.g. "Lisbon,PT". Resolved server-side; the response then carries a required GeoNames CC BY 4.0 credit in its attribution field, which must be preserved when shown. |
The complete solar day for one location: sunrise, sunset, solar noon, day length, civil, nautical and astronomical twilight boundaries, and explicit polar day/night status at high latitudes. Location required. For a series, send start and end (step is whole days, e.g. "1d" or "7d"). For "is it dark enough to observe" prefer astro_dark_window; for a broad snapshot prefer astro_sky_today.
| Argument | Type | Description |
|---|---|---|
| tz | string | IANA timezone like "Europe/Lisbon" to render event times in local time. Optional; a resolved place supplies its own timezone. |
| end | string | Last day of a range. ISO 8601 UTC date or datetime, e.g. "2026-08-06" or "2026-08-06T21:00:00Z". Or jd: followed by a Julian Day on the UT scale, e.g. "jd:2461000.5". On astro_positions, date may list up to 24 datetimes separated by commas, answered in the order sent. Omit for the current moment. Years 1700 to 2200 only; outside that range the API refuses with DATE_OUT_OF_RANGE because the ephemeris is not reliable there. |
| lat | number | Latitude in decimal degrees, north positive. Send lat and lon together. |
| lon | number | Longitude in decimal degrees, east positive (Lisbon is about -9.14). Send lat and lon together. |
| date | string | Single day to report, ISO 8601 UTC date or datetime, e.g. "2026-08-06" or "2026-08-06T21:00:00Z". Or jd: followed by a Julian Day on the UT scale, e.g. "jd:2461000.5". On astro_positions, date may list up to 24 datetimes separated by commas, answered in the order sent. Omit for the current moment. Years 1700 to 2200 only; outside that range the API refuses with DATE_OUT_OF_RANGE because the ephemeris is not reliable there. |
| type | string | Which kind of eclipse to report. Default "both". |
| count | integer | How many eclipses PER TYPE to return. |
| place | string | Place name instead of lat/lon, as "City" or "City,CC" with an ISO country code, e.g. "Lisbon,PT". Resolved server-side; the response then carries a required GeoNames CC BY 4.0 credit in its attribution field, which must be preserved when shown. |
| start | string | First day of an explicit window (use with end). ISO 8601 UTC date or datetime, e.g. "2026-08-06" or "2026-08-06T21:00:00Z". Or jd: followed by a Julian Day on the UT scale, e.g. "jd:2461000.5". On astro_positions, date may list up to 24 datetimes separated by commas, answered in the order sent. Omit for the current moment. Years 1700 to 2200 only; outside that range the API refuses with DATE_OUT_OF_RANGE because the ephemeris is not reliable there. |
| cursor | string | Opaque pagination cursor from a previous result's next_cursor. Send it with the same start/end arguments as the first page. |
| include | array | Optional extras, added to the default blocks rather than replacing them. "path": the precomputed central path of a solar eclipse as inline GeoJSON (central line, northern and southern limits, and per-minute duration, width, phase and Sun altitude), for the central eclipses that have one; every other eclipse says why it has none. Large: about 65 to 90 KB of JSON per eclipse, returned as both text and structured content, so ask for one eclipse at a time (type "solar", a date just before it, count 1). "greatest": the circumstances at greatest eclipse from the supplied location, inside each solar eclipse's local block (requires a location). |
| direction | string | Search direction from the anchor date. Default "next". |
| visible_only | boolean | true keeps only eclipses visible from the supplied location (requires a location). |
{
"type": "object",
"properties": {
"tz": {
"type": "string",
"description": "IANA timezone like \"Europe/Lisbon\" to render event times in local time. Optional; a resolved place supplies its own timezone."
},
"end": {
"type": "string",
"description": "Last day of an explicit window. ISO 8601 UTC date or datetime, e.g. \"2026-08-06\" or \"2026-08-06T21:00:00Z\". Or jd: followed by a Julian Day on the UT scale, e.g. \"jd:2461000.5\". On astro_positions, date may list up to 24 datetimes separated by commas, answered in the order sent. Omit for the current moment. Years 1700 to 2200 only; outside that range the API refuses with DATE_OUT_OF_RANGE because the ephemeris is not reliable there."
},
"lat": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "Latitude in decimal degrees, north positive. Send lat and lon together."
},
"lon": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Longitude in decimal degrees, east positive (Lisbon is about -9.14). Send lat and lon together."
},
"date": {
"type": "string",
"description": "Anchor date to search from. ISO 8601 UTC date or datetime, e.g. \"2026-08-06\" or \"2026-08-06T21:00:00Z\". Or jd: followed by a Julian Day on the UT scale, e.g. \"jd:2461000.5\". On astro_positions, date may list up to 24 datetimes separated by commas, answered in the order sent. Omit for the current moment. Years 1700 to 2200 only; outside that range the API refuses with DATE_OUT_OF_RANGE because the ephemeris is not reliable there."
},
"type": {
"enum": [
"solar",
"lunar",
"both"
],
"type": "string",
"description": "Which kind of eclipse to report. Default \"both\"."
},
"count": {
"type": "integer",
"minimum": 1,
"description": "How many eclipses PER TYPE to return."
},
"place": {
"type": "string",
"description": "Place name instead of lat/lon, as \"City\" or \"City,CC\" with an ISO country code, e.g. \"Lisbon,PT\". Resolved server-side; the response then carries a required GeoNames CC BY 4.0 credit in its attribution field, which must be preserved when shown."
},
"start": {
"type": "string",
"description": "First day of an explicit window (use with end). ISO 8601 UTC date or datetime, e.g. \"2026-08-06\" or \"2026-08-06T21:00:00Z\". Or jd: followed by a Julian Day on the UT scale, e.g. \"jd:2461000.5\". On astro_positions, date may list up to 24 datetimes separated by commas, answered in the order sent. Omit for the current moment. Years 1700 to 2200 only; outside that range the API refuses with DATE_OUT_OF_RANGE because the ephemeris is not reliable there."
},
"cursor": {
"type": "string",
"description": "Opaque pagination cursor from a previous result's next_cursor. Send it with the same start/end arguments as the first page."
},
"include": {
"type": "array",
"items": {
"enum": [
"path",
"greatest"
],
"type": "string"
},
"description": "Optional extras, added to the default blocks rather than replacing them. \"path\": the precomputed central path of a solar eclipse as inline GeoJSON (central line, northern and southern limits, and per-minute duration, width, phase and Sun altitude), for the central eclipses that have one; every other eclipse says why it has none. Large: about 65 to 90 KB of JSON per eclipse, returned as both text and structured content, so ask for one eclipse at a time (type \"solar\", a date just before it, count 1). \"greatest\": the circumstances at greatest eclipse from the supplied location, inside each solar eclipse's local block (requires a location).",
"uniqueItems": true
},
"direction": {
"enum": [
"next",
"previous"
],
"type": "string",
"description": "Search direction from the anchor date. Default \"next\"."
},
"visible_only": {
"type": "boolean",
"description": "true keeps only eclipses visible from the supplied location (requires a location)."
}
},
"additionalProperties": false
}| count | integer | Number of daily rows from start (alternative to end). |
| place | string | Place name instead of lat/lon, as "City" or "City,CC" with an ISO country code, e.g. "Lisbon,PT". Resolved server-side; the response then carries a required GeoNames CC BY 4.0 credit in its attribution field, which must be preserved when shown. |
| start | string | First day of a daily series. ISO 8601 UTC date or datetime, e.g. "2026-08-06" or "2026-08-06T21:00:00Z". Or jd: followed by a Julian Day on the UT scale, e.g. "jd:2461000.5". On astro_positions, date may list up to 24 datetimes separated by commas, answered in the order sent. Omit for the current moment. Years 1700 to 2200 only; outside that range the API refuses with DATE_OUT_OF_RANGE because the ephemeris is not reliable there. |
| cursor | string | Opaque pagination cursor from a previous result's next_cursor. Send it with the same start/end arguments as the first page. |
{
"type": "object",
"properties": {
"tz": {
"type": "string",
"description": "IANA timezone like \"Europe/Lisbon\" to render event times in local time. Optional; a resolved place supplies its own timezone."
},
"end": {
"type": "string",
"description": "Last day of a daily series. ISO 8601 UTC date or datetime, e.g. \"2026-08-06\" or \"2026-08-06T21:00:00Z\". Or jd: followed by a Julian Day on the UT scale, e.g. \"jd:2461000.5\". On astro_positions, date may list up to 24 datetimes separated by commas, answered in the order sent. Omit for the current moment. Years 1700 to 2200 only; outside that range the API refuses with DATE_OUT_OF_RANGE because the ephemeris is not reliable there."
},
"lat": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "Latitude in decimal degrees, north positive. Send lat and lon together."
},
"lon": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Longitude in decimal degrees, east positive (Lisbon is about -9.14). Send lat and lon together."
},
"date": {
"type": "string",
"description": "ISO 8601 UTC date or datetime, e.g. \"2026-08-06\" or \"2026-08-06T21:00:00Z\". Or jd: followed by a Julian Day on the UT scale, e.g. \"jd:2461000.5\". On astro_positions, date may list up to 24 datetimes separated by commas, answered in the order sent. Omit for the current moment. Years 1700 to 2200 only; outside that range the API refuses with DATE_OUT_OF_RANGE because the ephemeris is not reliable there."
},
"count": {
"type": "integer",
"minimum": 1,
"description": "Number of daily rows from start (alternative to end)."
},
"place": {
"type": "string",
"description": "Place name instead of lat/lon, as \"City\" or \"City,CC\" with an ISO country code, e.g. \"Lisbon,PT\". Resolved server-side; the response then carries a required GeoNames CC BY 4.0 credit in its attribution field, which must be preserved when shown."
},
"start": {
"type": "string",
"description": "First day of a daily series. ISO 8601 UTC date or datetime, e.g. \"2026-08-06\" or \"2026-08-06T21:00:00Z\". Or jd: followed by a Julian Day on the UT scale, e.g. \"jd:2461000.5\". On astro_positions, date may list up to 24 datetimes separated by commas, answered in the order sent. Omit for the current moment. Years 1700 to 2200 only; outside that range the API refuses with DATE_OUT_OF_RANGE because the ephemeris is not reliable there."
},
"cursor": {
"type": "string",
"description": "Opaque pagination cursor from a previous result's next_cursor. Send it with the same start/end arguments as the first page."
}
},
"additionalProperties": false
}| count | integer | How many phase events to return from the anchor date. |
| place | string | Place name instead of lat/lon, as "City" or "City,CC" with an ISO country code, e.g. "Lisbon,PT". Resolved server-side; the response then carries a required GeoNames CC BY 4.0 credit in its attribution field, which must be preserved when shown. |
| start | string | First day of a window (use with end). ISO 8601 UTC date or datetime, e.g. "2026-08-06" or "2026-08-06T21:00:00Z". Or jd: followed by a Julian Day on the UT scale, e.g. "jd:2461000.5". On astro_positions, date may list up to 24 datetimes separated by commas, answered in the order sent. Omit for the current moment. Years 1700 to 2200 only; outside that range the API refuses with DATE_OUT_OF_RANGE because the ephemeris is not reliable there. |
| cursor | string | Opaque pagination cursor from a previous result's next_cursor. Send it with the same start/end arguments as the first page. |
| phases | array | Optional filter of phase kinds. Omit for all four. Example: ["full_moon"] for full moons only. |
{
"type": "object",
"properties": {
"tz": {
"type": "string",
"description": "IANA timezone like \"Europe/Lisbon\" to render event times in local time. Optional; a resolved place supplies its own timezone."
},
"end": {
"type": "string",
"description": "Last day of a window. ISO 8601 UTC date or datetime, e.g. \"2026-08-06\" or \"2026-08-06T21:00:00Z\". Or jd: followed by a Julian Day on the UT scale, e.g. \"jd:2461000.5\". On astro_positions, date may list up to 24 datetimes separated by commas, answered in the order sent. Omit for the current moment. Years 1700 to 2200 only; outside that range the API refuses with DATE_OUT_OF_RANGE because the ephemeris is not reliable there."
},
"lat": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "Latitude in decimal degrees, north positive. Send lat and lon together."
},
"lon": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Longitude in decimal degrees, east positive (Lisbon is about -9.14). Send lat and lon together."
},
"date": {
"type": "string",
"description": "Anchor date; the next phases follow it. ISO 8601 UTC date or datetime, e.g. \"2026-08-06\" or \"2026-08-06T21:00:00Z\". Or jd: followed by a Julian Day on the UT scale, e.g. \"jd:2461000.5\". On astro_positions, date may list up to 24 datetimes separated by commas, answered in the order sent. Omit for the current moment. Years 1700 to 2200 only; outside that range the API refuses with DATE_OUT_OF_RANGE because the ephemeris is not reliable there."
},
"count": {
"type": "integer",
"minimum": 1,
"description": "How many phase events to return from the anchor date."
},
"place": {
"type": "string",
"description": "Place name instead of lat/lon, as \"City\" or \"City,CC\" with an ISO country code, e.g. \"Lisbon,PT\". Resolved server-side; the response then carries a required GeoNames CC BY 4.0 credit in its attribution field, which must be preserved when shown."
},
"start": {
"type": "string",
"description": "First day of a window (use with end). ISO 8601 UTC date or datetime, e.g. \"2026-08-06\" or \"2026-08-06T21:00:00Z\". Or jd: followed by a Julian Day on the UT scale, e.g. \"jd:2461000.5\". On astro_positions, date may list up to 24 datetimes separated by commas, answered in the order sent. Omit for the current moment. Years 1700 to 2200 only; outside that range the API refuses with DATE_OUT_OF_RANGE because the ephemeris is not reliable there."
},
"cursor": {
"type": "string",
"description": "Opaque pagination cursor from a previous result's next_cursor. Send it with the same start/end arguments as the first page."
},
"phases": {
"type": "array",
"items": {
"enum": [
"new_moon",
"first_quarter",
"full_moon",
"last_quarter"
],
"type": "string"
},
"minItems": 1,
"description": "Optional filter of phase kinds. Omit for all four. Example: [\"full_moon\"] for full moons only."
}
},
"additionalProperties": false
}| bodies | array | Optional subset of planets: mercury, venus, mars, jupiter, saturn, uranus, neptune, pluto. |
{
"type": "object",
"properties": {
"tz": {
"type": "string",
"description": "IANA timezone like \"Europe/Lisbon\" to render event times in local time. Optional; a resolved place supplies its own timezone."
},
"lat": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "Latitude in decimal degrees, north positive. Send lat and lon together."
},
"lon": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Longitude in decimal degrees, east positive (Lisbon is about -9.14). Send lat and lon together."
},
"date": {
"type": "string",
"description": "ISO 8601 UTC date or datetime, e.g. \"2026-08-06\" or \"2026-08-06T21:00:00Z\". Or jd: followed by a Julian Day on the UT scale, e.g. \"jd:2461000.5\". On astro_positions, date may list up to 24 datetimes separated by commas, answered in the order sent. Omit for the current moment. Years 1700 to 2200 only; outside that range the API refuses with DATE_OUT_OF_RANGE because the ephemeris is not reliable there."
},
"sort": {
"enum": [
"distance_from_sun",
"magnitude",
"elongation",
"altitude"
],
"type": "string",
"description": "Optional result ordering. Default is by distance from the Sun."
},
"place": {
"type": "string",
"description": "Place name instead of lat/lon, as \"City\" or \"City,CC\" with an ISO country code, e.g. \"Lisbon,PT\". Resolved server-side; the response then carries a required GeoNames CC BY 4.0 credit in its attribution field, which must be preserved when shown."
},
"bodies": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 8,
"minItems": 1,
"description": "Optional subset of planets: mercury, venus, mars, jupiter, saturn, uranus, neptune, pluto."
}
},
"additionalProperties": false
}| lat | number | Latitude in decimal degrees, north positive. Send lat and lon together. |
| lon | number | Longitude in decimal degrees, east positive (Lisbon is about -9.14). Send lat and lon together. |
| date | string | Anchor instant; with no start/end the response covers the next full synodic cycle from here. ISO 8601 UTC date or datetime, e.g. "2026-08-06" or "2026-08-06T21:00:00Z". Or jd: followed by a Julian Day on the UT scale, e.g. "jd:2461000.5". On astro_positions, date may list up to 24 datetimes separated by commas, answered in the order sent. Omit for the current moment. Years 1700 to 2200 only; outside that range the API refuses with DATE_OUT_OF_RANGE because the ephemeris is not reliable there. |
| kinds | array | Optional filter of event kinds. Omit for each planet's own family: the seven apparition kinds for mercury and venus, the four Sun-relative kinds for mars to neptune. peak_magnitude only ever fires for venus; the transit kinds are body-specific and genuinely rare. constellation_entry applies to all seven and must be listed. |
| place | string | Place name instead of lat/lon, as "City" or "City,CC" with an ISO country code, e.g. "Lisbon,PT". Resolved server-side; the response then carries a required GeoNames CC BY 4.0 credit in its attribution field, which must be preserved when shown. |
| start | string | First day of an explicit window (use with end). ISO 8601 UTC date or datetime, e.g. "2026-08-06" or "2026-08-06T21:00:00Z". Or jd: followed by a Julian Day on the UT scale, e.g. "jd:2461000.5". On astro_positions, date may list up to 24 datetimes separated by commas, answered in the order sent. Omit for the current moment. Years 1700 to 2200 only; outside that range the API refuses with DATE_OUT_OF_RANGE because the ephemeris is not reliable there. |
| bodies | array | Which planets to report. Default mercury and venus. |
| cursor | string | Opaque pagination cursor from a previous result's next_cursor. Send it with the same start/end arguments as the first page. |
{
"type": "object",
"properties": {
"tz": {
"type": "string",
"description": "IANA timezone like \"Europe/Lisbon\" to render event times in local time. Optional; a resolved place supplies its own timezone."
},
"end": {
"type": "string",
"description": "Last day of an explicit window, exclusive. ISO 8601 UTC date or datetime, e.g. \"2026-08-06\" or \"2026-08-06T21:00:00Z\". Or jd: followed by a Julian Day on the UT scale, e.g. \"jd:2461000.5\". On astro_positions, date may list up to 24 datetimes separated by commas, answered in the order sent. Omit for the current moment. Years 1700 to 2200 only; outside that range the API refuses with DATE_OUT_OF_RANGE because the ephemeris is not reliable there."
},
"lat": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "Latitude in decimal degrees, north positive. Send lat and lon together."
},
"lon": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Longitude in decimal degrees, east positive (Lisbon is about -9.14). Send lat and lon together."
},
"date": {
"type": "string",
"description": "Anchor instant; with no start/end the response covers the next full synodic cycle from here. ISO 8601 UTC date or datetime, e.g. \"2026-08-06\" or \"2026-08-06T21:00:00Z\". Or jd: followed by a Julian Day on the UT scale, e.g. \"jd:2461000.5\". On astro_positions, date may list up to 24 datetimes separated by commas, answered in the order sent. Omit for the current moment. Years 1700 to 2200 only; outside that range the API refuses with DATE_OUT_OF_RANGE because the ephemeris is not reliable there."
},
"kinds": {
"type": "array",
"items": {
"enum": [
"inferior_conjunction",
"superior_conjunction",
"greatest_elongation_east",
"greatest_elongation_west",
"peak_magnitude",
"transit_of_mercury",
"transit_of_venus",
"conjunction_with_sun",
"quadrature_west",
"opposition",
"quadrature_east",
"constellation_entry"
],
"type": "string"
},
"minItems": 1,
"description": "Optional filter of event kinds. Omit for each planet's own family: the seven apparition kinds for mercury and venus, the four Sun-relative kinds for mars to neptune. peak_magnitude only ever fires for venus; the transit kinds are body-specific and genuinely rare. constellation_entry applies to all seven and must be listed."
},
"place": {
"type": "string",
"description": "Place name instead of lat/lon, as \"City\" or \"City,CC\" with an ISO country code, e.g. \"Lisbon,PT\". Resolved server-side; the response then carries a required GeoNames CC BY 4.0 credit in its attribution field, which must be preserved when shown."
},
"start": {
"type": "string",
"description": "First day of an explicit window (use with end). ISO 8601 UTC date or datetime, e.g. \"2026-08-06\" or \"2026-08-06T21:00:00Z\". Or jd: followed by a Julian Day on the UT scale, e.g. \"jd:2461000.5\". On astro_positions, date may list up to 24 datetimes separated by commas, answered in the order sent. Omit for the current moment. Years 1700 to 2200 only; outside that range the API refuses with DATE_OUT_OF_RANGE because the ephemeris is not reliable there."
},
"bodies": {
"type": "array",
"items": {
"enum": [
"mercury",
"venus",
"mars",
"jupiter",
"saturn",
"uranus",
"neptune"
],
"type": "string"
},
"maxItems": 7,
"minItems": 1,
"description": "Which planets to report. Default mercury and venus."
},
"cursor": {
"type": "string",
"description": "Opaque pagination cursor from a previous result's next_cursor. Send it with the same start/end arguments as the first page."
}
},
"additionalProperties": false
}| step | string | Grid stride, e.g. "1h", "10min", "1d". |
| place | string | Place name instead of lat/lon, as "City" or "City,CC" with an ISO country code, e.g. "Lisbon,PT". Resolved server-side; the response then carries a required GeoNames CC BY 4.0 credit in its attribution field, which must be preserved when shown. |
| start | string | Grid start (use with end and step). ISO 8601 UTC date or datetime, e.g. "2026-08-06" or "2026-08-06T21:00:00Z". Or jd: followed by a Julian Day on the UT scale, e.g. "jd:2461000.5". On astro_positions, date may list up to 24 datetimes separated by commas, answered in the order sent. Omit for the current moment. Years 1700 to 2200 only; outside that range the API refuses with DATE_OUT_OF_RANGE because the ephemeris is not reliable there. |
| bodies* | array | Bodies to report. Each entry: One of sun, moon, mercury, venus, mars, jupiter, saturn, uranus, neptune, pluto, or a fixed J2000 target as "radec:RA,DEC" with RA in hours (0-24) and DEC in degrees (-90..90), e.g. "radec:5.6,-5.4" for the Orion Nebula region. |
| cursor | string | Opaque pagination cursor from a previous result's next_cursor. Send it with the same start/end arguments as the first page. |
{
"type": "object",
"required": [
"bodies"
],
"properties": {
"tz": {
"type": "string",
"description": "IANA timezone like \"Europe/Lisbon\" to render event times in local time. Optional; a resolved place supplies its own timezone."
},
"end": {
"type": "string",
"description": "Grid end. ISO 8601 UTC date or datetime, e.g. \"2026-08-06\" or \"2026-08-06T21:00:00Z\". Or jd: followed by a Julian Day on the UT scale, e.g. \"jd:2461000.5\". On astro_positions, date may list up to 24 datetimes separated by commas, answered in the order sent. Omit for the current moment. Years 1700 to 2200 only; outside that range the API refuses with DATE_OUT_OF_RANGE because the ephemeris is not reliable there."
},
"lat": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "Latitude in decimal degrees, north positive. Send lat and lon together."
},
"lon": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Longitude in decimal degrees, east positive (Lisbon is about -9.14). Send lat and lon together."
},
"date": {
"type": "string",
"description": "ISO 8601 UTC date or datetime, e.g. \"2026-08-06\" or \"2026-08-06T21:00:00Z\". Or jd: followed by a Julian Day on the UT scale, e.g. \"jd:2461000.5\". On astro_positions, date may list up to 24 datetimes separated by commas, answered in the order sent. Omit for the current moment. Years 1700 to 2200 only; outside that range the API refuses with DATE_OUT_OF_RANGE because the ephemeris is not reliable there."
},
"step": {
"type": "string",
"description": "Grid stride, e.g. \"1h\", \"10min\", \"1d\"."
},
"place": {
"type": "string",
"description": "Place name instead of lat/lon, as \"City\" or \"City,CC\" with an ISO country code, e.g. \"Lisbon,PT\". Resolved server-side; the response then carries a required GeoNames CC BY 4.0 credit in its attribution field, which must be preserved when shown."
},
"start": {
"type": "string",
"description": "Grid start (use with end and step). ISO 8601 UTC date or datetime, e.g. \"2026-08-06\" or \"2026-08-06T21:00:00Z\". Or jd: followed by a Julian Day on the UT scale, e.g. \"jd:2461000.5\". On astro_positions, date may list up to 24 datetimes separated by commas, answered in the order sent. Omit for the current moment. Years 1700 to 2200 only; outside that range the API refuses with DATE_OUT_OF_RANGE because the ephemeris is not reliable there."
},
"bodies": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 20,
"minItems": 1,
"description": "Bodies to report. Each entry: One of sun, moon, mercury, venus, mars, jupiter, saturn, uranus, neptune, pluto, or a fixed J2000 target as \"radec:RA,DEC\" with RA in hours (0-24) and DEC in degrees (-90..90), e.g. \"radec:5.6,-5.4\" for the Orion Nebula region."
},
"cursor": {
"type": "string",
"description": "Opaque pagination cursor from a previous result's next_cursor. Send it with the same start/end arguments as the first page."
}
},
"additionalProperties": false
}| date |
| string |
| ISO 8601 UTC date or datetime, e.g. "2026-08-06" or "2026-08-06T21:00:00Z". Or jd: followed by a Julian Day on the UT scale, e.g. "jd:2461000.5". On astro_positions, date may list up to 24 datetimes separated by commas, answered in the order sent. Omit for the current moment. Years 1700 to 2200 only; outside that range the API refuses with DATE_OUT_OF_RANGE because the ephemeris is not reliable there. |
| place | string | Place name instead of lat/lon, as "City" or "City,CC" with an ISO country code, e.g. "Lisbon,PT". Resolved server-side; the response then carries a required GeoNames CC BY 4.0 credit in its attribution field, which must be preserved when shown. |
| start | string | First day of a daily series. ISO 8601 UTC date or datetime, e.g. "2026-08-06" or "2026-08-06T21:00:00Z". Or jd: followed by a Julian Day on the UT scale, e.g. "jd:2461000.5". On astro_positions, date may list up to 24 datetimes separated by commas, answered in the order sent. Omit for the current moment. Years 1700 to 2200 only; outside that range the API refuses with DATE_OUT_OF_RANGE because the ephemeris is not reliable there. |
| cursor | string | Opaque pagination cursor from a previous result's next_cursor. Send it with the same start/end arguments as the first page. |
| search_horizon_days | integer | How many days ahead to search when an event does not occur on the requested day (high latitudes). |
{
"type": "object",
"anyOf": [
{
"required": [
"lat",
"lon"
]
},
{
"required": [
"place"
]
}
],
"required": [
"body"
],
"properties": {
"tz": {
"type": "string",
"description": "IANA timezone like \"Europe/Lisbon\" to render event times in local time. Optional; a resolved place supplies its own timezone."
},
"end": {
"type": "string",
"description": "Last day of a daily series. ISO 8601 UTC date or datetime, e.g. \"2026-08-06\" or \"2026-08-06T21:00:00Z\". Or jd: followed by a Julian Day on the UT scale, e.g. \"jd:2461000.5\". On astro_positions, date may list up to 24 datetimes separated by commas, answered in the order sent. Omit for the current moment. Years 1700 to 2200 only; outside that range the API refuses with DATE_OUT_OF_RANGE because the ephemeris is not reliable there."
},
"lat": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "Latitude in decimal degrees, north positive. Send lat and lon together."
},
"lon": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Longitude in decimal degrees, east positive (Lisbon is about -9.14). Send lat and lon together."
},
"body": {
"type": "string",
"description": "One of sun, moon, mercury, venus, mars, jupiter, saturn, uranus, neptune, pluto, or a fixed J2000 target as \"radec:RA,DEC\" with RA in hours (0-24) and DEC in degrees (-90..90), e.g. \"radec:5.6,-5.4\" for the Orion Nebula region."
},
"date": {
"type": "string",
"description": "ISO 8601 UTC date or datetime, e.g. \"2026-08-06\" or \"2026-08-06T21:00:00Z\". Or jd: followed by a Julian Day on the UT scale, e.g. \"jd:2461000.5\". On astro_positions, date may list up to 24 datetimes separated by commas, answered in the order sent. Omit for the current moment. Years 1700 to 2200 only; outside that range the API refuses with DATE_OUT_OF_RANGE because the ephemeris is not reliable there."
},
"place": {
"type": "string",
"description": "Place name instead of lat/lon, as \"City\" or \"City,CC\" with an ISO country code, e.g. \"Lisbon,PT\". Resolved server-side; the response then carries a required GeoNames CC BY 4.0 credit in its attribution field, which must be preserved when shown."
},
"start": {
"type": "string",
"description": "First day of a daily series. ISO 8601 UTC date or datetime, e.g. \"2026-08-06\" or \"2026-08-06T21:00:00Z\". Or jd: followed by a Julian Day on the UT scale, e.g. \"jd:2461000.5\". On astro_positions, date may list up to 24 datetimes separated by commas, answered in the order sent. Omit for the current moment. Years 1700 to 2200 only; outside that range the API refuses with DATE_OUT_OF_RANGE because the ephemeris is not reliable there."
},
"cursor": {
"type": "string",
"description": "Opaque pagination cursor from a previous result's next_cursor. Send it with the same start/end arguments as the first page."
},
"search_horizon_days": {
"type": "integer",
"minimum": 1,
"description": "How many days ahead to search when an event does not occur on the requested day (high latitudes)."
}
},
"additionalProperties": false
}{
"type": "object",
"properties": {
"tz": {
"type": "string",
"description": "IANA timezone like \"Europe/Lisbon\" to render event times in local time. Optional; a resolved place supplies its own timezone."
},
"lat": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "Latitude in decimal degrees, north positive. Send lat and lon together."
},
"lon": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Longitude in decimal degrees, east positive (Lisbon is about -9.14). Send lat and lon together."
},
"date": {
"type": "string",
"description": "ISO 8601 UTC date or datetime, e.g. \"2026-08-06\" or \"2026-08-06T21:00:00Z\". Or jd: followed by a Julian Day on the UT scale, e.g. \"jd:2461000.5\". On astro_positions, date may list up to 24 datetimes separated by commas, answered in the order sent. Omit for the current moment. Years 1700 to 2200 only; outside that range the API refuses with DATE_OUT_OF_RANGE because the ephemeris is not reliable there."
},
"place": {
"type": "string",
"description": "Place name instead of lat/lon, as \"City\" or \"City,CC\" with an ISO country code, e.g. \"Lisbon,PT\". Resolved server-side; the response then carries a required GeoNames CC BY 4.0 credit in its attribution field, which must be preserved when shown."
}
},
"additionalProperties": false
}| step | string | Range stride in whole days, e.g. "1d", "7d", "30d". Default "1d". |
| place | string | Place name instead of lat/lon, as "City" or "City,CC" with an ISO country code, e.g. "Lisbon,PT". Resolved server-side; the response then carries a required GeoNames CC BY 4.0 credit in its attribution field, which must be preserved when shown. |
| start | string | First day of a range (use with end instead of date). ISO 8601 UTC date or datetime, e.g. "2026-08-06" or "2026-08-06T21:00:00Z". Or jd: followed by a Julian Day on the UT scale, e.g. "jd:2461000.5". On astro_positions, date may list up to 24 datetimes separated by commas, answered in the order sent. Omit for the current moment. Years 1700 to 2200 only; outside that range the API refuses with DATE_OUT_OF_RANGE because the ephemeris is not reliable there. |
| cursor | string | Opaque pagination cursor from a previous result's next_cursor. Send it with the same start/end arguments as the first page. |
{
"type": "object",
"anyOf": [
{
"required": [
"lat",
"lon"
]
},
{
"required": [
"place"
]
}
],
"properties": {
"tz": {
"type": "string",
"description": "IANA timezone like \"Europe/Lisbon\" to render event times in local time. Optional; a resolved place supplies its own timezone."
},
"end": {
"type": "string",
"description": "Last day of a range. ISO 8601 UTC date or datetime, e.g. \"2026-08-06\" or \"2026-08-06T21:00:00Z\". Or jd: followed by a Julian Day on the UT scale, e.g. \"jd:2461000.5\". On astro_positions, date may list up to 24 datetimes separated by commas, answered in the order sent. Omit for the current moment. Years 1700 to 2200 only; outside that range the API refuses with DATE_OUT_OF_RANGE because the ephemeris is not reliable there."
},
"lat": {
"type": "number",
"maximum": 90,
"minimum": -90,
"description": "Latitude in decimal degrees, north positive. Send lat and lon together."
},
"lon": {
"type": "number",
"maximum": 180,
"minimum": -180,
"description": "Longitude in decimal degrees, east positive (Lisbon is about -9.14). Send lat and lon together."
},
"date": {
"type": "string",
"description": "Single day to report, ISO 8601 UTC date or datetime, e.g. \"2026-08-06\" or \"2026-08-06T21:00:00Z\". Or jd: followed by a Julian Day on the UT scale, e.g. \"jd:2461000.5\". On astro_positions, date may list up to 24 datetimes separated by commas, answered in the order sent. Omit for the current moment. Years 1700 to 2200 only; outside that range the API refuses with DATE_OUT_OF_RANGE because the ephemeris is not reliable there."
},
"step": {
"type": "string",
"description": "Range stride in whole days, e.g. \"1d\", \"7d\", \"30d\". Default \"1d\"."
},
"place": {
"type": "string",
"description": "Place name instead of lat/lon, as \"City\" or \"City,CC\" with an ISO country code, e.g. \"Lisbon,PT\". Resolved server-side; the response then carries a required GeoNames CC BY 4.0 credit in its attribution field, which must be preserved when shown."
},
"start": {
"type": "string",
"description": "First day of a range (use with end instead of date). ISO 8601 UTC date or datetime, e.g. \"2026-08-06\" or \"2026-08-06T21:00:00Z\". Or jd: followed by a Julian Day on the UT scale, e.g. \"jd:2461000.5\". On astro_positions, date may list up to 24 datetimes separated by commas, answered in the order sent. Omit for the current moment. Years 1700 to 2200 only; outside that range the API refuses with DATE_OUT_OF_RANGE because the ephemeris is not reliable there."
},
"cursor": {
"type": "string",
"description": "Opaque pagination cursor from a previous result's next_cursor. Send it with the same start/end arguments as the first page."
}
},
"additionalProperties": false
}