Retrogrades · Sign Changes · Moon Phases · Push Alerts

Transit Alert App API
push notifications from the sky

Poll planetary transits and retrogrades daily. When a planet changes sign or goes retrograde, send a personalised Claude AI forecast to each user based on their natal chart.

$3–10/user/month freemium with premium alerts. High retention — users return every time Mercury goes retrograde. Swiss Ephemeris accuracy means your dates are right.

Start free — 500 calls →API Docs

6 types of planetary alerts

Each alert type has a different frequency — giving users something meaningful throughout the month.

Planet changes sign
Jupiter entered Gemini — what it means for your 11th house
Every few weeks
Retrograde begins
Mercury goes retrograde — your communication and travel alert
3–5x per year
Retrograde ends (direct)
Mercury turns direct — clear to sign contracts again
3–5x per year
Full/New Moon
Full Moon in Scorpio activating your 4th house
Twice monthly
Nakshatra change
Today's Ardra nakshatra — intensity and breakthroughs
Every ~27 hours
Eclipse season
Solar eclipse in your 7th house — major relationship shift
2x per year

Architecture — detect once, personalise per user

Event detection is global (one call). Personalised AI forecasts are per-user (triggered only on events).

1
Poll transits and retrogrades daily
Schedule a daily job at midnight. Call /panchang/transit and /panchang/retrogrades to get all current planetary positions and retrograde statuses. Compare with yesterday's snapshot to detect changes.
2
Detect planetary events
When a planet changes sign or retrograde status, that's an alert trigger. Store a snapshot of each planet's sign in your DB. When today's sign !== yesterday's sign → event detected. When retrograde flips → retrograde alert.
3
Get moon phase and nakshatra
Call /panchang/moon-phase for the current lunar phase and /predictions/daily-moon for daily moon-based horoscope. Moon phase changes every ~3.5 days — reliable daily content source even without major transits.
4
Generate personalised AI forecast
For each affected user, call /ai/transit/forecast with their natal chart data. Claude AI interprets what the transit means specifically for their chart — a Saturn transit over natal Sun is very different from one over natal Moon.
5
Send push notification
Send via FCM (Android/web), APNs (iOS), or email. Include the planet, event type, and a 2-sentence hook from the AI forecast. Deep-link to the full reading in-app. High CTR — users open personalised planetary alerts.

Complete daily monitoring job — 50 lines

Sign-change detection, retrograde detection, and per-user AI notification trigger.

// Daily transit monitoring job (runs at midnight UTC)
const BASE = 'https://vedintelastroapi.com/api/v1'
const KEY  = 'vai_YOUR_KEY'

const today     = new Date().toLocaleDateString('en-GB').replace(///g, '/')
const yesterday = new Date(Date.now() - 86400000).toLocaleDateString('en-GB').replace(///g, '/')

// Generic params for transit/retrograde (no birth data needed — celestial positions are universal)
const skyParams = `api_key=${KEY}&lat=0&lon=0&tz=0&dob=01/01/2000&tob=00:00`

// Fetch today's and yesterday's positions in parallel
const [today_transits, today_retrogrades, moon_phase] = await Promise.all([
  fetch(`${BASE}/panchang/transit?${skyParams}&date=${today}`).then(r => r.json()),
  fetch(`${BASE}/panchang/retrogrades?api_key=${KEY}&date=${today}`).then(r => r.json()),
  fetch(`${BASE}/panchang/moon-phase?${skyParams}&date=${today}`).then(r => r.json()),
])

// Compare with yesterday's snapshot (stored in your DB)
const yesterday_snapshot = await db.transitSnapshots.findOne({ date: yesterday })

for (const planet of today_transits.response.transit) {
  const prev = yesterday_snapshot?.planets[planet.planet]
  if (prev && prev.zodiac !== planet.zodiac) {
    // Planet changed sign — trigger alerts for all affected users
    await triggerAlertForAllUsers({
      type: 'SIGN_CHANGE',
      planet: planet.planet,
      from: prev.zodiac,
      to: planet.zodiac,
    })
  }
}

// Check retrograde flips
for (const planet of today_retrogrades.response.planets) {
  const prevRetro = yesterday_snapshot?.retrogrades[planet.planet]
  if (prevRetro !== undefined && prevRetro !== planet.is_retrograde) {
    await triggerAlertForAllUsers({
      type: planet.is_retrograde ? 'RETROGRADE_BEGIN' : 'RETROGRADE_END',
      planet: planet.planet,
    })
  }
}

// Per-user personalised forecast (called only for users who have alerts enabled)
async function triggerAlertForUser(userId, event) {
  const user = await db.users.findById(userId)
  const params = `api_key=${KEY}&dob=${user.dob}&tob=${user.tob}&lat=${user.lat}&lon=${user.lon}&tz=${user.tz}`

  const forecast = await fetch(`${BASE}/ai/transit/forecast?${params}&date=${today}`).then(r => r.json())

  await sendPushNotification({
    userId,
    title: `${event.planet} ${event.type === 'SIGN_CHANGE' ? 'enters ' + event.to : 'goes retrograde'}`,
    body: forecast.response.narrative.slice(0, 140) + '...',
    deepLink: '/app/forecast',
  })
}

7 endpoints for transit apps

All GET requests. Transit and retrograde endpoints don't require birth data — universal celestial positions.

Panchang
/api/v1/panchang/transit

All 9 planet positions for any date — current sign, house, retrograde status

Panchang
/api/v1/panchang/retrogrades

Current retrograde status for Mercury, Venus, Mars, Jupiter, Saturn + Rahu/Ketu

Panchang
/api/v1/panchang/moon-phase

Current lunar phase — new/waxing/full/waning — with tithi name

Predictions
/api/v1/predictions/daily-moon

Daily horoscope based on today's Moon sign transit

Predictions
/api/v1/predictions/daily-nakshatra

Daily prediction based on the current nakshatra — fresh every ~27 hours

Horoscope
/api/v1/horoscope/planet-details

User's natal chart — needed to calculate which house a transit falls in

AI
/api/v1/ai/transit/forecast

Claude AI personalised forecast — interprets current transits against user's natal chart

Built for retention

📊
Event detection, not polling per user
Detect planetary events once globally — then fan out to affected users. One transit call serves all users. Per-user AI forecast only called when an event is detected — not every day for every user.
🔔
High-CTR notifications
"Mercury retrograde — your communication alert" gets opened. Generic "Your daily horoscope" does not. Event-based notifications tied to real celestial events drive 3–5× higher open rates.
📅
Predictable content calendar
Retrogrades and sign changes are astronomically predictable months in advance. Pre-generate your notification copy calendar and show users upcoming events — a feature competitor apps don't have.
💰
Freemium that converts
Free: Moon phase alerts and nakshatra notifications. Premium ($3–10/mo): personalised transit forecasts with Claude AI. Upsell is obvious — free users see the alert, premium users get the interpretation.
Swiss Ephemeris precision
Retrograde dates from Swiss Ephemeris match astrology software to the minute. Your app will be more accurate than apps using approximation formulas — which is the one thing astrology users check.
🌍
Universal + personalised
Transit positions are universal (same for everyone). The interpretation is personalised (which house does this fall in for your natal chart). This two-layer architecture scales without per-user API costs.

Build your transit alert app today

500 free API calls. Swiss Ephemeris retrograde dates accurate to the minute.

Get free API key →API Docs