Overview

Horoscope API returns complete Vedic astrology data — sign-based Rashifal, Janma Kundli, Vimshottari Dasha, D9/Navamsa charts, dosha checks, Ashtakoot matching, and rule-based natal interpretation — for any birth date, time, and place. It serves astrology apps, devotional products, matchmaking flows, and birth-chart dashboards.

Rule of thumb: birth-based endpoints under /v1/... use POST. Public read-only endpoints use GET — including GET /v1/rashifal/:sign/:period, GET /health, and GET /status.

All responses use a standard JSON envelope with data, meta, and optional dev_notes fields. Error responses always carry a machine-readable error and a docs_url link.

All calculations use the Vedic sidereal zodiac with the Lahiri (Chitrapaksha) ayanamsa, whole-sign houses, and true nodes for Rahu/Ketu. Horoscope computation is deterministic and rule-based — natal prediction text is phrase-bank/rule output, not LLM compute.

New to Jyotish terminology? Jump to the Glossary for plain-language definitions of every term used in API responses — rashi, lagna, graha, nakshatra, dasha, and more.

Live service. The Horoscope API is live. New integrations should use the clean Horoscope host: https://horoscope.devdarsha.com/v1/*. Legacy /v1/horoscope/* routes on the gateway remain available for compatibility.
Need conceptual help before wiring endpoints? Use the Guides Knowledge Hub alongside Horoscope Documentation for field context, calculation methodology, and integration planning.
7 endpoint families · Rashifal to matching
D1 + D9 · Kundli and Navamsa
Vimshottari · Ashtakoot Gun Milan
7Endpoint families
D1 · D9Divisional scope
LahiriAyanamsa standard
No LLMDeterministic compute
v1API version

Code Examples

All examples below call the Kundli endpoint for a birth on 1990-08-15 at 10:30 in Kolkata. Swap YOUR_API_KEY, the birth details, and city to match your use case.

💻
Your App date + time + city + key POST request
🪐
Horoscope API horoscope.devdarsha.com JSON response
📱
Your Users chart · widget · app

Get Started in 4 Steps

Go from signup to production in a few minutes.

1 Get your API key

Sign up free - no credit card needed. Your key is ready instantly.

2 Choose the clean route

