AstroWay/api v2.204.0 · ko
모든 시스템 정상 작동 중

Natal Chart API in TypeScript: SDK + React Example

Compute a natal chart in TypeScript with the AstroWay SDK - typed responses, a React component, and where it beats a local ephemeris library.

The AstroWay TypeScript SDK is generated from the OpenAPI spec, so request bodies and responses are fully typed - your IDE autocompletes the fields and the compiler catches mistakes before runtime. Here’s a natal chart, then the same call inside a React component.

Terminal window
npm install @astroway/sdk
# or: pnpm add @astroway/sdk

Get a key on the dashboard - 10,000 credits/month free, no card.

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,
latitude: 50.45,
longitude: 30.52,
});
// chart.planets is typed - not `any`
for (const p of chart.planets) {
console.log(`${p.name} ${p.longitude.toFixed(2)}° ${p.sign}`);
}

The { ok, data, error } envelope is unwrapped for you, so chart is the data. Need a raw response or an endpoint without a typed namespace yet? aw.client.POST('/chart', { body }) is the underlying typed fetch.

No extra dependency needed - call the SDK from an effect (or a server action / route handler if you don’t want the key in the browser):

import { useEffect, useState } from 'react';
import { Astroway } from '@astroway/sdk';
const aw = new Astroway({ apiKey: import.meta.env.VITE_ASTROWAY_KEY });
export function NatalChart({ birth }: { birth: {
date: string; time: string; timezoneOffset: number; latitude: number; longitude: number;
} }) {
const [planets, setPlanets] = useState<{ name: string; sign: string }[]>([]);
useEffect(() => {
aw.chart.compute(birth).then((c) => setPlanets(c.planets));
}, [birth]);
return (
<ul>
{planets.map((p) => <li key={p.name}>{p.name} in {p.sign}</li>)}
</ul>
);
}

In production, keep the API key server-side: call aw.chart.compute from a Next route handler or a small proxy and pass the result to the client. The SDK runs the same in Node, edge runtimes and the browser.

Mutating-style calls take an idempotency key so a retry can’t double-charge credits, and errors are a typed hierarchy:

import { RateLimitError, BadRequestError } from '@astroway/sdk';
try {
await aw.synastry.aspectGrid(body, { idempotencyKey: 'replay-abc' });
} catch (e) {
if (e instanceof RateLimitError) {/* back off */}
if (e instanceof BadRequestError) {/* show which field failed */}
}

A browser-only ephemeris library ships hundreds of kilobytes of WASM + data to every visitor. The SDK keeps the calculation server-side over a typed HTTP call, so your bundle stays small and you also get 761 other endpoints (synastry, transits, Human Design, AI interpretations) without adding dependencies.

MakSeong · AstroWay

AstroWay API를 만들고 있어: Swiss Ephemeris를 순수 REST로 감싸고, 실제로 중요한 지루한 세부사항을 기록합니다.

// 이걸로 빌드해

Solar Fire에 사용된 것과 동일한 Swiss Ephemeris - 단 4줄의 코드로.

카드 없이 무료 키. 첫 결제 전까지 월 5,000 API 호출.

더 많은 블로그 글 모든 글 보기 →

Ephemeris 2026-07-19

우리가 정확성을 제어하는 방법: CI vs swetest 및 NASA

아스트로-API의 정확성은 하나의 에프메르에디드 리팩토링으로 쉽게 저하됩니다. CI의 보호를 분석합니다: 앱과 API를 위한 하나의 스위스 에프메르에디스 핵심, 수백의 스냅샷이 동결된 표준 맵에, swetest CGI, Kerykeion, Prokerala 및 NASA의 어두움 카탈로그에 대한 각 PR의 삼각화.

Engineering 2026-07-15

세 개의 공식 SDK: TypeScript, Python, PHP, 원시 curl 대신

원시 HTTP는 작동하지만, 타이핑된 클라이언트는 시간을 절약합니다: 경로 자동 완성, 요청 및 응답 유형, 408/409/429/5xx에 대한 내장된 재시도 및 스테인리스 스타일 오류 계층 구조. 세 개의 공식 SDK - @astroway/sdk (npm), astroway (PyPI), astroway/sdk (Packagist) - 및 하나의 OpenAPI 계약에서 생성된 방법을 살펴봅니다.

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.