AstroWay/api v2.105.5 · blog
усі системи в нормі

Три офіційні SDK: TypeScript, Python, PHP замість сирого curl

Сирий HTTP працює, але типізований клієнт економить години: автодоповнення шляхів, типи запиту й відповіді, вбудований retry на 408/409/429/5xx і Stainless-style ієрархія помилок. Розбираємо три офіційні SDK - @astroway/sdk (npm), astroway (PyPI), astroway/sdk (Packagist) - і чим вони згенеровані з одного OpenAPI-контракту.

Ходити до API через сирий curl чи fetch можна - контракт простий, один заголовок X-Api-Key, JSON туди-назад. Але коли ендпоінтів понад 726, а тіла запитів мають десяток полів, типізований клієнт економить години: автодоповнення шляхів, типи запиту й відповіді, автоматичні повтори на нестабільній мережі.

Тому в нас три офіційні SDK, згенеровані з одного OpenAPI 3.1-контракту.

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

Той самий виклик натальної карти трьома мовами.

TypeScript - тонка обгортка над openapi-fetch (~6 KB рантайму), з автодоповненням шляхів:

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',
},
});
console.log(chart.angles.asc);

Python - синхронний Astroway і асинхронний AsyncAstroway з ідентичною поверхнею, поверх 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['angles']['asc'])

PHP - поверх Guzzle 7 і 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['angles']['asc']['sign'];

Що спільного в усіх трьох

Section titled “Що спільного в усіх трьох”

Три різні мови, але однакові гарантії - бо всі три генеруються з того самого OpenAPI-контракту:

  • Типи запиту й відповіді для всіх ендпоінтів. TS дає автодоповнення шляхів і типізовані тіла; Python - PEP 561 typed-пакет; PHP - типізовані сигнатури. IDE підказує поля, а не документація у сусідній вкладці.
  • Вбудований retry з backoff на 408, 409, 429, 5xx. Тимчасовий мережевий збій або rate-limit не валить твій код - клієнт повторює сам.
  • Stainless-style ієрархія помилок. Помилки типізовані за класами, а не рядок у catch. Ловиш конкретний тип - RateLimitError, ValidationError - і обробляєш точково.
  • OpenAPI 3.1 як джерело. Додали ендпоінт у API - він з’являється в SDK на наступному релізі, без ручного дублювання.
  • OIDC + SLSA-провенанс на публікації: TS і PHP - через Trusted Publisher / auto-mirror, Python - Trusted Publisher OIDC на PyPI. Ланцюжок постачання перевірюваний.

Base URL у всіх - https://api.astroway.info/v1/, ключ передається заголовком X-Api-Key. Той самий ключ, що для сирих HTTP-викликів; SDK нічого не змінює в авторизації.

Фреймворк-обгортки та роадмап

Section titled “Фреймворк-обгортки та роадмап”

Поверх трьох базових SDK є готові інтеграції під конкретні стеки:

  • @astroway/react - хуки для React-застосунків
  • astroway/sdk-symfony - бандл для Symfony
  • astroway/sdk-laravel - пакет для Laravel

У роботі, але ще не опубліковані - Go, Ruby і Rust. Їхні сторінки вже є в каталозі SDK з превʼю install-команди; коли пакет виходить у registry, статус міняється на «доступний».

  1. Ключ на dashboard/sign-up - 10 000 кредитів на місяць безкоштовно
  2. Постав SDK своєю мовою (команди вище)
  3. Перший виклик - натальна карта зі снипета вище, підстав свій ключ у ASTROWAY_API_KEY

Повний перелік SDK з прикладами під кожен - на сторінці SDK.

AstroWay team

Інженерна команда AstroWay API. Ми загортаємо Swiss Ephemeris у чистий REST і пишемо про нудні деталі, які насправді важливі.

// побудуй на цьому

Той самий Swiss Ephemeris, що й у Solar Fire — у 4 рядках коду.

Безкоштовний ключ без картки. 5 000 викликів на місяць до першої оплати.

Більше з блогу усі дописи →

Engineering 2026-05-26

Reports V2: один ендпоінт замість дванадцяти — `/v1/reports/generate`

Замість 12 type-specific роутів /reports/natal, /reports/synastry, … — один уніфікований ендпоінт POST /v1/reports/generate з полем report_type. SDK-консументи отримують один метод замість дванадцяти; MCP-каталог скорочується з 12 інструментів до одного.

Ephemeris 2026-05-25

Jaimini-розширення: 5 нових ендпоінтів для глибокої Vedic-аналітики

П'ять нових ендпоінтів сімейства /v1/vedic/jaimini/* для глибокого аналізу за школою Jaimini — chara-karaka сканер, karakamsa-проекція, функціональна природа грах, atmakaraka-rotation timeline та повний argala/virodhargala скан. Канонічні джерела: Sanjay Rath, BPHS A.34.

Engineering 2026-05-21

Vedic-астрологія через API: від Парашари до Лал Кітаб у 354 ендпоінтах

AstroWay тепер пропонує найповніше Vedic-покриття серед комерційних API: 10 систем дешів, 16 варг, Панчанг, повний Лал Кітаб + КП + Джайміні. Як це працює і коли яку техніку обирати.