同步单条检测
更新时间:
请求规范
- 请求 URL:
https://isafe.ilivedata.com/api/v1/image/check
-
图片要求:
-
图片支持类型:URL, BASE64
-
图片支持格式:jpg, png, bmp, gif, webp, tiff, heic
-
图片大小:单张<10M
-
gif图、长图说明:自动将gif图、长图(长宽比大于5的图片)截帧过检,最多5张,gif图长图均按照实际截图张数进行计费
-
HTTP 请求Header:
Header
值
描述
Content-Type
application/json;charset=UTF-8
请求体类型
Accept
application/json;charset=UTF-8
接受的返回类型
X-AppId
项目的唯一标识,此值是 <控制台-服务配置>中的项目编号
X-TimeStamp
请求的UTC时间戳。需要把时间戳按W3C标准格式化,例如: 2010-01-31T23:59:59Z. (http://www.w3.org/TR/xmlschema-2/#dateTime)。
Authorization
签名值
-
请求方法:POST
-
请求体JSON对象:
参数
必需
类型
描述
type
必需
Number
1:图片URL 2: 图片BASE64值
注:推荐使用BASE64方式调用,图片URL在网络不佳时可能会造成图片下载缓慢或下载失败等问题
image
必需
String
图片内容,如type=1,则该值为图片URL,如type=2,则该值为图片BASE64值。
strategyId
可选
String
策略编号;不传时使用默认策略DEFAULT
referImage
可选
String
用来做人脸对比的参照图,图片类型需要和image一样,如果image是url,则referImage也要为url,支持的格式:jpg, png;支持图片大小:<10M;
userId
可选
String
唯一的终端用户ID。 用户ID应当不超过32个字符。
userIP
可选
String
用户IP地址
did
可选
String
用户设备ID
dtype
可选
String
用户设备类型:1:iPhone 2:android 3: ipad 4:wphone 5: pc 6:web 7:wap
id
可选
String
用户设备ID
extra
可选
json
扩展字段,可以传多个key和value,透传。比如传游戏服务器和游戏版本两个参数,传入方式:“extra” : {“server”: “123”,“version”:“456”}
-
请求体示例:
{
"type":2,
"image":"T2dnUwACAAAAAAAAAAAd8pVTAAAAAGsIvpMBE...",
"strategyId": "123", //非必传,如为空,则调用默认策略
"userId": "testUser",
"did": "868034031518269",
"dtype": "1"
}
-
请求签名:
当用户请求Image Check API时,可以使用appId和secretKey(从“控制台-服务 配置“中获取)对请求做签名,当API收到带签名信息的请求之后,将使用相同的算法验证签名,如果发现签名不一致,API将会返回401给用户。
如果API验证签名一致,且appId对应的用户有权限操作请求的资源,则请求成功,否则API返回401。
- 通过 HTTP 请求 Header 发送签名
方法: 在请求中加入名为 Authorization 的 Header,值为签名值。如下:
Authorization: *****
- 签名计算方法
- 构造规范化的请求字符串(Canonicalized Query String)
将请求体JSON字符串以UTF-8字符编码做sha256编码后转换为16进制字符串(注意不是Base64)
CanonicalizedQueryString = hex(sha256(jsonBody))
-
构造被签名字符串 StringToSign ("\n" 代表ASCII里的换行符)
StringToSign = HTTPMethod + “\n” +
HostHeaderInLowercase + “\n” +
HTTPRequestURI + “\n” +
CanonicalizedQueryString <从上一步得到> + “\n” +
“X-AppId:” + SAME_APPID_IN_HEADER + “\n” +
“X-TimeStamp:” + SAME_TIMESTAMP_IN_HEADER
HTTPRequestURI是请求URI的绝对路径,不包含请求串。如果HTTPRequestURI为空,也要保留一个正斜杠 ( / )
使用 HMAC-SHA256 协议创建基于哈希的消息身份验证代码 (HMAC),然后计算签名。
有关 HMAC 的更多信息,请参阅 https://tools.ietf.org/html/rfc2104。
-
StringToSign作为签名字符串,secretKey作为秘钥,SHA256作为哈希算法
-
将上一步的结果转换为BASE64串
-
将BASE64串放入HTTP请求Header的Authorization
- 签名示例
下面是appId & secretKey & image的示例
appId=****
secrectKey=****
image_base64="T2dnUwACAAAAAAAAAAAd8pVTAAAAAGsIvpMBE..."
下面是示例请求体
{
"type": 2,
"userId": "12345678",
"image": "T2dnUwACAAAAAAAAAAAd8pVTAAAAAGsIvpMBE..."
}
生成CanonicalizedQueryString
b3ad8e9d16439ccd5e91924d2516bf9592975003f69beff44e56cddf47bd3118
生成StringToSign
POST
isafe.ilivedata.com
/api/v1/image/check
b3ad8e9d16439ccd5e91924d2516bf9592975003f69beff44e56cddf47bd3118
X-AppId:***
X-TimeStamp:2020-07-31T07:59:03Z
HMAC计算得到的签名
*****
HTTP响应
Content-Type: application/json;charset=UTF-8
结果为JSON格式,请参考以下示例。
返回json字段说明:
参数
类型
描述
errorCode
Number
错误码:0表示成功
errorMessage
String
错误消息
imageSpams
json数组
结果信息
code
Number
状态码,定义为:0:检测成功,1:图片下载失败,2:图片格式错误,3:其他
result
Number
0:通过,1:建议审核,2:不通过
taskId
String
任务ID
imageSpams:
参数
类型
描述
code
Number
状态码,定义为:0:检测成功,1:图片下载失败,2:图片格式错误,3:其他
result
Number
0:通过,1:建议审核,2:不通过
tags
json数组
分类信息
extraInfo:
参数
类型
描述
cartoonScore
Number
画风为卡通的分数,0-100,越高越接近卡通画风
genderResult
json数组
人脸性别及其对应置信度
numHuman
Number
人体检测检出数
numFace
Number
人脸检测检出数
tags:
参数
类型
描述
tag
Number
一级分类信息代码
100:涉政, 110:暴恐, 120:违禁, 130:色情, 140:性感, 150:广告, 160:涉价值观, 180:未成年保护, 200:二维码, 230:无人脸挂机, 232:图片质量, 300:图标, 400:图文, 666:恶心, 800:标签, 888:人脸对比, 900:其他, 999:用户自定义
level
Number
分类级别,0:正常,1:疑似,2:异常
confidence
Number
置信度分数,0-100之间取值,100为置信度最高,0为置信度最低。若level为疑似或异常,置信度越大,说明垃圾的可能性越高
tagName
String
检测图片命中的一级类型名称
tagNameEn
String
检测图片命中的一级类型名称(英文)
subTags
json数组
敏感信息的二级分类
subTags:
参数
类型
描述
subTag
Number
二级分类详细编码请参考 分类编码对照表
subTagName
String
检测图片命中的二级类型名称
subTagNameEn
String
检测图片命中的二级类型名称(英文)
level
Number
分类级别,0:正常,1:疑似,2:异常
confidence
Number
置信度分数,0-100之间取值,100为置信度最高,0为置信度最低。若level为疑似或异常,置信度越大,说明垃圾的可能性越高
wordList
字符串数组
命中图文时返回(tag=400)
-
返回结果示例:
{
"errorCode": 0, "code": 0, "result": 2, "imageSpams": [{"code": 0, "result": 2, "tags": [{"tag": 200, "level": 2, "confidence": 76}]}], "gender": [], "taskId": "Telnet-test_d56b5c2d38614be3bf1a1e98663d3c29_1653017203620", "extraInfo": {"cartoonScore": 7, "genderResult": [], "numHuman": 0, "numFace": 0}
}
错误码
Http状态码
错误码
错误消息
200
0
此字段省略
405
1004
Method Not Allowed
411
1007
Not Content Length
400
1002
API Not Found
400
1003
Bad Request
401
1102
Unauthorized Client
401
1106
Missing Access Token
401
1107
Invalid Token
401
1108
Expired Token
401
1110
Invalid Client
401
2000
Missing Parameter
401
2001
Invalid Parameter
请求规范
- 请求 URL:
https://isafe.ilivedata.com/api/v1/image/check
-
图片要求:
-
图片支持类型:URL, BASE64
-
图片支持格式:jpg, png, bmp, gif, webp, tiff, heic
-
图片大小:单张<10M
-
gif图、长图说明:自动将gif图、长图(长宽比大于5的图片)截帧过检,最多5张,gif图长图均按照实际截图张数进行计费
-
-
HTTP 请求Header:
Header | 值 | 描述 |
---|---|---|
Content-Type | application/json;charset=UTF-8 | 请求体类型 |
Accept | application/json;charset=UTF-8 | 接受的返回类型 |
X-AppId | 项目的唯一标识,此值是 <控制台-服务配置>中的项目编号 | |
X-TimeStamp | 请求的UTC时间戳。需要把时间戳按W3C标准格式化,例如: 2010-01-31T23:59:59Z. (http://www.w3.org/TR/xmlschema-2/#dateTime)。 | |
Authorization | 签名值 |
-
请求方法:POST
-
请求体JSON对象:
参数 | 必需 |
类型 | 描述 |
---|---|---|---|
type | 必需 | Number | 1:图片URL 2: 图片BASE64值 注:推荐使用BASE64方式调用,图片URL在网络不佳时可能会造成图片下载缓慢或下载失败等问题 |
image | 必需 | String | 图片内容,如type=1,则该值为图片URL,如type=2,则该值为图片BASE64值。 |
strategyId | 可选 | String | 策略编号;不传时使用默认策略DEFAULT |
referImage | 可选 | String | 用来做人脸对比的参照图,图片类型需要和image一样,如果image是url,则referImage也要为url,支持的格式:jpg, png;支持图片大小:<10M; |
userId | 可选 | String | 唯一的终端用户ID。 用户ID应当不超过32个字符。 |
userIP | 可选 | String | 用户IP地址 |
did | 可选 | String | 用户设备ID |
dtype | 可选 | String | 用户设备类型:1:iPhone 2:android 3: ipad 4:wphone 5: pc 6:web 7:wap |
id | 可选 | String | 用户设备ID |
extra | 可选 | json | 扩展字段,可以传多个key和value,透传。比如传游戏服务器和游戏版本两个参数,传入方式:“extra” : {“server”: “123”,“version”:“456”} |
-
请求体示例:
{ "type":2, "image":"T2dnUwACAAAAAAAAAAAd8pVTAAAAAGsIvpMBE...", "strategyId": "123", //非必传,如为空,则调用默认策略 "userId": "testUser", "did": "868034031518269", "dtype": "1" }
-
请求签名:
当用户请求Image Check API时,可以使用appId和secretKey(从“控制台-服务 配置“中获取)对请求做签名,当API收到带签名信息的请求之后,将使用相同的算法验证签名,如果发现签名不一致,API将会返回401给用户。
如果API验证签名一致,且appId对应的用户有权限操作请求的资源,则请求成功,否则API返回401。
- 通过 HTTP 请求 Header 发送签名
方法: 在请求中加入名为 Authorization 的 Header,值为签名值。如下:
Authorization: *****
- 签名计算方法
- 构造规范化的请求字符串(Canonicalized Query String)
将请求体JSON字符串以UTF-8字符编码做sha256编码后转换为16进制字符串(注意不是Base64)
CanonicalizedQueryString = hex(sha256(jsonBody))
-
构造被签名字符串 StringToSign ("\n" 代表ASCII里的换行符)
StringToSign = HTTPMethod + “\n” + HostHeaderInLowercase + “\n” + HTTPRequestURI + “\n” + CanonicalizedQueryString <从上一步得到> + “\n” + “X-AppId:” + SAME_APPID_IN_HEADER + “\n” + “X-TimeStamp:” + SAME_TIMESTAMP_IN_HEADER
HTTPRequestURI是请求URI的绝对路径,不包含请求串。如果HTTPRequestURI为空,也要保留一个正斜杠 ( / )
使用 HMAC-SHA256 协议创建基于哈希的消息身份验证代码 (HMAC),然后计算签名。
有关 HMAC 的更多信息,请参阅 https://tools.ietf.org/html/rfc2104。
-
StringToSign作为签名字符串,secretKey作为秘钥,SHA256作为哈希算法
-
将上一步的结果转换为BASE64串
-
将BASE64串放入HTTP请求Header的Authorization
- 签名示例
下面是appId & secretKey & image的示例
appId=****
secrectKey=****
image_base64="T2dnUwACAAAAAAAAAAAd8pVTAAAAAGsIvpMBE..."
下面是示例请求体
{
"type": 2,
"userId": "12345678",
"image": "T2dnUwACAAAAAAAAAAAd8pVTAAAAAGsIvpMBE..."
}
生成CanonicalizedQueryString
b3ad8e9d16439ccd5e91924d2516bf9592975003f69beff44e56cddf47bd3118
生成StringToSign
POST
isafe.ilivedata.com
/api/v1/image/check
b3ad8e9d16439ccd5e91924d2516bf9592975003f69beff44e56cddf47bd3118
X-AppId:***
X-TimeStamp:2020-07-31T07:59:03Z
HMAC计算得到的签名
*****
HTTP响应
Content-Type: application/json;charset=UTF-8
结果为JSON格式,请参考以下示例。
返回json字段说明:
参数 |
类型 |
描述 |
---|---|---|
errorCode | Number | 错误码:0表示成功 |
errorMessage | String | 错误消息 |
imageSpams | json数组 | 结果信息 |
code | Number | 状态码,定义为:0:检测成功,1:图片下载失败,2:图片格式错误,3:其他 |
result | Number | 0:通过,1:建议审核,2:不通过 |
taskId | String | 任务ID |
imageSpams:
参数 |
类型 |
描述 |
---|---|---|
code | Number | 状态码,定义为:0:检测成功,1:图片下载失败,2:图片格式错误,3:其他 |
result | Number | 0:通过,1:建议审核,2:不通过 |
tags | json数组 | 分类信息 |
extraInfo:
参数 | 类型 | 描述 |
---|---|---|
cartoonScore | Number | 画风为卡通的分数,0-100,越高越接近卡通画风 |
genderResult | json数组 | 人脸性别及其对应置信度 |
numHuman | Number | 人体检测检出数 | numFace | Number | 人脸检测检出数 |
tags:
参数 |
类型 |
描述 |
---|---|---|
tag | Number | 一级分类信息代码 100:涉政, 110:暴恐, 120:违禁, 130:色情, 140:性感, 150:广告, 160:涉价值观, 180:未成年保护, 200:二维码, 230:无人脸挂机, 232:图片质量, 300:图标, 400:图文, 666:恶心, 800:标签, 888:人脸对比, 900:其他, 999:用户自定义 |
level | Number | 分类级别,0:正常,1:疑似,2:异常 |
confidence | Number | 置信度分数,0-100之间取值,100为置信度最高,0为置信度最低。若level为疑似或异常,置信度越大,说明垃圾的可能性越高 |
tagName | String | 检测图片命中的一级类型名称 |
tagNameEn | String | 检测图片命中的一级类型名称(英文) |
subTags | json数组 | 敏感信息的二级分类 |
subTags:
参数 |
类型 |
描述 |
---|---|---|
subTag | Number | 二级分类详细编码请参考 分类编码对照表 |
subTagName | String | 检测图片命中的二级类型名称 |
subTagNameEn | String | 检测图片命中的二级类型名称(英文) |
level | Number | 分类级别,0:正常,1:疑似,2:异常 |
confidence | Number | 置信度分数,0-100之间取值,100为置信度最高,0为置信度最低。若level为疑似或异常,置信度越大,说明垃圾的可能性越高 |
wordList | 字符串数组 | 命中图文时返回(tag=400) |
-
返回结果示例:
{ "errorCode": 0, "code": 0, "result": 2, "imageSpams": [{"code": 0, "result": 2, "tags": [{"tag": 200, "level": 2, "confidence": 76}]}], "gender": [], "taskId": "Telnet-test_d56b5c2d38614be3bf1a1e98663d3c29_1653017203620", "extraInfo": {"cartoonScore": 7, "genderResult": [], "numHuman": 0, "numFace": 0} }
错误码
Http状态码 | 错误码 | 错误消息 |
---|---|---|
200 | 0 | 此字段省略 |
405 | 1004 | Method Not Allowed |
411 | 1007 | Not Content Length |
400 | 1002 | API Not Found |
400 | 1003 | Bad Request |
401 | 1102 | Unauthorized Client |
401 | 1106 | Missing Access Token |
401 | 1107 | Invalid Token |
401 | 1108 | Expired Token |
401 | 1110 | Invalid Client |
401 | 2000 | Missing Parameter |
401 | 2001 | Invalid Parameter |