AstroWay/api v2.190.0 · fr
tous les systèmes sont opérationnels

Trois SDK officiels : TypeScript, Python, PHP au lieu de curl brut

Le HTTP brut fonctionne, mais le client typé économise des heures : autocomplétion des chemins, types de requête et de réponse, retry intégré pour 408/409/429/5xx et hiérarchie de erreurs à la manière de Stainless. Nous démontons les trois SDK officiels - @astroway/sdk (npm), astroway (PyPI), astroway/sdk (Packagist) - et comment ils sont générés à partir d'un même contrat OpenAPI.

Vous pouvez accéder à l’API via curl ou fetch - contrat simple, un seul en-tête X-Api-Key, JSON aller-retour. Mais lorsque vous avez plus d’758 endpoints et que les corps des requêtes ont des dizaines de champs, un client typé économise des heures : autocomplétion des chemins, types de requêtes et de réponse, réessais automatiques sur une réseau instable.

C’est pourquoi nous avons trois SDK officiels générés à partir d’un même contrat OpenAPI 3.1.

Fenêtre de terminal
# TypeScript / JavaScript
npm install @astroway/sdk
# Python
pip install astroway
# PHP
composer require astroway/sdk

Le même appel à la carte natale en trois langages.

TypeScript - une fine couche sur openapi-fetch (~6 KB en runtime), avec autocomplétion des chemins :

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 - Astroway synchrone et AsyncAstroway asynchrone avec une surface identique, sur 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 - sur Guzzle 7 et 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'];

Les trois langages différents, mais les mêmes garanties - car les trois sont générés à partir du même contrat OpenAPI :

  • Types de requêtes et de réponse pour tous les endpoints. TS fournit l’autocomplétion des chemins et des corps typés ; Python - PEP 561 typed-package ; PHP - signatures typées. L’IDE vous suggère les champs, et non la documentation dans la fenêtre adjacente.
  • Retry avec backoff sur 408, 409, 429, 5xx. Un temps de réseau instable ou de limitation de taux ne fait pas tomber votre code - le client réessaie automatiquement.
  • Hiérarchie d’erreurs Stainless-style. Les erreurs sont typées par classe, et non une chaîne dans catch. Vous attrapez un type spécifique - RateLimitError, ValidationError - et vous traitez spécifiquement.
  • OpenAPI 3.1 comme source. Vous ajoutez un endpoint à l’API - il apparaît dans l’SDK à la prochaine mise à jour, sans duplication manuelle.
  • OIDC + SLSA-provenance sur les publications : TS et PHP - via Trusted Publisher / auto-mirror, Python - Trusted Publisher OIDC sur PyPI. La chaîne de fournisseur est vérifiée.

L’URL de base dans tous les cas - https://api.astroway.info/v1/, la clé est transmise en en-tête X-Api-Key. La même clé que pour les appels HTTP simples ; l’SDK ne change rien dans l’authentification.

Sur les trois SDK de base, il y a des intégrations prêtes pour les stacks spécifiques :

  • @astroway/react - hooks pour les applications React
  • astroway/sdk-symfony - bundle pour Symfony
  • astroway/sdk-laravel - package pour Laravel

En cours de développement, mais pas encore publiés - Go, Ruby et Rust. Leur page est déjà dans le répertoire SDK avec la commande d’installation prévue ; lorsque le package est publié dans le registre, le statut change en « disponible ».

  1. Clé sur dashboard/sign-up - 10 000 crédits par mois gratuit
  2. Installez l’_SDK dans votre langue (commandes ci-dessus)
  3. Premier appel - carte natale avec snippet ci-dessus, remplacez votre clé dans ASTROWAY_API_KEY

Liste complète des SDK avec exemples pour chaque - sur la page SDK.

MakSeong · AstroWay

Je fais l'API AstroWay : j'enveloppe Swiss Ephemeris dans du REST pur et j'écris sur les détails ennuyeux qui sont en fait importants.

// construis avec ça

Le même Swiss Ephemeris que Solar Fire - en 4 lignes de code.

Clé gratuite sans carte. 5 000 appels par mois avant le premier paiement.

Plus d'articles du blog voir tous les articles →

Ephemeris 2026-07-19

Comment nous maintenons l'exactitude sous contrôle : CI contre swetest et NASA

L'exactitude dans l'API astro se dégrade facilement d'une refonte des éphémérides. Nous décomposons la protection : un noyau Swiss Ephemeris sur navigateur et serveur, des centaines de snapshots gelés sur les cartes de référence et la triangulation de chaque PR contre swetest CGI, Kerykeion, Prokerala et le catalogue d'occultations de 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.