AstroWay/api v2.217.2 · de
alle Systeme in Ordnung

Drei offizielle SDKs: TypeScript, Python, PHP statt rohem curl

Rohes HTTP funktioniert, aber ein typisierter Client spart Stunden: Autovervollständigung der Pfade, Request- und Response-Typen, eingebauter Retry bei 408/409/429/5xx und eine Fehlerhierarchie im Stainless-Stil. Wir gehen die drei offiziellen SDKs durch, @astroway/sdk (npm), astroway (PyPI), astroway/sdk (Packagist), und zeigen, wie sie aus einem einzigen OpenAPI-Vertrag generiert werden.

Man kann die API mit rohem curl oder fetch ansprechen: Der Vertrag ist einfach, ein einziger Header X-Api-Key, JSON hin und zurück. Aber wenn es mehr als 761 Endpoints gibt und die Request-Bodies ein Dutzend Felder haben, spart ein typisierter Client Stunden: Autovervollständigung der Pfade, Request- und Response-Typen, automatische Wiederholungen in instabilen Netzen.

Deshalb haben wir drei offizielle SDKs, generiert aus einem einzigen OpenAPI-3.1-Vertrag.

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

Derselbe Geburtshoroskop-Aufruf in drei Sprachen.

TypeScript: ein dünner Wrapper um openapi-fetch (~6 KB Runtime), mit Autovervollständigung der Pfade:

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: synchrones Astroway und asynchrones AsyncAstroway mit identischer Oberfläche, auf Basis von 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: auf Basis von Guzzle 7 und 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'];

Drei verschiedene Sprachen, aber dieselben Garantien, denn alle drei werden aus demselben OpenAPI-Vertrag generiert:

  • Request- und Response-Typen für alle Endpoints. TS bietet Autovervollständigung der Pfade und typisierte Bodies; Python ein typisiertes Paket nach PEP 561; PHP typisierte Signaturen. Die IDE schlägt die Felder vor, nicht die Dokumentation im Nachbar-Tab.
  • Eingebauter Retry mit Backoff bei 408, 409, 429, 5xx. Ein vorübergehender Netzwerkfehler oder ein Rate Limit bringt deinen Code nicht zum Absturz: Der Client wiederholt selbst.
  • Fehlerhierarchie im Stainless-Stil. Fehler sind nach Klassen typisiert, kein String im catch. Du fängst einen konkreten Typ, RateLimitError, ValidationError, und behandelst ihn gezielt.
  • OpenAPI 3.1 als Quelle. Ein neuer Endpoint in der API erscheint im nächsten Release in den SDKs, ohne manuelles Duplizieren.
  • OIDC + SLSA-Provenance bei der Veröffentlichung: TS und PHP über Trusted Publisher / Auto-Mirror, Python über Trusted Publisher OIDC auf PyPI. Die Lieferkette ist überprüfbar.

Die Base URL ist überall https://api.astroway.info/v1/, der Schlüssel wird im Header X-Api-Key übergeben. Es ist derselbe Schlüssel wie für rohe HTTP-Aufrufe; das SDK ändert nichts an der Autorisierung.

Auf den drei Basis-SDKs bauen fertige Integrationen für bestimmte Stacks auf:

  • @astroway/react: Hooks für React-Apps
  • astroway/sdk-symfony: ein Bundle für Symfony
  • astroway/sdk-laravel: ein Paket für Laravel

In Arbeit, aber noch nicht veröffentlicht: Go, Ruby und Rust. Ihre Seiten stehen bereits im SDK-Katalog mit einer Vorschau des Install-Befehls; sobald das Paket in der Registry erscheint, wechselt der Status auf “verfügbar”.

  1. Schlüssel über dashboard/sign-up: 10 000 Credits pro Monat kostenlos
  2. Installiere das SDK in deiner Sprache (Befehle oben)
  3. Erster Aufruf: das Geburtshoroskop aus dem Snippet oben, mit deinem Schlüssel in ASTROWAY_API_KEY

Die vollständige Liste der SDKs mit Beispielen für jedes steht auf der Seite SDK.

MakSeong · AstroWay

Ich entwickle das AstroWay API: packe Swiss Ephemeris in reines REST und schreibe über langweilige Details, die eigentlich wichtig sind.

// darauf aufbauen

Derselbe Swiss Ephemeris wie in Solar Fire - in 4 Zeilen Code.

Kostenloser Schlüssel ohne Kreditkarte. 5.000 Aufrufe pro Monat vor der ersten Zahlung.

Mehr aus dem Blog alle Beiträge →

Ephemeris 2026-07-19

Wie wir die Genauigkeit unter Kontrolle halten: CI gegen swetest und NASA

In einer Astrologie-API verschlechtert sich die Genauigkeit leicht durch ein einziges Refactoring der Ephemeriden. Wir zeigen unseren Schutz: ein Swiss-Ephemeris-Kern für App und API, Hunderte eingefrorene Snapshots auf Referenzhoroskopen und die Triangulation jedes PR gegen swetest CGI, Kerykeion, Prokerala und den Finsterniskatalog der 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.