App Deep Link
Note: This endpoint applies only to Douyin publish records.
recordIdmust refer to a record that has not completed. Completed, failed, or other records return business error15018.
Get the App scheme and short link used to continue the publish flow in the Douyin App.
curl --request GET \
--url https://aitoearn.cn/api/v2/channels/publish/records/{recordId}/user-action \
--header 'X-Api-Key: <api-key>'import requests
url = "https://aitoearn.cn/api/v2/channels/publish/records/{recordId}/user-action"
headers = {"X-Api-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-Api-Key': '<api-key>'}};
fetch('https://aitoearn.cn/api/v2/channels/publish/records/{recordId}/user-action', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://aitoearn.cn/api/v2/channels/publish/records/{recordId}/user-action"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-Api-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}{
"code": 0,
"message": "Request succeeded",
"data": {
"recordId": "string",
"platform": "string",
"shareId": "string",
"schemeUrl": "string",
"shortLink": "string",
"expiresAt": "2026-07-02T12:00:00.000Z"
}
}Authorizations
Need to get API Key from AiToEarn. Click to go to "API Key Obtaining Tutorial".
Path Parameters
The Douyin release record ID that is still waiting for user action. Use data[n].id from the release record list response; do not use a completed record or any non-Douyin release record.
Response
The request has been processed by the service. Business success is determined by whether the response body has code === 0.
Business status code. 0 means success; non-zero means a business error.
Response message.
Hide child attributes
Hide child attributes
Request ID.
Error response timestamp in Unix milliseconds.
curl --request GET \
--url https://aitoearn.cn/api/v2/channels/publish/records/{recordId}/user-action \
--header 'X-Api-Key: <api-key>'import requests
url = "https://aitoearn.cn/api/v2/channels/publish/records/{recordId}/user-action"
headers = {"X-Api-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-Api-Key': '<api-key>'}};
fetch('https://aitoearn.cn/api/v2/channels/publish/records/{recordId}/user-action', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://aitoearn.cn/api/v2/channels/publish/records/{recordId}/user-action"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-Api-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}{
"code": 0,
"message": "Request succeeded",
"data": {
"recordId": "string",
"platform": "string",
"shareId": "string",
"schemeUrl": "string",
"shortLink": "string",
"expiresAt": "2026-07-02T12:00:00.000Z"
}
}
