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

Швидкий старт API астрології: TypeScript і Python за 5 хвилин

Встановити SDK, отримати API-ключ, зробити перший запит натальної карти. 5 хвилин - і робочий JSON на руках (TypeScript і Python).

🕓 Запис від 2026-04-14, оновлено 2026-05-09. TS / Python / PHP SDK тепер живуть на public registries - @astroway/sdk (npm), astroway (PyPI), astroway/sdk (Packagist). Деталі в changelog.

Ти хочеш порахувати натальну карту з коду. Ось найкоротший шлях - за 5 хвилин від нуля до робочого JSON.

Крок 1: Отримай API-ключ (30 секунд)

Section titled “Крок 1: Отримай API-ключ (30 секунд)”

Зареєструйся на api.astroway.info/dashboard/sign-up. Безкоштовний план: 10 000 кредитів / місяць. Без картки.

У dashboard натисни “Create key” → “Production” → скопіюй. Ключі мають вигляд aw_live_aB3xY7pQ9rN2mK4jH8vC5tL6wZ1fD0eR.

Підказка: є також sandbox-ключі з префіксом aw_test_ - вони не списують кредити. Використовуй їх під час розробки.

Terminal window
npm install @astroway/sdk
Terminal window
pip install astroway

Обидва SDK покривають усі 777 ендпоінт із типізованими запитами й відповідями.

Крок 3: Перша натальна карта

Section titled “Крок 3: Перша натальна карта”
import { Astroway } from '@astroway/sdk';
const aw = new Astroway({
apiKey: process.env.ASTROWAY_API_KEY!,
});
const chart = await aw.chart.compute({
date: '1990-07-14',
time: '14:30:00',
timezoneOffset: 3, // UTC+3 for Kyiv summer
latitude: 50.4501,
longitude: 30.5234,
houseSystem: 'P', // Placidus
});
const SIGNS = ['Aries', 'Taurus', 'Gemini', 'Cancer', 'Leo', 'Virgo',
'Libra', 'Scorpio', 'Sagittarius', 'Capricorn', 'Aquarius', 'Pisces'];
const sun = chart.planets.find((p) => p.name === 'Sun')!;
console.log(`Sun: ${SIGNS[Math.floor(sun.longitude / 30)]} at ${sun.longitude.toFixed(2)}°`);
console.log(`ASC: ${chart.houses.ascendant.toFixed(2)}°`);
console.log(`Aspects: ${chart.aspects.length}`);

Запусти:

Terminal window
ASTROWAY_API_KEY=aw_live_... npx tsx chart.ts

Файл використовує top-level await, тож у package.json має стояти "type": "module". Інакше tsx впаде з Top-level await is currently not supported with the "cjs" output format.

from astroway import Astroway, BirthData
aw = Astroway(api_key="aw_live_your_key_here")
chart = aw.chart.compute(BirthData(
date="1990-07-14",
time="14:30:00",
timezone_offset=3,
latitude=50.4501,
longitude=30.5234,
house_system="P",
))
SIGNS = ["Aries", "Taurus", "Gemini", "Cancer", "Leo", "Virgo",
"Libra", "Scorpio", "Sagittarius", "Capricorn", "Aquarius", "Pisces"]
sun = next(p for p in chart["planets"] if p["name"] == "Sun")
print(f"Sun: {SIGNS[int(sun['longitude'] // 30)]} at {sun['longitude']:.2f}°")
print(f"ASC: {chart['houses']['ascendant']:.2f}°")
print(f"Aspects: {len(chart['aspects'])}")

Запусти:

Terminal window
ASTROWAY_API_KEY=aw_live_... python3 chart.py

Назад приходить JSON-об’єкт із чотирма основними частинами:

Масив із 13 об’єктів. У name стоїть назва тіла зі Swiss Ephemeris: Sun, Moon, Mercury, Venus, Mars, Jupiter, Saturn, Uranus, Neptune, Pluto, true Node (Північний вузол), mean Apogee (Ліліт), Chiron.

{
"id": 0,
"name": "Sun",
"longitude": 354.702, // ecliptic longitude in degrees
"latitude": -0.00016,
"distance": 0.9945, // in astronomical units
"speedLong": 0.9971, // degrees per day (negative = retrograde)
"speedLat": 0.00003,
"speedDist": 0.00019,
"isRetrograde": false,
"declination": -1.4159,
"rightAscension": 355.437
}

Знак і будинок тут не приходять: рахуйте знак як Math.floor(longitude / 30), а будинок - за куспідами з houses.

Куспіди домів (12 штук), а також asc і MC:

