GET · HOROSCOPE

Monthly Horoscope

Endpoint GET https://starsapi.com/api/v3/horoscope/monthly

Returns the calendar-month horoscope (1st through last day, IST) for a single zodiac sign. Returns ~1000 words of content organized into 6 H2 sections — Overview, Career & Business, Money & Finance, Love & Relationships, Health & Wellbeing, and Important Dates — plus a structured content_sections field for app tabs and notifications.

Note: monthly uses month=, not date=. Daily and weekly endpoints accept date= for picking the time window. The monthly endpoint accepts month= instead. The values it accepts are different too — see the month formats section below.

Authentication

Required. Three methods accepted:

MethodExample
Header (recommended)X-Api-Key: am_live_xxxxxxxxxxxx
BearerAuthorization: Bearer am_live_xxxxxxxxxxxx
Query?api_key=am_live_xxxxxxxxxxxx

See authentication for security considerations.

Query parameters

ParamRequiredDefaultAccepted values
sign Yes Aries, Taurus, Gemini, Cancer, Leo, Virgo, Libra, Scorpio, Sagittarius, Capricorn, Aquarius, Pisces
zodiac_system No vedic_moon vedic_moon · western_sun
month No this-month See the month formats section below
language No en en · hi
No sub_type parameter. Daily and weekly accept sub_type=love / career to focus a short forecast on one area. Monthly doesn't need this — Love and Career already have their own H2 sections inside every forecast. Always returns content equivalent to sub_type=general.

Month formats

The month parameter accepts several formats:

FormatExampleResolves to
Keywordthis-month1st through last day of current calendar month (IST)
Keywordnext-month1st through last day of upcoming month
Keywordlast-month1st through last day of previous month
Calendar month2026-06June 1 – June 30, 2026
Any date in month2026-06-15June 1 – June 30 (system resolves to the month containing the date)

Response shape

Successful responses contain a top-level status + success flag, a data object, and a meta envelope:

FieldTypeDescription
statusintegerHTTP status code echo (200 on success).
successbooleanAlways true on success.
data
data.signstringEcho of the requested sign.
data.zodiac_systemstringZodiac system used.
data.sub_typestringAlways general for monthly.
data.period_typestringAlways monthly for this endpoint.
data.period_keystringCalendar month key, e.g. 2026-06. Stable cache key.
data.period_startstring (YYYY-MM-DD)First day of the target month.
data.period_endstring (YYYY-MM-DD)Last day of the target month.
data.languagestringLanguage of the returned content.
data.summarystringOne-line summary — ideal for push notifications, subject lines, list previews.
data.contentstring (HTML)Full content with <h2> section headings, <p> paragraphs, <ul>/<li> for dates.
data.content_textstringPlain text with section labels as headings, paragraphs separated by \n\n.
data.content_paragraphsarray of stringsEach paragraph (and section title) as a separate string.
data.content_sectionsobjectMonthly only. Structured sections object — see below.
data.moodstringMood keyword for the month (e.g. Nurturing, Transformative).
data.key_themestringOne-phrase theme for the month.
data.lucky_numberintegerSuggested lucky number for the month.
data.lucky_colorstringSuggested lucky color.
data.compatible_signstringMost compatible sign for the month.
data.ratings.loveinteger (1–5)Love rating for the month.
data.ratings.careerinteger (1–5)Career rating.
data.ratings.moneyinteger (1–5)Money rating.
data.ratings.healthinteger (1–5)Health rating.
data.ratings.overallinteger (1–5)Overall rating.
data.dosarray of stringsRecommended actions for the month.
data.dontsarray of stringsActions to avoid for the month.
data.generated_atstringWhen this content was generated (server time).
data.served_tierstringContent tier served (e.g. canonical, premium).
data.partner_tierstringYour partner tier as configured on the API key.
meta
meta.endpointstringEcho of the called endpoint path.
meta.versionstringAPI version (currently 3.0).
meta.response_time_msintegerServer-side response time in milliseconds.
meta.timestampstring (ISO 8601)UTC time the response was served.
meta.credits_remainingintegerAPI credits remaining on your plan.
meta.request_idstringUnique request identifier — include in support tickets.

Note that monthly does not include a lucky_time field (unlike daily, which returns a time window).

The content_sections object (monthly-only)

In addition to the three content formats shared with daily and weekly (content, content_text, content_paragraphs), monthly returns a fourth format: a structured content_sections object with each section as its own keyed entry. Perfect for tabbed UIs, section-specific notifications, and calendar imports.

