📋 通用约定
Base URL
| 环境 | Base URL |
|---|---|
| 生产环境 | https://www.sunbidinfo.com |
| 所有接口前缀 | /api/v1/... |
鉴权方式
本平台采用 多渠道鉴权,请按调用场景选择对应方式:
| 调用场景 | 请求头 | API Key | 用户 Token |
|---|---|---|---|
| PC Web 前端 | X-Web-Access: 1 | 否 | 写接口需 Cookie 携带登录态 |
| 微信小程序 | X-Mini-Program: 1 | 否 | 公开接口无需;用户态需 Authorization: Bearer <token> |
| 第三方 / B 端 / AI Skill | Authorization: Bearer <apiKey> 或 X-API-Key: <apiKey> | 是 | 否 |
API Key 三种携带方式(任选其一):
// 方式 1:Header(推荐) X-API-Key: sk-abc123def456 // 方式 2:Authorization Bearer Authorization: Bearer sk-abc123def456 // 方式 3:查询参数(不推荐) GET /api/v1/bids?api_key=sk-abc123def456
统一响应格式
所有 JSON 接口统一返回:
{
"code": 0,
"message": "success",
"data": { /* 业务数据,可为 null */ }
}
| 字段 | 类型 | 说明 |
|---|---|---|
code | int | 0 = 成功,非 0 = 业务错误 |
message | String | 文案描述 |
data | Object/Array/null | 业务数据 |
分页约定
{
"items": [],
"pagination": {
"total": 1000,
"page": 1,
"pageSize": 20,
"totalPages": 50
}
}
| 参数 | 类型 | 默认值 | 说明 |
|---|---|---|---|
page | int | 1 | 页码,从 1 开始 |
page_size / pageSize | int | 20 | 每页条数,最大 100(部分接口 500) |
/api/v1/user/* 使用 page_size(snake_case),/api/user/center/* 使用 pageSize(camelCase)。错误码
| HTTP | code | 含义 | 说明 |
|---|---|---|---|
| 200 | 0 | 成功 | 请求处理成功 |
| 400 | 400 | 参数错误 | 请求参数缺失或不合法 |
| 401 | 401 | 未认证 | 缺少 API Key / 用户 Token 失效 |
| 402 | 402 | 积分不足 | 需前往用户中心充值 |
| 403 | 403 | 无权限 | IP 不在白名单 / 资源不属于当前用户 |
| 404 | 404 | 资源不存在 | 接口路径错误或资源 ID 无效 |
| 429 | 429 | 限流 | 请求频率超限(响应头含重试时间) |
| 500 | 500 | 服务器错误 | 服务端内部异常 |
限流
| 维度 | 默认阈值 | 响应头 |
|---|---|---|
| 每用户每分钟(按 userId 聚合所有 Key) | 10 次/分钟 | X-RateLimit-Limit-User · X-RateLimit-Remaining-User |
| 每 API Key 每小时 | 500 次/小时(创建时可调) | X-RateLimit-Limit · X-RateLimit-Remaining |
| IP 限流(未登录) | 10 次/分钟/IP | — |
429,本次不扣积分,可等待 Retry-After 头指示的秒数后重试。安全约定
- CORS 白名单:仅允许授权域名跨域
- 安全响应头:所有响应包含
CSP、X-Frame-Options、HSTS等 - HttpOnly Cookie:登录态 Cookie 标记
HttpOnly + Secure + SameSite=Strict - CSRF 双提交:登录后下发
bid_csrfCookie,状态修改接口需X-CSRF-Token头 - 敏感字段脱敏:手机号、邮箱、姓名、微信号、身份证、银行卡等一律脱敏
字段命名
| 业务领域 | 命名风格 | 示例 |
|---|---|---|
| 标讯 / 企业 / 政策法规 | snake_case | publish_date、bid_type |
| 用户 / 积分 / 邀请 | camelCase | createdAt、userId |
| 时间字段 | ISO 8601 | 2026-07-19T10:00:00 |
📰 标讯接口
标讯列表查询(核心)
分页查询招标/中标公告,支持多维度筛选与排序。
请求参数(Query):
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
page | int | 否 | 1 | 页码 |
pageSize | int | 否 | 20 | 每页条数,最大 100 |
keyword | String | 否 | — | 关键词(标题/内容/采购单位名) |
province | String | 否 | — | 省份,如"广东" |
city | String | 否 | — | 城市,如"深圳" |
industry | String | 否 | — | 行业 |
category | String | 否 | — | 分类:工程/服务/货物 |
bid_type | String | 否 | — | 招标公告/中标公告/变更公告 |
bidding_method | String | 否 | — | 招标方式 |
buyer_type | String | 否 | — | 采购单位类型 |
publish_date_start | String | 否 | — | 发布起始日期 yyyy-MM-dd |
publish_date_end | String | 否 | — | 发布结束日期 yyyy-MM-dd |
sort_by | String | 否 | publish_date | 排序字段 |
sort_order | String | 否 | desc | 排序方向 asc/desc |
响应示例:
{
"code": 0,
"message": "success",
"data": {
"items": [
{
"id": 10001,
"title": "XX 项目招标公告",
"buyer": "XX 单位",
"budget": "100 万元",
"bidding_method": "公开招标",
"industry": "建筑",
"province": "甘肃",
"city": "兰州",
"winner": "XX 公司",
"win_amount": "98 万元",
"publish_date": "2026-07-19T10:00:00"
}
],
"pagination": { "total": 1037, "page": 1, "pageSize": 20, "totalPages": 52 }
}
}
标讯详情
查询单条标讯的完整详情,含章节、附件、招标方/中标方联系方式。
| 参数 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
bidId | Path | Long | 是 | 标讯 ID |
响应字段:含 title、content、buyer、buyer_contact、agent、budget、winner、win_amount、open_bid_time、doc_get_time、sections[]、attachments[]、parent_bid、child_bids[]。
平台统计
平台标讯总量、今日新增、覆盖省份数、收录企业数。
{
"code": 0,
"data": {
"total": 1250000,
"today": 3862,
"total_sources": 120,
"total_companies": 380000
}
}
筛选维度
返回所有可用筛选项(省份、行业、招标方式、采购单位类型等),便于前端下拉选择。
标讯查看上报
用户查看标讯详情时上报浏览行为。登录用户首次查看会扣积分(同一标讯仅扣一次)。
响应字段:
| 字段 | 类型 | 说明 |
|---|---|---|
bidId | Long | 标讯 ID |
loggedIn | Boolean | 是否已登录 |
deducted | Boolean | 本次是否真扣了积分 |
balance | Integer | 当前积分余额 |
viewBidCost | Integer | 查看一条标讯消耗的积分数 |
附件下载
下载标讯附件(招标文件、图纸等),需登录用户或 API Key。
🏢 企业接口
公司搜索(自动补全)
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
keyword | String | 是 | 公司名关键词 |
limit | int | 否 | 返回数量(默认 10) |
采购单位列表
分页列出所有采购单位(招标方),支持关键词和类型过滤。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
keyword | String | 否 | 采购单位名关键词 |
buyer_type | String | 否 | 采购单位类型 |
page | int | 否 | 页码(默认 1) |
page_size | int | 否 | 每页条数(默认 15) |
🔐 用户认证
用户注册
| 参数 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
username | Body | String | 是 | 用户名(手机号) |
password | Body | String | 是 | 密码(8-20 位,含字母+数字) |
smsCode | Body | String | 否 | 短信验证码(手机号注册时) |
inviteCode | Body | String | 否 | 邀请码(双方各得 1 积分) |
账号登录
| 参数 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
username | Body | String | 是 | 用户名 / 手机号 / 邮箱 |
password | String | 是 | 密码 |
响应:登录态写入 HttpOnly Cookie bid_auth,同时返回 token 字段供小程序使用。
短信验证码
| 参数 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
phone | Body | String | 是 | 手机号 |
purpose | Body | String | 是 | 用途:register / reset / bind |
微信登录
微信小程序登录,code 为 wx.login() 返回值。
| 参数 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
code | Body | String | 是 | wx.login() 返回的 code |
nickname | Body | String | 否 | 微信昵称 |
avatar | Body | String | 否 | 微信头像 URL |
重置密码
| 参数 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
phone | Body | String | 是 | 手机号 |
smsCode | Body | String | 是 | 短信验证码 |
newPassword | Body | String | 是 | 新密码 |
👤 用户中心
个人资料
返回当前用户资料(手机号、邮箱、昵称等已脱敏)。
积分余额
返回当前积分余额、累计收入/支出、签到状态。
订阅管理
列出当前用户所有关键词订阅(标题/采购方/地区等)。
创建关键词订阅。Body 含 keyword、frequency(daily/weekly)、channels(email/wechat_mp/miniapp)。
企业监控
列出监控中的企业(招标方或中标方),匹配新标讯会推送。
我的收藏
浏览历史
🔑 API Key 管理
用户登录后创建 API Key 供第三方系统调用,按调用次数扣积分。
我的 API Key 列表
响应:含每个 Key 的名称、Key ID(脱敏)、状态、限流设置、累计调用次数、最后使用时间。
创建 API Key
| 参数 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
name | Body | String | 是 | Key 名称(仅自己可见) |
rateLimitPerHour | Body | int | 否 | 每小时限流(默认 500) |
ipWhitelist | Body | String[] | 否 | IP 白名单,空数组=不限 |
启停/删除
切换 Key 状态(active ↔ disabled),停用后该 Key 所有调用立即返回 401。
删除 Key(不可恢复)。
用量统计
查询参数:days(默认 7)
响应:每日调用次数、扣分总数、按端点的调用分布。
💰 积分充值
1 元 = 1 积分,10 元起,微信支付秒到账。
积分套餐列表
创建充值订单
| 参数 | 位置 | 类型 | 必填 | 说明 |
|---|---|---|---|---|
packageId | Body | Long | 是 | 套餐 ID |
payMethod | Body | String | 否 | wechat / virtual(小程序虚拟支付) |
响应:返回 orderId 和微信支付参数(prepay_id、签名等)。
查询订单状态
响应:status(pending/paid/closed)、points、paidAt。
📎 附录
变更日志
| 版本 | 日期 | 变更 |
|---|---|---|
| v1.1.0 | 2026-07-19 | API Key 管理接口、积分计费、限流双闸 |
| v1.0.0 | 2026-07-01 | 首次发布:标讯/企业/用户中心 |
联系我们
🌐 官网:https://www.sunbidinfo.com
📘 API 文档:https://www.sunbidinfo.com/api-doc(当前页)
📱 微信小程序:搜索"阳光标讯"
📧 商务合作:bd@sunbidinfo.com
🛠 技术支持:support@sunbidinfo.com
© 2026 阳光标讯 · Powered by SunBidInfo