{
"system": "P",
"cusps": [118.18, 138.27, ...], // 12 values
"ascendant": 118.18,
"mc": 12.708,
"armc": 11.69,
"vertex": 253.97,
"equatorialAsc": 100.75,
"coAscWK": 81.13,
"coAscMunkasey": 123.7,
"polarAsc": 261.13
}

Масив аспектів між планетами:

{
"planet1": "Sun",
"planet2": "Mercury",
"planet1Id": 0,
"planet2Id": 2,
"type": { // an object, not a string
"name": "Conjunction",
"i18nKey": "aspect_conjunction",
"angle": 0,
"orb": 12,
"symbol": "☌",
"isMajor": true,
"color": "#660480"
},
"exactAngle": 3.365,
"orb": 3.365, // deviation from exact in degrees
"isApplying": true
}

"diurnal" (Сонце над горизонтом у момент народження) або "nocturnal" (під горизонтом). Використовується в класичній астрології.

Що ще спробувати:

Синастрія: сумісність двох людей:

const synastry = await client.synastry({
chart1: { date: '1990-07-14', time: '14:30:00', timezoneOffset: 3, latitude: 50.45, longitude: 30.52 },
chart2: { date: '1992-03-22', time: '09:15:00', timezoneOffset: 2, latitude: 48.85, longitude: 2.35 },
});
console.log(`Compatibility score: ${synastry.compatibility.score}/100`);

Поточні транзити на натальну карту:

const transits = await client.transits({
// birth data
date: '1990-07-14', time: '14:30:00', timezoneOffset: 3,
latitude: 50.4501, longitude: 30.5234,
// transit date
transitDate: '2026-04-14',
});

Щоденний гороскоп із реальних транзитів:

const horoscope = await client.horoscopeDaily({
date: '1990-07-14', time: '14:30:00', timezoneOffset: 3,
latitude: 50.4501, longitude: 30.5234,
});
console.log(horoscope.text);

Повна Human Design карта:

const hd = await client.humanDesign({
date: '1990-07-14', time: '14:30:00', timezoneOffset: 3,
latitude: 50.4501, longitude: 30.5234,
});
console.log(`${hd.type} - ${hd.strategy} - Profile ${hd.profile}`);
  • Натальна карта (/chart): 20 кредитів
  • Синастрія: 50 кредитів
  • Транзити: 50 кредитів
  • Щоденний гороскоп: 20 кредитів
  • Human Design: 50 кредитів

Безкоштовний план: 10 000 кредитів / місяць = 500 натальних карт, або 200 синастрій, або змішане навантаження.

Кожна відповідь містить заголовки з кредитами:

X-Credits-Used: 20
X-Credits-Remaining: 4980
X-Credits-Reset: 2026-05-01T00:00:00Z

Коли кредити закінчуються - отримаєш 402 Payment Required. Коли вдариш по rate-limit’у (Free: 10 запитів / хв) - 429 Too Many Requests із заголовком Retry-After.

SDK кидає типізовані помилки, які можна ловити:

import { QuotaExceededError, RateLimitError } from '@astroway/sdk';
try {
const chart = await aw.chart.compute(birth);
} catch (err) {
if (err instanceof QuotaExceededError) {
console.log('Upgrade plan or wait for reset');
} else if (err instanceof RateLimitError) {
console.log(`Retry in ${err.retryAfterSeconds ?? 60} seconds`);
} else {
throw err;
}
}

Ловити треба від конкретного до загального: усі вони наслідують ApiError, тож перевірка на нього першою поглине решту.

Тепер у тебе є:

  • Робочий API-ключ
  • Встановлений SDK
  • Перша натальна карта
  • Достатньо прикладів, щоб додати синастрію, транзити, гороскопи

Читати далі:

MakSeong · AstroWay

Роблю AstroWay API: загортаю Swiss Ephemeris у чистий REST і пишу про нудні деталі, які насправді важливі.

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

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

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

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

Ephemeris 2026-07-19

Як ми тримаємо точність під контролем: CI проти swetest і NASA

Точність в астро-API легко деградує від одного рефакторингу ефемерид. Розбираємо захист: одне ядро Swiss Ephemeris для застосунку й API, сотні заморожених снапшотів на еталонних картах і триангуляція кожного PR проти swetest CGI, Kerykeion, Prokerala та каталогу затемнень NASA.

Engineering 2026-07-15

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

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

Engineering 2026-06-05

X-Cache header: видимий cache-status для оптимізації клієнтських інтеграцій

Кожна response API тепер несе X-Cache: MISS | HIT | BYPASS - клієнт відразу бачить чи запит обчислений з нуля, чи витягнутий з кешу. Це відкриває cache hit % колонку в /dashboard/usage та дозволяє оптимізувати інтеграцію без guesswork.