目录

开发者文档

开放接口文档

与28开放平台提供免费、只读的开奖数据面(加拿大28 与哈希28)。覆盖开奖与倒计时、Keno 源数据(仅加拿大28)、已开 / 遗漏 / 长龙、四维人工智能预测,以及公开算法大厅与详情。HTTPS only,需 API Key;数据面读 Redis 缓存。个人 Key 无账号配额、不限流;门户 Demo Key 按 IP 软限流。短路径与旧开放面对齐。

Base URL
https://yu28.top
鉴权
X-Api-Key / Bearer
格式
JSON(可改 .xml
时区
北京时间展示
费用
免费,无配额
限流
个人 Key 不限流

提供

  • 最近 N 期 / 按期号单期,含下期倒计时(不传 game 为加拿大28)
  • Keno 二十码源数据(仅加拿大28)
  • 当日已开统计(带 date)、遗漏与长龙(期号版本)
  • 单双 / 大小 / 双组 / 杀组预测
  • 公开算法列表与命中摘要(展示序号 id

不提供

  • 算法公式 steps / 私密说明
  • 投注、资金、会员账本
  • 站内会话接口 /bff/*
  • 探活 /api/health(公网不开放)

接口一览

12 个端点与 开放接口门户 一一对应。路径为短码(兼容旧开放面),不是 REST 资源名。所有数据接口均为 GET

接入约定

下列语义已与现网对齐。对接时按此实现,不要按字段名猜测。

约定说明
nbr 两种含义/api/kj/api/keno、四维预测:条数,1–100,省略为 1。/api/qh:期号,必填正整数。两种含义不要混用。
game不传、传 pc28、或任何非 hx28 的值,一律按加拿大28;未知值返回 400。只有 game=hx28(大小写不限)切哈希28。除 Keno 外 11 个端点路径与字段相同。哈希28没有 Keno:/api/keno?game=hx28400 VALIDATION。大厅 id 按彩种隔离,不要跨彩套用。哈希28 开奖行在有值时另带 ethHeight / tronHeight / ethHash / tronBlockId / md5
参数对错非法条数、非法期号、缺失/非法算法 id、未知 category400 VALIDATION,不会改成默认值。未知 sort 回落到近 20 或近 100 期胜率降序(看 window)。非法 page / pageSize 回落为 1 / 20;pageSize 上限 50。
开奖串/api/kjnumber 是三位和式,如 1+8+3=12。预测接口把式子与和值拆开:number 1+8+3num12
待开空值预测接口待开用 JSON null。算法详情 records 待开行用空串 ""hit 仍为 null。两套不要混判。
期号类型开奖 / 预测 / 长龙起止期号均为字符串。大厅算法 id 为数字(展示序号,不是 UUID)。
长龙 status中文文案,现网为「进行中」「已断开」。按字符串比较,不要当稳定枚举码。
时间开奖 time 为北京时间字符串,如 2026-07-31 11:25:00,不是 ISO 8601 UTC。
路径后缀.json、无后缀(JSON)或 .xml。其它后缀 404 NOT_FOUND。成功才按后缀返回 XML;出错 body 始终是 JSON。XML 里 JSON null 写成空标签(如 <number/>)。

AI 读版

AI 对接请直接读 Markdown 契约,不要爬本页 HTML。

一键提示词

请阅读 https://yu28.top/developers/open-api.llms.md
按其中的白名单路径与鉴权规则,用我的 YU28_API_KEY 写对接代码。
不要依赖 /bff/*;算法 id 用展示序号而非 UUID。
nbr 在 kj/keno/预测是条数,在 qh 是期号。

快速开始

  1. 1 /app?tab=api 生成 Key(明文只显示一次,请立刻保存)
  2. 2请求头携带 X-Api-Key: yu28_…,不要把个人 Key 放进 URL
  3. 3拉取 /api/kj.json?nbr=1 验证连通

cURL

curl -sS -H "X-Api-Key: $YU28_API_KEY" \
  "https://yu28.top/api/kj.json?nbr=1"

JavaScript

const res = await fetch("https://yu28.top/api/kj.json?nbr=1", {
  headers: { "X-Api-Key": process.env.YU28_API_KEY },
});
const body = await res.json();
if (!res.ok) throw new Error(body?.error?.message ?? res.statusText);

Python

import os, requests

r = requests.get(
    "https://yu28.top/api/kj.json",
    params={"nbr": 1},
    headers={"X-Api-Key": os.environ["YU28_API_KEY"]},
    timeout=15,
)
r.raise_for_status()
print(r.json())
算法链路:先 /api/dt 拿展示序号 id,再调 /api/sf?id= 取预测与记录。已知期号用 /api/qh?nbr=,不要用 /api/kj 的条数参数去查期号。

鉴权与 Key

Key 形态为 yu28_ + 16 位十六进制;每账号最多 5 个有效 Key。生产环境请放在请求头,勿写入前端公开仓库。

GET /api/kj.json?nbr=1 HTTP/1.1
Host: yu28.top
X-Api-Key: yu28_你的密钥

# 等价
Authorization: Bearer yu28_你的密钥
  • 个人 Key 禁止放在 URL ?key= ?api_key=(二者同等;仅门户 Demo Key 可用 query)。误传个人 Key 会 401
  • 个人 Key 数据面不限流、不配额计费。Demo Key 按 IP 每分钟最多 60 次,超出 429 RATE_LIMIT
  • 管理入口:用户中心 / 接口管理

响应格式

本文示例一律 JSON。成功 HTTP 200;路径加 .json 或省略后缀(默认 JSON)。字段为驼峰 / 短英文键。

需要 XML 时把后缀改成 .xml(如 /api/kj.xml)。字段语义与 JSON 相同,仅序列化不同:根节点 <response>,数组元素多为 <item>;已开/遗漏里纯数字键写成 <k_10>(JSON 仍为 "10")。出错时 body 仍是 JSON,与后缀无关。

错误处理

失败时 HTTP 为 4xx / 5xx,body 始终为 JSON(含请求 .xml 时):

{
  "error": {
    "code": "UNAUTHORIZED",
    "message": "无效的 API Key"
  }
}
HTTPcode含义
400VALIDATION参数无效:非法条数 / 期号、缺失或非法算法 id、未知 category、哈希28 调 Keno
401UNAUTHORIZED缺少或错误的 Key,或把个人 Key 放进了 URL
404NOT_FOUND期号不存在、算法不存在或未公开、路径后缀不是 json/xml
429RATE_LIMIT仅 Demo Key:同一 IP 每分钟超过 60 次
503UNAVAILABLE / OPENAPI_UNAVAILABLE对应数据面未就绪,或开放 Key 服务未启用

开奖数据

/api/kj

最近 N 期开奖(最新在前)。此处 nbr条数,不是期号。省略为 1;写出则须为 1–100 的正整数,否则 400。只有 game=hx28 切哈希28;其它值按加拿大28。哈希28 行在有值时另带高度 / 哈希 / md5。

GET /api/kj.json?nbr=3

{
  "countdown": "02:40",
  "data": [
    {
      "nbr": "3463701",
      "time": "2026-07-31 11:25:00",
      "number": "4+8+2=14",
      "combination": "小双"
    }
  ]
}
字段说明
countdown相对最新一期的下期倒计时,形如 02:40;未知可能为空串
data[].nbr期号(字符串)
data[].time开奖时间,北京时间
data[].number三位和式,如 4+8+2=14
data[].combination大小单双组合文案,如 小双

按期号查开奖

/api/qh

期号取单期(须与 game 同一彩种);字段与 /api/kj 单条一致。此处 nbr 是期号,必填正整数;缺参 400,查无 404countdown 始终相对当前最新一期,不是所查那一期。

GET /api/qh.json?nbr=3463701

{
  "countdown": "02:40",
  "data": [
    {
      "nbr": "3463701",
      "time": "2026-07-31 11:25:00",
      "number": "4+8+2=14",
      "combination": "小双"
    }
  ]
}

Keno 开奖源数据

/api/keno

最近 N 期 Keno 二十码(仅加拿大28)。nbr/api/kj 相同,表示条数。 哈希28没有 Keno:game=hx28400 VALIDATION

GET /api/keno.json?nbr=1

{
  "data": [
    {
      "nbr": "3463701",
      "time": "2026-07-31 11:25:00",
      "nbrs": "1,4,7,9,20,23,25,26,27,31,38,39,49,52,54,56,58,62,72,74"
    }
  ]
}

nbrs:20 个号码,逗号分隔、无空格。time 为源日期与时刻拼接(如 2026-07-31 11:25:00),不是 ISO。

已开统计

/api/yk

当日已开次数(北京日历日)。date 为该份次数所属日;data 为扁平 map(数字键 / 玩法文案键)。大+小约等于该日已开期数。客户端须核 date,隔日包勿当今日。

GET /api/yk.json

{ "date": "2026-08-30", "data": { "10": 8, "大": 102, "小单": 48 } }

遗漏

/api/yl

data 扁平 map,值为遗漏期数;没有 date(以期号为版本)。

GET /api/yl.json

长龙

/api/cl

当前长龙列表。现网含进行中与已断开;status 为中文文案(「进行中」「已断开」),不要当机器枚举码。

GET /api/cl.json

{
  "data": [
    {
      "type": "周期",
      "content": "单双",
      "status": "进行中",
      "count": 8,
      "start": "3463693",
      "current": "3463700"
    }
  ]
}
字段说明
type / content长龙类型与玩法内容(中文)
status状态文案
count连续期数
start / current起始 / 当前期号(字符串)

人工智能·单双

/api/ds

四维路径:/api/ds(单双)· /api/dx(大小)· /api/sz(双组)· /api/sha(杀组)。nbr 为条数(最近 N 条,含待开期),规则同 /api/kj

GET /api/ds.json?nbr=10

{
  "data": [
    {
      "nbr": "3466878",
      "predict": "双",
      "number": null,
      "num": null,
      "result": null,
      "hit": null
    },
    {
      "nbr": "3466877",
      "predict": "单",
      "number": "1+2+3",
      "num": "6",
      "result": "单",
      "hit": true
    }
  ]
}
字段说明
predict预测文案(杀组为组合名,不含「杀」前缀)
number / num已开:开奖串(无和值)/ 和值字符串;待开:均为 null
result开奖维度结果:单双取组合第二字,大小取第一字,双组/杀组为完整组合;待开 null
hittrue / false / null(待开)

人工智能·大小

/api/dx

字段与 /api/ds 相同;predict / result 为大小维度。

GET /api/dx.json?nbr=10

人工智能·双组

/api/sz

字段与 /api/ds 相同;predict / result 为双组组合文案。

GET /api/sz.json?nbr=10

人工智能·杀组

/api/sha

字段与 /api/ds 相同;predict 为组合名(不含「杀」前缀)。

GET /api/sha.json?nbr=10

算法大厅

/api/dt

公开算法排序列表。返回的 id 是主站展示序号(如 #909),不是 UUID。未知 category 返回 400;未知 sort 回落到近 20 期胜率降序,响应里的 sort 是服务端实际键。

参数说明
sort别名 rate_desc / rate_asc 配合 window;或直接 rate20_desc / rate20_asc / rate100_desc / rate100_asc / streak_desc / miss_desc / created_desc / favorites_desc / max_streak_desc / max_miss_desc。未知值回落到近窗胜率降序。主序相同时按大厅复合次序(连挂再按近20胜率升序,胜率再按近100/连中/收藏/#no)
window / nbr胜率窗口只认 20100(默认 20)。大厅的 nbr 是窗口别名,不是条数
page / pageSize页码从 1;pageSize 默认 20、上限 50。非法值回落默认,不 400
category可选:big_small / odd_even / combo_predict / kill_group / double_group;未知 → 400
q可选关键词(名称等)
game与开奖相同;hx28 读哈希28 公开大厅
GET /api/dt.json?sort=rate_desc&window=20&pageSize=5

{
  "items": [
    {
      "id": 909,
      "name": "组合440",
      "category": "combo_predict",
      "author": "昵称",
      "hit20": "20/20",
      "hit100": "86/100",
      "streak": 24,
      "miss": 0,
      "maxStreak": 24,
      "maxMiss": 2
    }
  ],
  "page": 1,
  "pageSize": 5,
  "total": 8222,
  "category": null,
  "sort": "rate20_desc"
}

hit20 / hit100 为命中比(命中率 = 分子÷分母);author 为昵称,可能为 null。响应 sort 是服务端实际键。

算法详情

/api/sf

id 必填(该彩展示序号,可带 #)。不存在或未公开 → 404。在大厅字段上增加预测与近窗记录,不含公式predict / predictNbr 在尚无下期预测时为 null

  • records:最多 100 条已开 + 可选待开一行(插在最前)
  • 已开 number 为三位和式(与 /api/kj 相同,如 1+8+3=12);待开行 time / number 为空串,hitnull
GET /api/sf.json?id=909
可先调 /api/dtid,再调本接口。