The text-to-image search tool enables a model to search the Internet for relevant images based on a text description. The model can then describe the image content and perform inference. This is useful for scenarios such as visual Q&A and image recommendations.
Usage
You can call the text-to-image search feature using the Responses API. Add the web_search_image tool to the tools parameter.
# Import dependencies and create a client...
response = client.responses.create(
model="qwen3.7-plus",
input="Find a tech-style background image for a PPT cover",
tools=[{"type": "web_search_image"}]
)
print(response.output_text)
Supported models
Recommended models
For the best tool calling results, use the following models:
Qwen-Plus: Qwen3.7-Plus series, Qwen3.6-Plus series, Qwen3.5-Plus series
Qwen-Max: qwen3.7-max-2026-06-08
Other models
The following models also support this tool call, but their performance is not as good as that of the recommended models.
-
Qwen-Flash: Qwen3.6-Flash series, Qwen3.5-Flash series
-
Qwen3.6 open-source series (except qwen3.6-27b)
-
Qwen3.5 open source series
This tool can only be called through the Responses API.
Getting started
Run the following code to call the text-to-image search tool using the Responses API. This code searches the Internet for images based on a text description.
You must obtain an API key and configure the API key as an environment variable.
import os
import json
from openai import OpenAI
client = OpenAI(
# If you have not configured the environment variable, replace the following line with api_key="sk-xxx" (not recommended), using your Model Studio API key.
api_key=os.getenv("DASHSCOPE_API_KEY"),
# The following URL is for the China (Beijing) region. Replace {WorkspaceId} with your Workspace ID. URLs vary by region.
base_url="https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1"
)
response = client.responses.create(
model="qwen3.7-plus",
input="Find a tech-style background image for a PPT cover",
tools=[
{
"type": "web_search_image"
}
]
)
for item in response.output:
if item.type == "web_search_image_call":
print(f"[Tool Call] Text-to-image search (status: {item.status})")
# Parse and display the list of searched images
if item.output:
images = json.loads(item.output)
print(f" Found {len(images)} images:")
for img in images[:5]: # Display the first 5 images
print(f" [{img['index']}] {img['title']}")
print(f" {img['url']}")
if len(images) > 5:
print(f" ... {len(images)} images in total")
elif item.type == "message":
print(f"\n[Model Response]")
print(response.output_text)
# Display token usage and tool call statistics
print(f"\n[Token Usage] Input: {response.usage.input_tokens}, Output: {response.usage.output_tokens}, Total: {response.usage.total_tokens}")
if hasattr(response.usage, 'x_tools') and response.usage.x_tools:
for tool_name, info in response.usage.x_tools.items():
print(f"[Tool Statistics] {tool_name} calls: {info.get('count', 0)}")import OpenAI from "openai";
import process from 'process';
const openai = new OpenAI({
// If you have not configured the environment variable, replace the following line with apiKey: "sk-xxx", using your Model Studio API key.
apiKey: process.env.DASHSCOPE_API_KEY,
// The following URL is for the China (Beijing) region. Replace {WorkspaceId} with your Workspace ID. URLs vary by region.
baseURL: "https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1"
});
async function main() {
const response = await openai.responses.create({
model: "qwen3.7-plus",
input: "Find a tech-style background image for a PPT cover",
tools: [
{ type: "web_search_image" }
]
});
for (const item of response.output) {
if (item.type === "web_search_image_call") {
console.log(`[Tool Call] Text-to-image search (status: ${item.status})`);
// Parse and display the list of searched images
if (item.output) {
const images = JSON.parse(item.output);
console.log(` Found ${images.length} images:`);
images.slice(0, 5).forEach(img => {
console.log(` [${img.index}] ${img.title}`);
console.log(` ${img.url}`);
});
if (images.length > 5) {
console.log(` ... ${images.length} images in total`);
}
}
} else if (item.type === "message") {
console.log(`\n[Model Response]`);
console.log(response.output_text);
}
}
// Display token usage and tool call statistics
console.log(`\n[Token Usage] Input: ${response.usage.input_tokens}, Output: ${response.usage.output_tokens}, Total: ${response.usage.total_tokens}`);
if (response.usage && response.usage.x_tools) {
for (const [toolName, info] of Object.entries(response.usage.x_tools)) {
console.log(`[Tool Statistics] ${toolName} calls: ${info.count || 0}`);
}
}
}
main();# The following URL is for the China (Beijing) region. Replace {WorkspaceId} with your Workspace ID. URLs vary by region.
curl -X POST https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1/responses \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "qwen3.7-plus",
"input": "Find a tech-style background image for a PPT cover",
"tools": [
{"type": "web_search_image"}
]
}'The preceding code returns the following response:
[Tool Call] Text-to-image search (status: completed)
Found 30 images:
[1] Best Free Information Technology Background S Google Slides Themes ...
https://image.slidesdocs.com/responsive-images/slides/0-technology-line-network-information-training-courseware-powerpoint-background_17825ea41f__960_540.jpg
[2] Data Technology Blue Abstract Business Glow Powerpoint Background ...
https://image.slidesdocs.com/responsive-images/background/data-technology-blue-abstract-business-glow-powerpoint-background_e667bfafcb__960_540.jpg
[3] PPT Technology Style Background Template Banner Backgrounds | PSD ...
https://img.pikbest.com/backgrounds/20190418/ppt-technology-style-background-template-banner_1889599.jpg!bw700
[4] Download Now! PowerPoint Background Design Technology
https://www.slideegg.com/image/catalog/89734-powerpoint-background-design-technology.png
[5] Powerpoint Template Technology Images ...
https://t4.ftcdn.net/jpg/07/53/21/13/360_F_753211329_cVkWkZdxs9tNEoS5q2d8ZH362YQnAH0p.jpg
... 30 images in total
[Model Response]
Here are a few tech-style background images that are perfect for a PPT cover. You can choose one based on your specific theme:
**1. Classic blue circuit board and chip style**
Suitable for topics: Hardware, chips, electronic engineering, low-level technology.

