U
UFCalendar/ufcalendar-typescript
Official TypeScript SDK for the UFCalendar Fight API — MMA API & UFC API (UFC, PFL, OKTAGON, BKFC, RIZIN):…
在 GitHub 查看 ↗链接已于 2026-11-12 核查 · HTTP 200 · 打开的是厂商自己的官网
安装与配置
取自该仓库的安装命令
npm install @ufcalendar/sdk
解析自我们于 2026-11-10 抓取的该仓库 README;我们未执行过。
这条是仓库自己写的安装方式,不是 MCP 客户端配置,所以不生成 JSON。
配置项的键名以你的客户端为准:客户端与 CLI
- ★ 数取值
- 0 ★ · UFCalendar/ufcalendar-typescript · 取自 GitHub 搜索 API · (2026-11-13 20:00:50 核对)
- 来源明细
- 从该仓库的 GitHub 页面直接读取 · 条目类型:开源项目
- 收录与活跃
- 收录于 2026-11-11 · 最近见到 2026-11-14 · 共见到 4 次 · 被 1 个来源列出
- 评分构成
- 综合分 103 · 1 个来源 · repo
- 安装
npm install @ufcalendar/sdk
常见问题(答案都来自我们的记录)
怎么安装?
该仓库给出的安装命令是
npm install @ufcalendar/sdk。我们的记录里它是仓库自己提供的;不保证在你的客户端上直接可用。它适合谁 / 用来做什么?
我们把它归在这些标签下: 开源项目。标签来自条目自身,不是我们强加的分类。
谁维护它、还在更新吗?
仓库
UFCalendar/ufcalendar-typescript;我们收录于 2026-11-11;最近见到 2026-11-14。这里没有"官方认证"或"质量评级"——我们只记录来源与时间。# @ufcalendar/sdk — MMA Fight Data API client for TypeScript
以下摘录自该仓库的 README(片段) · 在 GitHub 读完整 README →
UFC, PFL, OKTAGON, BKFC and RIZIN events, fight stats, results, rankings history and judges' scorecards from one typed client.
The MMA Fight Data API by UFCalendar (the UFCalendar Fight API) is a REST API for MMA data: UFC, PFL, OKTAGON, BKFC and RIZIN events, full fight cards, results within minutes, per-fight and round-by-round statistics, complete fighter careers, the only MMA data API with point-in-time UFC rankings history back to 2013, and the only one serving judges' scorecards — every official, every round — plus the UFCalendar consensus odds line (current, opening and closing on every plan, line movement on Pro). This package is a dependency-free fetch wrapper over it: one method per endpoint, cursor pagination handled for you, ESM + CJS, Node 18+, browsers and edge runtimes.
bash
npm install @ufcalendar/sdk
Get a free key at — the free plan is 100 requests a month, no card, never expires. Paid plans from $19/month for 30,000 requests (Pro $49 for 200,000, Business $149 for 1,000,000) — hard caps, no overage.
## Quickstart in 3 lines
ts
import { FightAPI } from '@ufcalendar/sdk';
const api = new FightAPI('ufcalendar_...'); // free-plan key, no card
for await (const ev of api.events({ org: 'ufc', limit: 1 })) console.log(ev.title); // the next UFC card
## Quickstart
ts
import { FightAPI } from '@ufcalendar/sdk';
const api = new FightAPI(process.env.UFCALENDAR_API_KEY); // or new FightAPI({ apiKey })
// Upcoming UFC schedule, soonest first
for await (const ev of api.events({ org: 'ufc', limit: 5 })) {
console.log(ev.starts_at, ev.title, ev.is_ppv ? 'PPV' : '');
// Full card + results of the newest completed UFC event
const [latest] = await Array.fromAsync(api.events({ org: 'ufc', status: 'completed', limit: 1 }));
const card = await api.event(latest!.slug);
for (const f of card.card) {
if (f.result) {
console.log(f.fighter_a?.name, 'vs', f.fighter_b?.name, '->', f.result.method, R${f.result.round});
// The judges' scorecards for one bout — the official commission record
const cards = await api.fightScorecards(card.card[0]!.id);
// UFC rankings on any date since February 2013 (rank 0 = champion)
const board = await api.rankings('ufc', { date: '2016-11-14' });
// A fighter's complete multi-promotion career
const history = await api.fighterHistory('islam-makhachev');
List endpoints are async generators that follow meta.pagination.next_cursor for you; pass limit to stop after N rows. Everything else returns the envelope's data. The last response's meta and rate-limit headers stay on the client (api.lastMeta, api.lastRateLimit).
## What's covered
| Method | Endpoint |
| plans() | GET /v1/plans — plans (Free first), quotas, free-plan terms, MCP endpoint (no key required) |
| orgs() / org(slug) | GET /v1/orgs / …/{slug} |
| events({ org, status, from, to, order, isTitleCard, isPpv, include: ['headline'], limit }) | GET /v1/events (paginated; headline = each card's main event and its result) |
| event(slug, { include: ['eta', 'odds'] }) / eventChanges(slug) | GET /v1/events/{slug} / …/changes (eta = per-bout estimated start; odds = each bout's latest consensus line) |
| eventWatch(slug, { country }) | GET /v1/events/{slug}/watch — how to watch one event, per country: the rights deals for its series merged with the event's own listings |
The MMA Fight Data API by UFCalendar (the UFCalendar Fight API) is a REST API for MMA data: UFC, PFL, OKTAGON, BKFC and RIZIN events, full fight cards, results within minutes, per-fight and round-by-round statistics, complete fighter careers, the only MMA data API with point-in-time UFC rankings history back to 2013, and the only one serving judges' scorecards — every official, every round — plus the UFCalendar consensus odds line (current, opening and closing on every plan, line movement on Pro). This package is a dependency-free fetch wrapper over it: one method per endpoint, cursor pagination handled for you, ESM + CJS, Node 18+, browsers and edge runtimes.
bash
npm install @ufcalendar/sdk
Get a free key at — the free plan is 100 requests a month, no card, never expires. Paid plans from $19/month for 30,000 requests (Pro $49 for 200,000, Business $149 for 1,000,000) — hard caps, no overage.
## Quickstart in 3 lines
ts
import { FightAPI } from '@ufcalendar/sdk';
const api = new FightAPI('ufcalendar_...'); // free-plan key, no card
for await (const ev of api.events({ org: 'ufc', limit: 1 })) console.log(ev.title); // the next UFC card
## Quickstart
ts
import { FightAPI } from '@ufcalendar/sdk';
const api = new FightAPI(process.env.UFCALENDAR_API_KEY); // or new FightAPI({ apiKey })
// Upcoming UFC schedule, soonest first
for await (const ev of api.events({ org: 'ufc', limit: 5 })) {
console.log(ev.starts_at, ev.title, ev.is_ppv ? 'PPV' : '');
// Full card + results of the newest completed UFC event
const [latest] = await Array.fromAsync(api.events({ org: 'ufc', status: 'completed', limit: 1 }));
const card = await api.event(latest!.slug);
for (const f of card.card) {
if (f.result) {
console.log(f.fighter_a?.name, 'vs', f.fighter_b?.name, '->', f.result.method, R${f.result.round});
// The judges' scorecards for one bout — the official commission record
const cards = await api.fightScorecards(card.card[0]!.id);
// UFC rankings on any date since February 2013 (rank 0 = champion)
const board = await api.rankings('ufc', { date: '2016-11-14' });
// A fighter's complete multi-promotion career
const history = await api.fighterHistory('islam-makhachev');
List endpoints are async generators that follow meta.pagination.next_cursor for you; pass limit to stop after N rows. Everything else returns the envelope's data. The last response's meta and rate-limit headers stay on the client (api.lastMeta, api.lastRateLimit).
## What's covered
| Method | Endpoint |
| plans() | GET /v1/plans — plans (Free first), quotas, free-plan terms, MCP endpoint (no key required) |
| orgs() / org(slug) | GET /v1/orgs / …/{slug} |
| events({ org, status, from, to, order, isTitleCard, isPpv, include: ['headline'], limit }) | GET /v1/events (paginated; headline = each card's main event and its result) |
| event(slug, { include: ['eta', 'odds'] }) / eventChanges(slug) | GET /v1/events/{slug} / …/changes (eta = per-bout estimated start; odds = each bout's latest consensus line) |
| eventWatch(slug, { country }) | GET /v1/events/{slug}/watch — how to watch one event, per country: the rights deals for its series merged with the event's own listings |
收录徽章(可选)
想把收录标记放进 README 就复制这行,可选,不影响收录。
[](https://anclum.com/zh/s/ufcalendar-ufcalendar-typescript/)
- 来源
- github · https://github.com/UFCalendar/ufcalendar-typescript
- 按领域浏览
- 开源项目
- 收录于
- 今天
同类推荐
所属领域与标签
每个标签都能点进去看同类的全部条目。数字是当前库里的真实条数。