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

// product · release notes

Changelog що нового

Лише зміни, що впливають на код інтегратора: нові ендпоінти, оновлення SDK, зміни в /openapi.json, правки цін у кредитах, deprecation, breaking changes. Найновіші згори. Внутрішні правки сайту сюди не потрапляють.

Latest · v2.325.2 Endpoints · 865 CI tests · 888 API contract · v1 stable · 12-mo deprecation

2026-10-14 · Назви молодших арканів словами, стихії придворних карт, малі картинки таро

Змінене значення. name числових молодших арканів у всіх колодах таро тепер пишеться словами: Nine of Swords замість 9 of Swords, як у локалізованих назвах і на друкованих картах. slug не змінився (9-of-swords).

Виправлене значення. astrology 16 придворних карт записувалось у зворотному порядку: Паж Мечів тепер earth of air (земля в повітрі), а не air of earth. Так атрибуцію записує Золота Зоря.

Нове поле. image.urlSmall і back.urlSmall: картинка завширшки 300 px (близько 40 КБ) для карт до приблизно 150 px на сторінці.

Що робити з вашим кодом. Якщо ви порівнювали name числової карти з рядком, порівнюйте slug. Для дрібних карт беріть urlSmall або srcset з трьох розмірів.

2026-10-14 · @astroway/render 0.2.2: лінії осей не перекреслюють планети

