雨猫/ 开放数据
RAINEKO / DATA API

每一报,
都有据可查。

连接 EEW 历史档案与雨猫自感测。
从事件摘要到完整逐报数据,在一个入口查询。

统一接口地址
https://api.raineko.net/api/v1
无需 API KeyJSON / SSE / WebSocket支持跨域读取

开始接入前

这里提供观测与历史归档数据。缺失值保持未知,归档完整度、连接状态和正在发生的预警是不同信息。

来源与用途

EEW 档案收录 Wolfx 转发的 CEA、四川、福建、重庆数据。CEA 当前对应 cenc_eew。雨猫自感测是独立算法结果,震级与位置为估算值,需结合官方信息使用。

时间与精度

EEW 时间使用 ISO 8601;日期查询按北京时间。HYP 时间为 Unix 毫秒,保留计算、发报、入库与源时间。毫秒记录精度不代表源数据具有毫秒采样率,NIED 图像为每秒一帧。

读取与续传

仅支持 GET、HEAD、OPTIONS,不需要登录或凭据。允许 CORS;原文链接相对于 api.raineko.net 解析。实时流用 report.id 续传并去重,接收记录的 deliveryId 是另一套编号。

请求频率

当前网关每 IP 平均 10 次/秒、突发 80 次、最多 20 个并发连接;实时流占用连接。遇到 429、503 或断线请退避重试,建议从 1 秒逐步增加至 30 秒。不要轮询完整大事件。

雨猫自感测字段

定位结果读取 event.hypEstimate:经纬度、深度、发震时刻、参与站数和 score。质量还包含 RMS、方位角空隙与等级;等级不代表已标定的实际误差。震级读取 event.magnitude,null 表示尚不能估算;magnitudeRetained 标明沿用最近一次有效估值。

事件 stations 只记录算法关联台站。metrics 按地表/地中及 PGA/震度分开保留峰值、源时间、接收时间和回补标记。图像历史回补不注入实时检测,不改写已经发出的报告。

常见状态码

200 成功 · 400 参数错误 · 404 不存在或未公开 · 405 不支持写入 · 410 旧入口停用 · 429 超出限额 · 5xx 服务暂不可用。

01 / EEW

机构 EEW 档案

事件、报文版本与原始接收记录,各自保留。

GET/api/v1/status

运行状态

归档计数、来源连接状态、最近接收时间和连接记录。connected 只代表当前连接状态,不保证历史无缺报。

curl --fail --compressed 'https://api.raineko.net/api/v1/status'
查看响应字段 · Status
{
  "type": "object",
  "description": "EEW 运行状态;详细来源状态和统计字段可随版本增加。",
  "properties": {
    "version": {
      "type": "integer"
    },
    "serverTime": {
      "type": "string",
      "format": "date-time",
      "nullable": true
    },
    "healthy": {
      "type": "boolean"
    },
    "sources": {
      "type": "array",
      "items": {
        "type": "object"
      }
    },
    "archive": {
      "type": "object"
    },
    "connections": {
      "type": "array",
      "items": {
        "type": "object"
      }
    }
  },
  "additionalProperties": true
}

$ref 字段的完整定义见 OpenAPI 文件。未列出的附加字段仍按原样保留。

读取真实数据,不修改档案
GET/api/v1/events

事件列表

各机构分别建档,不跨机构合并。按发震时间筛选,返回 latest 和缺报信息。

请求参数
参数类型说明
source查询string按来源筛选;省略时返回全部来源。可选:cea / sc / fj / cq
from查询string起始日期,YYYY-MM-DD,北京时间,包含当天。
to查询string结束日期,YYYY-MM-DD,北京时间,包含当天。
q查询string震中名称或上游事件编号,最多 100 字。
minMagnitude查询number最低震级。范围 -2 ~ 10
page查询integer从 1 开始的页码。默认 1范围 1 ~ 1000000
limit查询integer每页条数。默认 30范围 1 ~ 100
curl --fail --compressed 'https://api.raineko.net/api/v1/events?limit=1'
查看响应字段 · EewPage
{
  "type": "object",
  "description": "EEW 分页结果",
  "properties": {
    "items": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/EewEvent"
      }
    },
    "total": {
      "type": "integer"
    },
    "page": {
      "type": "integer"
    },
    "limit": {
      "type": "integer"
    },
    "pages": {
      "type": "integer"
    }
  },
  "additionalProperties": true
}

