Text Check
Update:
Parameter specification
- Request URL
https://tsafe.ilivedata.com/api/v1/text/check
- HTTP request Header
Header
Value
Property
Description
Content-Type
application/json;charset=UTF-8
Required
Request body type
Accept
application/json;charset=UTF-8
Required
Return type accepted
X-AppId
Required
The only identifier of the project or application.
X-TimeStamp
Required
The UTC timestamp of the request. Timestamps need to be formatted according to W3C standards, for example: 2010-01-31T23:59:59Z. (http://www.w3.org/TR/xmlschema-2/#dateTime).
Authorization
Required
Signature value
-
Request method
POST
-
Request body JSON
Parameter
Property
Type
Description
content
Required
String
The text to be detected. This text is UTF-8 encoded strings with no more than 2048 characters.
strategyId
Optional
String
Policy number. The default policy DEFAULT is used when not passed.
country
Optional
String
country The default policy DEFAUL is used when not passed.
userId
Optional
String
Unique end user ID. The userID should be no more than 64 characters.
sessionId
Optional
String
sessionId,The sessionId should be no more than 64 characters.
receiverId
Optional
String
receiverId,The receiverId should be no more than 64 characters.
userName
Optional
String
User name, nickname. The user name should be no more than 32 characters.
userLevel
Optional
Number
User level
totalPay
Optional
Number
User total payment. Support up to 2 digits after the decimal point.
registrationDate
Optional
Number
User registration date. 10 digit timestamp.
msgCount
Optional
Number
Number of message sent
msgType
Optional
String
Message type
pkgChannel
Optional
String
Package channel
userIp
Optional
String
User IP address
did
Optional
String
User device ID
dtype
Optional
String
User device type:1:iPhone 2:android 3: ipad 4:wphone 5: pc 6:web 7:wap
checkTags
Optional
array
the type you want to filter
- Example of request body
JSON Response
{
"content": "fuck you",
"userId": "1234556",
"strategyId": "123" //Not required, if it is empty, the default policy will be called.
}
- Request signature
When the user requests the Text Check API, the request can be signed with the appId and secretKey. When the API receives the request with the signature information, it will verify the signature using the same algorithm, and if the signature is found to be inconsistent, the API will return 401 error to the user.
If the API validation signature is consistent and the user corresponding to the appId has permission to operate the requested resource, the request succeeds, otherwise the API returns 401 error.
- Request Header to send a signature via HTTP
Method: Add a header named Authorization in the request, whose value is the signature value. For example:
Authorization: ****
- Signature calculation method
- Canonicalized Query String
Convert the request body JSON string to a hexadecimal string (not Base64) by doing sha256 encoding with UTF-8 character encoding.
CanonicalizedQueryString = hex(sha256(jsonBody))
-
Constructs the signed string StringToSign ("\n" stands for ASCII newline character):
StringToSign = HTTPMethod + "\n" +
HostHeaderInLowercase + "\n" +
HTTPRequestURI + "\n" +
CanonicalizedQueryString <get from previous> + "\n" +
"X-AppId:" + SAME_APPID_IN_HEADER + "\n" +
"X-TimeStamp:" + SAME_TIMESTAMP_IN_HEADER
The HTTP RequestURI is the absolute path to the request URI, without the request string. If the HTTPRequestURI is empty, also keep a forward slash (/)
The hash-based message authentication code (HMAC) is created using the HMAC-SHA256 protocol and the signature is calculated.
-
StringToSign as the signature string, secretKey as the secret key and SHA256 as the hash algorithm.
For more information about HMAC, see: https://tools.ietf.org/html/rfc2104.
-
Converting the results of the previous step to a Base64 string
-
Put the BASE64 string into the Authorization of HTTP request Header
- Example of signature
Below is an example of appId & secretKey & video.
appId=***
secrectKey=****
content="fuck you"
userId=1235678
Below is an example of request type.
{
"content":"fuck you",
"userId": "12345678"
}
Generate CanonicalizedQueryString
b3ad8e9d16439ccd5e91924d2516bf9592975003f69beff44e56cddf47bd3118
Generate StringToSign
POST
tsafe.ilivedata.com
/api/v1/text/check
b3ad8e9d16439ccd5e91924d2516bf9592975003f69beff44e56cddf47bd3118
X-AppId:****
X-TimeStamp:2020-07-31T07:59:03Z
Signatures from HMAC calculations
*****
HTTP Response
Content-Type: application/json;charset=UTF-8
The result is in JSON format, please refer to the following example.
- Example of HTTP response
Description of returning json field
Field name
Type
Description
errorCode
Number
Error code: 0 means success
errorMessage
String
Error message
textSpam
json object
Resut message
warning
Boolean
Customize the alarm information of advertising words, and configure it when adding a blacklist on the console
taskId
String
Unique identifier to distinguish different calls
startTime
Number
Timestamp, representing the detection text call time
endTime
Number
Timestamp, representing the return time of the detected text result
textSpam
Field name
Type
Description
content
String
After the detection is complete, sensitive words will change to asterisks if they contain sensitive words, and other content will be returned normally.
result
Number
0: Pass, 1: Recommended for review, 2: Fail
tages
json array
Classified information
wordList
json array
List of sensitive words
tags
Field name
Type
Description
tag
Number
Classified information:
100: politics, 110: violence, 120: prohibited, 130: eroticism, 150: advertisement, 160: insults, 170: Hate speech, 180: Minor protection, 190: sensitive hot spots,410:Irregular Emoticons, 420:Nickname,300:advertising law,220:private transaction,900: other, 999: customization
tagName
String
Detect first-level type names for text hits
tagNameEn
String
Detect first-level type names for text hits(English)
level
Number
Classification level,0:Normal,1:Suspected,2:Abnormal
confidence
Number
confidence,between 0 and 100,oney when tag=150,confidence is not null; The higher the value, the more likely to be an advertisement
subTags
json object
Secondary classification of sensitive information
subTags
Field name
Type
Describe
subTag
Number
Secondary classification information reference Classification Code
subTagName
String
Detect secondary type names for text hits
subTagNameEn
String
Detect secondary type names for text hits(English)
wordList
array of strings
hit details
wordPosition
<String, Position[]>
hit words position info,<word, position array>
Position
Field name
Type
Describe
start
Number
start position of word in sentence
end
Number
end position of word in sentence
offset
Number
the length of word
-
Response example
JSON response
{
"errorCode": 0,
"textSpam": {
"content": "****",
"result": 2,
"tags": [
{
"tag": 160,
"level": 2,
"tagName": "辱骂",
"tagNameEn": "insults",
"subTags": [
{
"subTag": 160001,
"subTagName": "谩骂人身攻击",
"subTagNameEn": "insults and personal attacks",
"wordList": [
"fuck"
]
}
]
}
],
"wordList": [
"fuck"
]
},
"taskId": "c01b212f-3e31-4a2e-8346-b6f6ce3a3456",
"startTime": 1660103900367,
"endTime": 1660103900374
}
Error Code
HTTP Status Code
Error code
Error message
Cause of error
200
0
This field will be ommitted
429
1104
Out of Rate Limit
Frequency of requests exceeds the limit
405
1004
Method Not Allowed
The http request method can only be get or post. If it is post, header must have content-type,and its value should be application/x-www-form-urlencoded
400
1002
API Not Found
The corresponding API was not found according to the path of the http request.
400
1003
Bad Request
Parsing request failed
400
2000
Missing Parameter
Missing parameters content
400
2102
Input Too Long
The length of the parameter content exceeds the limit.
401
1102
Unauthorized Client
Parameter appId invalid
401
1106
Missing Access Token
Missing Authorization
401
1107
Invalid Token
Incorrect Authorization
401
1108
Expired Token
Expired timeStamp
401
2000
Missing Parameter
Missing timeStamp
401
2001
Invalid Parameter
TimeStamp format error
Parameter specification
- Request URL
https://tsafe.ilivedata.com/api/v1/text/check
- HTTP request Header
Header | Value | Property | Description |
---|---|---|---|
Content-Type | application/json;charset=UTF-8 | Required | Request body type |
Accept | application/json;charset=UTF-8 | Required | Return type accepted |
X-AppId | Required | The only identifier of the project or application. | |
X-TimeStamp | Required | The UTC timestamp of the request. Timestamps need to be formatted according to W3C standards, for example: 2010-01-31T23:59:59Z. (http://www.w3.org/TR/xmlschema-2/#dateTime). | |
Authorization | Required | Signature value |
-
Request method POST
-
Request body JSON
Parameter | Property | Type | Description |
---|---|---|---|
content | Required | String | The text to be detected. This text is UTF-8 encoded strings with no more than 2048 characters. |
strategyId | Optional | String | Policy number. The default policy DEFAULT is used when not passed. |
country | Optional | String | country The default policy DEFAUL is used when not passed. |
userId | Optional | String | Unique end user ID. The userID should be no more than 64 characters. |
sessionId | Optional | String | sessionId,The sessionId should be no more than 64 characters. |
receiverId | Optional | String | receiverId,The receiverId should be no more than 64 characters. |
userName | Optional | String | User name, nickname. The user name should be no more than 32 characters. |
userLevel | Optional | Number | User level |
totalPay | Optional | Number | User total payment. Support up to 2 digits after the decimal point. |
registrationDate | Optional | Number | User registration date. 10 digit timestamp. |
msgCount | Optional | Number | Number of message sent |
msgType | Optional | String | Message type |
pkgChannel | Optional | String | Package channel |
userIp | Optional | String | User IP address |
did | Optional | String | User device ID |
dtype | Optional | String | User device type:1:iPhone 2:android 3: ipad 4:wphone 5: pc 6:web 7:wap |
checkTags | Optional | array | the type you want to filter |
- Example of request body
JSON Response
{
"content": "fuck you",
"userId": "1234556",
"strategyId": "123" //Not required, if it is empty, the default policy will be called.
}
- Request signature
When the user requests the Text Check API, the request can be signed with the appId and secretKey. When the API receives the request with the signature information, it will verify the signature using the same algorithm, and if the signature is found to be inconsistent, the API will return 401 error to the user.
If the API validation signature is consistent and the user corresponding to the appId has permission to operate the requested resource, the request succeeds, otherwise the API returns 401 error.
- Request Header to send a signature via HTTP
Method: Add a header named Authorization in the request, whose value is the signature value. For example:
Authorization: ****
- Signature calculation method
- Canonicalized Query String
Convert the request body JSON string to a hexadecimal string (not Base64) by doing sha256 encoding with UTF-8 character encoding.
CanonicalizedQueryString = hex(sha256(jsonBody))
-
Constructs the signed string StringToSign ("\n" stands for ASCII newline character):
StringToSign = HTTPMethod + "\n" + HostHeaderInLowercase + "\n" + HTTPRequestURI + "\n" + CanonicalizedQueryString <get from previous> + "\n" + "X-AppId:" + SAME_APPID_IN_HEADER + "\n" + "X-TimeStamp:" + SAME_TIMESTAMP_IN_HEADER
The HTTP RequestURI is the absolute path to the request URI, without the request string. If the HTTPRequestURI is empty, also keep a forward slash (/)
The hash-based message authentication code (HMAC) is created using the HMAC-SHA256 protocol and the signature is calculated.
-
StringToSign as the signature string, secretKey as the secret key and SHA256 as the hash algorithm.
For more information about HMAC, see: https://tools.ietf.org/html/rfc2104.
-
Converting the results of the previous step to a Base64 string
-
Put the BASE64 string into the Authorization of HTTP request Header
- Example of signature
Below is an example of appId & secretKey & video.
appId=***
secrectKey=****
content="fuck you"
userId=1235678
Below is an example of request type.
{
"content":"fuck you",
"userId": "12345678"
}
Generate CanonicalizedQueryString
b3ad8e9d16439ccd5e91924d2516bf9592975003f69beff44e56cddf47bd3118
Generate StringToSign
POST
tsafe.ilivedata.com
/api/v1/text/check
b3ad8e9d16439ccd5e91924d2516bf9592975003f69beff44e56cddf47bd3118
X-AppId:****
X-TimeStamp:2020-07-31T07:59:03Z
Signatures from HMAC calculations
*****
HTTP Response
Content-Type: application/json;charset=UTF-8
The result is in JSON format, please refer to the following example.
- Example of HTTP response
Description of returning json field
Field name | Type | Description |
---|---|---|
errorCode | Number | Error code: 0 means success |
errorMessage | String | Error message |
textSpam | json object | Resut message |
warning | Boolean | Customize the alarm information of advertising words, and configure it when adding a blacklist on the console |
taskId | String | Unique identifier to distinguish different calls |
startTime | Number | Timestamp, representing the detection text call time |
endTime | Number | Timestamp, representing the return time of the detected text result |
textSpam
Field name | Type | Description |
---|---|---|
content | String | After the detection is complete, sensitive words will change to asterisks if they contain sensitive words, and other content will be returned normally. |
result | Number | 0: Pass, 1: Recommended for review, 2: Fail |
tages | json array | Classified information |
wordList | json array | List of sensitive words |
tags
Field name | Type | Description |
---|---|---|
tag | Number | Classified information: 100: politics, 110: violence, 120: prohibited, 130: eroticism, 150: advertisement, 160: insults, 170: Hate speech, 180: Minor protection, 190: sensitive hot spots,410:Irregular Emoticons, 420:Nickname,300:advertising law,220:private transaction,900: other, 999: customization |
tagName | String | Detect first-level type names for text hits |
tagNameEn | String | Detect first-level type names for text hits(English) |
level | Number | Classification level,0:Normal,1:Suspected,2:Abnormal |
confidence | Number | confidence,between 0 and 100,oney when tag=150,confidence is not null; The higher the value, the more likely to be an advertisement |
subTags | json object | Secondary classification of sensitive information |
subTags
Field name | Type | Describe |
---|---|---|
subTag | Number | Secondary classification information reference Classification Code |
subTagName | String | Detect secondary type names for text hits |
subTagNameEn | String | Detect secondary type names for text hits(English) |
wordList | array of strings | hit details |
wordPosition | <String, Position[]> | hit words position info,<word, position array> |
Position
Field name | Type | Describe |
---|---|---|
start | Number | start position of word in sentence |
end | Number | end position of word in sentence |
offset | Number | the length of word |
-
Response example
JSON response
{ "errorCode": 0, "textSpam": { "content": "****", "result": 2, "tags": [ { "tag": 160, "level": 2, "tagName": "辱骂", "tagNameEn": "insults", "subTags": [ { "subTag": 160001, "subTagName": "谩骂人身攻击", "subTagNameEn": "insults and personal attacks", "wordList": [ "fuck" ] } ] } ], "wordList": [ "fuck" ] }, "taskId": "c01b212f-3e31-4a2e-8346-b6f6ce3a3456", "startTime": 1660103900367, "endTime": 1660103900374 }
Error Code
HTTP Status Code | Error code | Error message | Cause of error |
---|---|---|---|
200 | 0 | This field will be ommitted | |
429 | 1104 | Out of Rate Limit | Frequency of requests exceeds the limit |
405 | 1004 | Method Not Allowed | The http request method can only be get or post. If it is post, header must have content-type,and its value should be application/x-www-form-urlencoded |
400 | 1002 | API Not Found | The corresponding API was not found according to the path of the http request. |
400 | 1003 | Bad Request | Parsing request failed |
400 | 2000 | Missing Parameter | Missing parameters content |
400 | 2102 | Input Too Long | The length of the parameter content exceeds the limit. |
401 | 1102 | Unauthorized Client | Parameter appId invalid |
401 | 1106 | Missing Access Token | Missing Authorization |
401 | 1107 | Invalid Token | Incorrect Authorization |
401 | 1108 | Expired Token | Expired timeStamp |
401 | 2000 | Missing Parameter | Missing timeStamp |
401 | 2001 | Invalid Parameter | TimeStamp format error |