GET · HOROSCOPE

Yearly Horoscope

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

Returns the full calendar-year horoscope (January 1 through December 31, IST) for a single zodiac sign. Returns ~1500 words of content organized into 10 H2 sections — Year Overview, Career & Business, Money & Finance, Love & Relationships, Family & Home, Health & Wellbeing, Education & Learning, Travel & Foreign, Spirituality & Growth, and Important Dates — plus a structured content_sections field for tabbed UIs, calendar imports, and SEO landing pages.

Note: yearly uses year=, not date= or month=. Each period type uses its own time parameter — daily/weekly use date=, monthly uses month=, yearly uses year=. The accepted formats are also different — see the year 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
year No this-year See the year 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. Yearly doesn't need this — Love, Career, Money, Family, and Education each have their own dedicated H2 section. One yearly call covers all life areas at full depth. Always returns content equivalent to sub_type=general.

Year formats

The year parameter accepts several formats:

FormatExampleResolves to
Keywordthis-yearCurrent calendar year (IST)
Keywordnext-yearCurrent year + 1
Keywordlast-yearCurrent year − 1
Year2027January 1 – December 31, 2027
Any date in year2027-06-15Extracts the year, returns January 1 – December 31, 2027

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 yearly.
data.period_typestringAlways yearly for this endpoint.
data.period_keystringCalendar year key, e.g. 2027. Stable cache key.
data.period_startstring (YYYY-MM-DD)First day of the target year (always January 1).
data.period_endstring (YYYY-MM-DD)Last day of the target year (always December 31).
data.languagestringLanguage of the returned content.
data.summarystringOne-line summary — ideal for push notifications, subject lines, list previews.
data.contentstring (HTML)Full content with 10 <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_sectionsobjectYearly has 10 keyed sections. See below.
data.moodstringMood keyword for the year (e.g. Reflective, Transformative).
data.key_themestringOne-phrase theme for the year.
data.lucky_numberintegerSuggested lucky number for the year.
data.lucky_colorstringSuggested lucky color.
data.compatible_signstringMost compatible sign for the year.
data.ratings.loveinteger (1–5)Love rating for the year.
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 year.
data.dontsarray of stringsActions to avoid for the year.
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 yearly does not include a lucky_time field (unlike daily, which returns a time window).

The content_sections object (yearly has 10 sections)

In addition to the three content formats shared with daily and weekly (content, content_text, content_paragraphs), yearly returns a fourth format: a structured content_sections object with each section as its own keyed entry. Where monthly has 6 sections, yearly has 10 — ideal for tabbed year-ahead UIs, SEO landing pages, calendar imports, and premium PDF reports.

Section keyReturns
overview{title, body, body_html} — synthesis of the year's defining theme, opens with the biggest event
career{title, body, body_html} — work and profession, Mercury retrograde windows, slow-planet career impact
money{title, body, body_html} — income, investments, expenses (Vedic: 2nd/11th/8th bhava framework)
love{title, body, body_html} — Venus / Mars transits, marriage muhurat windows for Vedic
family{title, body, body_html} — 4th bhava (home, mother, property), parental concerns, family events
health{title, body, body_html} — physical and mental health, eclipse/Saturn caution windows
education{title, body, body_html} — students, professional upskilling, exam-takers, knowledge acquisition
travel{title, body, body_html} — short trips (3rd), long/foreign (9th), foreign residence (12th)
spirituality{title, body, body_html} — dharma, sadhana, mantra for the year, retreat windows
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. "January 3", "June 9").
eventstringDescription of the astrological event (e.g. "Saphala Ekadashi, a day for spiritual reflection").

Important-dates entries are typically ordered by astrological importance, not chronologically. Headline events (slow planet ingresses, eclipses, retrograde stations) come first; smaller events follow. Sort the array client-side by parsing date_label if you need calendar order. Typically 8–12 entries per year — includes major planet ingresses, eclipses, retrograde stations, Adhik Maas (when applicable), and named panchang days (Ekadashi, Purnima, Amavasya) on premium tier.

The four content formats