$ref 字段的完整定义见 OpenAPI 文件。未列出的附加字段仍按原样保留。

读取真实数据,不修改档案
GET/api/v1/events/{id}

事件与全部报次

保留同报次的不同内容版本,按报次顺序返回 reports。missingRevisions 表示尚未收录的报次,不能推断其内容。

请求参数
参数类型说明
id路径 · 必填string事件列表返回的 32 位十六进制 id;不是上游 sourceEventId。
curl --fail --compressed 'https://api.raineko.net/api/v1/events/{id}'

将示例中的 {id} / {number} 替换为列表或详情返回的真实值。HYP 事件 ID 使用 encodeURIComponent(id)。

查看响应字段 · EewEvent
{
  "type": "object",
  "description": "事件详情。列表项不含完整 reports。导出时 reports 额外含 rawText。",
  "properties": {
    "id": {
      "type": "string"
    },
    "source": {
      "type": "string"
    },
    "sourceEventId": {
      "type": "string"
    },
    "originAt": {
      "type": "string",
      "format": "date-time",
      "nullable": true
    },
    "latest": {
      "$ref": "#/components/schemas/EewReport"
    },
    "reports": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/EewReport"
      }
    },
    "reportCount": {
      "type": "integer"
    },
    "missingRevisions": {
      "type": "array",
      "items": {
        "type": "integer"
      }
    }
  },
  "additionalProperties": true
}

$ref 字段的完整定义见 OpenAPI 文件。未列出的附加字段仍按原样保留。

GET/api/v1/events/{id}/export

导出事件

JSON 包含全部报文版本、exportedAt 和各版本首次收到的 rawText。原文是收到的转发 JSON,不是官方机构原始电文。

请求参数
参数类型说明
id路径 · 必填string事件列表返回的 32 位十六进制 id;不是上游 sourceEventId。
curl --fail --compressed 'https://api.raineko.net/api/v1/events/{id}/export'

将示例中的 {id} / {number} 替换为列表或详情返回的真实值。HYP 事件 ID 使用 encodeURIComponent(id)。

查看响应字段 · EewEvent
{
  "type": "object",
  "description": "事件详情。列表项不含完整 reports。导出时 reports 额外含 rawText。",
  "properties": {
    "id": {
      "type": "string"
    },
    "source": {
      "type": "string"
    },
    "sourceEventId": {
      "type": "string"
    },
    "originAt": {
      "type": "string",
      "format": "date-time",
      "nullable": true
    },
    "latest": {
      "$ref": "#/components/schemas/EewReport"
    },
    "reports": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/EewReport"
      }
    },
    "reportCount": {
      "type": "integer"
    },
    "missingRevisions": {
      "type": "array",
      "items": {
        "type": "integer"
      }
    }
  },
  "additionalProperties": true
}

$ref 字段的完整定义见 OpenAPI 文件。未列出的附加字段仍按原样保留。

GET/api/v1/events/{id}/deliveries

接收记录

包括重复投递,按接收记录 ID 递增分页。与报告版本 ID 使用不同的游标,不可混用。

请求参数
参数类型说明
id路径 · 必填string事件列表返回的 32 位十六进制 id;不是上游 sourceEventId。
after查询integer上一页最后一条接收记录的 ID。默认 0范围 0 ~ 9007199254740991
limit查询integer每页接收记录数。默认 100范围 1 ~ 1000
curl --fail --compressed 'https://api.raineko.net/api/v1/events/{id}/deliveries'

