适用场景
API 适合需要把山海印鉴别能力接入内部系统的团队,例如内容审核后台、商家申诉取证流程、 自动化工作流、插件、脚本或其他服务端工具。API 调用使用你的山海印账户点数, 检测结论、请求编号和内容指纹与网页端保持同一套口径。
如果只是偶尔检测文件,直接使用网页或小程序即可;如果需要系统自动提交检测、保存结果或与业务记录关联, 再使用 API 更合适。
基础信息
| Base URL | https://shanhaiyin.com |
|---|---|
| 返回格式 | application/json |
| 认证方式 | 请求头携带 API Key,推荐使用 Authorization: Bearer |
| 计费方式 | 调用检测接口消耗账户点数;音频和视频按服务器读取到的真实时长向上取整 |
申请 API Key
登录后进入 账户中心的 API 调用 创建 API Key。 每个账户最多保留 10 个有效 API Key,可以随时作废。完整密钥只在创建时显示一次, 请立即复制并保存到你的服务端环境变量或密钥管理系统。
API Key 不要写进网页前端、小程序包、移动 App 或公开代码仓库。发现泄露时,先在账户中心作废旧 Key, 再创建新的 Key。
认证方式
所有公开 API 请求都需要在 Header 中携带 API Key。推荐写法:
Authorization: Bearer shy_live_your_key
Content-Type: application/json上传文件时由客户端自动生成 multipart 边界,通常只需要设置授权头:
Authorization: Bearer shy_live_your_key
Content-Type: multipart/form-data也兼容以下请求头:
X-Shanhaiyin-Api-Key: shy_live_your_key接口总览与扣点
| Method | Path | Content-Type | 消耗点数 | 用途 |
|---|---|---|---|---|
| POST | /api/v1/images/analyze | multipart/form-data | 1 点 / 张 | 图片 AI 生成、来源标识和像素线索检测。 |
| POST | /api/v1/text/analyze | application/json | 1 点 / 次 | 文字 AI 写作特征检测。 |
| POST | /api/v1/audio/analyze | multipart/form-data | 3 点 / 开始分钟 | 创建音频异步检测任务。 |
| POST | /api/v1/video/analyze | multipart/form-data | 8 点 / 开始分钟 | 创建视频异步检测任务。 |
| GET | /api/v1/media-status/{jobId} | - | 不重复扣点 | 查询音频或视频任务进度与结果。 |
音频和视频不足 1 分钟按 1 分钟计,超出部分按整分钟向上取整;最终以服务器读取的文件时长为准。
图片检测接口
| Method | POST |
|---|---|
| Path | /api/v1/images/analyze |
| Content-Type | multipart/form-data |
| 消耗点数 | 1 点 / 张 |
| 用途 | 分析图片中的 AI 生成、来源标识、C2PA / 国标元数据和像素复核线索。 |
请求字段
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
image | file | 是 | 需要检测的图片文件。当前支持 JPG / JPEG / PNG / WebP / GIF / BMP,最大 20MB。 |
返回示例
{
"ok": true,
"provider": "shanhaiyin",
"service": "image-aigc-detector",
"requestId": "SHY-20260819-ABC12345",
"riskLevel": "high",
"modelScore": 96.5,
"detected": true,
"modelDecision": "Block",
"results": [
{
"label": "aigc",
"confidence": 96.5,
"description": "模型发现较强的 AI 生成或深度伪造特征",
"riskLevel": "high"
}
],
"fileHash": "e3566ed2eb18...e0d7c03848",
"detectedAt": "2026-08-19T08:00:00+00:00",
"billing": {
"charged": true,
"channel": "api",
"units": 1
}
}curl 示例
curl -X POST https://shanhaiyin.com/api/v1/images/analyze \
-H "Authorization: Bearer shy_live_your_key" \
-F "image=@/path/to/image.jpg"文字检测接口
| Method | POST |
|---|---|
| Path | /api/v1/text/analyze |
| Content-Type | application/json |
| 消耗点数 | 1 点 / 次 |
| 用途 | 分析文本中的 AI 写作、辅助生成或机器改写特征。 |
请求示例
{
"text": "这里放需要检测的文字内容,当前限制为 350 到 2000 个字符。"
}请求字段
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
text | string | 是 | 需要检测的文本。当前限制为 350 到 2000 个字符。 |
返回说明
文字接口为同步返回,字段结构与图片检测一致,会额外返回 textHash、textLength 和 billingUnits。
curl 示例
curl -X POST https://shanhaiyin.com/api/v1/text/analyze \
-H "Authorization: Bearer shy_live_your_key" \
-H "Content-Type: application/json" \
-d '{"text":"这里放需要检测的文字内容,当前限制为 350 到 2000 个字符。"}'音频检测接口
| Method | POST |
|---|---|
| Path | /api/v1/audio/analyze |
| Content-Type | multipart/form-data |
| 消耗点数 | 3 点 / 开始分钟 |
| 用途 | 上传音频并创建异步检测任务,随后用 jobId 查询结果。 |
请求字段
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
audio | file | 是 | 需要检测的音频文件。当前支持 WAV / MP3 / AAC / FLAC / AMR / 3GP / M4A / WMA / OGG / APE,最大 100MB。 |
创建任务返回示例
{
"ok": true,
"status": "processing",
"jobId": "9f1c4a2b3d4e5f60718293a4b5c6d7e8",
"mediaKind": "audio",
"durationSeconds": 73.42,
"billingMinutes": 2,
"retryAfter": 3,
"billing": {
"charged": true,
"channel": "api",
"units": 6
}
}curl 示例
curl -X POST https://shanhaiyin.com/api/v1/audio/analyze \
-H "Authorization: Bearer shy_live_your_key" \
-F "audio=@/path/to/audio.mp3"视频检测接口
| Method | POST |
|---|---|
| Path | /api/v1/video/analyze |
| Content-Type | multipart/form-data |
| 消耗点数 | 8 点 / 开始分钟 |
| 用途 | 上传视频并创建异步检测任务,随后用 jobId 查询结果。 |
请求字段
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
video | file | 是 | 需要检测的视频文件。当前支持 FLV / MKV / MP4 / RMVB / AVI / WMV / 3GP / TS / MOV / RM / MPEG / MPG,最大 200MB。 |
创建任务返回示例
{
"ok": true,
"status": "processing",
"jobId": "9f1c4a2b3d4e5f60718293a4b5c6d7e8",
"mediaKind": "video",
"durationSeconds": 73.42,
"billingMinutes": 2,
"retryAfter": 3,
"billing": {
"charged": true,
"channel": "api",
"units": 16
}
}curl 示例
curl -X POST https://shanhaiyin.com/api/v1/video/analyze \
-H "Authorization: Bearer shy_live_your_key" \
-F "video=@/path/to/video.mp4"查询音视频任务
| Method | GET |
|---|---|
| Path | /api/v1/media-status/{jobId} |
| 认证 | 请求头携带 API Key |
| 消耗点数 | 不重复扣点 |
| 用途 | 查询音频或视频任务进度;任务完成后返回正式检测结果。 |
路径参数
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
jobId | string | 是 | 创建音频或视频检测任务时返回的任务编号。 |
处理中返回示例
{
"ok": true,
"status": "processing",
"jobId": "9f1c4a2b3d4e5f60718293a4b5c6d7e8",
"mediaKind": "video",
"retryAfter": 3
}完成后返回示例
{
"ok": true,
"provider": "shanhaiyin",
"service": "video-aigc-detector",
"requestId": "SHY-20260819-DEF67890",
"providerTaskId": "w-video-aigc-xxx",
"riskLevel": "high",
"modelScore": 99,
"detected": true,
"modelDecision": "Block",
"fileHash": "4f15e6d23d...87eaf894",
"fileName": "video.mp4",
"results": [
{
"label": "video_aigc",
"confidence": 99,
"description": "模型发现较强的 AI 生成视频画面特征",
"riskLevel": "high"
}
],
"billing": {
"charged": true,
"channel": "api",
"units": 16
}
}curl 示例
curl https://shanhaiyin.com/api/v1/media-status/9f1c4a2b3d4e5f60718293a4b5c6d7e8 \
-H "Authorization: Bearer shy_live_your_key"通用返回字段
| 字段 | 类型 | 说明 |
|---|---|---|
ok | boolean | 请求是否成功。成功为 true,失败为 false。 |
provider | string | 固定为 shanhaiyin,表示由山海印统一返回。 |
service | string | 检测服务类型,例如 image-aigc-detector、text-aigc-detector、audio-aigc-detector、video-aigc-detector。 |
requestId | string | 本次检测请求编号,可用于客服核对和报告留档。 |
riskLevel | string | 风险等级,可能为 low、medium、high。 |
modelScore | number | 模型返回或归一化后的 AI 可能性分数,范围 0 到 100。 |
detected | boolean | 是否检测到 AI 生成、合成或明显辅助编辑特征。 |
modelDecision | string | 模型判断状态,通常为 Pass、Review 或 Block。 |
results | array | 主要检测依据列表,每项包含 label、confidence、description 和 riskLevel。 |
fileHash / textHash | string | 文件或文本的 SHA-256 指纹,用于确认报告对应的原始内容。 |
billing | object | 本次调用的扣点信息,包含 charged、channel、units 等字段。 |
错误格式与常见错误码
错误格式
{
"ok": false,
"code": "INSUFFICIENT_POINTS",
"message": "点数不足,请充值后再进行图片鉴别。"
}| HTTP | code | 说明 |
|---|---|---|
| 400 | IMAGE_REQUIRED / MEDIA_REQUIRED / TEXT_TOO_SHORT | 缺少必要字段,或文本长度低于当前限制。 |
| 401 | API_AUTH_REQUIRED | API Key 缺失、错误、已作废,或账户不可用。 |
| 402 | INSUFFICIENT_POINTS | 账户点数不足,请先充值。 |
| 413 | IMAGE_TOO_LARGE / MEDIA_TOO_LARGE / TEXT_TOO_LONG | 上传文件或文本超过当前限制。 |
| 415 | UNSUPPORTED_IMAGE_TYPE / UNSUPPORTED_MEDIA_TYPE | 文件格式暂不支持。 |
| 422 | MEDIA_DURATION_UNREADABLE | 服务器无法读取音频或视频时长,请确认文件完整且可播放。 |
| 429 | GLOBAL_HOURLY_POINT_LIMIT | 触发全站安全闸门,请稍后重试。 |
| 502 / 503 | DETECTOR_REQUEST_FAILED / DETECTOR_NOT_CONFIGURED | 检测服务、云端任务或上游模型暂时不可用。 |
API 返回结果是技术参考,不应单独作为司法、行政或平台最终认定。重要场景请结合原文件、 订单记录、传播记录和人工复核。
开始使用
先创建 API Key,再确认账户点数充足。需要补充点数时可前往 点数充值。
