# 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

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 | [PDF](https://api.astroway.info/samples/reports/natal.pdf) |
| `/v1/reports/synastry` | Cross-aspects between two charts, element balance | 2 | 5000 | [PDF](https://api.astroway.info/samples/reports/synastry.pdf) |
| `/v1/reports/transit-yearly` | Transit forecast for a chosen year | 5 | 5000 | [PDF](https://api.astroway.info/samples/reports/transit-yearly.pdf) |
| `/v1/reports/relocation` | Source chart, up to 5 cities, planets that changed house, nearby lines, 19 life areas | 6 | 5000 | [PDF](https://api.astroway.info/samples/reports/relocation.pdf) |
| `/v1/reports/vedic-kundli` | Lagna and nakshatra, sidereal positions, Vimshottari mahadashas | 2 | 5000 | [PDF](https://api.astroway.info/samples/reports/vedic-kundli.pdf) |
| `/v1/reports/lal-kitab` | Kismat, teva, detected rinas, upayas | 2 | 5000 | [PDF](https://api.astroway.info/samples/reports/lal-kitab.pdf) |
| `/v1/reports/gemstone` | Stone recommendations with mantras, stones to avoid, graha condition | 7 | 5000 | [PDF](https://api.astroway.info/samples/reports/gemstone.pdf) |
| `/v1/reports/human-design` | Key parameters, centres, channels | 2 | 5000 | [PDF](https://api.astroway.info/samples/reports/human-design.pdf) |
| `/v1/reports/muhurta` | Ranked auspicious days for one activity | 4 | 5000 | [PDF](https://api.astroway.info/samples/reports/muhurta.pdf) |
| `/v1/reports/love` | Key points of love, big three, aspects | 2 | 5000 | [PDF](https://api.astroway.info/samples/reports/love.pdf) |
| `/v1/reports/career` | Key career points, personality context, aspects | 2 | 5000 | [PDF](https://api.astroway.info/samples/reports/career.pdf) |
| `/v1/reports/money` | Key financial points, houses, aspects | 3 | 5000 | [PDF](https://api.astroway.info/samples/reports/money.pdf) |
| `/v1/reports/business` | Key business points, houses, aspects | 2 | 5000 | [PDF](https://api.astroway.info/samples/reports/business.pdf) |
| `/v1/reports/child` | Key character traits, big three, planets | 2 | 5000 | [PDF](https://api.astroway.info/samples/reports/child.pdf) |
| `/v1/reports/stellaforge` | One-page chart poster: planets, balance, key aspects | 1 | 5000 | [PDF](https://api.astroway.info/samples/reports/stellaforge.pdf) |
| `/v1/reports/tarot` | Spread description and the cards | 2 | 100 | [PDF](https://api.astroway.info/samples/reports/tarot.pdf) |

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

`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

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

`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:

```bash
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

[Live demo](https://api.astroway.info/demo/practice/) and [the code on GitHub](https://github.com/astroway/starter-practice), 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.

```bash
git clone https://github.com/astroway/starter-practice
cd starter-practice && npm install
cp .env.example .env     # your key goes here
npm run dev
```

Four 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

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.

<Aside type="caution">
Measured 2026-09-20. If you need one language in full, say so: the manual translation queue follows demand rather than a list.
</Aside>

## 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

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.