将示例中的 {id} / {number} 替换为列表或详情返回的真实值。HYP 事件 ID 使用 encodeURIComponent(id)。

查看响应字段 · DeliveryPage
{
  "type": "object",
  "description": "接收记录分页",
  "properties": {
    "items": {
      "type": "array",
      "items": {
        "type": "object"
      }
    },
    "nextCursor": {
      "type": "integer"
    }
  },
  "additionalProperties": true
}

$ref 字段的完整定义见 OpenAPI 文件。未列出的附加字段仍按原样保留。

GET/api/v1/deliveries/{id}/raw

原始报文字节

id 使用报文的 deliveryId。X-Content-SHA256 校验原始字节;不要重新排版或重编码后再计算散列。

请求参数
参数类型说明
id路径 · 必填integer接收记录整数 ID。范围 1 ~ 不限
curl --fail --compressed 'https://api.raineko.net/api/v1/deliveries/{id}/raw'

将示例中的 {id} / {number} 替换为列表或详情返回的真实值。HYP 事件 ID 使用 encodeURIComponent(id)。

GET/api/v1/latest

各路最近事件

最近归档事件可能已经结束。latest 不是“正在预警”列表,必须检查时间、测试、取消和最终报标记。

curl --fail --compressed 'https://api.raineko.net/api/v1/latest'
查看响应字段 · Latest
{
  "type": "object",
  "description": "每路最近归档事件与来源状态",
  "properties": {
    "items": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/EewEvent"
      }
    },
    "sources": {
      "type": "array",
      "items": {
        "type": "object"
      }
    },
    "serverTime": {
      "type": "string",
      "format": "date-time",
      "nullable": true
    },
    "note": {
      "type": "string"
    }
  },
  "additionalProperties": true
}

$ref 字段的完整定义见 OpenAPI 文件。未列出的附加字段仍按原样保留。

读取真实数据,不修改档案
GET/api/v1/months

月份索引

按北京时间返回有档案的月份及事件数。

请求参数
参数类型说明
source查询string按来源筛选;省略时返回全部来源。可选:cea / sc / fj / cq
curl --fail --compressed 'https://api.raineko.net/api/v1/months'
查看响应字段 · Months
{
  "type": "object",
  "properties": {
    "items": {
      "type": "array",
      "items": {
        "type": "object",
        "description": "北京时间月份",
        "properties": {
          "month": {
            "type": "string",
            "example": "2026-10"
          },
          "events": {
            "type": "integer"
          }
        },
        "additionalProperties": true
      }
    }
  },
  "additionalProperties": true
}

$ref 字段的完整定义见 OpenAPI 文件。未列出的附加字段仍按原样保留。

读取真实数据,不修改档案
GET/api/v1/reports

增量同步

按入库 ID 递增同步报文。入库顺序不一定等于机构发报顺序;处理成功后保存 nextCursor,依据 id 幂等去重。

请求参数
参数类型说明
after查询integer已成功消费的最后一个入库 ID。实时订阅省略时从当前最新游标开始;reports 查询省略时为 0。范围 0 ~ 9007199254740991
limit查询integer每次返回报文版本数。默认 100范围 1 ~ 1000
curl --fail --compressed 'https://api.raineko.net/api/v1/reports?after=0&limit=1'
查看响应字段 · ReportPage
{
  "type": "object",
  "description": "增量报文分页",
  "properties": {
    "items": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/EewReport"
      }
    },
    "nextCursor": {
      "type": "integer"
    },
    "highWater": {
      "type": "integer"
    }
  },
  "additionalProperties": true
}

$ref 字段的完整定义见 OpenAPI 文件。未列出的附加字段仍按原样保留。

读取真实数据,不修改档案
GET/api/v1/stream

SSE 实时订阅

返回 ready、report、status 事件。after 优先于 Last-Event-ID;未指定游标时不回放历史。每 15 秒发送状态,历史积压分批发送;慢消费者可能断开,重新连接时续传。

