AstroWay/api v2.325.2 · ko
모든 시스템 정상 작동 중

// product · release notes

Changelog what is new

Only changes that affect integrator code: new endpoints, SDK releases, /openapi.json schema changes, credit price changes, deprecations, breaking changes. Newest first.

Latest · v2.325.2 Endpoints · 865 CI tests · 888 API contract · v1 stable · 12-mo deprecation

2026-05-25 · Jaimini extras (+5 endpoints)

Five new endpoints for deeper Jaimini-school analysis - previously deferred, now live in prod.

  • POST /vedic/yogas/jaimini/karaka-yoga: scans all 8 chara karakas (Atmakaraka..Darakaraka) with strength scoring for placement in kendra / trine / dusthana and manifestation hint per karaka.
  • POST /vedic/yogas/jaimini/karakamsa: full 12-house projection from Atmakaraka’s sign in D9 Navamsha. Each house carries canonical significations (iṣṭa devata, moksha, spiritual path) per Sanjay Rath’s commentary.
  • POST /vedic/yogas/jaimini/shubha-graha: functional nature of every 7 visible grahas (yogakaraka / functional-benefic / neutral / functional-malefic / maraka) based on house-lordship from Lagna. Kendradhipati + maraka rules per BPHS A.34.
  • POST /vedic/jaimini/atmakaraka-rotation: timeline of Atmakaraka transitions across the life via 1°/year symbolic progression. Returns age-of-event entries with before/after planet names.
  • POST /vedic/jaimini/argala-analysis: full Argala (2/4/11 primary, 5 secondary, 8 special) + Virodhargala (12/10/3 primary, 9 secondary, 6 special) scan for all 12 houses with net-influence + dominant-over metrics.

All five are Tier 2 (20 credits) except atmakaraka-rotation which is Tier 3 (50 credits) due to the time-series compute. Available on the Vedic Pack add-on.

2026-05-19 · whitelabel accepts inline branding object (15 fields)