Лінії куспидів і осей (ASC, DSC, MC, IC) на колесі wheel-western (і бі-, три-колесі, композиті) починаються за кільцем планет, а не з його середини: планета на куспиді чи осі більше не перекреслена лінією. Той самий рендер у /v1/render/* і в пакеті @astroway/render 0.2.2 на npm.

Що робити з вашим кодом. Нічого. Якщо ви порівнюєте SVG побайтово, оновіть еталони.

2026-10-14 · @astroway/render 0.2.1: планети не накладаються

Колесо wheel-western (і бі-, три-колесо, композит) розводить близькі планети вздовж кільця, а не виштовхує назовні: гліфи й позначки ℞ більше не торкаються одне одного й номерів домів у щільній карті, зокрема в стеліумі й у групі через 0° Овна. Зсунутий гліф лишає засічку на справжньому градусі з тонкою лінією до неї (aw-planet-pointer у темі css). Той самий рендер у /v1/render/* і в пакеті @astroway/render 0.2.1 на npm.

Що робити з вашим кодом. Нічого. Якщо ви порівнюєте SVG побайтово або фарбуєте елементи колеса через CSS, оновіть еталони й додайте стиль для aw-planet-pointer, якщо потрібно.

2026-10-14 · /v1/ziwei/chart: істинний сонячний час

POST /v1/ziwei/chart приймає longitude і trueSolarTime, як /v1/bazi. З trueSolarTime: true, longitude і timezoneOffset страж і день читаються за сонцем над місцем народження, а застосована поправка повертається в input.trueSolarTime. Без longitude чи timezoneOffset такий запит дає 400 TRUE_SOLAR_TIME_NEEDS_PLACE.

Що робити з вашим кодом. Нічого: без trueSolarTime відповідь та сама, що й раніше, input.trueSolarTime у ній дорівнює { "applied": false }. Якщо ваші користувачі народилися далеко від меридіана свого часового поясу (Іспанія, захід Франції), передавайте довготу з trueSolarTime: true.

2026-10-14 · /v1/mayan/dreamspell враховує рік

POST /v1/mayan/dreamspell раніше не враховував рік: одна й та сама календарна дата давала один кін у будь-якому році (для 1990-06-15 виходив Kin 219). Тепер кін рахується безперервно від 26 липня 1987 = Kin 34 з пропуском 29 лютого, як у системі Аргуельєса: для 1990-06-15 це Kin 48, Solar Yellow Star. 29 лютого отримує кін 28 лютого.

Що робити з вашим кодом. Нічого міняти не треба, але кіни, збережені раніше, для більшості дат були хибні: перерахуйте їх.

2026-10-13 · /v1/lunar-calendar за місцевою добою

POST /v1/lunar-calendar приймає timezoneOffset (години на схід від UTC) або timezone (зона IANA, наприклад Europe/Kyiv). З ними дні календаря стають місцевою добою: dailyInfo[].date дорівнює місцевій півночі, isVoC береться за місцевим полуднем, phase та ingress розносяться по місцевих днях, і межі місяця для phases, ingresses, voidPeriods і moonAspects теж місцеві. timezone враховує перехід на літній чи зимовий час усередині місяця, день за днем. Раніше timezoneOffset приймався, але не використовувався, тож будь-яке зміщення давало ті самі дні за UT.

Що робити з вашим кодом. Без цих полів відповідь не змінилася: дні, як і раніше, за UT. Якщо ви передавали timezoneOffset і перераховували дні на свою зону самі, приберіть це перерахування: тепер його робить API.

2026-10-13 · isApplying у аспектів виправлено

Прапорець isApplying (аспект сходиться чи розходиться) порівнював орб зараз з орбом через цілу добу. Швидкий Місяць перескакував аспект, до точності якого лишалися години, і такий аспект позначався як розбіжний, а для частини пар кут рахувався по довшій дузі, і знак виходив хибним. Тепер прапорець береться зі знаку зміни орбу в цю мить. На наших тестових картах раніше хибними були 105 прапорців із 330, тепер жодного. Це стосується aspects і houseAspects у картах, транзитних аспектів і хорару. Денний isVoC у /v1/lunar-calendar тепер береться з voidPeriods тієї самої відповіді: він true, коли полудень дня за UT потрапляє в період Місяця без курсу. Раніше прапорець рахувався окремо й розходився з voidPeriods приблизно в третині днів.

Що робити з вашим кодом. Нічого, якщо ви не зберігали isApplying. Якщо ви кешували відповіді чи тексти, побудовані на “сходиться / розходиться”, перерахуйте їх: значення змінилося приблизно для третини аспектів.

2026-10-13 · BaZi: прогноз на рік з богами, взаємодіями, удачею і дванадцятьма місяцями

POST /v1/bazi/yearly тепер повертає stemGod і branchGod (бог стовбура року і головного ці його гілки відносно денного господаря, з кодом на кшталт direct_officer) та interactions: рік проти кожного стовпа карти, а саме 天干五合, 六合, 半合 і 拱合, 三合, який рік завершує, 六沖, 刑, 六害, 六破, 伏吟 і 反吟. З gender додається luckPillar, стовп удачі на Lichun цільового року, і handoverInYear, якщо зміна стовпа припадає на цей рік. З includeMonths: true додається months: дванадцять місяців від Lichun до Lichun, кожен від свого 節, з моментами початку й кінця, богами і взаємодіями.

POST /v1/bazi/monthly отримав ті самі stemGod, branchGod і interactions, а в flavor замість “year” тепер “month”. Взаємодії в /bazi/chart і символічні зірки мають стабільний code, а strength у /bazi/chart отримав favourableElementNames і unfavourableElementNames, як у /bazi/strength.

Що робити з вашим кодом. Нічого: поля лише додано. Якщо ви робили дванадцять викликів /monthly на рік, один виклик /yearly з includeMonths: true дає ті самі місяці, межі яких проходять точно по 節, а не по 15-му числу. branchInteractions у /yearly лишився як був; повніший перелік лежить в interactions.

2026-10-13 · BaZi: відповідь називає свої конвенції, межа доби на вибір, десять богів і удача всередині карти

/v1/bazi/chart, маршрути аналізу, day-master, ten-gods, luck-pillars, yearly і monthly повертають conventions: межі року й місяця, межу доби, поправку на сонячний час, пояс зі зсувом і літнім часом, дату китайського Нового року. Новий параметр dayBoundary: "23:00" | "midnight" (типово "23:00", як і було); народження в годину 23:00 отримує alternateDay з денним стовпом за іншим правилом. Дата без часу на день Lichun або 節 отримує boundaryInDay з обома прочитаннями стовпів року й місяця.

У /v1/bazi/chart кожен видимий і схований стовбур має tenGod зі стабільним code, а includeLuck: true з gender додає luck, ту саму послідовність, що й /v1/bazi/luck-pillars. Кожен стовп удачі тепер має ageStartExact з місяцями, startDate, endDate, startYear, endYear і tenGod.

day-master, ten-gods, luck-pillars, yearly і monthly приймають trueSolarTime, longitude, timezone і dayBoundary так само, як /chart, тож одне народження дає одного денного господаря на всіх маршрутах. У yearly і monthly поле timezone розв’язується поруч із natalDate.

Що робити з вашим кодом. Нічого: поля й параметри лише додано, старі значення не змінилися. Якщо ви рахували /yearly без поправки, а /chart з нею, передайте ті самі trueSolarTime і longitude в обидва. Опис ваг схованих стовбурів у weighting уточнено: вага йде за днями правління (人元司令), тому на 辰戌丑未 залишковий стовбур важить 0.3, а збережений 0.1. Числа не змінилися.

2026-10-13 · Фаза Місяця: значення, градус, відстань і наступні фази

GET /v1/public/moon-phase віддає більше без ключа: phaseKey (одна з восьми фаз), moonDegree всередині знака, distanceKm до Місяця, next з моментами наступних молодика, першої чверті, повні й останньої чверті в UTC, а також meaning і keywords. Ті самі meaning і keywords мовою запиту лежать у localized.

Що робити з вашим кодом. Нічого: поля лише додано. Моменти фаз збігаються з US Naval Observatory з точністю до хвилини, тож окремий календар фаз для віджета більше не потрібен.

2026-10-12 · Публічна сумісність повертає локалізовані назви

GET /v1/public/compatibility/matrix і POST /v1/public/synastry тепер повертають об’єкт localized, який слідує за ?lang= або Accept-Language. Англійські ідентифікатори (aries, trine, harmonious, identity) лишилися на своїх місцях і не змінюються.

Що робити з вашим кодом. Нічого, якщо ви порівнюєте англійські значення. Якщо ви тримали власні переклади знаків, відношень, стихій, сфер чи міток сумісності, тепер їх можна брати з відповіді. У матриці localized це таблиці від ідентифікатора до назви (signs, relations, tones, elements, modalities), а не перекладена копія кожної з 78 пар. У синастрії це перекладена label і таблиці labels, spheres, aspects, planets, де ключі записані так само, як у рядках aspects.

Назви беруться з тієї ж явної таблиці термінів на 21 мові, що й решта блоків localized, без машинного перекладу.

2026-10-11 · Фактори енергії в гороскопах знаків зі структурою

Нові поля. Кожен елемент energy.factors у /v1/horoscope/{daily,weekly,monthly} і /v1/public/horoscope/* тепер має kind: aspect (з planet1, aspect, planet2, ruler і локалізованими planet1Name, aspectName, planet2Name), moon (relation: sameElement, square або opposition, плюс sign і signName) або house (planet, planetName, house).

Що робити з вашим кодом. Нічого: рядок factor і effect лишилися як були. Якщо ви розбирали factor регулярним виразом, щоб перекласти, беріть нові поля.

2026-10-10 · C# / .NET SDK

Новий офіційний пакет Astroway.Sdk на NuGet: кожен ендпоінт API як асинхронний метод (aw.Chart.ComputeAsync, aw.Render.WheelWesternAsync) з CancellationToken, повтори при 408/409/429/5xx з Retry-After, один Idempotency-Key на POST і окремий виняток на кожен тип помилки. DrawChartAsync малює вже пораховану карту за 1 кредит. .NET Standard 2.0 і .NET 8, єдина залежність System.Text.Json.

Terminal window
dotnet add package Astroway.Sdk

Що робити з вашим кодом. Нічого, якщо ви ходите в API з .NET власним HttpClient. Якщо хочете готовий клієнт, приклад на сторінці SDK.

2026-10-09 · Публічний бодиграф

POST /v1/public/human-design віддає бодиграф без ключа: тип, стратегія, авторитет, профіль, визначені центри, канали й ворота. Схема входу та рушій ті самі, що в платному POST /human-design.

Що робити з вашим кодом. Нічого, якщо ви вже користуєтесь платним маршрутом. Якщо ви тримали Human Design в iframe тільки тому, що анонімного JSON не було, тепер його можна рендерити на своєму боці.

У специфікації з’явилися обидва публічні POST-маршрути (/public/chart не був описаний ніколи) і параметри всіх чотирнадцяти /embed/*, які досі виглядали так, ніби не приймають вхідних даних.

2026-10-08 · Девʼять грах у варгах, публічний каталог колод таро, рік у Personal Year за замовчуванням

Нове поле. POST /v1/vedic/varga/{D1..D60} повертає grahas: девʼять грах джйотиші (Сонце, Місяць, Марс, Меркурій, Юпітер, Венера, Сатурн, Раху, Кету) з довготою, знаком і градусом у вибраній варзі. Кету стоїть точно навпроти Раху. Поле planets не змінилося: там і далі зовнішні планети й true Node.

Новий ендпоінт. GET /v1/public/tarot/decks без ключа: та сама відповідь, що й GET /v1/tarot/decks, кешується на добу. Публічні розклади /v1/public/tarot/* приймають ?art=.

Менше обовʼязкових полів. year у POST /v1/numerology/{system}/personal-year тепер необовʼязковий: без нього береться поточний рік за UTC.

Що робити з вашим кодом. Нічого, якщо вам вистачає planets. Для джйотиш-інтерфейсу беріть grahas. Тексти в details дош і reason йог тепер називають знак словом (in Cancer) замість номера з одиниці; якщо ви їх розбирали, переходьте на числові поля.

2026-10-08 · Таро повертає локалізовані назви карт

GET /v1/public/tarot/daily тепер читає ?lang= та Accept-Language і повертає блок localized. Раніше ендпоінт обидва сигнали ігнорував, і це було записано в спеці.

"localized": {
"cards": {
"the-devil": { "name": "Диявол", "suit": "Старший Аркан", "nameLocalized": true }
}
}

Ключ у localized.cards - це slug карти, тому зіставлення йде за ідентифікатором, а не за перекладеним рядком. Англійські name і slug не змінилися.

Назви 22 Старших Арканів і чотирьох мастей тепер беруться з явної таблиці термінів у коді, у 21 мові. Ключові слова та значення карт лишаються прозою і приходять англійською.

Молодші Аркани теж локалізовані: назва збирається з рангу й форми масті, які заморожені так само, як і Старші. Складання це та частина, яка не узагальнюється, тому кожна мова має власний шаблон: англійська бере прийменник, українська й польська родовий відмінок, німецька ще й артикль, угорська та турецька ставлять масть першою і відмінюють ранг, японська з’єднує без пробілу, а гінді узгоджує присвійну частку з рангом. Уся колода з 78 карт має nameLocalized: true; поле лишається false тільки там, де таблиця не може дати назву.

Окремо виправлено спеку POST /v1/public/human-design: вона стверджувала, що блока localized немає, хоча ендпоінт його вже віддавав. Тепер localized описаний і в схемі відповіді, і в прикладі.

2026-10-07 · Матриця долі: виправлено згортання і центр

Виправлення, значення змінилися. POST /v1/destiny-matrix/ladini згортав числа понад 22 відніманням 22, а метод складає цифри (39 це 12, а не 17). Через це центр був неправильним майже на кожній даті, а поле centre несло нижній кут A+B+C. Тепер centre це справжній центр A+B+C+D; додано pointD, pointE, ancestral (кути родового квадрата), personalPurpose. skyAxis тепер B+D (вертикаль), earthAxis A+C. karmicTailSum і moneyLineNode лишилися для сумісності; перше дорівнює центру, друге earthAxis.

Що робити з вашим кодом. Якщо ви зберігали результати, перерахуйте їх. Нижній кут читайте з pointD, центр з pointE або centre.

2026-10-07 · Go SDK

Новий офіційний модуль github.com/astroway/astroway-go: кожен ендпоінт API як метод (aw.Chart.Compute, aw.Synastry.Compute, aw.Render.WheelWestern), context.Context у кожному виклику, повтори при 408/409/429/5xx з Retry-After, один Idempotency-Key на POST і помилки, які перевіряються через errors.Is. aw.DrawChart малює вже пораховану карту за 1 кредит. Лише стандартна бібліотека, Go 1.22+.

Terminal window
go get github.com/astroway/astroway-go

Що робити з вашим кодом. Нічого, якщо ви ходите в API з Go власним HTTP-клієнтом. Якщо хочете готовий клієнт, приклад запуску на сторінці SDK.

2026-10-06 · Картинки карт таро на вибір і тлумачення всього розкладу

Нове поле. Кожна карта у відповідях /v1/tarot/* і /v1/public/tarot/* має image з url (600 px), url2x (1200 px), width, height і art; розклад також повертає back, сорочку карти. Оформлення обирається параметром art (у тілі POST або ?art= у GET): для Rider-Waite-Smith rws-1909 (типово), rws-restored, rws-vector, для Марсельського Таро arnoult-1748, для Ленорман dondorf (35 з 36 карт, у Місяця картинки немає). Усі набори є суспільним надбанням. GET /v1/tarot/decks перелічує колоди, розклади й набори.

Новий ендпоінт. POST /v1/interpret/tarot пише тлумачення розкладу: кожна позиція в контексті, підсумок і порада, 21 мова. Приймає слаги карт або масив drawn з відповіді розкладу без змін. 100 кредитів, доступний на Free.

Що робити з вашим кодом. Нічого, якщо картинки вам не потрібні: нові поля лише додані. Щоб показати карти, беріть card.image.url. Приклади: Таро.

2026-10-05 · TypeScript SDK 1.11.0: три тіла запиту виправлено

Типи перегенеровано з поточної специфікації. Три методи раніше мали тіло чужого маршруту, тож типізований виклик не вдавалося написати: aw.business.teamCompatibility({ founder, partner }), aw.horary.planetaryHours({ dayOfWeek, sunriseHour, sunsetHour }) і aw.mcp.multiChartContext({ charts, intent }). Нові поля returnMoment, midpoint і localized у роздачах Таро Райдера-Вейта тепер типізовано.

Що робити з вашим кодом. Нічого, якщо він працював. Єдина зміна типів: sign1 і sign2 у тілі сумісності знаків тепер одна з дванадцяти назв знаків, а не довільний string. API інших значень і раніше не приймав, але змінну типу string доведеться звузити.

Python і PHP SDK отримують ту саму специфікацію у версії 1.10.1; їхні методи не змінюються.