AstroWay/api v2.190.0 · es
todos los sistemas funcionando con normalidad

Tres SDK oficiales: TypeScript, Python, PHP en lugar de curl sin procesar

El HTTP crudo funciona, pero un cliente tipado ahorra horas: autocompletado de rutas, tipos de solicitud y respuesta, reintento incorporado en 408/409/429/5xx y jerarquía de errores estilo Stainless. Analizamos los tres SDK oficiales - @astroway/sdk (npm), astroway (PyPI), astroway/sdk (Packagist) - y cómo se generaron a partir de un único contrato OpenAPI.

Puedes usar la API con curl o fetch directamente - el contrato es simple, con un solo encabezado X-Api-Key, JSON de ida y vuelta. Pero cuando hay más de 758 endpoints y los cuerpos de las solicitudes tienen docenas de campos, un cliente tipizado ahorra horas: autocompletado de rutas, tipos de solicitud y respuesta, reintentos automáticos en redes inestables.

Por eso tenemos tres SDK oficiales, generados desde el mismo contrato OpenAPI 3.1.

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

La misma llamada de carta natal en tres lenguajes.

TypeScript - un envoltorio ligero sobre openapi-fetch (~6 KB en tiempo de ejecución), con autocompletado de rutas:

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 síncrono y AsyncAstroway asíncrono con la misma interfaz, sobre 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 - sobre Guzzle 7 y 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'];

Tres lenguajes diferentes, pero las mismas garantías - porque los tres se generan desde el mismo contrato OpenAPI:

  • Tipos de solicitud y respuesta para todos los endpoints. TS ofrece autocompletado de rutas y cuerpos tipizados; Python - un paquete tipizado PEP 561; PHP - firmas tipizadas. El IDE sugiere campos, no la documentación en una pestaña vecina.
  • Reintentos integrados con backoff para 408, 409, 429, 5xx. Un fallo de red temporal o rate-limit no rompe tu código - el cliente reintentará automáticamente.
  • Jerarquía de errores al estilo Stainless. Los errores están tipizados por clases, no un string en catch. Capturas un tipo específico - RateLimitError, ValidationError - y lo manejas de forma puntual.
  • OpenAPI 3.1 como fuente. Añades un endpoint a la API - aparece en el SDK en el próximo lanzamiento, sin duplicación manual.
  • OIDC + SLSA-provenance en publicación: TS y PHP - a través de Trusted Publisher / auto-mirror, Python - Trusted Publisher OIDC en PyPI. La cadena de suministro verificable.

La URL base en todos es https://api.astroway.info/v1/, la clave se pasa en el encabezado X-Api-Key. La misma clave que para las llamadas HTTP crudas; el SDK no cambia nada en la autorización.

Sobre los tres SDK base hay integraciones listas para stacks específicos:

  • @astroway/react - hooks para aplicaciones React
  • astroway/sdk-symfony - bundle para Symfony
  • astroway/sdk-laravel - paquete para Laravel

En desarrollo pero aún no publicados - Go, Ruby y Rust. Sus páginas ya están en el catálogo de SDK con vista previa de comandos de instalación; cuando el paquete se publica en el registro, el estado cambia a “disponible”.

  1. Obtén tu clave en dashboard/sign-up - 10 000 créditos al mes gratis
  2. Instala el SDK en tu lenguaje (comandos arriba)
  3. Primera llamada - carta natal con el fragmento de arriba, reemplaza tu clave en ASTROWAY_API_KEY

La lista completa de SDK con ejemplos para cada uno está en la página SDK.

MakSeong · AstroWay

Construyo AstroWay API: envuelvo Swiss Ephemeris en un REST puro y escribo sobre los detalles aburridos que realmente importan.

// construye sobre esto

El mismo Swiss Ephemeris que en Solar Fire - en 4 líneas de código.

Clave gratuita sin tarjeta. 5 000 llamadas al mes antes del primer pago.

Más del blog ver todas las publicaciones →

Ephemeris 2026-07-19

Cómo mantenemos la precisión bajo control: CI vs swetest y NASA

La precisión en la API astronómica se deteriora fácilmente con una sola refactorización de ephemeris. Exploramos la protección: un núcleo de Swiss Ephemeris en el navegador y el servidor, cientos de instantáneas congeladas en mapas de referencia y triangulación de cada PR contra swetest CGI, Kerykeion, Prokerala y el catálogo de eclipses 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.