The whitelabel field on every /v1/reports/* endpoint (natal, transit-yearly, synastry, business, career, love, money, child, lal-kitab, human-design, tarot, vedic-kundli - 12 endpoints total) now accepts an inline object alongside the legacy boolean. SDK consumers without a whitelabel_configs DB row can brand reports per request.

Terminal window
curl -X POST https://api.astroway.info/v1/reports/natal \
-H "X-Api-Key: aw_live_..." \
-H "Content-Type: application/json" \
-d '{
"chart": {"date":"1990-05-15","time":"14:30:00","timezoneOffset":3,"latitude":50.45,"longitude":30.52,"name":"Test"},
"whitelabel": {
"companyName": "Acme Astrology",
"companyUrl": "https://acme-astro.example.com",
"logoUrl": "https://cdn.example.com/logo.png",
"themeColor": "#ff5500",
"reportName": "My Personal Cosmic Map",
"footerText": "© 2026 Acme Astrology",
"fontPairing": "serif-sans"
}
}'

Output PDF/HTML carries your logo in the header, your title in place of the default, your colors throughout, and your company contact block in the footer.

15 fields (all optional): companyName, companyUrl, companyEmail, companyMobile, companyBio, logoUrl (https + .png/.jpg/.svg/.webp), frontImage, textPrimaryColor / textSecondaryColor / backgroundColor / themeColor / headingColor (each #RGB or #RRGGBB), footerText, fontPairing (serif-sans / sans-serif / serif-only / sans-only / system), reportName.

Backwards compatible. whitelabel: true (reads DB config for the WP-bound user) and whitelabel: false / absent - both unchanged. The field type is now boolean | BrandingObject.

Resolution priority. Inline object merges over the DB config (when the API key is wpUser-bound) or over defaults (for SDK keys with no WP binding). themeColor becomes the rendered primaryColor after applyBrandingPreferences, and fontPairing maps to CSS font-family.

OpenAPI 3.1 spec. BrandingObject is now a separate component in /v1/openapi.json. The TypeScript / Python / PHP SDK codegen will pick it up as a typed BrandingObject on next regeneration.

2026-05-16 · Hosted MCP endpoint live at mcp.astroway.info/mcp

@astroway/mcp now ships in two transport modes. Stdio (the npm package) is unchanged; we’ve added a hosted Streamable HTTP endpoint for zero-install integration with Claude Web (claude.ai in browser), Claude Desktop, Cursor, Cline, and every other MCP-compatible client.

One-click install for Cursor - a cursor://anysphere.cursor-deeplink/mcp/install?... button on the /examples/mcp/ page. Claude Desktop - via + → Add Connector → Custom (no JSON editing).

// JSON option for Cline / Continue / Windsurf
{
"mcpServers": {
"astroway-hosted": {
"url": "https://mcp.astroway.info/mcp",
"headers": {
"Authorization": "Bearer aw_live_..."
}
}
}
}

Same 630-tool catalogue + 12 prompts + 14 resources, same aw_test_* / aw_live_* auth (hosted mode uses an Authorization: Bearer … header instead of an env var), same credit pool. Multi-tenant by design - every request carries its own key, credits charge against that key’s account. X-Astroway-Channel reports mcp-http (hosted) vs mcp (stdio) for adoption tracking.

Why two modes. Stdio (npx @astroway/mcp) stays for Cursor power users / privacy-conscious integrators - key never leaves the machine, no network hops. Hosted unlocks the Claude Web segment (which only supports remote MCP) and zero-install scenarios. Same pattern Stripe / Resend / GitHub MCP ship.

Health endpoint: publicly reachable without auth:

Terminal window
curl https://mcp.astroway.info/health
# {"status":"ok","version":"…","uptime_sec":…,"mcp_protocol_version":"2024-11-05"}

Full docs for both modes - /examples/mcp/.

2026-05-15 · New endpoint GET /v1/auth/keys/me

API key introspection. Pass X-Api-Key, get the full state: plan, credits, status, bound domain, creation timestamp, referrer source. Useful for any SDK consumer (TS / Python / PHP / MCP) - “what’s my key doing right now” without reading the dashboard. Analogous to Stripe /v1/account or GitHub /user.

Terminal window
curl -H "X-Api-Key: aw_live_..." https://api.astroway.info/v1/auth/keys/me
# →
# {
# "key_prefix": "aw_live_4ab...", # first 11 chars; full key is never returned
# "plan": "free",
# "credits_remaining": 9830,
# "credits_total_this_period": 10000,
# "period_end": "2026-06-01T00:00:00.000Z", # calendar month end
# "status": "active", # active | suspended | revoked
# "domain": null, # bound site (wp-plugin keys)
# "domain_bound_at": null,
# "created_at": "2026-04-24T22:03:59.000Z",
# "referrer_source": "direct" # direct | wp_plugin | mcp | sdk | dashboard | other
# }

No auth: 401 MISSING_API_KEY. Invalid key: 401 INVALID_API_KEY.

OpenAPI 3.1 spec. /v1/openapi.json now declares /v1/auth/keys/me. SDK codegen will surface client.auth.keys.me() on the next regeneration.

Backwards compatibility. Existing GET /v1/keys/usage (returns only credits_today + rate-limit) keeps working - it’s a separate endpoint for server-side cron checks. /auth/keys/me returns the full state plus domain-binding metadata for wp-plugin scenarios.

2026-05-14 · /horoscope/* and /interpret/* localisation (20 languages)

POST /v1/horoscope/{daily,weekly,monthly,yearly,compatibility} and POST /v1/interpret/{natal,synastry,transits,element,placement} - 10 endpoints that return interpretation text - now respond in the caller’s language.

Usage:

Terminal window
curl -X POST https://api.astroway.info/v1/horoscope/daily \
-H "X-Api-Key: aw_live_..." \
-H "Accept-Language: hi" \
-H "Content-Type: application/json" \
-d '{"sign": "leo"}'
# → response in हिन्दी

Resolve priority (server-side):

  1. body.language="de" - explicit per-call override (highest priority)
  2. Accept-Language: de, en;q=0.7 - RFC 7231 q-weighted; first code matching an active lang wins
  3. ?lang=de - query param for clients that can’t set headers
  4. Fallback → uk (source language)

Supported languages (20): uk, en, de, pl, es, pt, fr, it, nl, cs, ro, hu, el, tr, ar, hi, ja, ko, vi, id. Unknown codes silently fall through to uk without error.

OpenAPI 3.1 spec. /v1/openapi.json now declares Accept-Language (header) and lang (query) as parameters with an enum of 21 codes on these 10 endpoints. SDK codegens (openapi-typescript, openapi-generator-cli) automatically wire typed .lang('hi') call sites on the next regeneration.

What’s translated: interpretation text fields only (horoscope, interpretation, disclaimer, etc.). Numeric fields (longitude, latitude, score, sign-id, house-id) stay canonical - clients format locally. Matches the segment standard (Vedika, DivineAPI, AstrologyAPI.com).

Scope: 10 endpoints of the interpretation group are localised in this release. Calculation endpoints (/chart, /synastry, /transits, /vedic/*, /human-design/*, /tarot/*, /numerology/*, ~690 others) return numbers and canonical identifiers (name: "Aries", glyph: "♈") unchanged - clients localise those via their own lookup tables. This matches the segment standard.

Backwards compatible. Existing code without Accept-Language / ?lang= / body.language gets uk by default, same as before.

SDK support (@astroway/sdk, astroway, astroway/sdk, @astroway/mcp) adds a lang constructor option - separate releases arrive in the coming weeks via the staging-repo cron applier.

2026-05-09 · Three SDKs launched: TypeScript, Python, PHP

Three official SDKs are live on public registries - wrappers around the same 700+ API endpoints. One OpenAPI 3.1 spec → three language-idiomatic clients.

PackageRegistryVersion
@astroway/sdknpm0.1.0-alpha.1
astrowayPyPI0.1.0a1
astroway/sdkPackagistv0.1.0-alpha.1

What this is for integrators:

  • Type-safe alternative to raw HTTP. Path autocomplete + request/response types in your IDE. Helper methods aw.post('/chart', body=...) or aw.client.POST('/chart', { body }) for TS - instead of hand-rolled fetch / requests / Guzzle.
  • Identical surface across languages. Constructor Astroway({apiKey, baseUrl, authScheme, timeout, retry}) works the same in TS / Python / PHP. If your project is multi-language, less cognitive overhead.
  • Built-in retry on 408/409/429/5xx with exponential backoff + full jitter. Honors Retry-After header. Default 2 retries, configurable via retry={maxRetries: 0}.
  • Stainless-template error hierarchy: same template Stripe / OpenAI / Cloudflare SDKs use. Catch RateLimitError (with retryAfterSeconds), AuthenticationError (rotate key), BadRequestError (validation), ApiError (generic) - in that order.
  • Two auth schemes. Default X-Api-Key: aw_live_... (matches curl/Postman). Or Authorization: Bearer aw_live_... (matches Stripe/OpenAI/Anthropic SDKs) via auth_scheme="bearer" in the constructor.
  • Identification headers, no telemetry. Every request carries User-Agent: astroway-sdk-<lang>/<version> + X-Astroway-Channel: sdk-<lang>. No phone-home, no opt-in/opt-out toggle.
  • OIDC + SLSA L3 provenance (TS + Python). Sigstore-attested record that the package was built from a specific commit in the public repo. No long-lived tokens in CI.
  • MIT, full source open on github.com/astroway/{astroway-typescript,astroway-python,astroway-php}.

Quick start:

// TypeScript / Node 20+
import { Astroway } from '@astroway/sdk';
const aw = new Astroway({ apiKey: process.env.ASTROWAY_API_KEY! });
const { data } = await aw.client.POST('/chart', { body: { date: '1990-07-14', /* ... */ } });
# Python 3.9+
from astroway import Astroway
aw = Astroway(api_key=os.environ['ASTROWAY_API_KEY'])
chart = aw.post('/chart', body={'date': '1990-07-14', ...})
// PHP 8.1+
use Astroway\Astroway;
$aw = new Astroway(['apiKey' => getenv('ASTROWAY_API_KEY')]);
$chart = $aw->post('/chart', body: ['date' => '1990-07-14', /* ... */]);