Section keyReturns
overview{title, body, body_html} — synthesis of the month's defining theme
career{title, body, body_html} — Mercury / Sun / Saturn transits applied to work and profession
money{title, body, body_html} — income, investments, expenses (Vedic: 2nd/11th/8th bhava framework)
love{title, body, body_html} — Venus / Mars / Moon transits for partnerships
health{title, body, body_html} — physical and mental health
important_datesArray of {date_label, event} — major astrological dates with significance

Section sub-object shape

FieldTypeDescription
titlestringEnglish section title (e.g. "Career & Business"). Stable across languages.
bodystringPlain text body of the section.
body_htmlstringHTML-wrapped body (e.g. <p>...</p>).

Important dates entry shape

FieldTypeDescription
date_labelstringHuman-friendly date label (e.g. "Tuesday, June 2").
eventstringDescription of the astrological event (e.g. "Jupiter enters Cancer").

Important-dates entries are typically ordered by astrological importance, not chronologically. Headline events (eclipses, slow planet ingresses, retrograde stations) come first; smaller events follow. Sort the array client-side by parsing date_label if you need calendar order.

The four content formats

Same horoscope, four pre-formatted variants — the same three as daily/weekly, plus the monthly-only structured sections.

FieldFormatUse for
contentHTML (with <h2> sections)Web pages, Flutter Html widget, WordPress, email bodies. H2s give natural SEO structure.
content_textPlain textSMS, WhatsApp/Telegram bots, voice TTS. Section labels appear as plain headings.
content_paragraphsArray of stringsCustom UI — each paragraph as a swipeable card. Section titles are array items too.
content_sectionsObject (monthly only)Tabbed UIs, section-specific push, calendar imports. Each section has its own keyed entry.

Use cases

  • Tabbed monthly screen — use content_sections with 6 tabs (Overview / Career / Money / Love / Health / Important Dates). Each section pre-formatted as body_html.
  • Calendar integration — iterate content_sections.important_dates as calendar event source. Each entry is ready to import into Google/Apple Calendar.
  • Section-specific push — send content_sections.career.body Monday morning, love.body Friday evening. One forecast, many touchpoints.
  • Monthly newsletter — use full content (HTML with H2s) as email body. summary as subject line.
  • Blog / WordPress post — drop content into post body. H2 sections give natural SEO heading hierarchy.
  • WhatsApp / Telegram bot — reply to "show me my career outlook" with content_sections.career.body only.
  • Monthly dashboardratings for 5-star bars, lucky_* as highlight tiles, mood as emoji.

Fetching all 12 signs at once

For monthly sign-picker screens or full-zodiac dashboards, fetch all 12 signs in parallel. Each call counts as one request against your quota.

// JavaScript
const signs = ['Aries','Taurus','Gemini','Cancer','Leo','Virgo',
               'Libra','Scorpio','Sagittarius','Capricorn','Aquarius','Pisces'];

const all = await Promise.all(
  signs.map(s => fetch(
    `https://starsapi.com/api/v3/horoscope/monthly?sign=${s}&month=this-month`,
    { headers: { 'X-Api-Key': 'YOUR_API_KEY' } }
  ).then(r => r.json()))
);

// Use all[i].data.content_sections.overview.body for sign-picker cards
Cache for 30 days. Monthly horoscopes don't change once generated. Use data.period_key (e.g. 2026-06) as your cache key — rotates automatically when the month changes. Fetch once on first app open of the month, cache until next month start.

Errors

HTTPCodeCause
400MISSING_SIGNsign param not provided
400INVALID_SIGNSign name not in 12-sign list
400INVALID_ZODIAC_SYSTEMMust be vedic_moon or western_sun
400INVALID_LANGUAGEUnsupported language code
400INVALID_MONTHBad month format. Use this-month, next-month, last-month, YYYY-MM, or YYYY-MM-DD
401AUTH_MISSING_KEYNo API key in request
401AUTH_INVALID_KEYKey format invalid or not found
401AUTH_REVOKED_KEYKey has been revoked
403AUTH_ORIGIN_DENIEDRequest from non-whitelisted origin
404HOROSCOPE_NOT_AVAILABLEContent not yet generated for that month (querying a future month before its cron runs)
429RATE_LIMIT_EXCEEDEDPlan quota exceeded

Error response format

{
  "status": 404,
  "success": false,
  "error": {
    "code": "HOROSCOPE_NOT_AVAILABLE",
    "message": "Horoscope not yet generated for Aries vedic_moon/general/en in 2026-05"
  },
  "meta": {
    "endpoint": "/api/v3/horoscope/monthly",
    "version": "3.0",
    "response_time_ms": 1,
    "timestamp": "2026-05-31T14:10:17+05:30",
    "request_id": "b32a8a86bb97200f"
  }
}

See also