SDK integration
Updated at:
This guide explains how to make API calls using Alibaba Cloud SDKs with AccessKey authentication. All code samples call the Unified Search API.
1. Get an AccessKey pair
Step 1: Create a RAM user and grant permissions Create a RAM user and grant permissions
Step 2: Create an AccessKey Create an AccessKey pair for a RAM user
Note
If you need to reuse an existing AccessKey, grant the AliyunIQSFullAccess permission to the corresponding RAM user.
2. API reference
Category | API | Description |
Unified Search API | CN, Global, and Generic editions | |
multimodal (image search) edition | ||
Web Q&A Agent | Lite and Pro editions | |
Web Page Parsing | ReadPageBasic | |
ReadPageScrape | ||
Vertical Search | POISearch | |
MedicalAnswer | ||
MedicalKnowledge | ||
ScanFile | File Scan API (ScanFile) (Coming soon) |
3. SDK integration
Python SDK
Installation
pip3 install alibabacloud_iqs20241111==1.10.1Synchronous call
This example shows a synchronous call to the Unified Search API (unified_search).
import os
from Tea.exceptions import TeaException
from alibabacloud_iqs20241111 import models
from alibabacloud_iqs20241111.client import Client
from alibabacloud_tea_openapi import models as open_api_models
class Sample:
def __init__(self):
pass
@staticmethod
def create_client() -> Client:
config = open_api_models.Config(
# TODO: Replace with your AccessKey pair. We recommend loading them from environment variables.
access_key_id='$YOUR_ACCESS_KEY',
access_key_secret='$YOUR_ACCESS_SECRET'
)
config.endpoint = f'iqs.cn-zhangjiakou.aliyuncs.com'
return Client(config)
@staticmethod
def main() -> None:
client = Sample.create_client()
advancedParams = {
"startPublishedDate": "2025-10-01",
"endPublishedDate": "2025-10-10"
}
run_instances_request = models.UnifiedSearchRequest(
body=models.UnifiedSearchInput(
query='Hangzhou cuisine',
time_range='NoLimit',
contents=models.RequestContents(
summary=False,
main_text=True,
),
advanced_params=advancedParams
)
)
try:
response = client.unified_search(run_instances_request)
print(
f"api success, request_id:{response.body.request_id}, size :{len(response.body.page_items)}, server_cost:{response.body.search_information.search_time}")
if len(response.body.scene_items) > 0:
print(f"scene_items:{response.body.scene_items[0]}")
for index, item in enumerate(response.body.page_items):
print(f"{index}. {'-' * 20}")
print(f"title:{item.title}")
print(f"snippet:{item.snippet}")
print(f"summary:{item.summary}")
print(f"published_time:{item.published_time}")
print(f"link:{item.link}")
print(f"rerank_score:{item.rerank_score}")
except TeaException as e:
code = e.code
request_id = e.data.get("requestId")
message = e.data.get("message")
print(f"api exception, requestId:{request_id}, code:{code}, message:{message}")
if __name__ == '__main__':
Sample.main()Asynchronous call
import asyncio
import os
import time
from Tea.exceptions import TeaException
from alibabacloud_iqs20241111 import models
from alibabacloud_iqs20241111.client import Client
from alibabacloud_tea_openapi import models as open_api_models
class Sample:
def __init__(self):
pass
@staticmethod
def create_client() -> Client:
config = open_api_models.Config(
# TODO: Replace with your AccessKey pair. We recommend loading them from environment variables.
access_key_id=os.environ.get('ACCESS_KEY'),
access_key_secret=os.environ.get('ACCESS_SECRET')
)
config.endpoint = f'iqs.cn-zhangjiakou.aliyuncs.com'
return Client(config)
@staticmethod
async def main_async() -> None:
start = time.time()
client = Sample.create_client()
run_instances_request = models.UnifiedSearchRequest(
body=models.UnifiedSearchInput(
query='Hangzhou cuisine',
time_range='NoLimit',
contents=models.RequestContents(
# Note: The summary feature is billed separately.
summary=True,
main_text=True,
)
)
)
try:
# Use the asynchronous method
response = await client.unified_search_async(run_instances_request)
print(
f"api success, request_id:{response.body.request_id}, size :{len(response.body.page_items)}, server_cost:{response.body.search_information.search_time}")
if len(response.body.scene_items) > 0:
print(f"scene_items:{response.body.scene_items[0]}")
for index, item in enumerate(response.body.page_items):
print(f"{index}. {'-' * 20}")
print(f"title:{item.title}")
print(f"snippet:{item.snippet}")
print(f"summary:{item.summary}")
print(f"published_time:{item.published_time}")
print(f"link:{item.link}")
print(f"rerank_score:{item.rerank_score}")
except TeaException as e:
code = e.code
request_id = e.data.get("requestId")
message = e.data.get("message")
print(f"api exception, requestId:{request_id}, code:{code}, message:{message}")
if __name__ == '__main__':
asyncio.run(Sample.main_async())Java SDK
Installation
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>iqs20241111</artifactId>
<version>1.10.1</version>
</dependency>Sample code
package com.aliyun.iqs.example;
import com.aliyun.iqs20241111.Client;
import com.aliyun.iqs20241111.models.*;
import com.aliyun.teaopenapi.models.Config;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
public class UnifiedSearchExample {
public static void main(String[] args) throws Exception {
Client client = initClient();
invoke(client, "Hangzhou cuisine", "NoLimit");
}
private static Client initClient() throws Exception {
// TODO: Replace with your AccessKey pair. We recommend loading them from environment variables.
String accessKeyId = "$YOUR_ACCESS_KEY";
String accessKeySecret = "$YOUR_ACCESS_SECRET";
Config config = new Config()
.setAccessKeyId(accessKeyId)
.setAccessKeySecret(accessKeySecret);
config.setEndpoint("iqs.cn-zhangjiakou.aliyuncs.com");
return new Client(config);
}
private static void invoke(Client client, String query, String timeRange) {
UnifiedSearchInput input = new UnifiedSearchInput();
input.setQuery(query);
input.setTimeRange(timeRange);
// Use advancedParams to specify a precise date range.
Map<String, String> advancedParams = new HashMap<>();
advancedParams.put("startPublishedDate","2025-10-01");
advancedParams.put("endPublishedDate","2025-10-10");
input.setAdvancedParams(advancedParams);
// Note: The summary feature is billed separately.
RequestContents requestContents = new RequestContents().setSummary(true).setMainText(true);
input.setContents(requestContents);
UnifiedSearchRequest request = new UnifiedSearchRequest().setBody(input);
try {
UnifiedSearchResponse response = client.unifiedSearch(request);
UnifiedSearchOutput result = response.getBody();
printOutput(result);
} catch (Exception e) {
e.printStackTrace();
}
}
private static void printOutput(UnifiedSearchOutput output) {
// Use GsonBuilder to create a Gson instance for pretty-printing.
Gson gson = new GsonBuilder()
.setPrettyPrinting()
.disableHtmlEscaping()
.create();
// Print the formatted JSON output.
String prettyJson = gson.toJson(output);
System.out.println(prettyJson);
}
}Go SDK
Installation
require (
github.com/alibabacloud-go/iqs-20241111 v1.10.1
github.com/alibabacloud-go/darabonba-openapi/v2 v2.0.10
)Sample code
package main
import (
"fmt"
"log"
"os"
openapi "github.com/alibabacloud-go/darabonba-openapi/v2/client"
iqs20241111 "github.com/alibabacloud-go/iqs-20241111/client"
util "github.com/alibabacloud-go/tea-utils/v2/service"
"github.com/alibabacloud-go/tea/tea"
)
const endpointURL = "iqs.cn-zhangjiakou.aliyuncs.com"
func createClient() (*iqs20241111.Client, error) {
// Get your AccessKey pair from environment variables.
accessKeyID := os.Getenv("ACCESS_KEY")
accessKeySecret := os.Getenv("ACCESS_SECRET")
if accessKeyID == "" || accessKeySecret == "" {
return nil, fmt.Errorf("the ACCESS_KEY or ACCESS_SECRET environment variable is not set")
}
config := &openapi.Config{
AccessKeyId: tea.String(accessKeyID),
AccessKeySecret: tea.String(accessKeySecret),
Endpoint: tea.String(endpointURL),
}
return iqs20241111.NewClient(config)
}
func runUnifiedSearch(client *iqs20241111.Client) error {
body := &iqs20241111.UnifiedSearchInput{
Query: tea.String("Hangzhou cuisine"),
TimeRange: tea.String("NoLimit"),
// Note: The summary feature is billed separately.
Contents: &iqs20241111.RequestContents{
Summary: tea.Bool(true),
MainText: tea.Bool(true),
},
}
request := &iqs20241111.UnifiedSearchRequest{
Body: body,
}
runtime := &util.RuntimeOptions{}
resp, err := client.UnifiedSearchWithOptions(request, nil, runtime)
if err != nil {
return fmt.Errorf("unified search failed: %w", err)
}
fmt.Printf("[%s] response: %s\n", *resp.Body.RequestId, resp.Body)
return nil
}
func main() {
client, err := createClient()
if err != nil {
log.Fatalf("Failed to create client: %v", err)
}
if err := runUnifiedSearch(client); err != nil {
log.Fatalf("Error running unified search: %v", err)
}
}Node.js SDK
Installation
npm install @alicloud/iqs20241111@1.10.1Sample code
import * as $OpenApi from '@alicloud/openapi-client';
import * as $IQS20241111 from '@alicloud/iqs20241111';
class Sample {
static createClient(): $IQS20241111.default {
const config = new $OpenApi.Config({
// Configure the client with an AccessKey pair from environment variables.
accessKeyId: process.env.ALIYUN_ACCESS_KEY,
accessKeySecret: process.env.ALIYUN_ACCESS_SECRET,
});
config.endpoint = 'iqs.cn-zhangjiakou.aliyuncs.com';
return new $IQS20241111.default(config);
}
static async main(): Promise<void> {
const client = Sample.createClient();
const advancedParams = {
startPublishedDate: '2025-10-01',
endPublishedDate: '2025-10-10',
};
const unifiedSearchRequest = new $IQS20241111.UnifiedSearchRequest({
body: new $IQS20241111.UnifiedSearchInput({
query: 'Hangzhou cuisine',
timeRange: 'NoLimit',
contents: new $IQS20241111.RequestContents({
// Note: The summary feature is billed separately.
summary: true,
mainText: true,
}),
advancedParams: advancedParams,
}),
});
try {
const response = await client.unifiedSearch(unifiedSearchRequest);
if (!response.body) {
console.error('The response body is empty');
return;
}
console.log(
`api success, request_id:${response.body.requestId}, size:${response.body.pageItems?.length || 0}, server_cost:${response.body.searchInformation?.searchTime}`
);
if (response.body.sceneItems && response.body.sceneItems.length > 0) {
console.log(`scene_items:${JSON.stringify(response.body.sceneItems[0])}`);
}
response.body.pageItems?.forEach((item: any, index: number) => {
console.log(`${index}. ${'-'.repeat(20)}`);
console.log(`title:${item.title}`);
console.log(`snippet:${item.snippet}`);
console.log(`summary:${item.summary}`);
console.log(`published_time:${item.publishedTime}`);
console.log(`link:${item.link}`);
console.log(`rerank_score:${item.rerankScore}`);
});
} catch (error: any) {
const code = error.code;
const requestId = error.data?.requestId;
const message = error.message;
console.error(`api exception, requestId:${requestId}, code:${code}, message:${message}`);
}
}
}
Sample.main();Is this page helpful?