Python also offers AsyncAstroway with identical surface for async/await workloads. PHP is sync-only (no unified async story in the language). TS uses native promises through openapi-fetch.

This is an alpha - the public API may shift before 0.1.0 proper based on integrator feedback. Pin the exact version (@astroway/sdk@0.1.0-alpha.1) during the alpha window - or latest alpha at install time.

@astroway/mcp - the MCP server for Claude / Cursor / GPT - keeps living alongside as a separate product.

2026-05-07 · MCP server refresh

@astroway/mcp got an update - it now auto-generates the tool catalog from the live /openapi.json instead of hand-curated routes. Everything that landed in the API over the past weeks (compat suite, reports endpoints) is immediately visible in Claude / Cursor / GPT.

For integrators:

  • Tool catalog reflects live API state
  • Path-template endpoints (/v1/.../id) are skipped for now: the description parser in MCP clients gets confused otherwise
  • Cost annotations in tool descriptions: Claude can see the credit cost of each call before execution
  • OIDC trusted publishing + SLSA L3 provenance: the package is attested to a specific commit in the public repo astroway/astroway-mcp

Install:

Terminal window
npm install -g @astroway/mcp

Or through Claude Desktop / Cursor MCP config:

{
"mcpServers": {
"astroway": {
"command": "npx",
"args": ["-y", "@astroway/mcp"]
}
}
}

