AstroWay/api v2.325.2 · nl
alle systemen normaal

Drie officiële SDK's: TypeScript, Python en PHP in plaats van kale curl

Kale HTTP werkt, maar een getypeerde client scheelt uren: autocompletion van paden, request- en responsetypes, ingebouwde retry bij 408/409/429/5xx en een foutenhiërarchie in Stainless-stijl. We bespreken de drie officiële SDK's, @astroway/sdk (npm), astroway (PyPI) en astroway/sdk (Packagist), en hoe ze uit één OpenAPI-contract worden gegenereerd.

Je kunt de API prima met kale curl of fetch aanspreken: het contract is eenvoudig, één header X-Api-Key, JSON heen en terug. Maar als er meer dan 865 endpoints zijn en request bodies een tiental velden hebben, scheelt een getypeerde client uren: autocompletion van paden, request- en responsetypes, automatische retries op een instabiel netwerk.

Daarom hebben we drie officiële SDK’s, gegenereerd uit één OpenAPI 3.1-contract.

Terminal window
# TypeScript / JavaScript
npm install @astroway/sdk
# Python
pip install astroway
# PHP
composer require astroway/sdk

Dezelfde aanroep voor een geboortehoroscoop in drie talen.

TypeScript: een dunne wrapper rond openapi-fetch (~6 KB runtime), met autocompletion van paden:

import { Astroway } from '@astroway/sdk';
const aw = new Astroway({ apiKey: process.env.ASTROWAY_API_KEY! });
const { data: chart } = await aw.client.POST('/chart', {
body: {
date: '1990-07-14',
time: '14:30:00',
timezoneOffset: 3,
latitude: 50.4501,
longitude: 30.5234,
houseSystem: 'P',
},
});
// aw.client.POST is the raw typed fetch, so `chart` is the { ok, data } envelope
console.log(chart.data.houses.ascendant); // 212.0952574979425

Python: de synchrone Astroway en de asynchrone AsyncAstroway met een identieke interface, bovenop httpx:

from astroway import Astroway
aw = Astroway(api_key=os.environ['ASTROWAY_API_KEY'])
chart = aw.post('/chart', body={
'date': '1990-07-14',
'time': '14:30:00',
'timezoneOffset': 3,
'latitude': 50.4501,
'longitude': 30.5234,
'houseSystem': 'P',
})
print(chart['houses']['ascendant'])

PHP: bovenop Guzzle 7 en PSR-18:

<?php
use Astroway\Astroway;
$aw = new Astroway(['apiKey' => getenv('ASTROWAY_API_KEY')]);
$chart = $aw->post('/chart', body: [
'date' => '1990-07-14',
'time' => '14:30:00',
'timezoneOffset' => 3,
'latitude' => 50.4501,
'longitude' => 30.5234,
'houseSystem' => 'P',
]);
echo $chart['houses']['ascendant'];

Drie verschillende talen, maar dezelfde garanties, omdat ze alle drie uit hetzelfde OpenAPI-contract worden gegenereerd:

  • Request- en responsetypes voor alle endpoints. TS geeft autocompletion van paden en getypeerde bodies; Python is een getypeerd pakket volgens PEP 561; PHP heeft getypeerde signaturen. Je IDE stelt de velden voor, in plaats van de documentatie in een tabblad ernaast.
  • Ingebouwde retry met backoff bij 408, 409, 429, 5xx. Een tijdelijke netwerkstoring of rate limit laat je code niet crashen: de client probeert het zelf opnieuw.
  • Foutenhiërarchie in Stainless-stijl. Fouten zijn getypeerd per klasse, niet een string in je catch. Je vangt een specifiek type, zoals RateLimitError of ValidationError, en handelt dat gericht af.
  • OpenAPI 3.1 als bron. Voegen we een endpoint aan de API toe, dan verschijnt het bij de volgende release in de SDK, zonder handmatig dubbel werk.
  • OIDC + SLSA-provenance bij publicatie: TS en PHP via Trusted Publisher / auto-mirror, Python via Trusted Publisher OIDC op PyPI. De supply chain is controleerbaar.

De base URL is overal https://api.astroway.info/v1/, de sleutel gaat mee in de header X-Api-Key. Het is dezelfde sleutel als voor kale HTTP-aanroepen; de SDK verandert niets aan de autorisatie.

Bovenop de drie basis-SDK’s zijn er kant-en-klare integraties voor specifieke stacks:

  • @astroway/react: hooks voor React-apps
  • astroway/sdk-symfony: bundle voor Symfony
  • astroway/sdk-laravel: pakket voor Laravel

In ontwikkeling, maar nog niet gepubliceerd: Go, Ruby en Rust. Hun pagina’s staan al in de SDK-catalogus met een preview van het installatiecommando; zodra het pakket in de registry verschijnt, verandert de status naar “beschikbaar”.

  1. Een sleutel via dashboard/sign-up: 10 000 credits per maand gratis
  2. Installeer de SDK in jouw taal (commando’s hierboven)
  3. Eerste aanroep: de geboortehoroscoop uit de snippet hierboven, met je eigen sleutel in ASTROWAY_API_KEY

Het volledige overzicht van SDK’s met voorbeelden voor elk staat op de pagina SDK.

MakSeong · AstroWay

I build the AstroWay API: arc-second astrology math on a clean REST surface, and I write about the dull parts that turn out to matter.

// bouw hierop

Posities tot op de boogseconde in 4 regels code.

Gratis sleutel zonder kaart. 5.000 calls per maand tot de eerste betaling.

Meer uit de blog alle berichten →

Ephemeris 2026-07-19

Zo houden we de nauwkeurigheid onder controle: CI tegen swetest en NASA

Nauwkeurigheid in een astrologie-API gaat makkelijk achteruit door één refactor van de efemeriden. We laten zien hoe we ons beschermen: één Swiss Ephemeris-kern voor app en API, honderden bevroren snapshots op referentiehoroscopen en triangulatie van elke PR tegen swetest CGI, Kerykeion, Prokerala en de eclipscatalogus van NASA.

Industry 2026-06-05

Free Astrology API: Which One Has the Best Free Tier in 2026?

A side-by-side of free tiers across the major astrology APIs - credits, request caps, card requirements - and how much you can actually build for free.

Engineering 2026-06-05

Horoscope API Tutorial: Build a Daily Horoscope Feature

Add daily, weekly and monthly horoscopes to your app via API - sign-based text vs transit-based personalization - with TypeScript and Python code.