**2. Abstract particles and network connection style**
Suitable for topics: Big data, artificial intelligence, network security, cloud computing.

...
[Token Usage] Input: 4326, Output: 645, Total: 4971
[Tool Statistics] web_search_image calls: 1
Streaming output
The text-to-image search tool can be slow. You can enable streaming output to receive intermediate results in real time.
import os
import json
from openai import OpenAI
client = OpenAI(
# If you have not configured the environment variable, replace the following line with api_key="sk-xxx" (not recommended), using your Model Studio API key.
api_key=os.getenv("DASHSCOPE_API_KEY"),
# The following URL is for the China (Beijing) region. Replace {WorkspaceId} with your Workspace ID. URLs vary by region.
base_url="https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1"
)
stream = client.responses.create(
model="qwen3.7-plus",
input="Find a tech-style background image for a PPT cover",
tools=[{"type": "web_search_image"}],
stream=True
)
for event in stream:
# Tool call starts
if event.type == "response.output_item.added":
if event.item.type == "web_search_image_call":
print("[Tool Call] Text-to-image search in progress...")
# Tool call is complete. Parse and display the list of searched images.
elif event.type == "response.output_item.done":
if event.item.type == "web_search_image_call":
print(f"[Tool Call] Text-to-image search complete (status: {event.item.status})")
if event.item.output:
images = json.loads(event.item.output)
print(f" Found {len(images)} images:")
for img in images[:5]: # Display the first 5 images
print(f" [{img['index']}] {img['title']}")
print(f" {img['url']}")
if len(images) > 5:
print(f" ... {len(images)} images in total")
# Model response starts
elif event.type == "response.content_part.added":
print(f"\n[Model Response]")
# Streamed text output
elif event.type == "response.output_text.delta":
print(event.delta, end="", flush=True)
# Response is complete. Output usage.
elif event.type == "response.completed":
usage = event.response.usage
print(f"\n\n[Token Usage] Input: {usage.input_tokens}, Output: {usage.output_tokens}, Total: {usage.total_tokens}")
if hasattr(usage, 'x_tools') and usage.x_tools:
for tool_name, info in usage.x_tools.items():
print(f"[Tool Statistics] {tool_name} calls: {info.get('count', 0)}")import OpenAI from "openai";
import process from 'process';
const openai = new OpenAI({
// If you have not configured the environment variable, replace the following line with apiKey: "sk-xxx", using your Model Studio API key.
apiKey: process.env.DASHSCOPE_API_KEY,
// The following URL is for the China (Beijing) region. Replace {WorkspaceId} with your Workspace ID. URLs vary by region.
baseURL: "https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1"
});
async function main() {
const stream = await openai.responses.create({
model: "qwen3.7-plus",
input: "Find a tech-style background image for a PPT cover",
tools: [{ type: "web_search_image" }],
stream: true
});
for await (const event of stream) {
// Tool call starts
if (event.type === "response.output_item.added") {
if (event.item && event.item.type === "web_search_image_call") {
console.log("[Tool Call] Text-to-image search in progress...");
}
}
// Tool call is complete. Parse and display the list of searched images.
else if (event.type === "response.output_item.done") {
if (event.item && event.item.type === "web_search_image_call") {
console.log(`[Tool Call] Text-to-image search complete (status: ${event.item.status})`);
if (event.item.output) {
const images = JSON.parse(event.item.output);
console.log(` Found ${images.length} images:`);
images.slice(0, 5).forEach(img => {
console.log(` [${img.index}] ${img.title}`);
console.log(` ${img.url}`);
});
if (images.length > 5) {
console.log(` ... ${images.length} images in total`);
}
}
}
}
// Model response starts
else if (event.type === "response.content_part.added") {
console.log(`\n[Model Response]`);
}
// Streamed text output
else if (event.type === "response.output_text.delta") {
process.stdout.write(event.delta);
}
// Response is complete. Output usage.
else if (event.type === "response.completed") {
const usage = event.response.usage;
console.log(`\n\n[Token Usage] Input: ${usage.input_tokens}, Output: ${usage.output_tokens}, Total: ${usage.total_tokens}`);
if (usage && usage.x_tools) {
for (const [toolName, info] of Object.entries(usage.x_tools)) {
console.log(`[Tool Statistics] ${toolName} calls: ${info.count || 0}`);
}
}
}
}
}
main();# The following URL is for the China (Beijing) region. Replace {WorkspaceId} with your Workspace ID. URLs vary by region.
curl -X POST https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1/responses \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "qwen3.7-plus",
"input": "Find a tech-style background image for a PPT cover",
"tools": [
{"type": "web_search_image"}
],
"stream": true
}'The preceding code returns the following output:
[Tool Call] Text-to-image search in progress...
[Tool Call] Text-to-image search complete (status: completed)
Found 30 images:
[1] Free Technology Background PowerPoint & Google Slides Themes
https://slidechef.net/wp-content/uploads/2023/11/TECHNOLOGY-BACKGROUND.jpg
[2] Best Free Information Technology Background S Google Slides Themes ...
https://image.slidesdocs.com/responsive-images/slides/0-technology-line-network-information-training-courseware-powerpoint-background_17825ea41f__960_540.jpg
[3] PPT Technology Style Background Template Banner Backgrounds | PSD ...
https://img.pikbest.com/backgrounds/20190418/ppt-technology-style-background-template-banner_1889599.jpg!bw700
[4] Download Now! PowerPoint Background Design Technology
https://www.slideegg.com/image/catalog/89734-powerpoint-background-design-technology.png
[5] Powerpoint Template Technology Images ...
https://t4.ftcdn.net/jpg/07/53/21/13/360_F_753211329_cVkWkZdxs9tNEoS5q2d8ZH362YQnAH0p.jpg
... 30 images in total
[Model Response]
Here are a few tech-style background images that are perfect for a PPT cover. You can choose one based on your specific theme:
**1. Minimalist network connector style (suitable for big data, connectivity, and communication topics)**
This image has a dark blue background with simple node connectors in the corner and a lot of white space in the middle...

**2. Hardcore circuit and chip style (suitable for artificial intelligence, hardware, and low-level technology topics)**
The left side features complex circuit board textures and a HUD-like ring design...

...
[Token Usage] Input: 7180, Output: 558, Total: 7738
[Tool Statistics] web_search_image calls: 1
Billing
Billing includes the following:
-
Model call fees: The image search results are added to the prompt. This increases the number of input tokens for the model. You are charged based on the standard pricing for the model. For pricing details, see the Model Studio console.
-
Tool call fees: The fee for every 1,000 calls is: CNY 24 for deployments in the Chinese mainland and globally, and CNY 58.713905 for international deployments.