请求参数
参数类型说明
after查询integer已成功消费的最后一个入库 ID。实时订阅省略时从当前最新游标开始;reports 查询省略时为 0。范围 0 ~ 9007199254740991
Last-Event-ID请求头string断线续传游标;after 存在时优先使用 after。
const stream = new EventSource('https://api.raineko.net/api/v1/stream');
stream.addEventListener('report', event => {
  const report = JSON.parse(event.data);
  console.log(report);
  // EventSource 自动重连携带 Last-Event-ID;跨页面恢复请保存 report.id。
});
WS/api/v1/ws

WebSocket 实时订阅

wss 连接,接收 ready / report / status;文本 ping 返回 pong。指定 after 可补发已归档数据。成功消费 report.id 后保存游标,重连时恢复,按 id 去重。

请求参数
参数类型说明
after查询integer已成功消费的最后一个入库 ID。实时订阅省略时从当前最新游标开始;reports 查询省略时为 0。范围 0 ~ 9007199254740991
const socket = new WebSocket('wss://api.raineko.net/api/v1/ws');
socket.onmessage = ({ data }) => {
  const message = JSON.parse(data);
  console.log(message);
  // 成功处理 report 后保存 message.id,用于断线续传。
};
02 / HYP

雨猫自感测

先读轻量摘要,再按需加载单报证据与完整导出。

GET/api/v1/hyp/status

雨猫自感测运行状态

包含算法指纹、检测与归档进程状态、来源健康信息和错误。服务器自感测不受机构 EEW 接管;图像归档状态不等于公开图像下载权限。

curl --fail --compressed 'https://api.raineko.net/api/v1/hyp/status'
查看响应字段 · HypStatus
{
  "type": "object",
  "description": "HYP 服务与来源状态",
  "properties": {
    "algorithm": {
      "type": "string"
    },
    "detector": {
      "type": "object",
      "nullable": true
    },
    "recorder": {
      "type": "object",
      "nullable": true
    },
    "errors": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "officialEewTakeover": {
      "type": "boolean",
      "enum": [
        false
      ]
    },
    "stationScope": {
      "type": "string",
      "enum": [
        "algorithm-associated"
      ]
    }
  },
  "additionalProperties": true
}

$ref 字段的完整定义见 OpenAPI 文件。未列出的附加字段仍按原样保留。

读取真实数据,不修改档案
GET/api/v1/hyp/events

自感测事件列表

只返回允许公开的事件。region 是展示用地区分组,latest 为末报摘要;韩国默认收起是网页行为,不影响 API 返回。

请求参数
参数类型说明
q查询string匹配事件 ID(不是地名),最多 100 字。
from查询integer首次检出时间的起点,Unix 毫秒,包含该时间。默认 0范围 0 ~ 9007199254740991
to查询integer首次检出时间的终点,Unix 毫秒,不包含该时间。范围 0 ~ 9007199254740991
page查询integer页码。默认 1范围 1 ~ 100000
limit查询integer每页条数。默认 30范围 1 ~ 100
curl --fail --compressed 'https://api.raineko.net/api/v1/hyp/events?limit=1'
查看响应字段 · HypPage
{
  "type": "object",
  "description": "HYP 分页;不返回 pages,可由 total 和 limit 计算。",
  "properties": {
    "items": {
      "type": "array",
      "items": {
        "type": "object",
        "description": "公开事件与末报摘要",
        "properties": {
          "id": {
            "type": "string"
          },
          "first_at": {
            "type": "integer",
            "format": "int64",
            "description": "Unix 毫秒"
          },
          "updated_at": {
            "type": "integer",
            "format": "int64",
            "description": "Unix 毫秒"
          },
          "status": {
            "type": "string"
          },
          "region": {
            "type": "string"
          },
          "latest": {
            "$ref": "#/components/schemas/HypReport"
          }
        },
        "additionalProperties": true
      }
    },
    "total": {
      "type": "integer"
    },
    "page": {
      "type": "integer"
    },
    "limit": {
      "type": "integer"
    }
  },
  "additionalProperties": true
}

