Reports API - 16 finished PDF reports under your brand
You send a birth date and get a finished document back. Not JSON you have to lay out yourself, the PDF itself: paginated, carrying your logo, your report title and no mention of us anywhere inside it.
Sixteen of those are live. With the dispatcher, the export history and five AI narratives that is 23 paths under /v1/reports/*.
The catalogue
Section titled “The catalogue”Every row has a finished sample. It is not a mock-up: the file was generated by the same call printed in that endpoint’s reference page, and it is re-rendered whenever the templates change.
The page count is the one that sample produced, measured 2026-09-21. It moves with the chart: more aspects means more rows, and relocation adds two or three pages per city (4 pages for one city, 13 for five).
| Endpoint | What is inside | Pages | Credits | Sample |
|---|---|---|---|---|
/v1/reports/natal | Big three, planets, houses, aspects | 3 | 5000 | |
/v1/reports/synastry | Cross-aspects between two charts, element balance | 2 | 5000 | |
/v1/reports/transit-yearly | Transit forecast for a chosen year | 5 | 5000 | |
/v1/reports/relocation | Source chart, up to 5 cities, planets that changed house, nearby lines, 19 life areas | 6 | 5000 | |
/v1/reports/vedic-kundli | Lagna and nakshatra, sidereal positions, Vimshottari mahadashas | 2 | 5000 | |
/v1/reports/lal-kitab | Kismat, teva, detected rinas, upayas | 2 | 5000 | |
/v1/reports/gemstone | Stone recommendations with mantras, stones to avoid, graha condition | 7 | 5000 | |
/v1/reports/human-design | Key parameters, centres, channels | 2 | 5000 | |
/v1/reports/muhurta | Ranked auspicious days for one activity | 4 | 5000 | |
/v1/reports/love | Key points of love, big three, aspects | 2 | 5000 | |
/v1/reports/career | Key career points, personality context, aspects | 2 | 5000 | |
/v1/reports/money | Key financial points, houses, aspects | 3 | 5000 | |
/v1/reports/business | Key business points, houses, aspects | 2 | 5000 | |
/v1/reports/child | Key character traits, big three, planets | 2 | 5000 | |
/v1/reports/stellaforge | One-page chart poster: planets, balance, key aspects | 1 | 5000 | |
/v1/reports/tarot | Spread description and the cards | 2 | 100 |
Tarot costs fifty times less because there is no ephemeris in it: one page of a spread with no astronomical computation behind it.
One path instead of sixteen
Section titled “One path instead of sixteen”POST /v1/reports/generate takes a report_type field and does exactly what the dedicated path does. Twelve types: natal, transit-yearly, synastry, business, career, love, money, child, lal-kitab, human-design, tarot, vedic-kundli.
For an SDK that is one method instead of twelve, for MCP one tool instead of twelve. The price is identical: a dispatched call is billed exactly as the direct path.
PDF or HTML
Section titled “PDF or HTML”A PDF and a link to it come back by default. ?format=html returns the finished HTML page in the response body, with no render and no storage: useful when you embed the report in your own page or want to apply your own CSS.
The PDF link lives for 24 hours. That is deliberate, we do not host other people’s documents indefinitely. Pull the file to your side as soon as you have the response. GET /v1/reports/history is free and lists this key’s recent exports; an expired row comes back with expired: true.
Your brand, not ours
Section titled “Your brand, not ours”whitelabel takes an object of 15 fields: companyName, companyUrl, companyEmail, companyMobile, companyBio, logoUrl, frontImage, reportName, footerText, fontPairing and five colours (themeColor, headingColor, textPrimaryColor, textSecondaryColor, backgroundColor).
You can pass it inline, which means no account configuration at all:
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 }, "whitelabel": { "companyName": "Zoryana Studio", "reportName": "Your Birth Blueprint", "themeColor": "#7c3aed", "footerText": "zoryana.example" } }'The generated document carries the studio name, that report title, the accent colour on section headings and your footer. The word AstroWay does not appear in it once.
If you would rather not repeat the object on every call, whitelabel: true uses the account configuration saved at /v1/whitelabel/config, and POST /v1/whitelabel/preview renders a sample natal report with it so you can look before a client does.
A working app you can clone
Section titled “A working app you can clone”Live demo and the code on GitHub, MIT.
A practitioner’s desk: client details on the left, a finished PDF on the right. Every report tile shows its credit price before the click and links a finished sample. White-label is a checkbox. The backend is one route and no dependencies, because that is the point: a browser cannot reach the API directly, so the key lives on the server.
git clone https://github.com/astroway/starter-practicecd starter-practice && npm installcp .env.example .env # your key goes herenpm run devFour things worth taking. The cost is shown where the decision is made: the server hands X-Credits-Used back to the page rather than only to a log. Sixteen reports take four request shapes, not sixteen. The same input twice costs nothing, because the response cache returns the same file. And ALLOWED_REPORTS gates what an instance will render: the public demo renders the 100-credit tarot spread only, because a page on the open internet that will produce a 5,000-credit natal report for anyone spends a month’s free tier in two clicks.
Languages
Section titled “Languages”The language field accepts 21 codes. Three are fully translated: Ukrainian, English, Russian. For the other eighteen the sign names localise and the headings and explanations stay English, so a German report says “Löwe” under a heading that reads “Planets”.
We say so plainly, because a report is a document your client keeps. Selling it as German after seeing German sign names in a sample would be an unpleasant discovery on their side rather than ours. The muhurta report is still entirely English.
How many reports a plan buys
Section titled “How many reports a plan buys”/v1/reports/natal and the rest of the PDFs cost 5000 credits, so a plan’s monthly allowance converts straight into a number of reports:
| Plan | Credits/mo | PDF reports | Tarot reports |
|---|---|---|---|
| Free | 10 000 | reports unavailable | unavailable |
| Indie, $5 | 50 000 | 10 | 500 |
| Starter, $19 | 200 000 | 40 | 2000 |
| Pro, $59 | 800 000 | 160 | 8000 |
| Business, $199 | 3 500 000 | 700 | 35000 |
| Reports Pack, $99 | 500 000 | 100 | 5000 |
Reports are closed on Free on purpose: one PDF is seconds of Chrome on our side and a free tier does not cover that. The cheapest way in is Indie at $5.
Reports Pack is a separate add-on for people who want reports and nothing else: $99 a month, 500 000 credits, which is 100 PDFs at 99 cents each, with white-label included. A key on that plan reaches /v1/reports/* and /v1/whitelabel/* only.
When you want the text, not the document
Section titled “When you want the text, not the document”Five endpoints return an AI narrative as JSON, with no layout and no PDF: /v1/reports/ai/natal-narrative, /transit-narrative, /synastry-narrative, /year-ahead-narrative, /monthly-narrative. 250 credits each. Use them when the text goes into your own layout, app or newsletter.
The natal report also does both at once: enrich: true puts an AI narrative inside the PDF. On the same test chart that is 5 pages instead of 3.