Query outbound call recording (QueryOutboundCallRecord)
Queries the outbound call recording by call ID and returns the recording file download URL and recording duration. The recording URL is time-sensitive. Download and save the recording within the validity period.
Prerequisites
-
The SDK is installed.
-
An AccessKey pair is obtained and configured. For more information, see Obtain an AccessKey pair and configure it in environment variables.
-
The CallId (call ID) is obtained. You can obtain it from the Data.CallId response parameter when calling CreateCallOutboundInstant to initiate a real-time outbound call, or from the QueryOutboundCallList response when querying the outbound call list.
Request parameters
|
Name |
Type |
Required |
Description |
Example |
|
Action |
String |
Yes |
The operation to perform. Set the value to QueryOutboundCallRecord. |
QueryOutboundCallRecord |
|
Version |
String |
Yes |
The API version number. Format: YYYY-MM-DD. Set the value to 2025-11-27. |
Fixed as 2025-11-27 |
|
CallId |
String |
Yes |
The unique identifier of the call. |
call-abc123def456 |
Response parameters
|
Name |
Type |
Description |
Example |
|
RequestId |
String |
The request ID. |
xxxx-xxxx-xxxx |
|
Success |
Boolean |
Indicates whether the request was successful. |
True |
|
Code |
String |
The error code. Empty when the request is successful. |
None |
|
Message |
String |
The error message or success message. |
Success |
|
Data |
Object |
The returned data, which contains fields such as CallId, RecordUrl, and RecordDuration. For more information, see the response parameter description below. |
Examples
Python
import json
import os
from alibabacloud_tea_openapi import models as open_api_models
from alibabacloud_tea_openapi.client import Client as OpenApiClient
from alibabacloud_tea_util import models as util_models
from alibabacloud_openapi_util.client import Client as OpenApiUtilClient
def main():
config = open_api_models.Config(
access_key_id=os.getenv("ACCESS_KEY_ID"),
access_key_secret=os.getenv("ACCESS_KEY_SECRET"),
)
config.endpoint = "thirdswaicall.aliyuncs.com"
config.protocol = "HTTPS"
client = OpenApiClient(config)
params = open_api_models.Params(
style="RPC",
version="2025-11-27",
action="QueryOutboundCallRecord",
method="POST",
pathname="/",
protocol="HTTPS",
auth_type="AK",
req_body_type="json",
body_type="json",
)
body = {'CallId': 'call-abc123def456'}
request = open_api_models.OpenApiRequest(query=OpenApiUtilClient.query(body))
runtime = util_models.RuntimeOptions(autoretry=True, max_attempts=3)
try:
resp = client.call_api(params, request, runtime)
print(json.dumps(resp.get("body", {}), ensure_ascii=False, indent=2))
except Exception as e:
print(f"调用失败: {e}")
if __name__ == "__main__":
main()
Java
import com.aliyun.teaopenapi.Client;
import com.aliyun.teaopenapi.models.Config;
import com.aliyun.teaopenapi.models.OpenApiRequest;
import com.aliyun.teaopenapi.models.Params;
import com.aliyun.teautil.models.RuntimeOptions;
import com.google.gson.Gson;
import java.util.HashMap;
import java.util.Map;
public class Demo {
public static void main(String[] args) throws Exception {
// 初始化配置
Config config = new Config()
.setAccessKeyId(System.getenv("ACCESS_KEY_ID"))
.setAccessKeySecret(System.getenv("ACCESS_KEY_SECRET"))
.setEndpoint("thirdswaicall.aliyuncs.com")
.setProtocol("HTTPS");
Client client = new Client(config);
// 设置 API 参数
Params params = new Params()
.setStyle("RPC")
.setVersion("2025-11-27")
.setAction("QueryOutboundCallRecord")
.setMethod("POST")
.setPathname("/")
.setProtocol("HTTPS")
.setAuthType("AK")
.setReqBodyType("json")
.setBodyType("json");
// 构建请求参数
Map<String, Object> body = new HashMap<>();
body.put("CallId", 1);
OpenApiRequest request = new OpenApiRequest()
.setQuery(com.aliyun.openapiutil.Client.query(body));
// 设置运行时选项(自动重试)
RuntimeOptions runtime = new RuntimeOptions()
.setAutoretry(true)
.setMaxAttempts(3);
try {
// 调用 API
Map<String, ?> response = client.callApi(params, request, runtime);
Gson gson = new Gson();
System.out.println(gson.toJson(response.get("body")));
} catch (Exception e) {
System.err.println("调用失败: " + e.getMessage());
}
}
}
Sample response
{
"Success": true,
"Code": null,
"Message": "Success",
"RequestId": "xxxx-xxxx-xxxx",
"Data": {
"CallId": "call-abc123def456",
"RecordUrl": "https://oss-example.com/record/abc123.wav",
"RecordDuration": 150
}
}
The specific results are contained in the Data node. The following table describes the parameters of the Data node.
|
Name |
Type |
Description |
Example |
|
CallId |
String |
The unique identifier of the call. |
call-abc123def456 |
|
RecordUrl |
String |
The recording file download URL. |
https://oss-example.com/record/abc123.wav |
|
RecordDuration |
Number |
The recording duration in seconds. |
150 |
Error codes
If an error occurs, see Error codes for troubleshooting.