$ref 字段的完整定义见 OpenAPI 文件。未列出的附加字段仍按原样保留。

读取真实数据,不修改档案
GET/api/v1/hyp/events/{id}

事件详情与逐报摘要

网页优先使用 view=summary:省略每报重复的 evidence、stations、sourceFrames,但保留逐报主要参数与事件台站峰值。省略 view 返回完整报文,较大事件可能有数十 MB。

请求参数
参数类型说明
id路径 · 必填string事件 ID;必须对整个 ID 做 URL 编码。例如 hyp:live:… 中的冒号编码为 %3A。
view查询stringsummary 为轻量摘要;省略返回完整数据。可选:summary
curl --fail --compressed 'https://api.raineko.net/api/v1/hyp/events/{id}'

将示例中的 {id} / {number} 替换为列表或详情返回的真实值。HYP 事件 ID 使用 encodeURIComponent(id)。

查看响应字段 · HypEvent
{
  "type": "object",
  "description": "事件状态是权威生命周期状态;服务中断不伪造最终报。",
  "properties": {
    "id": {
      "type": "string"
    },
    "first_at": {
      "type": "integer",
      "format": "int64",
      "description": "Unix 毫秒"
    },
    "updated_at": {
      "type": "integer",
      "format": "int64",
      "description": "Unix 毫秒"
    },
    "status": {
      "type": "string"
    },
    "reports": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/HypReport"
      }
    },
    "stations": {
      "type": "array",
      "items": {
        "type": "object",
        "description": "算法关联物理站,metrics 以 surface:pgaGal、underground:intensity 等分层键保存峰值、源时间、接收时间和 recovered。"
      }
    }
  },
  "additionalProperties": true
}

$ref 字段的完整定义见 OpenAPI 文件。未列出的附加字段仍按原样保留。

GET/api/v1/hyp/events/{id}/reports/{number}

按需读取完整单报

读取单报的完整关联证据、质量、台站快照、算法指纹和散列。隐藏事件与不存在事件均返回 404。

请求参数
参数类型说明
id路径 · 必填string事件 ID;必须对整个 ID 做 URL 编码。例如 hyp:live:… 中的冒号编码为 %3A。
number路径 · 必填integer从 1 开始的报次。范围 1 ~ 不限
curl --fail --compressed 'https://api.raineko.net/api/v1/hyp/events/{id}/reports/{number}'

将示例中的 {id} / {number} 替换为列表或详情返回的真实值。HYP 事件 ID 使用 encodeURIComponent(id)。

