# Birth Chart API

The natal chart is the foundation of every astrology app (Co-Star, Sanctuary, The Pattern, Chani — all built on it). AstroWay API provides a full set of endpoints to build and analyze a chart in a single call: from basic planet positions on the same Swiss Ephemeris that powers Solar Fire and Astrodienst, to rare techniques competitors don't ship — part of the 700+ endpoint platform.

## What's calculated

A full natal chart includes the **astrology trinity** — three "faces" of personality users come back to explore again and again (drives retention):

- **Planet positions** — Sun (identity/purpose), Moon (emotional core/needs), Mercury, Venus, Mars, Jupiter, Saturn, Uranus, Neptune, Pluto + North Node, Chiron. Longitude, latitude, speed, sign, house, retrograde.
- **House cusps** — 15 systems available (Placidus, Koch, Whole Sign, Equal, others). ASC (how others perceive the user), MC (career/public image), Vertex.
- **Aspects** — conjunction, opposition, trine, square, sextile, quincunx. Orb, applying/separating.
- **Chart sect** — diurnal/nocturnal (for classical Hellenistic astrology in the Chris Brennan / Demetra George tradition).

## Endpoints

| Endpoint | Credits | What it returns |
|---|---|---|
| `/v1/chart` | 20 | Full natal chart (planets + houses + aspects) |
| `/v1/planets` | 10 | Planet positions only (no houses or aspects) |
| `/v1/essential-dignities` | 20 | Essential dignities table (domicile, exaltation, triplicity, term, face) |
| `/v1/almuten` | 20 | Almuten figuris — medieval technique |
| `/v1/arabic-parts` | 20 | Arabic parts/lots (Fortuna, Spirit, others) |
| `/v1/fixed-stars` | 20 | Planet conjunctions with fixed stars |
| `/v1/midpoints` | 20 | Planetary midpoints |
| `/v1/disposition-chains` | 20 | Disposition chains (rulership graphs) |
| `/v1/firdaria` | 20 | Firdaria periods |
| `/v1/profections` | 20 | Annual profections |
| `/v1/planetary-phases` | 20 | Oriental/occidental phases |
| `/v1/receptions` | 20 | Mutual receptions |

## Example

<Tabs>
  <TabItem label="cURL">
    ```bash frame="terminal"
    curl -X POST https://api.astroway.info/v1/chart \
      -H "X-Api-Key: aw_live_your_key_here" \
      -H "Content-Type: application/json" \
      -d '{
        "date": "1990-07-14",
        "time": "14:30:00",
        "timezoneOffset": 3,
        "latitude": 50.4501,
        "longitude": 30.5234,
        "houseSystem": "P"
      }'
    ```
  </TabItem>
  <TabItem label="Node.js">
    ```ts
    const r = await fetch('https://api.astroway.info/v1/chart', {
      method: 'POST',
      headers: {
        'X-Api-Key': process.env.ASTROWAY_API_KEY!,
        'Content-Type': 'application/json',
      },
      body: JSON.stringify({
        date: '1990-07-14',
        time: '14:30:00',
        timezoneOffset: 3,
        latitude: 50.4501,
        longitude: 30.5234,
        houseSystem: 'P',
      }),
    });
    const { data: chart } = await r.json();
    console.log(`ASC: ${chart.angles.asc.sign} ${chart.angles.asc.degree.toFixed(2)}°`);
    ```
  </TabItem>
  <TabItem label="Python">
    ```python

    r = requests.post(
        'https://api.astroway.info/v1/chart',
        headers={'X-Api-Key': os.environ['ASTROWAY_API_KEY'], 'Content-Type': 'application/json'},
        json={
            'date': '1990-07-14',
            'time': '14:30:00',
            'timezoneOffset': 3,
            'latitude': 50.4501,
            'longitude': 30.5234,
            'houseSystem': 'P',
        },
    )
    chart = r.json()['data']
    print(f"ASC: {chart['angles']['asc']['sign']} {chart['angles']['asc']['degree']:.2f}°")
    ```
  </TabItem>
  <TabItem label="PHP">
    ```php
    <?php
    use GuzzleHttp\Client;

    $aw = new Client(['base_uri' => 'https://api.astroway.info/v1/']);
    $r = $aw->post('chart', [
        'headers' => ['X-Api-Key' => getenv('ASTROWAY_API_KEY')],
        'json' => [
            'date' => '1990-07-14',
            'time' => '14:30:00',
            'timezoneOffset' => 3,
            'latitude' => 50.4501,
            'longitude' => 30.5234,
            'houseSystem' => 'P',
        ],
    ]);
    $chart = json_decode($r->getBody(), true)['data'];
    printf("ASC: %s %.2f°\n", $chart['angles']['asc']['sign'], $chart['angles']['asc']['degree']);
    ```
  </TabItem>
</Tabs>

## Who uses this

- **Astrology apps** — web and mobile apps with chart building
- **AI agents** — via MCP server or `/interpret/natal` for AI interpretations
- **Researchers** — bulk calculations for statistical studies
- **Content platforms** — natal charts as a feature on existing products

## Pricing

Natal chart (`/v1/chart`) — **20 credits**. On the Free tier (10,000 credits/mo) — 500 charts per month free.

<CardGrid>
  <LinkCard title="Quick start →" href="/en/getting-started/" description="First request in 5 minutes" />
  <LinkCard title="Detailed example" href="/en/examples/natal/" description="Parameters, response, house systems" />
  <LinkCard title="Pricing" href="/en/pricing/" description="From Free to Enterprise" />
</CardGrid>
