Yearly Horoscope
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.
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:
| Method | Example |
|---|---|
| Header (recommended) | X-Api-Key: am_live_xxxxxxxxxxxx |
| Bearer | Authorization: Bearer am_live_xxxxxxxxxxxx |
| Query | ?api_key=am_live_xxxxxxxxxxxx |
See authentication for security considerations.
Query parameters
| Param | Required | Default | Accepted 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 |
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:
| Format | Example | Resolves to |
|---|---|---|
| Keyword | this-year | Current calendar year (IST) |
| Keyword | next-year | Current year + 1 |
| Keyword | last-year | Current year − 1 |
| Year | 2027 | January 1 – December 31, 2027 |
| Any date in year | 2027-06-15 | Extracts 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:
| Field | Type | Description |
|---|---|---|
status | integer | HTTP status code echo (200 on success). |
success | boolean | Always true on success. |
| data | ||
data.sign | string | Echo of the requested sign. |
data.zodiac_system | string | Zodiac system used. |
data.sub_type | string | Always general for yearly. |
data.period_type | string | Always yearly for this endpoint. |
data.period_key | string | Calendar year key, e.g. 2027. Stable cache key. |
data.period_start | string (YYYY-MM-DD) | First day of the target year (always January 1). |
data.period_end | string (YYYY-MM-DD) | Last day of the target year (always December 31). |
data.language | string | Language of the returned content. |
data.summary | string | One-line summary — ideal for push notifications, subject lines, list previews. |
data.content | string (HTML) | Full content with 10 <h2> section headings, <p> paragraphs, <ul>/<li> for dates. |
data.content_text | string | Plain text with section labels as headings, paragraphs separated by \n\n. |
data.content_paragraphs | array of strings | Each paragraph (and section title) as a separate string. |
data.content_sections | object | Yearly has 10 keyed sections. See below. |
data.mood | string | Mood keyword for the year (e.g. Reflective, Transformative). |
data.key_theme | string | One-phrase theme for the year. |
data.lucky_number | integer | Suggested lucky number for the year. |
data.lucky_color | string | Suggested lucky color. |
data.compatible_sign | string | Most compatible sign for the year. |
data.ratings.love | integer (1–5) | Love rating for the year. |
data.ratings.career | integer (1–5) | Career rating. |
data.ratings.money | integer (1–5) | Money rating. |
data.ratings.health | integer (1–5) | Health rating. |
data.ratings.overall | integer (1–5) | Overall rating. |
data.dos | array of strings | Recommended actions for the year. |
data.donts | array of strings | Actions to avoid for the year. |
data.generated_at | string | When this content was generated (server time). |
data.served_tier | string | Content tier served (e.g. canonical, premium). |
data.partner_tier | string | Your partner tier as configured on the API key. |
| meta | ||
meta.endpoint | string | Echo of the called endpoint path. |
meta.version | string | API version (currently 3.0). |
meta.response_time_ms | integer | Server-side response time in milliseconds. |
meta.timestamp | string (ISO 8601) | UTC time the response was served. |
meta.credits_remaining | integer | API credits remaining on your plan. |
meta.request_id | string | Unique 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 key | Returns |
|---|---|
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_dates | Array of {date_label, event} — major astrological dates with significance |
Section sub-object shape
| Field | Type | Description |
|---|---|---|
title | string | English section title (e.g. "Career & Business"). Stable across languages. |
body | string | Plain text body of the section. |
body_html | string | HTML-wrapped body (e.g. <p>...</p>). |
Important dates entry shape
| Field | Type | Description |
|---|---|---|
date_label | string | Human-friendly date label (e.g. "January 3", "June 9"). |
event | string | Description 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).
| Field | Format | Use for |
|---|---|---|
content | HTML (with 10 <h2> sections) | Web pages, Flutter Html widget, WordPress, email bodies, SEO landing pages. H2s give natural heading hierarchy. |
content_text | Plain text | Voice TTS, plain Text widgets, downloadable PDF reports. Section labels appear as plain headings. |
content_paragraphs | Array of strings | Custom carousel UIs — each paragraph as a swipeable card. Section titles are array items too. |
content_sections | Object (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_sectionswith 10 tabs (Overview / Career / Money / Love / Family / Health / Education / Travel / Spirituality / Important Dates). Each pre-formatted asbody_html. - Year-ahead calendar widget — iterate
content_sections.important_datesas calendar event source. Each entry is ready to import into Google/Apple Calendar. - SEO landing page — drop
contentinto "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. Dropsummaryin 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.bodyfor "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.
| Feature | Canonical | Premium |
|---|---|---|
| Word count | ~1000 words | ~1500+ words |
| Section depth | 10 sections | 10 sections + deeper analysis per section |
| Named Ekadashi references (Saphala, Putrada, etc.) | — | ✓ |
| Adhik Maas awareness (Purushottam Maas) | — | ✓ |
| Sanskrit terminology naturalized | Light | Naturalized (Karka, Guru, Shukra, bhava, drishti) |
| Practical remedies (mantra/charity/practice) | — | ✓ One per major section |
| Marriage muhurat windows | — | ✓ Specific favorable months flagged |
| Persona voice | Editorial neutral | Custom (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.
| When | What happens |
|---|---|
| October 15 · 03:00 IST | Yearly canonical cron generates next year's content for all 12 signs across both zodiac systems and supported languages. |
| October 15 · 03:30 IST | Yearly premium cron runs for premium partners — adds Vedic panchang depth, named vrats, Adhik Maas, persona voice. |
| October 16 onward | Content 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. |
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
| HTTP | Code | Cause |
|---|---|---|
| 400 | MISSING_FIELD | sign param not provided |
| 400 | INVALID_SIGN | Sign name not in 12-sign list |
| 400 | INVALID_ZODIAC_SYSTEM | Must be vedic_moon or western_sun |
| 400 | INVALID_LANGUAGE | Unsupported language code |
| 400 | INVALID_YEAR | Bad year format. Use this-year, next-year, last-year, YYYY, or YYYY-MM-DD |
| 401 | AUTH_MISSING_KEY | No API key in request |
| 401 | AUTH_INVALID_KEY | Key format invalid or not found |
| 401 | AUTH_REVOKED_KEY | Key has been revoked |
| 403 | AUTH_ORIGIN_DENIED | Request from non-whitelisted origin |
| 404 | HOROSCOPE_NOT_AVAILABLE | Content not yet generated for that year (querying a future year before October 15 cron runs) |
| 429 | RATE_LIMIT_EXCEEDED | Plan 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
- Daily Horoscope — one-day variant with
lucky_timewindows - Weekly Horoscope — 7-day variant (Monday–Sunday)
- Monthly Horoscope — calendar-month variant with 6 sections
- Horoscope overview — full category
- Errors reference — universal error codes