查看响应字段 · HypReport
{
  "type": "object",
  "description": "每报时间保存到毫秒;NIED 源图像为 1 秒分辨率。",
  "properties": {
    "reportNumber": {
      "type": "integer"
    },
    "reportedAt": {
      "type": "integer",
      "format": "int64",
      "description": "Unix 毫秒"
    },
    "recordedAt": {
      "type": "integer",
      "format": "int64",
      "description": "Unix 毫秒"
    },
    "epicenter": {
      "type": "string"
    },
    "epicenterRegion": {
      "type": "object",
      "description": "可选 JMA AreaEpicenter 代码、日文名称及边界来源"
    },
    "algorithm": {
      "type": "string"
    },
    "sha256": {
      "type": "string",
      "description": "入库原报告 payload 的散列;不是 HTTP 正文或摘要的散列。响应附加 sha256,JSON 重排也会改变字节。"
    },
    "quality": {
      "type": "object",
      "description": "约束质量,不是经过标定的实际误差概率。",
      "properties": {
        "grade": {
          "type": "string",
          "enum": [
            "S",
            "A",
            "B",
            "C",
            "D"
          ]
        },
        "rmsSeconds": {
          "type": "number",
          "nullable": true
        },
        "azimuthGapDegrees": {
          "type": "number",
          "nullable": true
        },
        "stationCount": {
          "type": "integer"
        }
      },
      "additionalProperties": true
    },
    "hypSelection": {
      "type": "object",
      "description": "可选:发报窗口开始、选中候选时刻与候选次数。"
    },
    "event": {
      "type": "object",
      "description": "完整结果及可选诊断字段;部分字段随算法版本出现。",
      "properties": {
        "id": {
          "type": "string"
        },
        "status": {
          "type": "string",
          "enum": [
            "candidate",
            "preliminary",
            "tracking",
            "finalized",
            "retracted",
            "interrupted"
          ]
        },
        "firstDetectedAt": {
          "type": "integer",
          "format": "int64",
          "description": "Unix 毫秒"
        },
        "hypEstimate": {
          "$ref": "#/components/schemas/HypEstimate"
        },
        "magnitude": {
          "type": "number",
          "nullable": true
        },
        "magnitudeType": {
          "type": "string",
          "nullable": true
        },
        "magnitudeStationCount": {
          "type": "integer"
        },
        "magnitudeUncertainty": {
          "type": "number"
        },
        "magnitudeCalculatedAt": {
          "type": "integer",
          "format": "int64",
          "description": "Unix 毫秒"
        },
        "magnitudeRetained": {
          "type": "boolean"
        },
        "magnitudeEstimateLocation": {
          "type": "object"
        },
        "hypCompletion": {
          "type": "object"
        },
        "evidence": {
          "type": "array",
          "items": {
            "type": "object"
          }
        }
      },
      "additionalProperties": true
    },
    "stations": {
      "type": "array",
      "items": {
        "type": "object"
      }
    }
  },
  "additionalProperties": true
}

$ref 字段的完整定义见 OpenAPI 文件。未列出的附加字段仍按原样保留。

GET/api/v1/hyp/events/{id}/export

完整事件导出

完整 JSON 下载,保留每一报,不受 view=summary 影响。报告只追加,后续峰值回补不改写旧报告。

请求参数
参数类型说明
id路径 · 必填string事件 ID;必须对整个 ID 做 URL 编码。例如 hyp:live:… 中的冒号编码为 %3A。
curl --fail --compressed 'https://api.raineko.net/api/v1/hyp/events/{id}/export'

将示例中的 {id} / {number} 替换为列表或详情返回的真实值。HYP 事件 ID 使用 encodeURIComponent(id)。

查看响应字段 · HypEvent
{
  "type": "object",
  "description": "事件状态是权威生命周期状态;服务中断不伪造最终报。",
  "properties": {
    "id": {
      "type": "string"
    },
    "first_at": {
      "type": "integer",
      "format": "int64",
      "description": "Unix 毫秒"
    },
    "updated_at": {
      "type": "integer",
      "format": "int64",
      "description": "Unix 毫秒"
    },
    "status": {
      "type": "string"
    },
    "reports": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/HypReport"
      }
    },
    "stations": {
      "type": "array",
      "items": {
        "type": "object",
        "description": "算法关联物理站,metrics 以 surface:pgaGal、underground:intensity 等分层键保存峰值、源时间、接收时间和 recovered。"
      }
    }
  },
  "additionalProperties": true
}

$ref 字段的完整定义见 OpenAPI 文件。未列出的附加字段仍按原样保留。

统一入口迁移

自 2026 年 10 月 20 日起,EEW 和雨猫自感测公开接口统一使用 https://api.raineko.net/api/v1。相对路径与数据结构保留,WebSocket 改用 wss://api.raineko.net/api/v1/ws。

原 eewlist.raineko.net/api/v1/… 返回 410 Gone,不再转发数据。历史查询网页仍在 eewlist.raineko.net;软件历史 EEW 查询需使用迁移后的版本。账号、登录、后台管理及其他软件观测接口维持原地址。

此文档只列公开数据接口。后台数据管理、图像归档管理和管理凭据不属于公开接口。