Transits
Two endpoints for transit work:
| Endpoint | Credits | What it does |
|---|---|---|
POST /v1/transits | 50 | Transit chart for a specific date, overlaid on natal location |
POST /v1/transit-calendar | 100 | Calendar of transit events over a date range |
If you want to see the finished result first: transits in the AstroWay app run the same computation and draw the overlay on a wheel.
POST /v1/transits: overlay
Section titled “POST /v1/transits: overlay”Calculates planet positions on a given transit date in the natal location’s coordinates.
Parameters
Section titled “Parameters”All natal chart parameters (date, time, timezoneOffset, latitude, longitude, houseSystem) plus:
| Parameter | Type | Required | Description |
|---|---|---|---|
transitDate | string | Yes | Transit date YYYY-MM-DD |
transitTime | string | No (12:00:00) | Transit time HH:mm:ss |
transitTzOffset | number | No (0) | Transit timezone offset |
Example
Section titled “Example”curl -X POST https://api.astroway.info/v1/transits \ -H "X-Api-Key: aw_live_your_key_here" \ -H "Content-Type: application/json" \ -d '{ "date": "1990-07-14", "time": "14:30:00", "timezoneOffset": 3, "latitude": 50.4501, "longitude": 30.5234, "transitDate": "2026-04-14", "transitTime": "12:00:00", "transitTzOffset": 3 }'const res = await fetch('https://api.astroway.info/v1/transits', { method: 'POST', headers: { 'Content-Type': 'application/json', 'X-Api-Key': process.env.ASTROWAY_API_KEY!, }, body: JSON.stringify({ date: '1990-07-14', time: '14:30:00', timezoneOffset: 3, latitude: 50.4501, longitude: 30.5234, transitDate: '2026-04-14', transitTime: '12:00:00', transitTzOffset: 3, }),});const { data: transits } = await res.json();console.log(transits.planets); // Transit planet positionsimport os, requests
r = requests.post( 'https://api.astroway.info/v1/transits', headers={'X-Api-Key': os.environ['ASTROWAY_API_KEY'], 'Content-Type': 'application/json'}, json={ 'date': '1990-07-14', 'time': '14:30:00', 'timezoneOffset': 3, 'latitude': 50.4501, 'longitude': 30.5234, 'transitDate': '2026-04-14', 'transitTime': '12:00:00', 'transitTzOffset': 3, },)transits = r.json()['data']print(transits['planets'])<?phpuse GuzzleHttp\Client;
$aw = new Client(['base_uri' => 'https://api.astroway.info/v1/']);$r = $aw->post('transits', [ 'headers' => ['X-Api-Key' => getenv('ASTROWAY_API_KEY')], 'json' => [ 'date' => '1990-07-14', 'time' => '14:30:00', 'timezoneOffset' => 3, 'latitude' => 50.4501, 'longitude' => 30.5234, 'transitDate' => '2026-04-14', 'transitTime' => '12:00:00', 'transitTzOffset' => 3, ],]);$transits = json_decode($r->getBody(), true)['data'];print_r($transits['planets']);Response
Section titled “Response”Same structure as /v1/chart - full chart with planets, houses, aspects - but calculated for the transit date.
POST /v1/transit-calendar: event calendar
Section titled “POST /v1/transit-calendar: event calendar”Scans a date range and returns a list of transit events: exact aspects of transit planets to natal planets, ingresses, retrogrades.
Additional parameters
Section titled “Additional parameters”| Parameter | Type | Required | Description |
|---|---|---|---|
startDate | string | Yes | Range start YYYY-MM-DD |
endDate | string | Yes | Range end YYYY-MM-DD |
Example
Section titled “Example”curl -X POST https://api.astroway.info/v1/transit-calendar \ -H "X-Api-Key: aw_live_your_key_here" \ -H "Content-Type: application/json" \ -d '{ "natal": { "date": "1990-07-14", "time": "14:30:00", "timezoneOffset": 3, "latitude": 50.4501, "longitude": 30.5234 }, "startDate": "2026-04-01", "endDate": "2026-04-30" }'const r = await fetch('https://api.astroway.info/v1/transit-calendar', { method: 'POST', headers: { 'X-Api-Key': apiKey, 'Content-Type': 'application/json' }, body: JSON.stringify({ natal: { date: '1990-07-14', time: '14:30:00', timezoneOffset: 3, latitude: 50.4501, longitude: 30.5234, }, startDate: '2026-04-01', endDate: '2026-04-30', }),});const { data: calendar } = await r.json();
for (const event of calendar.events) { console.log(`${event.date}: #${event.transitPlanetId} ${event.aspect.name} #${event.natalPlanetId}`);}import os, requests
r = requests.post( 'https://api.astroway.info/v1/transit-calendar', headers={'X-Api-Key': os.environ['ASTROWAY_API_KEY'], 'Content-Type': 'application/json'}, json={ 'natal': {'date': '1990-07-14', 'time': '14:30:00', 'timezoneOffset': 3, 'latitude': 50.4501, 'longitude': 30.5234}, 'startDate': '2026-04-01', 'endDate': '2026-04-30', },)calendar = r.json()['data']for event in calendar['events']: print(f"{event['date']}: #{event['transitPlanetId']} {event['aspect']['name']} #{event['natalPlanetId']}")<?phpuse GuzzleHttp\Client;
$aw = new Client(['base_uri' => 'https://api.astroway.info/v1/']);$r = $aw->post('transit-calendar', [ 'headers' => ['X-Api-Key' => getenv('ASTROWAY_API_KEY')], 'json' => [ 'natal' => [ 'date' => '1990-07-14', 'time' => '14:30:00', 'timezoneOffset' => 3, 'latitude' => 50.4501, 'longitude' => 30.5234, ], 'startDate' => '2026-04-01', 'endDate' => '2026-04-30', ],]);$calendar = json_decode($r->getBody(), true)['data'];foreach ($calendar['events'] as $e) { printf("%s: #%d %s #%d\n", $e['date'], $e['transitPlanetId'], $e['aspect']['name'], $e['natalPlanetId']);}Example response
Section titled “Example response”{ "startDate": "2026-04-01", "endDate": "2026-04-30", "maxOrb": 1, "count": 42, "events": [ { "jd": 2461132.97998, "date": "2026-04-02T11:31:10.000Z", "transitPlanetId": 2, "natalPlanetId": 9, "aspect": { "name": "Trine", "i18nKey": "aspect_trine", "angle": 120, "orb": 12, "symbol": "△", "isMajor": true, "color": "#3366cc" }, "transitLongitude": 345.005969, "natalLongitude": 225.005747, "isRetrograde": false } ]}Related endpoints
Section titled “Related endpoints”| Endpoint | Credits | What it adds |
|---|---|---|
/v1/forecast-calendar | 100 | Annual forecast - 365-day heatmap |
/v1/progressions | 50 | Secondary progressions |
/v1/solar-return | 50 | Solar return (annual chart) |
/v1/aspect-timeline | 100 | Aspect timeline over range |
- Natal chart: basic request
- Synastry: two-chart compatibility
- Human Design: full HD chart
- API reference: all 760 endpoints
Was this helpful?
Thanks for the feedback.