Перейти до вмісту
TypeScript · npm

Офіційний TypeScript SDK

Типи для всіх 299 ендпоінтів, а документація кожного поля з’являється при наведенні курсора. Залежностей немає, тож до вашого проєкту додається лише сам клієнт.

npm install occult-api
299
Ендпоінти, усі з типами
2 392
Задокументовані поля
492
Переліки в автодоповненні
0
Залежності

Швидкий старт

Якщо apiKey не задано, клієнт бере OCCULT_API_KEY зі змінних середовища. Створіть ключ — його показують лише раз, тож скопіюйте його, перш ніж піти зі сторінки.

import { OccultApi } from "occult-api";

const occult = new OccultApi({ apiKey: process.env.OCCULT_API_KEY });

const sun = await occult.astro.sunrise({
  date_time: "2026-09-01T06:00:00+05:30",
  latitude: 26.9124,
  longitude: 75.7873,
  timezone_as_float: 5.5,
});

console.log(sun.sunrise, sun.sunset);

Методи повторюють URL

/api/astro/eclipse/next-solar/ — це occult.astro.eclipse.nextSolar(). Сім шляхів є водночас і ендпоінтом, і батьківським вузлом, тому їх можна викликати як функції: працюють і occult.astro.eclipse(), і occult.astro.eclipse.upcoming().

Назви полів точно такі, як очікує API: date_time, а не dateTime. Шару перетворення немає, тож що ви пишете, те й надсилається.

Один кредит — незалежно від обсягу

Найкорисніше, що варто знати про ціни: шість розрахунків в одному виклику коштують у шість разів менше, ніж шість окремих викликів.

// Six calculations, ONE credit. A call costs the same whether you
// ask for one key or twenty, so batch what the screen needs.
const panchang = await occult.astro.panchanga({
  ...place,
  keys: ["tithi", "nakshatra_segments", "yogam", "karana", "choghadiya", "rahu_kaalam"],
});

Ці назви типізовано для кожного ендпоінта. Панчанга приймає 57 таких назв, і одна помилкова відхиляє весь запит. Тож SDK перетворює це на помилку компіляції, а не на змарнований виклик.

Помилки, які легко обробляти

import { OccultApiError } from "occult-api";

try {
  await occult.astro.panchanga({ ...place, keys: ["tithi"] });
} catch (error) {
  if (error instanceof OccultApiError) {
    if (error.code === "insufficient_credits") await upgradePlan();
    if (error.code === "validation_error") console.log(error.fields);
    // error.retryable is false for anything a retry cannot fix
  }
}

Кожна помилка — це OccultApiError зі сталим машинним кодом, тож ви обробляєте причину, а не розбираєте речення, яке можуть переформулювати. Тимчасові збої повторюються один раз; запит із відкликаним ключем — ніколи, бо повтори в API з оплатою за виклик перетворюють одну помилку на три.

Згенеровані методи нічого не обмежують

// Released after this SDK version? Call it anyway.
await occult.call("/api/astro/some-new-endpoint/", { date_time });

Типізовані методи — це обгортки над одним публічним викликом, тож ендпоінт, що вийшов після встановленої у вас версії, доступний одразу, без очікування нового релізу SDK.

Лише на сервері

Ваш ключ витрачає справжні кредити, і він ніколи не має потрапити в браузерний бандл, де його прочитає будь-хто, хто відкриє інструменти розробника. API приймає виклики з браузера, тож запит із фронтенду спрацює — і віддасть ваш ключ кожному відвідувачеві. Викликайте SDK зі свого бекенда й передавайте на клієнт лише результат.

Коли що обирати

Цей SDK

Щоб писати код. Ви створюєте продукт, і вам потрібні типи, автодоповнення й помилки, які можна обробити.

MCP-сервер →

Щоб питати. Ви хочете, щоб Claude чи Cursor виконали розрахунок у розмові, зовсім без коду.