Same horoscope, four pre-formatted variants — the same three as daily/weekly, plus the structured sections (monthly has 6 keys, yearly has 10).

FieldFormatUse for
contentHTML (with 10 <h2> sections)Web pages, Flutter Html widget, WordPress, email bodies, SEO landing pages. H2s give natural heading hierarchy.
content_textPlain textVoice TTS, plain Text widgets, downloadable PDF reports. Section labels appear as plain headings.
content_paragraphsArray of stringsCustom carousel UIs — each paragraph as a swipeable card. Section titles are array items too.
content_sectionsObject (10 keys)Tabbed yearly screens, section-specific notifications, calendar imports, year-ahead landing pages. Each section has its own keyed entry.

Use cases

  • Tabbed yearly screen — use content_sections with 10 tabs (Overview / Career / Money / Love / Family / Health / Education / Travel / Spirituality / Important Dates). Each pre-formatted as body_html.
  • Year-ahead calendar widget — iterate content_sections.important_dates as calendar event source. Each entry is ready to import into Google/Apple Calendar.
  • SEO landing page — drop content into "Cancer 2027 Yearly Horoscope" landing pages. H2 sections give native SEO heading hierarchy. Best for annual search traffic spikes.
  • New-year email campaign — use full content (HTML with 10 H2s) as email body. Drop summary in subject line. Send January 1.
  • Annual content piece — aggregate all 12 signs into a single "2027 Astrology Year Ahead" blog/magazine post. Each sign gets a section.
  • Premium PDF report — render the full 10-section HTML to PDF for a "Year Ahead Report" digital product. Strong December/January sales.
  • Section-specific notifications — push content_sections.career.body for "Your career outlook for 2027" mid-year reminders.
  • Onboarding flows — show new subscribers their year-ahead overview as part of first-week welcome sequence.

Premium tier

Premium-tier API keys automatically receive richer yearly content — no extra parameter needed. The endpoint detects your tier from the API key and serves appropriate content, with fallback to canonical content if premium isn't available for your sign/language combination.

FeatureCanonicalPremium
Word count~1000 words~1500+ words
Section depth10 sections10 sections + deeper analysis per section
Named Ekadashi references (Saphala, Putrada, etc.)
Adhik Maas awareness (Purushottam Maas)
Sanskrit terminology naturalizedLightNaturalized (Karka, Guru, Shukra, bhava, drishti)
Practical remedies (mantra/charity/practice)✓ One per major section
Marriage muhurat windows✓ Specific favorable months flagged
Persona voiceEditorial neutralCustom (e.g. Guruji — 40-year senior Vedic astrologer)

Check data.served_tier in the response to see whether you received canonical or premium content. Apps don't need different code paths — same JSON shape, deeper content.

Content schedule

Yearly content is generated once per year on October 15 for the upcoming calendar year. This gives 2.5 months of lead time before January 1 for SEO indexing, landing page builds, email campaign prep, and year-ahead marketing.

WhenWhat happens
October 15 · 03:00 ISTYearly canonical cron generates next year's content for all 12 signs across both zodiac systems and supported languages.
October 15 · 03:30 ISTYearly premium cron runs for premium partners — adds Vedic panchang depth, named vrats, Adhik Maas, persona voice.
October 16 onwardContent live and queryable. ?year=next-year returns the upcoming year from October 16 onward.
Response time~30ms typical — pure DB lookup, no AI generation at request time.
Cache for 365 days. Yearly horoscopes don't change once generated. Use data.period_key (e.g. 2027) as your cache key — rotates automatically when the year changes. Safe to cache aggressively client-side, in CDN edge cache, and in your own database.

Errors

HTTPCodeCause
400MISSING_FIELDsign 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_YEARBad year format. Use this-year, next-year, last-year, YYYY, 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 year (querying a future year before October 15 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 Cancer vedic_moon/en in 2028"
  },
  "meta": {
    "endpoint": "/api/v3/horoscope/yearly",
    "version": "3.0",
    "response_time_ms": 1,
    "timestamp": "2026-05-31T18:33:45+05:30",
    "request_id": "f2d5b26183a6c4b5"
  }
}

See also