Overview
Numerology API returns complete numerology data — core name-and-date profiles, name-only numbers, and personal cycle numbers — for any name and date of birth. It computes both the Western letter systems (Pythagorean and Chaldean) and the Ank Jyotish date-number layer (Moolank, Bhagyank, and ruling planet) from a single request.
Rule of thumb: compute endpoints under /v1/numerology/... use POST. Public read-only endpoints use GET — including 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.
Numerology output is computed and reproducible for the same input — there is no LLM in the calculation path. The engine never assumes a system: you request Pythagorean, Chaldean, or both, and the Ank Jyotish date layer is derived alongside.
New to numerology terminology? Jump to the Glossary for plain-language definitions of every term used in API responses — moolank, bhagyank, life path, expression, soul urge, and more.
Code Examples
All examples below call the Core Profile endpoint for Aarav Sharma, born 1990-07-15. Swap YOUR_API_KEY, the name, and date to match your use case.
Get Started in 4 Steps
Go from signup to production in a few minutes.
Sign up free - no credit card needed. Your key is ready instantly.
Pass system or systems — Pythagorean, Chaldean, or both.
Provide a romanized full_name and a date_of_birth.
Read data.results, integrate into your app, upgrade as you scale.
curl -X POST "https://panchang.devdarsha.com/v1/numerology/core" \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"full_name":"Aarav Sharma","date_of_birth":"1990-07-15","systems":["pythagorean","chaldean"]}'// Use header auth - never put api_key in client-side code
const response = await fetch("https://panchang.devdarsha.com/v1/numerology/core", {
method: "POST",
headers: {
"x-api-key": "YOUR_API_KEY",
"Content-Type": "application/json"
},
body: JSON.stringify({
full_name: "Aarav Sharma",
date_of_birth: "1990-07-15",
systems: ["pythagorean", "chaldean"]
})
});
const data = await response.json();
console.log(data.data.results.pythagorean.expression_number); // 4
console.log(data.data.date_numbers.life_path_number); // 5
console.log(data.data.ank_jyotish.moolank.number); // 6import requests
response = requests.post(
"https://panchang.devdarsha.com/v1/numerology/core",
headers={"x-api-key": "YOUR_API_KEY"},
json={"full_name": "Aarav Sharma", "date_of_birth": "1990-07-15",
"systems": ["pythagorean", "chaldean"]}
)
data = response.json()
print(data["data"]["results"]["pythagorean"]["expression_number"]) # 4
print(data["data"]["date_numbers"]["life_path_number"]) # 5
print(data["data"]["ank_jyotish"]["moolank"]["number"]) # 6Sample Response (condensed)
Here is a representative slice of a real Core Profile response for Aarav Sharma, born 1990-07-15:
{
"data": {
"input": { "full_name": "Aarav Sharma", "date_of_birth": "1990-07-15" },
"date_numbers": { "moolank": 6, "bhagyank": 5, "life_path_number": 5 },
"results": {
"pythagorean": { "name_number": 4, "expression_number": 4, "soul_urge_number": 5 },
"chaldean": { "name_number": 9, "expression_number": 9, "soul_urge_number": 5 }
},
"ank_jyotish": { "moolank": { "number": 6, "planet": { "english_name": "Venus" } } }
},
"meta": {
"api_version": "v1",
"service": "numerology",
"data_source": "computed",
"calculation_systems": ["pythagorean", "chaldean"],
"quota_cost_units": 2
}
}Attached JSON PayloadExpand to inspect the full computed response
{
"data": {
"input": {
"full_name": "Aarav Sharma",
"date_of_birth": "1990-07-15",
"systems": ["pythagorean", "chaldean"]
},
"date_numbers": {
"birthday_number": 6,
"birth_number": 6,
"moolank": 6,
"life_path_number": 5,
"bhagyank": 5,
"attitude_number": 22
},
"results": {
"pythagorean": {
"system": "pythagorean",
"normalized_name": "AARAV SHARMA",
"name_number": 4,
"expression_number": 4,
"soul_urge_number": 5,
"personality_number": 8,
"maturity_number": 9
},
"chaldean": {
"system": "chaldean",
"normalized_name": "AARAV SHARMA",
"name_number": 9,
"expression_number": 9,
"soul_urge_number": 5,
"personality_number": 22,
"maturity_number": 5
}
},
"ank_jyotish": {
"system": "ank_jyotish",
"moolank": { "number": 6, "planet": { "english_name": "Venus" } },
"bhagyank": { "number": 5 }
}
},
"meta": {
"api_version": "v1",
"service": "numerology",
"data_source": "computed",
"calculation_systems": ["pythagorean", "chaldean"],
"life_path_method": "full_sum",
"preserve_masters": true,
"master_numbers": [11, 22, 33],
"quota_cost_units": 2
},
"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
- Sign up — free, no credit card.
- Open the Dashboard and create a key. You can name, rotate, and revoke keys from there.
- 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.
POST https://panchang.devdarsha.com/v1/numerology/core x-api-key: YOUR_API_KEY
Auth failure reference
| Auth case | Expected response | Fix |
|---|---|---|
| Missing key | 401 unauthorized | Add x-api-key. |
| Invalid or revoked key | 401 unauthorized | Create or rotate a key in the dashboard. |
| Endpoint above active plan | 403 plan_required | Upgrade to the tier that includes the endpoint. |
| Quota or rate exhausted | 429 rate_limited | Wait for reset or upgrade the plan. |
Base URL
Numerology API is served through the DevDarsha API gateway. Send requests to the /v1/numerology/* path on the gateway host.
https://panchang.devdarsha.com/v1/numerology
Numerology endpoints are namespaced under /v1/numerology/*. All eight endpoints — /core, /name, /cycles, /compatibility, /lo-shu, /report, /name-correction, and /bulk — are live and documented below.
Quick Start
For all /v1/numerology/... endpoints, send a JSON body with your request fields and authenticate using x-api-key. Start with the Core Profile endpoint because it verifies name normalization, date parsing, system selection, and the response envelope in one call.
Compute a core profile
The canonical request when you have a full name and a date of birth.
curl -X POST "https://panchang.devdarsha.com/v1/numerology/core" \
-H "x-api-key: YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"full_name":"Aarav Sharma","date_of_birth":"1990-07-15","systems":["pythagorean","chaldean"]}'Name-only numbers
Best when you only need the letter-based numbers without a date layer.
curl -X POST "https://panchang.devdarsha.com/v1/numerology/name" \
-H "x-api-key: YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"full_name":"Aarav Sharma","systems":["pythagorean","chaldean"]}'Plans & Feature Gates
Numerology API uses a graduated public plan ladder: free, starter, plus, pro, and scale. Each tier unlocks more features. Plan entitlements are product-isolated: a paid plan in Panchang or Horoscope grants no Numerology access. Full pricing lives on pricing.
Access gates
- Free:
/coreonly (Pythagorean basic + Ank Jyotish date numbers). For evaluation, not production. - Starter and above: adds
/name,/cycles,/report, and full Chaldean output. - Plus: adds
/lo-shu. - Pro: adds
/compatibilityand/name-correction. - Scale: adds
/bulk(batch processing).
Endpoint access
| Plan | Endpoint access | Typical use |
|---|---|---|
| Free | /core (Pythagorean basic + Ank Jyotish date numbers) | Testing, demos, basic name/date tools |
| Starter+ | Adds /name, /cycles, /report, and full Chaldean output | Live apps, personal-year features, structured reports |
| Plus | Adds /lo-shu | Lo Shu grid tools |
| Pro | Adds /compatibility and /name-correction | Matchmaking, name-analysis tools |
| Scale | Adds /bulk | Batch processing, enterprise scope |
Quota cost per call
Each request charges 1 quota unit per system computed:
- A dual-system
/coreor/namerequest charges 2 requests. - The actual charge is echoed in both
X-Quota-Costandmeta.quota_cost_units. GET /healthandGET /statushave no quota cost.
If you call an endpoint or feature that is not on your plan, the response is 403 plan_required. See Error Codes.
/bulk is live on the Scale tier — email [email protected].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)
| Field | Type | Required | Description |
|---|---|---|---|
email | string | Required | Valid email address. Becomes the account login. |
password | string | Required | Minimum 8 characters. |
name | string | Optional | Display name shown in dashboard and invoices. |
plan | string | Optional | free (default), starter, plus, pro, or scale. |
Example Request
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
{
"data": {
"account": { "id": "acc_...", "email": "[email protected]", "plan": "free" },
"api_key": "sk_live_..."
},
"meta": { "version": "v1", "computed_at": "2026-07-01T10:00:00Z" }
}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.
API Key Management
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
| Operation | Method & path | Description |
|---|---|---|
| Create | POST /v1/keys | Create a new key with an optional name and scope. |
| List | POST /v1/keys/list | List your keys (masked previews only — never the full secret). |
| Rotate | POST /v1/keys/rotate | Issue a replacement key for an existing key id. Old key keeps working for 24 h. |
| Revoke | POST /v1/keys/revoke | Permanently invalidate a key. Cannot be undone. |
Create a key
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)
{
"data": {
"key_id": "key_abc123",
"api_key": "sk_live_...",
"name": "production-server",
"scope": "read",
"created_at": "2026-07-01T10:00:00Z"
},
"meta": { "version": "v1" }
}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.
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 "https://panchang.devdarsha.com/v1/usage" \ -H "x-api-key: YOUR_API_KEY"
Response
{
"data": {
"plan": "starter",
"period_start": "2026-07-01T00:00:00Z",
"period_end": "2026-08-01T00:00:00Z",
"calls_used": 320,
"calls_included": 5000,
"calls_remaining": 4680
},
"meta": { "version": "v1", "computed_at": "2026-07-02T10:00:00Z" }
}Core Profile
Returns the full core numerology profile: per-system name numbers under data.results, the shared date layer under data.date_numbers, and the Ank Jyotish layer under data.ank_jyotish. This is the recommended first integration test. Not familiar with these terms? See the Glossary.
Request Body (JSON)
Uses the common Systems & Input fields. Add include_calculations: true for a step-by-step trace under data.details.
| Field | Type | Required | Description |
|---|---|---|---|
full_name | string | Required | Romanized full name. Alias: name. |
date_of_birth | string | Required | Gregorian date in YYYY-MM-DD. |
system / systems | string / string[] | Required | One or both of pythagorean, chaldean. |
include_calculations | boolean | Optional | Adds a data.details calculation trace. |
Response Fields
| Field | Type | Description |
|---|---|---|
data.input | object | Normalized echo of the request. |
data.date_numbers | object | Shared date layer: birthday, moolank, life path, bhagyank, attitude. |
data.results.<system> | object | Per-system name numbers: name, expression, soul urge, personality, maturity. |
data.ank_jyotish | object | Moolank and Bhagyank with ruling planet. |
data.details | object | Present only when include_calculations is true. |
Name Numbers Starter+
Returns name-only numerology numbers without the date layer. For historical compatibility this endpoint returns its per-system output under data.systems (not data.results).
Example Request
{
"full_name": "Aarav Sharma",
"systems": ["pythagorean", "chaldean"]
}/name returns data.systems, while /core returns data.results. This difference is intentional and stable in v1.Personal Cycles Starter+
Returns personal year, month, and day cycle numbers as flat data.personal_*_number fields for a given date of birth and reference date.
Example Request
{
"date_of_birth": "1990-07-15",
"date": "2026-07-02"
}Response Fields
| Field | Description |
|---|---|
data.personal_year_number | Personal year for the reference date. |
data.personal_month_number | Personal month for the reference date. |
data.personal_day_number | Personal day for the reference date. |
/cycles reduces master numbers (11, 22, 33) by default. Pass cycle_preserve_masters: true to keep them.Compatibility Pro
Returns a deterministic numerology compatibility read between two profiles. Output is computed from name and date numbers with pair-level evidence — it is not LLM output. Requires the Pro plan or higher; under-tier keys receive 402 upgrade_required.
Example Request
{
"person_a": { "full_name": "Aarav Sharma", "date_of_birth": "1990-08-15" },
"person_b": { "full_name": "Diya Kapoor", "date_of_birth": "1992-11-30" },
"systems": ["pythagorean", "chaldean"],
"lang": "en"
}Response Fields
| Field | Description |
|---|---|
data.compatibility.overall | Overall score (0–100) with band (high/moderate/low), label and note. |
data.compatibility.emotional | Emotional component with score, band and pair-level evidence. |
data.compatibility.practical | Practical component with score, band and pair-level evidence. |
data.compatibility.communication | Communication component with per-system pair evidence. |
data.compatibility.challenge_areas | Challenge summary with label and note. |
person_a and person_b require full_name and date_of_birth, and exactly one of system or systems must be provided. Set lang to hi for Hindi labels and notes. Output is byte-identical across repeated calls.Extended Endpoints
These endpoints are live and plan-gated. Each returns the standard { data, meta, dev_notes } envelope and is fully deterministic (no LLM). Requests below the required plan return 403 plan_required.
| Endpoint | Plan | Purpose |
|---|---|---|
POST /v1/numerology/lo-shu | Plus | Lo Shu grid from date-of-birth digits (0 ignored): per-cell counts, present/missing/repeated numbers, and arrows/planes of strength and weakness. Response under data.lo_shu. |
POST /v1/numerology/report | Starter+ | Structured JSON report aggregating core, name, cycles, Lo Shu, and optional compatibility. Sections are plan-gated; plan-omitted sections are listed in meta.omitted_sections. Response under data.sections. |
POST /v1/numerology/name-correction | Pro | Deterministic name-number analysis with calculated spelling-variant suggestions toward a target_number (1–9 or master) or target_category. Response under data.name_correction. |
POST /v1/numerology/bulk | Scale | Batch of up to 50 items, each { op, ...params } where op is one of core, name, cycles, lo-shu, report, name-correction. Per-item success/error objects under data.results; quota cost equals the item count. |
Health Check
Use this endpoint for uptime monitors and deployment smoke tests. No authentication required and no quota cost.
{ "ok": true, "service": "numerology", "status": "healthy" }Status
Status returns service availability and degraded-mode information for dashboards and support tooling. No authentication required.
{
"data": {
"service": "numerology",
"status": "operational",
"degraded": false
},
"meta": { "api_version": "v1" }
}Feedback Endpoint
Submit feedback about the API. Does not require authentication.
| Field | Type | Required | Description |
|---|---|---|---|
name | string | Required | Your name |
email | string | Required | Your email |
plan | string | Required | free | starter | plus | pro | scale | none |
message | string | Required | Feedback text (10–2000 chars) |
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)
| Field | Type | Required | Description |
|---|---|---|---|
name | string | Required | Your name (2–120 chars). |
email | string | Required | Reply-to email. |
subject | string | Optional | Short topic line. |
message | string | Required | Body of the enquiry (10–4000 chars). |
topic | string | Optional | sales, support, partnership, or other. |
Responds with 202 Accepted on success. Replies usually arrive within 1 business day at the email you supplied.
Billing & Webhooks
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
| Operation | Method & path | Description |
|---|---|---|
| Available plans | GET /v1/billing/plans?product=numerology | Numerology plans with prices, currency, and per-cycle availability. |
| Create order | POST /v1/billing/razorpay/order | One-time Razorpay order (pass "product":"numerology"). Returns razorpay_order_id + amount. |
| Verify payment | POST /v1/billing/razorpay/verify | Confirm a completed Razorpay payment and receive the upgraded API key. |
| Create subscription | POST /v1/billing/razorpay/subscription | Start a recurring Numerology subscription. Returns the subscription id + short_url. |
| Overview | GET /v1/billing/overview?product=numerology | Current plan, payment state, renewal date, cycle, currency, and history. |
| Receipts | GET /v1/billing/invoices?product=numerology | Product-scoped payment receipts. See the GST note in the Panchang docs. |
| Change / cancel | POST /v1/billing/subscription/change · /subscription/cancel | Upgrade/downgrade, or stop auto-renewal (access kept to period end). |
| Webhooks | POST /v1/billing/razorpay/webhook | Receives 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 Numerology refund downgrades only the Numerology entitlement.
| Event | When |
|---|---|
payment.captured | A one-time payment was captured; the plan upgrade is applied. |
subscription.authenticated | A subscription mandate was authorized. |
subscription.charged | A recurring charge succeeded; entitlement is extended. |
subscription.halted / subscription.cancelled | Retries exhausted, or the subscription was cancelled. |
refund.created / refund.processed | A refund was issued; the refunded product is downgraded. |
Systems & Input
Numerology API never assumes a system. You must pass either system (a single value) or systems (an array). Supported systems are pythagorean and chaldean.
| Field | Type | Required | Description |
|---|---|---|---|
full_name | string | Required | Romanized full name. Alias: name. v1 accepts Latin/romanized input only. |
date_of_birth | string | Required | Gregorian date in YYYY-MM-DD. |
system | string | One of system / systems | A single system: pythagorean or chaldean. Mutually exclusive with systems. |
systems | string[] | One of system / systems | One or more supported systems. Duplicates collapse. |
include_calculations | boolean | Optional | When true, adds a data.details calculation trace without changing data.results. |
system or systems return 400 invalid_system. Non-Latin name input returns 400 unsupported_script in v1.Response Envelope
Successful responses use a standard JSON envelope. Clients should read from data and use meta for diagnostics, quota, and support.
| Field | Type | Description |
|---|---|---|
data | object | Endpoint-specific result. Note the per-route shape: /core → data.results, /name → data.systems, /cycles → flat data.personal_*_number. |
meta.api_version | string | API version. Current version is v1. |
meta.service | string | numerology. |
meta.data_source | string | computed or cache. |
meta.calculation_systems | array | Systems computed for this request. |
meta.life_path_method | string | Life-path summation method, e.g. full_sum. |
meta.preserve_masters | boolean | Whether master numbers were preserved for this response. |
meta.master_numbers | array | Master numbers recognized, [11, 22, 33]. |
meta.quota_cost_units | number | Quota units charged (one per system). |
dev_notes | array | Optional developer notes, warnings, or deprecation notices. |
Error Codes
Error responses always include a machine-readable error, human-readable message, and docs_url.
{
"error": "invalid_system",
"message": "Provide system or systems (pythagorean or chaldean).",
"docs_url": "https://platform.devdarsha.com/numerology-documentation#errors"
}| HTTP | error | Meaning | Fix |
|---|---|---|---|
| 400 | invalid_request | Request body is not an object. | Send a JSON object body. |
| 400 | invalid_name | full_name / name is missing. | Provide a romanized full name. |
| 400 | invalid_date_of_birth | date_of_birth is missing or invalid. | Use YYYY-MM-DD. |
| 400 | invalid_system | system / systems is missing or unsupported. | Use pythagorean and/or chaldean. |
| 400 | unsupported_script | Name is not Latin/romanized. | Romanize the name for v1. |
| 401 | unauthorized | Missing or invalid API key. | Add or rotate x-api-key. |
| 403 | plan_required | Plan is below the endpoint minimum. | Upgrade to the required tier. |
| 429 | rate_limited | Plan rate/quota limit exceeded. | Back off using Retry-After, or upgrade. |
| 402 | upgrade_required | An explicitly requested feature or report section is above the current plan. | Upgrade to the required tier, or omit the restricted section. |
Master Numbers
The Numerology API recognizes the master numbers 11, 22, and 33. Handling differs by endpoint so results match the convention developers expect for each calculation:
- Core and Name: master numbers are preserved by default in name and birth calculations.
- Cycles: master numbers are reduced by default. Pass
cycle_preserve_masters: trueto keep them. meta.preserve_mastersreports which behavior applied to the response.
/core response.Calculation Conventions
- Two Western letter systems: Pythagorean and Chaldean. The system is never assumed — you must request it.
- The Ank Jyotish layer derives Moolank and Bhagyank with a ruling planet.
- Life path uses full-sum reduction (
life_path_method: "full_sum"). - Master numbers
11 / 22 / 33are preserved in core/name and reduced in cycles by default. - v1 name input is Latin/romanized only.
- Numerology computation is deterministic and rule-based — there is no LLM in the calculation path.
Versioning & Compatibility
The current Numerology API version is v1. All routes are prefixed /v1/. We use URI versioning — breaking changes will use a new prefix such as /v2/, never a header toggle.
- Current:
https://panchang.devdarsha.com/v1/numerology/*. - Stable shapes: the per-route response paths (
data.results,data.systems, flat cycle fields) are part of the v1 contract. - 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 shown in the dashboard and echoed by rate-limit headers.
| Plan | Access | Rate-limit behavior |
|---|---|---|
| Free | /core | Strict test-tier limit. |
| Starter | /core, /name, /cycles, /report | Production starter limit. |
| Plus / Pro / Scale | Adds /lo-shu (Plus), /compatibility + /name-correction (Pro), /bulk (Scale) | Higher limits 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
| Header | Description |
|---|---|
X-Request-ID | Unique request id. Include this in support tickets and logs. |
X-Quota-Cost | Number of quota units charged for the call (one per system). |
X-Data-Source | computed or cache. |
X-RateLimit-Limit | Per-minute request limit. |
X-RateLimit-Remaining | Requests remaining in the active rate window. |
Retry-After | Seconds to wait before retrying after 429. |
Cache-Control | Authenticated responses are private and not stored by shared caches. |
Numerology Glossary
A quick reference for the numerology terms used throughout this API and its responses.
| Term | Meaning |
|---|---|
| Pythagorean | Western letter-to-number system mapping A–Z to values 1–9. |
| Chaldean | Older letter-to-number system mapping letters to values 1–8. |
| Moolank | Root/birthday number derived from the day of birth (Ank Jyotish). |
| Bhagyank | Destiny number derived from the full date of birth (Ank Jyotish). |
| Life Path Number | Reduced full-sum of the date of birth. |
| Expression / Destiny Number | Number derived from all letters of the full name. |
| Soul Urge / Heart's Desire | Number derived from the vowels of the name. |
| Personality Number | Number derived from the consonants of the name. |
| Maturity Number | Combination of life path and expression numbers. |
| Master Numbers | The numbers 11, 22, and 33, which are not reduced in core/name calculations. |
| Personal Year / Month / Day | Cyclic numbers describing a period relative to the date of birth. |