Detection Records (Cursor Pagination)
Update:
Retrieve text moderation records with cursor pagination. This is a client-initiated query, not a server-pushed callback.
POSThttps://tsafe.ilivedata.com/api/v1/stats/text/check/records/scroll
Query records from the past month, with up to 2,000 records per page. Send and receive JSON; authenticate with an Authorization signature.
Request Parameters
Request Headers
All headers below are required.
Header
Value
Description
Content-Type
application/json; charset=UTF-8
Request body format.
Accept
application/json; charset=UTF-8
Response format.
X-AppId
—
Project ID from Console → Service Configuration.
X-TimeStamp
—
UTC request time in W3C format, for example 2026-10-15T02:30:00Z. Use the current time for actual requests.
Authorization
—
See Request Signature below.
Request Body
Parameter
Type
Required
Description
apps
Number[]
Optional
Project IDs. Defaults to the X-AppId header when omitted.
strategies
String[]
Optional
Policy IDs.
results
Number[]
Optional
Results to include: 0 pass, 1 suspicious, 2 reject.
languages
String[]
Optional
Language codes.
startAt
Number
Required
Start time as a Unix timestamp in milliseconds, within the past month.
endAt
Number
Required
End time as a Unix timestamp in milliseconds.
sortOrder
String
Optional
Sort parameter: ASC ascending or DESC descending; defaults to DESC. See the implementation limitation below.
size
Number
Required
Page size, from 1 to 2000.
cursor
Object
Optional
Omit on the first request. For subsequent requests, pass the returned cursor unchanged.
The current implementation accepts sortOrder but does not forward it to the underlying query. Results still use the default DESC order; do not rely on ASC to return ascending results.
cursor
Field
Type
Required
Description
taskId
String
Required
Task ID associated with the cursor.
timestamp
Number
Required
Cursor time as a Unix timestamp in milliseconds.
Request Examples
The timestamps below illustrate the format. Replace them with a range within the past month.
First Request
{
"size": 1000,
"startAt": 1791936000000,
"endAt": 1792022400000
}
Subsequent Request
Keep the project, time range, and filters unchanged, and pass the previous response’s cursor unchanged.
{
"size": 1000,
"startAt": 1791936000000,
"endAt": 1792022400000,
"cursor": {
"timestamp": 1792022390000,
"taskId": "ap_example_task_001"
}
}
Request Signature
Calculate Authorization using Request Signature with the parameters below.
Signature Parameter
Value
HTTPMethod
POST
HostHeaderInLowercase
tsafe.ilivedata.com
HTTPRequestURI
/api/v1/stats/text/check/records/scroll
HTTP Response
Content-Type: application/json;charset=UTF-8
Response Fields
Field
Type
Description
code
Number
0 indicates success. For nonzero codes, see msg.
msg
String
Result description or error message.
data
Object
Query results.
data
Field
Type
Description
cursor
Object
Cursor for the next request, with the same structure as the request cursor.
records
Object[]
Moderation records; fields are listed below.
records[]
Optional fields may be omitted when unavailable. User level, IP, message, payment, channel, and registration metadata come from the original request’s additional data; their value types follow the submitted values.
Field
Type
Description
input
String
Original text submitted for moderation.
taskId
String
Task ID.
result
Number
Moderation result: 0 pass, 1 suspicious, 2 reject.
checkAt
Number
Moderation time as a Unix timestamp in milliseconds.
strategy
String
Policy ID.
language
String
Language code.
tags
Number[]
Primary category codes.
subTags
Number[]
Secondary category codes.
wordlist
String[]
Matched prohibited words.
userId
String
User ID.
extra
Object
Additional data.
Response Example
{
"code": 0,
"msg": "Success.",
"data": {
"cursor": {
"timestamp": 1792022390000,
"taskId": "ap_example_task_001"
},
"records": [
{
"taskId": "ap_example_task_001",
"strategy": "DEFAULT",
"result": 0,
"input": "Hello",
"userId": "user001",
"language": "en",
"checkAt": 1792022390000
}
]
}
}
Retrieve text moderation records with cursor pagination. This is a client-initiated query, not a server-pushed callback.
https://tsafe.ilivedata.com/api/v1/stats/text/check/records/scrollQuery records from the past month, with up to 2,000 records per page. Send and receive JSON; authenticate with an Authorization signature.
Request Parameters
Request Headers
All headers below are required.
| Header | Value | Description |
|---|---|---|
Content-Type |
application/json; charset=UTF-8 |
Request body format. |
Accept |
application/json; charset=UTF-8 |
Response format. |
X-AppId |
— | Project ID from Console → Service Configuration. |
X-TimeStamp |
— | UTC request time in W3C format, for example 2026-10-15T02:30:00Z. Use the current time for actual requests. |
Authorization |
— | See Request Signature below. |
Request Body
| Parameter | Type | Required | Description |
|---|---|---|---|
apps |
Number[] |
Optional | Project IDs. Defaults to the X-AppId header when omitted. |
strategies |
String[] |
Optional | Policy IDs. |
results |
Number[] |
Optional | Results to include: 0 pass, 1 suspicious, 2 reject. |
languages |
String[] |
Optional | Language codes. |
startAt |
Number |
Required | Start time as a Unix timestamp in milliseconds, within the past month. |
endAt |
Number |
Required | End time as a Unix timestamp in milliseconds. |
sortOrder |
String |
Optional | Sort parameter: ASC ascending or DESC descending; defaults to DESC. See the implementation limitation below. |
size |
Number |
Required | Page size, from 1 to 2000. |
cursor |
Object |
Optional | Omit on the first request. For subsequent requests, pass the returned cursor unchanged. |
The current implementation accepts sortOrder but does not forward it to the underlying query. Results still use the default DESC order; do not rely on ASC to return ascending results.
cursor
| Field | Type | Required | Description |
|---|---|---|---|
taskId |
String |
Required | Task ID associated with the cursor. |
timestamp |
Number |
Required | Cursor time as a Unix timestamp in milliseconds. |
Request Examples
The timestamps below illustrate the format. Replace them with a range within the past month.
First Request
{
"size": 1000,
"startAt": 1791936000000,
"endAt": 1792022400000
}
Subsequent Request
Keep the project, time range, and filters unchanged, and pass the previous response’s cursor unchanged.
{
"size": 1000,
"startAt": 1791936000000,
"endAt": 1792022400000,
"cursor": {
"timestamp": 1792022390000,
"taskId": "ap_example_task_001"
}
}
Request Signature
Calculate Authorization using Request Signature with the parameters below.
| Signature Parameter | Value |
|---|---|
HTTPMethod |
POST |
HostHeaderInLowercase |
tsafe.ilivedata.com |
HTTPRequestURI |
/api/v1/stats/text/check/records/scroll |
HTTP Response
Content-Type: application/json;charset=UTF-8
Response Fields
| Field | Type | Description |
|---|---|---|
code |
Number |
0 indicates success. For nonzero codes, see msg. |
msg |
String |
Result description or error message. |
data |
Object |
Query results. |
data
| Field | Type | Description |
|---|---|---|
cursor |
Object |
Cursor for the next request, with the same structure as the request cursor. |
records |
Object[] |
Moderation records; fields are listed below. |
records[]
Optional fields may be omitted when unavailable. User level, IP, message, payment, channel, and registration metadata come from the original request’s additional data; their value types follow the submitted values.
| Field | Type | Description |
|---|---|---|
input |
String |
Original text submitted for moderation. |
taskId |
String |
Task ID. |
result |
Number |
Moderation result: 0 pass, 1 suspicious, 2 reject. |
checkAt |
Number |
Moderation time as a Unix timestamp in milliseconds. |
strategy |
String |
Policy ID. |
language |
String |
Language code. |
tags |
Number[] |
Primary category codes. |
subTags |
Number[] |
Secondary category codes. |
wordlist |
String[] |
Matched prohibited words. |
userId |
String |
User ID. |
extra |
Object |
Additional data. |
Response Example
{
"code": 0,
"msg": "Success.",
"data": {
"cursor": {
"timestamp": 1792022390000,
"taskId": "ap_example_task_001"
},
"records": [
{
"taskId": "ap_example_task_001",
"strategy": "DEFAULT",
"result": 0,
"input": "Hello",
"userId": "user001",
"language": "en",
"checkAt": 1792022390000
}
]
}
}