Source: public astroway/astroway-mcp (MIT).

2026-04-11 · Cross-system compatibility (+10 endpoints)

A new group /v1/compat/* - composite compatibility score across western, vedic, chinese, numerology, tarot, and human design. Six traditions combine into a unified metric for UX indicators in multi-tradition astrology apps.

EndpointWhat it computes
/compat/full6-system unified compatibility 0–100
/compat/astro-vedicWestern synastry × Vedic Ashtakoot
/compat/astro-chineseWestern × Bazi compatibility
/compat/astro-numerologySynastry-aspected numerology base
/compat/astro-tarotCross-archetype reading
/compat/astro-hdSynastry × HD electromagnetic / dominant gates
/forecast/multi-systemUnified yearly forecast across 6 systems
/forecast/yearly-fusionAnnual highlights weighted by system
/profile/spiritual-pathPath archetype from Pisces + Neptune + Vedic Moksha houses
/profile/multi-archetypeHero archetype detection across 5 systems

Each endpoint returns JSON with a disclaimer field - this is AstroWay’s scoring methodology, not a clinical or legal statement. Tier 4 (100 credits) per call - heavy cross-system compute.

Manifest in /openapi.json updated - SDKs / MCP pick it up automatically.

2026-03-28 · Reports + Webhooks (+17 endpoints)

Two new groups in production.

/v1/reports/* (12 endpoints) - HTML / PDF report generation via Puppeteer. Render runs server-side in api-calc, returning a signed download URL (TTL 24h).

CategorySlugCost
Natal/reports/natal/*Tier 7 (5000 cr)
Synastry/reports/synastryTier 7
Vedic Kundli/reports/vedic-kundliTier 7
Lal Kitab/reports/lal-kitabTier 7
Human Design/reports/human-designTier 7
Tarot/reports/tarotTier 7
Career / Love / Money / Child / Business/reports/*Tier 7

/v1/webhooks/* (5 endpoints) - subscription management, event delivery, HMAC signing. Subscribe to events credits.low, key.created, usage.threshold, error.spike.

Terminal window
curl -X POST https://api.astroway.info/v1/webhooks \
-H "Authorization: Bearer aw_live_..." \
-d '{"url": "https://...", "events": ["credits.low"], "secret": "wh_secret_..."}'

Each delivery carries X-Astroway-Signature: sha256=<hmac> - verify with the secret. Retry policy: exponential backoff on 5xx, up to 5 attempts within 24 hours.

2026-03-14 · Reference endpoints: public, no key, no credits

14 /v1/reference/* endpoints (signs, planets, houses, aspects, elements, modalities, polarities, dignities, decans, nakshatras, lots, asteroids, zodiac-systems, glyphs) are now callable without X-Api-Key and cost 0 credits. These are canonical lookup tables - gating them through the billing channel was a design accident.

What this means for integrators:

  • No key required: external MCP agents / SDKs / preview pages can pull reference data without authentication. The same IP rate limit as /public (30 req/hr) still applies.
  • Cost manifest updated: 14 paths moved from TIER_HALF (5 credits) to 0. If your astroway_cost_estimate budget planner referenced these paths, new calls do not touch your quota anymore.
  • Existing clients that send a key keep working unchanged. X-Api-Key is ignored for /reference/* (we do not error on the extra header).

Backward-compatible: 200 responses and the JSON schema are unchanged; only the auth requirement is dropped.

2026-03-07 · Founders’ Lifetime Deal: $299 → Indie tier for life

Launching Founders’ Lifetime Deal - a limited relaunch project. First 100 customers pay $299 one-time and get the Indie tier (50,000 credits/mo) forever, no recurring charges, locked-in price.

What this means for integrators:

  • Standard Indie = $5/mo. Founders’ = $299 one-time → breakeven at year 5, infinite ROI thereafter. If your project will be in astrology / numerology / Tarot space for at least 5 years, the Founders’ Deal pays off.
  • Webhook payload for SKU astroway-api-indie-lifetime: api_keys row gets plan='indie', credits_limit=50000, is_lifetime=1, expires_at=NULL. No monthly charges, no renewal webhooks.
  • DB schema: added columns is_lifetime TINYINT(1) to api_keys and shared_user_quotas. ApiKeyInfo TS type extended. Existing keys = is_lifetime=0 (no behavior change).
  • WP REST endpoint GET /wp-json/astroway/v1/founders-count returns {sold, total: 100, remaining, available} - consumed by site/components/founders/FoundersCounter.astro for the realtime counter on /founders/ landing.
  • Auto-deactivation at 100/100: WC product _stock_status flips to outofstock via the woocommerce_order_status_completed hook. After that, the checkout link redirects to /pricing/#indie (standard Indie $5/mo).

Live pages: /founders/ (uk) + /en/founders/ (en). Sidebar entry “Founders’ Lifetime Deal” with 🚀 100 only badge.

WP product: astroway-api-indie-lifetime, ID 30618, $299 (13,225 UAH), stock=100. Checkout: astroway.info/checkout/?add-to-cart=30618.

2026-03-05 · GDPR / EU residency landing page + Pro card EU badge

Launching /en/eu/ - a dedicated page for EU developers building GDPR-sensitive products. What integrators need to know:

  • Pro $59 = EU-residency by default (Hetzner Nuremberg, EU-only data flow, anonymized analytics - Plausible cookie-free on roadmap).
  • Standard DPA is not Enterprise-gated: signed via email on the standard Pro tier within 5 business days.
  • DELETE /v1/me/account endpoint for GDPR right-to-erasure (instantly removes your wp_user_id from all tables).
  • Pro card on /pricing/ now carries a 🇪🇺 GDPR-ready badge: click leads to /en/eu/ with the full FAQ.
  • DivineAPI / AstrologyAPI / Prokerala are US/India-hosted with DPA only on Enterprise. If EU compliance is a hard requirement, Pro $59 is the cheapest path.

Live: /eu/ (uk) + /en/eu/ (en). Sidebar entry “GDPR / EU residency” with 🇪🇺 badge.

2026-03-03 · Annual prepay 25% off + credit rollover + Pro feature surfacing

Two integrator-affecting changes:

  • Annual discount 17% → 25% (3 months free instead of 2). New yearly USD prices: Indie $45, Starter $171, Pro $531, Business $1791, HD/Esoteric Pack $81, Vedic Pack $171, Reports Pack $891. Existing annual subscribers are not affected - the new price applies only to future renewals. If you parsed USD prices via /wp-json/astroway/v1/api-prices, updated values are returned automatically.
  • Credit rollover for annual subscribers: unused credits roll over to the next monthly cycle, capped at 1× tier monthly allocation. Activated automatically on annual checkout. Visible through new response headers:
    • X-Credits-Limit: <int>: effective monthly limit (includes rollover)
    • X-Credits-Remaining: <int>: same as before, now accounting for rollover
    • X-Credits-Rollover: <int>: current rolled-over balance (annual subscribers only)
  • Pro tier ($59) now openly advertises: streaming endpoints (real-time), GDPR-compliant EU billing, MCP advanced (multi-agent / debate / RAG), webhooks (10 event types). These features were already in Pro - previously buried in docs.

DB schema: added columns credit_rollover_enabled TINYINT(1) + credits_rolled_over INT UNSIGNED to api_keys and shared_user_quotas. Initially both = 0 for all existing keys.

2026-03-01 · Per-endpoint credit cost transparency table

Public page /credits/ now lists the credit cost of all 700+ endpoints. No competitor (DivineAPI, AstrologyAPI, Prokerala) publishes anything similar - they charge a flat 1 credit per call and hide their internal mapping.

For integrators this gives three things:

  • Transparent unit economics: exact $/call per endpoint (monthly budgets from /pricing/ × tier cost = real cost-per-call).
  • Auto-sync with code: the table is generated at build time from endpoint-costs.ts. Adding a new endpoint or changing a tier propagates automatically on the next deploy.
  • Free-tier marker: the column shows which endpoints require Indie+ (🔒 icon, 28 right now).

Available at /credits/ (uk) and /en/credits/ (en). Cross-linked from /rate-limits-credits/ and Starlight sidebar (badge “New”).

2026-02-27 · Vedic charts, cosmogram, eclipse path, star map (+6 endpoints)

Closes the Visualization category at 14/14 endpoints per the roadmap:

  • POST /v1/render/wheel-vedic-north: North Indian (diamond) layout. Houses fixed, signs rotate by lagna.
  • POST /v1/render/wheel-vedic-south: South Indian (4×4 grid). Signs fixed (Pisces top-left), houses float.
  • POST /v1/render/wheel-vedic-east: East Indian (Bengali). Square with diagonals + inner rotated square.
  • POST /v1/render/cosmogram: Hamburg School / Cosmobiology 90° dial (Ebertin 1940 + Witte 1928).
  • POST /v1/render/eclipse-path: equirectangular world map with caller-supplied lat/lon track; renders centerline + band of given degree-width.
  • POST /v1/render/star-map: stereographic projection of a list of (RA, Dec) points with magnitude scaling.

All renderers are pure SVG, no headless Chrome.

2026-02-25 · Bi-/tri-wheel + composite + biorhythm (+4 endpoints)

Four more visualization endpoints extending the SVG engine:

  • POST /v1/render/bi-wheel: two concentric wheels: natal inner + transit (or progression) outer ring.
  • POST /v1/render/tri-wheel: three wheels: natal + progressed + transit.
  • POST /v1/render/composite: render a composite chart from two natal inputs (midpoint composite).
  • POST /v1/render/biorhythm: three-cycle sine plot: physical (23d), emotional (28d), intellectual (33d).

No new math - visualization only; bi-wheel computes both charts in parallel via Promise.all.

2026-02-24 · Visualization: SVG rendering (+4 endpoints)

Four new endpoints return SVG renders of natal charts and related visuals. Pure server-side - no Puppeteer / headless Chrome, so latency is ~10 ms instead of 1-2 s and free for the free tier.

  • POST /v1/render/wheel-western: Western wheel (signs ring + houses ring + planets + aspect lines).
  • POST /v1/render/aspect-grid: triangular aspect matrix with glyph + orb per cell.
  • POST /v1/render/moon-phase: moon disk illumination; returns SVG plus illuminationFraction, phase, waxing.
  • POST /v1/render/timeline: Gantt-style transit-event timeline (caller passes the events array).

Options: size, theme (light / dark / console), format (json returns { svg, byteLength }; svg serves image/svg+xml directly). Base tier - 2 credits per call.

2026-02-23 · Typed schemas in /v1/openapi.json (612 endpoints, 98%)

/v1/openapi.json is now a fully machine-readable specification both for request bodies and for response data. 612 of 624 POST endpoints are now typed, landing as a coordinated three-stage upgrade:

  • Request bodies: 386 endpoints typed via components.schemas (128 reusable components). Of these, 5 are shared (ChartInput, TwoChart, MultiChart, NatalTarget, NatalWrapper) and 123 are local (DashaInput, MuhuratWindow, ChartWithTnp, WheelWestern, etc.). Composition through allOf for inheritance (DashaInput extends ChartInput).
  • Response data: 612 endpoints typed via an inferrer that walks ep.response examples in the manifest: {type: 'object', properties: {...}} instead of the flat {type: 'object'}. The natal chart now declares data.planets[], data.houses.{ascendant, mc, cusps}, data.aspects[] with real field types.
  • Remaining 12 endpoints: dasha pratyantar/sookshma with unparseable shorthand examples in the manifest - keep {type: object}. Backward-compatible, will be added in upcoming releases.

What this means for integrators:

  • Regenerate your OpenAPI client: openapi-typescript, openapi-fetch, swagger-codegen produce interfaces with typed fields instead of Record<string, unknown>. Code completion on request bodies + response data works natively.
  • The Postman collection at /postman/astroway-api.json is regenerated from the same types - re-import and you get autocompletion across all typed endpoints.

Backward-compatible: the previous {"type": "object"} form was permissive - every existing client keeps working untouched.

2026-02-21 · Pricing rebase: Reports unified, Business +500K credits, Free hardening

Three integrator-affecting pricing changes:

  • Reports unified at 5 000 credits: /v1/reports/transit-yearly, /v1/reports/vedic-kundli, /v1/reports/lal-kitab dropped from 10 000 cr to 5 000 cr per call (2× cheaper). All PDF reports now charge the same - simpler bundle-budget math.
  • Business plan +500K credits/mo: Business tier now ships 3 500 000 credits per month (was 3 000 000) at the same $199 price. Existing subscribers get the increased allocation automatically from the next billing cycle.
  • Free plan: /v1/reports/* requires a paid tier: 12 PDF endpoints (reports/natal, synastry, child, business, career, love, money, transit-yearly, vedic-kundli, lal-kitab, human-design, tarot) now return 402 PLAN_UPGRADE_REQUIRED for Free keys. Everything else - charts, synastry, transits, horoscope - stays on Free.

If your Free key was hitting one of those endpoints, upgrade to Indie ($5/mo) or higher, or switch to the JSON equivalents (/v1/chart, /v1/synastry, etc.) for similar content without the PDF render.

2026-02-19 · Sign-in with Google and GitHub (+2 endpoints)

One account across the whole ecosystem - a user who registered on astroway.info or app.astroway.info now signs into the developer console with the same email/SSO and sees their existing orders, credits and API keys.

  • GET /v1/auth/oauth/google/start?return=<path>: kicks off the Google OAuth flow.
  • GET /v1/auth/oauth/github/start?return=<path>: kicks off the GitHub OAuth flow.

Callback ends with a redirect to /dashboard/oauth/callback#access_token=&refresh_token=&user= - the dashboard persists tokens just like after /v1/auth/login. If the email is already registered via the standard form and the provider asserts email_verified=true, the account is linked rather than duplicated.