Use horoscope.devdarsha.com/v1/* for all new work.

3 Send birth input

Use date, time, and a trusted city or explicit lat/lon/tz.

4 Ship it

Read data, integrate into your app, upgrade as you scale.

curl Copy
curl
curl -X POST "https://horoscope.devdarsha.com/v1/kundli" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"date":"1990-08-15","time":"10:30","city":"Kolkata"}'
javascript Copy
javascript
// Use header auth - never put api_key in client-side code
const response = await fetch("https://horoscope.devdarsha.com/v1/kundli", {
  method: "POST",
  headers: {
    "x-api-key": "YOUR_API_KEY",
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    date: "1990-08-15",
    time: "10:30",
    city: "Kolkata"
  })
});

const data = await response.json();
console.log(data.data.lagna.rashi.name);          // "Tula"
console.log(data.data.grahas[0].name);            // "Surya"
console.log(data.meta.calculation.ayanamsa);      // "Lahiri (Chitrapaksha)"
python Copy
python
import requests

response = requests.post(
    "https://horoscope.devdarsha.com/v1/kundli",
    headers={"x-api-key": "YOUR_API_KEY"},
    json={"date": "1990-08-15", "time": "10:30", "city": "Kolkata"}
)

data = response.json()
print(data["data"]["lagna"]["rashi"]["name"])       # Tula
print(data["data"]["grahas"][0]["name"])            # Surya
print(data["meta"]["calculation"]["ayanamsa"])      # Lahiri (Chitrapaksha)

Sample Response (condensed)

Here is a representative slice of a real Kundli response for a birth on 1990-08-15, Kolkata:

json Copy
json
{
  "data": {
    "birth":  { "date": "1990-08-15", "time": "10:30", "place": "Kolkata" },
    "lagna":  { "rashi": { "number": 7, "name": "Tula" }, "nakshatra": { "name": "Swati", "pada": 2 } },
    "grahas": [{ "name": "Surya", "rashi": { "name": "Karka" }, "house": 10, "retrograde": false }],
    "houses": [{ "house": 1, "rashi": "Tula", "lord": "Shukra" }]
  },
  "meta": {
    "api_version":  "v1",
    "service":      "horoscope",
    "data_source":  "live",
    "calculation":  { "zodiac": "sidereal", "ayanamsa": "Lahiri (Chitrapaksha)", "house_system": "whole-sign" }
  }
}
Attached JSON PayloadExpand to inspect the full computed response
json
{
    "data": {
        "birth": {
            "date": "1990-08-15",
            "time": "10:30",
            "place": "Kolkata",
            "resolved_timezone": "Asia/Kolkata",
            "lat": 22.5726,
            "lon": 88.3639
        },
        "lagna": {
            "degree": 192.42,
            "rashi": { "number": 7, "name": "Tula" },
            "nakshatra": { "name": "Swati", "pada": 2 }
        },
        "grahas": [
            {
                "name": "Surya",
                "longitude": 118.31,
                "rashi": { "number": 4, "name": "Karka" },
                "house": 10,
                "nakshatra": { "name": "Ashlesha", "pada": 4 },
                "retrograde": false
            }
        ],
        "houses": [
            { "house": 1, "rashi": "Tula", "lord": "Shukra" }
        ],
        "charts": {
            "D1": {
                "name": "Rashi",
                "positions": [{ "graha": "Surya", "rashi": "Karka", "house": 10 }]
            }
        }
    },
    "meta": {
        "api_version": "v1",
        "service": "horoscope",
        "computed_at": "2026-07-01T00:00:00.000Z",
        "data_source": "live",
        "cache_age_seconds": 0,
        "calculation": {
            "zodiac": "sidereal",
            "ayanamsa": "Lahiri (Chitrapaksha)",
            "house_system": "whole-sign",
            "node": "true"
        }
    },
    "dev_notes": []
}

Authentication

Every compute endpoint requires an API key. Send it in the x-api-key request header and keep requests server-side.

How to get a key

  1. Sign up — free, no credit card.
  2. Open the Dashboard and create a key. You can name, rotate, and revoke keys from there.
  3. Copy the key once — it is shown in full only at creation time. Store it as a server-side secret.

The same lifecycle is also available programmatically — see API Keys below.

Recommended method

Pass your key as an x-api-key request header. This keeps keys out of URLs, browser history, proxy logs, and analytics exports.

bash
POST https://horoscope.devdarsha.com/v1/kundli
x-api-key: YOUR_API_KEY

Auth failure reference

Auth caseExpected responseFix
Missing key401 missing_api_keyAdd x-api-key.
Invalid or revoked key401 invalid_api_keyCreate or rotate a key in the dashboard.
Endpoint above active plan403 plan_requiredUpgrade to Topaz or higher for paid horoscope endpoints.
Quota exhausted429 quota_exceededWait for reset or upgrade the plan.
Keep API keys server-side. Do not ship keys in browser JavaScript. Keep the key on your server, call Horoscope API from your backend, and return only the fields your frontend needs.

Routes & Base URL

The clean Horoscope host is the preferred integration surface for new clients. The legacy gateway route remains documented only so existing integrations can migrate without confusion.

text
https://horoscope.devdarsha.com/v1
Route familyUse forBase URLExample
Preferred clean hostNew integrationshttps://horoscope.devdarsha.comhttps://horoscope.devdarsha.com/v1/kundli
Legacy compatibilityExisting gateway clientshttps://panchang.devdarsha.comhttps://panchang.devdarsha.com/v1/horoscope/kundli

Docs examples below use the clean host. Replace the path with the legacy route only when supporting an older integration.

Route mapping

FeaturePreferred routeLegacy route
RashifalGET /v1/rashifal/:sign/:periodGET /v1/horoscope/rashifal/:sign/:period
KundliPOST /v1/kundliPOST /v1/horoscope/kundli
DashaPOST /v1/dashaPOST /v1/horoscope/dasha
Divisional chartPOST /v1/divisional/:vargaPOST /v1/horoscope/divisional/:varga
DoshasPOST /v1/doshasPOST /v1/horoscope/doshas
MatchingPOST /v1/matchingPOST /v1/horoscope/matching
Natal predictionPOST /v1/predict/natalPOST /v1/horoscope/predict/natal
Full forecastPOST /v1/forecast/fullPOST /v1/horoscope/forecast/full

Quick Start

For all /v1/... endpoints, send a JSON body with your request fields and authenticate using x-api-key. Start with Kundli because it verifies birth input, timezone resolution, chart computation, and the response envelope in one call.

Use a trusted city

The canonical request when the birthplace exists in the city directory.

curl
curl -X POST "https://horoscope.devdarsha.com/v1/kundli" \
  -H "x-api-key: YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"date":"1990-08-15","time":"10:30","city":"Kolkata"}'
Required: date Required: time Required: city Required: x-api-key header

Use exact coordinates

Best when the birthplace is outside the city directory. Requires an explicit IANA timezone.

curl
curl -X POST "https://horoscope.devdarsha.com/v1/kundli" \
  -H "x-api-key: YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"date":"1990-08-15","time":"10:30","lat":22.5726,"lon":88.3639,"tz":"Asia/Kolkata"}'
Required: date Required: time Required: lat + lon + tz

Plans & Feature Gates

Horoscope API uses a separate public plan ladder: Free, Topaz, Ruby, Diamond, Eclipse, Zenith, and Infinity. Free covers basic testing. Topaz is the paid endpoint threshold. Higher tiers increase usage, support, SLA, and commercial terms without changing the v1 path shape. Plan entitlements are product-isolated. Full pricing lives on pricing.

Access gates

  • Free: /rashifal and /kundli only. Free endpoints still require an API key.
  • Topaz and above: all v1 horoscope endpoints — Dasha, D9, doshas, matching, and natal prediction.
  • Ruby / Diamond / Eclipse / Zenith / Infinity: same endpoint set as Topaz with higher quota, rate limits, support, and SLA.

Endpoint access

PlanEndpoint accessTypical useNotes
Free/v1/rashifal/:sign/:period
/v1/kundli
Testing, demos, prototype chartsFree endpoints still require an API key.
Topaz+All v1 horoscope endpointsPaid apps, matchmaking, prediction flowsRequired for Dasha, D9, doshas, matching, and natal prediction.
Ruby / Diamond / Eclipse / Zenith / InfinitySame v1 endpoint set as TopazProduction scale and enterprise useHigher quota, rate limits, support, SLA, and contract options.

Quota cost per call

  • GET /v1/rashifal/:sign/:period — 1 request.
  • POST /v1/kundli — 1 request.
  • POST /v1/dasha — 1 request unless expanded levels are billed separately in the active plan.
  • POST /v1/divisional/:varga, /v1/doshas, /v1/matching, and /v1/predict/natal — 1 request each.
  • GET /health and GET /status — no quota cost.

The actual charge is echoed in X-Quota-Cost. If you call an endpoint that is not on your plan, the response is 403 plan_required. See Error Codes.

Need higher volume or a custom SLA? Enterprise tiers are sales-only — email [email protected].

Signup

POST /v1/signup

Create a new DevDarsha account programmatically. Returns an account record and a first API key. No authentication required.

Most users will sign up through the website signup form instead — this endpoint is for partners and SDKs that provision accounts on a user's behalf.

Request Body (JSON)

FieldTypeRequiredDescription
emailstringRequiredValid email address. Becomes the account login.
passwordstringRequiredMinimum 8 characters.
namestringOptionalDisplay name shown in dashboard and invoices.
planstringOptionalfree (default), topaz, ruby, diamond, and higher tiers.

Example Request

curl
curl -X POST "https://panchang.devdarsha.com/v1/signup" \
  -H "Content-Type: application/json" \
  -d '{"email":"[email protected]","password":"a-strong-password","plan":"free"}'

Response

json
{
  "data": {
    "account": { "id": "acc_...", "email": "[email protected]", "plan": "free" },
    "api_key": "sk_live_..."
  },
  "meta": { "version": "v1", "computed_at": "2026-07-01T10:00:00Z" }
}
Save the key now.

The full api_key is returned only once at signup. After this, the dashboard shows a masked preview. If you lose it, create a new key and revoke the old one.

Show once

API Key Management

POST /v1/keys

List, create, rotate, and revoke API keys for your account. All key endpoints require an existing API key with admin scope (your first key has admin scope by default). You can also manage keys from the Dashboard.

Operations

OperationMethod & pathDescription
CreatePOST /v1/keysCreate a new key with an optional name and scope.
ListPOST /v1/keys/listList your keys (masked previews only — never the full secret).
RotatePOST /v1/keys/rotateIssue a replacement key for an existing key id. Old key keeps working for 24 h.
RevokePOST /v1/keys/revokePermanently invalidate a key. Cannot be undone.

Create a key

curl
curl -X POST "https://panchang.devdarsha.com/v1/keys" \
  -H "x-api-key: YOUR_ADMIN_KEY" \
  -H "Content-Type: application/json" \
  -d '{"name":"production-server","scope":"read"}'

Response (create / rotate)

json
{
  "data": {
    "key_id": "key_abc123",
    "api_key": "sk_live_...",
    "name": "production-server",
    "scope": "read",
    "created_at": "2026-07-01T10:00:00Z"
  },
  "meta": { "version": "v1" }
}
Full secret returned once.

The api_key field is returned only on create and rotate. List operations show a masked preview such as sk_live_...wXyZ. Treat keys like passwords.

Show once

Usage

GET /v1/usage

Returns the current billing period's usage and remaining quota for the authenticated key. Useful for surfacing a quota meter in your own dashboard or alerting before you run out.

Example Request

curl
curl "https://horoscope.devdarsha.com/v1/usage" \
  -H "x-api-key: YOUR_API_KEY"

Response

json
{
  "data": {
    "plan": "topaz",
    "period_start": "2026-07-01T00:00:00Z",
    "period_end":   "2026-08-01T00:00:00Z",
    "calls_used":      1250,
    "calls_included":  10000,
    "calls_remaining": 8750
  },
  "meta": { "version": "v1", "computed_at": "2026-07-02T10:00:00Z" }
}

Rashifal

GET /v1/rashifal/:sign/:period

Returns sign-based Rashifal for a rashi and period. This endpoint does not require birth details. Not familiar with these terms? See the Glossary.

Path parameters

ParameterAllowed valuesDescription
signSee Signs & PeriodsUse stable rashi slugs such as mesha, vrishabha, mithuna.
perioddaily, weekly, monthlyForecast duration.

Query parameters

FieldTypeRequiredDescription
langstringOptionalDisplay language. Default en.
datestringOptionalAnchor date in YYYY-MM-DD. If omitted, current date in the service timezone is used.

Example Request

curl
curl -X GET "https://horoscope.devdarsha.com/v1/rashifal/mesha/daily?lang=en" \
  -H "x-api-key: YOUR_API_KEY"

Kundli

POST /v1/kundli

Returns a basic Janma Kundli / D1 chart with lagna, graha positions, rashi, house, nakshatra, and pada fields. This is the recommended first integration test.

Request Body (JSON)

Uses the common Birth Input object.

curl
curl -X POST "https://horoscope.devdarsha.com/v1/kundli" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"date":"1990-08-15","time":"10:30","city":"Kolkata"}'

Response Fields

FieldDescription
birthNormalized birth input, resolved location, timezone, and coordinates.
lagnaAscendant degree, rashi, nakshatra, and pada.
grahasPlanetary positions with longitude, rashi, house, nakshatra, pada, and retrograde flag where applicable.
housesWhole-sign house mapping from lagna.
charts.D1Rashi chart positions suitable for rendering a North, South, or East Indian chart UI.

Dasha Topaz+

POST /v1/dasha

Returns Vimshottari Dasha periods computed from the natal Moon. Use this when your product needs current Maha Dasha, Antardasha, and timeline context.

Request Body (JSON)

FieldTypeRequiredDescription
Birth fieldsobjectRequiredUse the common Birth Input.
levelsintegerOptionalDasha depth. Use 1 for Maha Dasha, 2 for Antardasha. Higher expansion may be plan-limited.
fromstringOptionalStart date for filtering the returned timeline.
tostringOptionalEnd date for filtering the returned timeline.

Example Request

curl
curl -X POST "https://horoscope.devdarsha.com/v1/dasha" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"date":"1990-08-15","time":"10:30","city":"Kolkata","levels":2}'

Divisional Charts Topaz+

POST /v1/divisional/:varga

Returns a divisional chart for the requested varga. v1 supports D1 and D9. Use D9 for Navamsa workflows.

Path parameters

ParameterAllowed valuesDescription
vargaD1, D9Divisional chart code. Unsupported vargas return 400 unsupported_varga.

Example Request

curl
curl -X POST "https://horoscope.devdarsha.com/v1/divisional/D9" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"date":"1990-08-15","time":"10:30","city":"Kolkata"}'

Response Fields

FieldDescription
vargaRequested divisional code, e.g. D9.
nameHuman-readable chart name, e.g. Navamsa.
lagnaDivisional ascendant.
positionsPlanetary positions in the requested divisional chart.

Doshas Topaz+

POST /v1/doshas

Returns deterministic dosha checks for common Jyotish conditions. Treat the output as an informational calculation layer, not as a prediction of specific outcomes or remedies.

Example Request

curl
curl -X POST "https://horoscope.devdarsha.com/v1/doshas" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"date":"1990-08-15","time":"10:30","city":"Kolkata"}'

Response Fields

FieldDescription
manglikMangal placement check with severity and supporting houses.
kaal_sarpRahu-Ketu axis pattern check.
sade_satiSaturn transit relationship to natal Moon where transit context is available.
pitraRule-based Pitra dosha indicator with contributing factors.
summaryMachine-readable summary and display-safe explanation.

Matching Topaz+

POST /v1/matching

Returns Ashtakoot / Gun Milan compatibility scoring between two birth profiles. Use boy and girl objects for compatibility with common North Indian matching terminology; applications may relabel the result in their own UI.

Request Body (JSON)

FieldTypeRequiredDescription
boyobjectRequiredBirth Input object for first profile.
girlobjectRequiredBirth Input object for second profile.
include_dosha_summarybooleanOptionalWhen available on plan, includes high-level dosha compatibility notes.

Example Request

curl
curl -X POST "https://horoscope.devdarsha.com/v1/matching" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"boy":{"date":"1990-08-15","time":"10:30","city":"Kolkata"},"girl":{"date":"1992-03-21","time":"14:05","city":"Mumbai"}}'

Response Fields

json
{
  "data": {
    "score": { "total": 26, "max": 36, "percent": 72.22 },
    "kootas": [
      { "name": "Varna", "score": 1, "max": 1, "status": "matched" },
      { "name": "Vashya", "score": 2, "max": 2, "status": "matched" }
    ],
    "verdict": "compatible",
    "notes": ["..."]
  }
}

Natal Prediction Topaz+

POST /v1/predict/natal

Returns deterministic natal interpretation generated from chart factors and a phrase-bank/rule system. It is not LLM output and should not be presented as a fixed prediction of future events.

Request Body (JSON)

FieldTypeRequiredDescription
Birth fieldsobjectRequiredUse the common Birth Input.
sectionsarrayOptionalSubset of interpretation sections to return, e.g. career, relationship, health, personality.
langstringOptionalDisplay language. Default en.

Example Request

curl
curl -X POST "https://horoscope.devdarsha.com/v1/predict/natal" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"date":"1990-08-15","time":"10:30","city":"Kolkata","lang":"en"}'

Full Forecast Topaz+

POST /v1/forecast/full

Returns a deterministic multi-signal forecast that fuses the D1 and D9 charts, the active mahā/antar daśā, doshas, Sade Sati and gochar (transits) into per-domain scores with phrase-bank text. It is computed from chart factors and a rule system — not LLM output.

Request Body (JSON)

FieldTypeRequiredDescription
Birth fieldsobjectRequiredUse the common Birth Input.
as_ofstringOptionalDate (YYYY-MM-DD, resolved to noon in the birth timezone) or a full ISO date-time. Default: now.
langstringOptionalDisplay language: en (default) or hi.

Example Request

curl
curl -X POST "https://horoscope.devdarsha.com/v1/forecast/full" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"date":"1990-08-15","time":"10:30","city":"Kolkata","as_of":"2026-07-03","lang":"en"}'
Errors. In addition to the common errors, an invalid as_of (neither YYYY-MM-DD nor an ISO date-time) returns 400 invalid_as_of. Output is deterministic for the same birth input and as_of.

Health Check

GET /health

Use this endpoint for uptime monitors and deployment smoke tests. No authentication required and no quota cost.

json
{ "ok": true, "service": "horoscope", "status": "healthy" }

Status

GET /status

Status returns service availability and degraded-mode information for dashboards and support tooling. The public marketing status is Live.

json
{
  "data": {
    "service": "horoscope",
    "status": "operational",
    "degraded": false,
    "components": [
      { "name": "gateway", "status": "operational" },
      { "name": "horoscope-engine", "status": "operational" },
      { "name": "cache", "status": "operational" }
    ]
  },
  "meta": { "api_version": "v1" }
}

Feedback Endpoint

POST /v1/feedback

Submit feedback about the API. Does not require authentication.

FieldTypeRequiredDescription
namestringRequiredYour name
emailstringRequiredYour email
planstringRequiredfree | topaz | ruby | diamond | none
messagestringRequiredFeedback text (10–2000 chars)

Contact

POST /v1/contact

Send a sales, partnership, or support enquiry. Mirrors the contact form on the website. No authentication required. Submissions are rate-limited per IP and per email.

Request Body (JSON)

FieldTypeRequiredDescription
namestringRequiredYour name (2–120 chars).
emailstringRequiredReply-to email.
subjectstringOptionalShort topic line.
messagestringRequiredBody of the enquiry (10–4000 chars).
topicstringOptionalsales, support, partnership, or other.

Responds with 202 Accepted on success. Replies usually arrive within 1 business day at the email you supplied.

Billing & Webhooks

POST /v1/billing/...

Most users will manage subscriptions, invoices, and payment methods from the Dashboard. The endpoints below let you do the same programmatically and let payment providers notify DevDarsha when something changes.

Operations

OperationMethod & pathDescription
Available plansGET /v1/billing/plans?product=horoscopeHoroscope plans with prices, currency, and per-cycle availability.
Create orderPOST /v1/billing/razorpay/orderOne-time Razorpay order (pass "product":"horoscope"). Returns razorpay_order_id + amount.
Verify paymentPOST /v1/billing/razorpay/verifyConfirm a completed Razorpay payment and receive the upgraded API key.
Create subscriptionPOST /v1/billing/razorpay/subscriptionStart a recurring Horoscope subscription. Returns the subscription id + short_url.
OverviewGET /v1/billing/overview?product=horoscopeCurrent plan, payment state, renewal date, cycle, currency, and history.
ReceiptsGET /v1/billing/invoices?product=horoscopeProduct-scoped payment receipts. See the GST note in the Panchang docs.
Change / cancelPOST /v1/billing/subscription/change · /subscription/cancelUpgrade/downgrade, or stop auto-renewal (access kept to period end).
WebhooksPOST /v1/billing/razorpay/webhookReceives Razorpay events — see below.

All operations except the webhook require an authenticated API key. An unknown product returns 400 invalid_product.

Webhook events

Configure the webhook in your Razorpay dashboard to point at /v1/billing/razorpay/webhook. DevDarsha verifies the X-Razorpay-Signature header before trusting the body. Events are at-least-once and handled idempotently. A Horoscope refund downgrades only the Horoscope entitlement.

EventWhen
payment.capturedA one-time payment was captured; the plan upgrade is applied.
subscription.authenticatedA subscription mandate was authorized.
subscription.chargedA recurring charge succeeded; entitlement is extended.
subscription.halted / subscription.cancelledRetries exhausted, or the subscription was cancelled.
refund.created / refund.processedA refund was issued; the refunded product is downgraded.

Birth Input

Birth-based endpoints require date and time, plus location. The API accepts a trusted place lookup or explicit coordinates with an explicit timezone. Timezone is never guessed from bare coordinates in production integrations.

FieldTypeRequiredDescription
datestringRequiredBirth date in YYYY-MM-DD.
timestringRequiredBirth time in 24-hour HH:mm or HH:mm:ss. Use local civil time at birthplace.
city / place / city_idstringRequired unless coordinates usedTrusted city lookup. Use city_id when you need deterministic lookup across requests.
latnumberRequired with lon + tzLatitude in decimal degrees. South is negative.
lonnumberRequired with lat + tzLongitude in decimal degrees. West is negative.
tzstringRequired with coordinatesIANA timezone such as Asia/Kolkata. Avoid abbreviations like IST.
langstringOptionalLanguage code for display text. Default is en.

City lookup input

Use a trusted city name when the birthplace is in the directory.

json
{ "date": "1990-08-15", "time": "10:30", "city": "Kolkata" }

Coordinate input

Use decimal-degree coordinates plus an explicit IANA timezone.

json
{ "date": "1990-08-15", "time": "10:30", "lat": 22.5726, "lon": 88.3639, "tz": "Asia/Kolkata" }

Response Envelope

Successful responses use a standard JSON envelope. Clients should read from data and use meta for diagnostics, caching, and support.

FieldTypeDescription
dataobjectEndpoint-specific result.
meta.api_versionstringAPI version. Current version is v1.
meta.servicestringhoroscope.
meta.computed_atstringISO timestamp when response was generated.
meta.data_sourcestringlive, cache, or fallback.
meta.cache_age_secondsnumberAge of cached result. Zero for fresh compute.
meta.calculationobjectCalculation conventions such as zodiac, ayanamsa, house system, and node type.
dev_notesarrayOptional developer notes, warnings, deprecation notices, or degraded-mode details.

Error Codes

Error responses always include a machine-readable error, human-readable message, and docs_url.

json
{
  "error": "plan_required",
  "message": "This Horoscope API endpoint requires a paid plan.",
  "docs_url": "https://platform.devdarsha.com/horoscope-documentation#errors"
}
HTTPerrorMeaningFix
400invalid_birth_dataMissing or malformed date/time/location.Validate against the Birth Input rules.
400invalid_dateDate is malformed or outside supported range.Use YYYY-MM-DD.
400invalid_timezoneTimezone is missing or not an IANA timezone.Use values such as Asia/Kolkata.
400unknown_placeCity/place lookup failed.Use city_id or explicit lat/lon/tz.
400invalid_signRashifal sign slug is not supported.Use stable rashi slugs from the signs table.
400invalid_periodRashifal period is not supported.Use daily, weekly, or monthly.
400unsupported_vargaRequested divisional chart is outside v1 scope.Use D1 or D9.
401missing_api_keyNo API key supplied.Add x-api-key.
401invalid_api_keyKey is invalid, expired, or revoked.Rotate the key.
403plan_requiredEndpoint is not available on active plan.Upgrade to Topaz or higher.
429rate_limitedPer-minute limit reached.Back off using Retry-After.
429quota_exceededBilling-period quota exhausted.Wait for reset or upgrade.
500internal_errorUnexpected server error.Retry safely and include X-Request-ID in support.
503service_unavailableEngine or dependency unavailable.Retry with exponential backoff.

Signs & Periods

For stable integrations, use Sanskrit rashi slugs. Display names can be translated in your UI.

SlugSanskrit/Hindi nameEnglish equivalent
meshaMeshaAries
vrishabhaVrishabhaTaurus
mithunaMithunaGemini
karkaKarkaCancer
simhaSimhaLeo
kanyaKanyaVirgo
tulaTulaLibra
vrischikaVrischikaScorpio
dhanuDhanuSagittarius
makaraMakaraCapricorn
kumbhaKumbhaAquarius
meenaMeenaPisces
daily weekly monthly

Localization

Use lang for display text where the endpoint supports localized output. Numeric positions, dates, rashi IDs, and machine-readable keys remain stable across languages.

Field typeLocalization behavior
Machine keysStable English snake_case, never translated.
Display namesMay be localized, e.g. rashi, nakshatra, graha display labels.
Interpretation textLocalized where supported by account and endpoint.
Dates/timesReturned in documented formats. Do not infer locale-specific parsing from display text.

Calculation Conventions

  • Vedic sidereal zodiac with Lahiri / Chitrapaksha ayanamsa.
  • Whole-sign houses for chart house mapping.
  • True nodes for Rahu/Ketu unless a future version explicitly documents otherwise.
  • Divisional chart v1 scope is D1 and D9.
  • Vimshottari Dasha is derived from the natal Moon nakshatra.
  • Horoscope computation is deterministic and rule-based.
  • Natal prediction text is deterministic phrase-bank/rule output, not LLM compute.

Versioning & Sunset Policy

The current Horoscope API version is v1. All routes are prefixed /v1/. We use URI versioning — breaking changes use a new prefix such as /v2/, never a header toggle. Legacy /v1/horoscope/* routes remain compatibility routes, not the preferred route for new integrations.

  • Current: https://horoscope.devdarsha.com/v1/*.
  • Legacy-compatible: https://panchang.devdarsha.com/v1/horoscope/*.
  • Deprecation: Announce migration guidance before removing compatibility routes.
  • Client rule: key application logic off stable fields, not prose text.

Rate Limits

Rate limits are enforced per API key and plan. Exact limits are displayed in the dashboard and echoed by rate-limit headers.

Plan familyAccessRate-limit behavior
FreeRashifal + KundliStrict test-tier limit. No overage.
TopazAll v1 endpointsProduction starter limit.
Ruby / Diamond / Eclipse / Zenith / InfinityAll v1 endpointsHigher limits, support, SLA, and commercial terms.

On 429, the response includes Retry-After. Do not retry immediately in a tight loop. To check live consumption from your app, call GET /v1/usage.

Response Headers

HeaderDescription
X-Request-IDUnique request id. Include this in support tickets and logs.
X-Quota-CostNumber of quota units charged for the call.
X-Data-Sourcelive, cache, or fallback.
X-Cache-AgeCache age in seconds.
X-RateLimit-LimitPer-minute request limit.
X-RateLimit-RemainingRequests remaining in the active rate window.
X-RateLimit-ResetUnix timestamp when the active window resets.
Retry-AfterSeconds to wait before retrying after 429.
X-Degradedtrue when serving from degraded or fallback mode.
X-Degraded-ReasonShort degraded-mode reason slug.
Cache-ControlAuthenticated responses are private and not stored by shared caches.

Horoscope Glossary

A quick reference for the Jyotish terms used throughout this API and its responses.

TermMeaning
RashiSidereal zodiac sign. Used for Moon sign, Sun sign, lagna sign, and Rashifal signs.
LagnaAscendant; the rising sign at birth. It anchors house calculation.
GrahaPlanetary factor used in Jyotish, including Surya, Chandra, Mangal, Budha, Guru, Shukra, Shani, Rahu, and Ketu.
NakshatraOne of 27 lunar mansions. The Moon's nakshatra is central to Dasha calculation.
PadaQuarter division of a nakshatra.
Bhava / HouseChart house representing a life area. v1 uses whole-sign houses.
D1 / Rashi chartMain natal chart.
D9 / NavamsaDivisional chart often used for deeper strength and marriage analysis.
DashaPlanetary period system. v1 documents Vimshottari Dasha.
Maha DashaMajor Dasha period.
AntardashaSub-period inside a Maha Dasha.
ManglikRule-based check involving Mars placement in specific houses.
Kaal SarpPattern check involving planetary placement relative to Rahu-Ketu axis.
Sade SatiSaturn transit period around natal Moon sign.
AshtakootEight-factor Gun Milan compatibility scoring system.
Support requests. Email [email protected] or use the Feedback form. For debugging, include X-Request-ID. For account or billing questions, open your Dashboard.