Skip to content

Application DashScope API reference

Input and output parameters for calling Alibaba Cloud Model Studio applications (Agent , Workflow) using the DashScope API, with invocation examples for typical scenarios. Important

This topic is applicable only to the International Edition (Singapore region). Related guides

See Application invocation.

Prerequisites

Complete the following tasks:

  1. Create an application: Go to Application Management to create a Model Studio application and get its application ID.

  2. Get an API key: Get your API key from Key Management and configure the API key as an environment variable.

  3. Install the SDK (optional): If you use an SDK to make calls, install the DashScope SDK for your programming language.

Invocation methods

  • HTTP API call

    Request URL: POST https://dashscope-intl.aliyuncs.com/api/v1/apps/APP_ID/completion

    Replace APP_ID with your actual application ID.

  • SDK call

    Python/Java SDK: The correct endpoint is configured by default.

    Custom endpoint: Configure it using the base_url parameter.

Request body

Single-turn conversation

Python

Request example

python
import os
from http import HTTPStatus
from dashscope import Application
import dashscope
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
response = Application.call(
 # If you have not configured an environment variable, replace the following line with api_key="sk-xxx" using your Model Studio API key. However, do not hard code your API key directly in the code for production environments to reduce the risk of API key leakage.
 api_key=os.getenv("DASHSCOPE_API_KEY"),
 app_id='APP_ID',# Replace with your actual application ID
 prompt='Who are you?')

if response.status_code != HTTPStatus.OK:
 print(f'request_id={response.request_id}')
 print(f'code={response.status_code}')
 print(f'message={response.message}')
 print(f'See documentation: https://www.alibabacloud.com/help/en/model-studio/developer-reference/error-code')
else:
 print(response.output.text)

Java

Request example

java
// We recommend dashscope SDK version \>= 2.12.0
import com.alibaba.dashscope.app.*;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.InputRequiredException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.utils.Constants;
public class Main {
 static {
 Constants.baseHttpApiUrl="https://dashscope-intl.aliyuncs.com/api/v1";
 }
 public static void appCall()
 throws ApiException, NoApiKeyException, InputRequiredException {
 ApplicationParam param = ApplicationParam.builder()
 // If you have not configured an environment variable, replace the following line with .apiKey("sk-xxx") using your Model Studio API key. However, do not hard code your API key directly in the code for production environments to reduce the risk of API key leakage.
 .apiKey(System.getenv("DASHSCOPE_API_KEY"))
 .appId("APP_ID")
 .prompt("Who are you?")
 .build();

Application application = new Application();
 ApplicationResult result = application.call(param);

System.out.printf("text: %s\\n",
 result.getOutput().getText());
 }

public static void main(String\[\] args) {
 try {
 appCall();
 } catch (ApiException \| NoApiKeyException \| InputRequiredException e) {
 System.err.println("message: "+e.getMessage());
 System.out.println("See documentation: https://www.alibabacloud.com/help/en/model-studio/developer-reference/error-code");
 }
 System.exit(0);
 }
}

HTTP

## curl

Request example

curl
curl -X POST https://dashscope-intl.aliyuncs.com/api/v1/apps/APP_ID/completion \\
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \\
--header 'Content-Type: application/json' \\
--data '{
 "input": {
 "prompt": "Who are you?"
 },
 "parameters": {},
 "debug": {}
}'

** Replace APP_ID with your actual application ID.

## PHP

<b>Request example**

php
\<?php


$api_key = getenv("DASHSCOPE_API_KEY");
$application_id = 'APP_ID'; // Replace with your actual application ID

$url = "https://dashscope-intl.aliyuncs.com/api/v1/apps/$application_id/completion";

// Construct request data
$data = \[
 "input" =\> \[
 'prompt' =\> 'Who are you?'
 \]
\];

// Encode data as JSON
$dataString = json_encode($data);

// Check if json_encode succeeded
if (json_last_error() !== JSON_ERROR_NONE) {
 die("JSON encoding failed with error: " . json_last_error_msg());
}

// Initialize cURL session
$ch = curl_init($url);

// Set cURL options
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $dataString);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, \[
 'Content-Type: application/json',
 'Authorization: Bearer ' . $api_key
\]);

// Execute request
$response = curl_exec($ch);

// Check if cURL execution succeeded
if ($response === false) {
 die("cURL Error: " . curl_error($ch));
}

// Get HTTP status code
$status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
// Close cURL session
curl_close($ch);
// Decode response data
$response_data = json_decode($response, true);
// Handle response
if ($status_code == 200) {
 if (isset($response_data\['output'\]\['text'\])) {
 echo "{$response_data\['output'\]\['text'\]}\\n";
 } else {
 echo "No text in response.\\n";
 }}
else {
 if (isset($response_data\['request_id'\])) {
 echo "request_id={$response_data\['request_id'\]}\\n";}
 echo "code={$status_code}\\n";
 if (isset($response_data\['message'\])) {
 echo "message={$response_data\['message'\]}\\n";}
 else {
 echo "message=Unknown error\\n";}
}
?\>

## Node.js

Install required dependencies:

sh
npm install axios

Request example

javascript
const axios = require('axios');

async function callDashScope() {
 // If you have not configured an environment variable, replace the following line with apiKey='sk-xxx' using your Model Studio API key. However, do not hard code your API key directly in the code for production environments to reduce the risk of API key leakage.
 const apiKey = process.env.DASHSCOPE_API_KEY;
 const appId = 'APP_ID';// Replace with your actual application ID

const url = \`https://dashscope-intl.aliyuncs.com/api/v1/apps/${appId}/completion\`;

const data = {
 input: {
 prompt: "Who are you?"
 },
 parameters: {},
 debug: {}
 };

try {
 const response = await axios.post(url, data, {
 headers: {
 'Authorization': \`Bearer ${apiKey}\`,
 'Content-Type': 'application/json'
 }
 });

if (response.status === 200) {
 console.log(\`${response.data.output.text}\`);
 } else {
 console.log(\`request_id=${response.headers\['request_id'\]}\`);
 console.log(\`code=${response.status}\`);
 console.log(\`message=${response.data.message}\`);
 }
 } catch (error) {
 console.error(\`Error calling DashScope: ${error.message}\`);
 if (error.response) {
 console.error(\`Response status: ${error.response.status}\`);
 console.error(\`Response data: ${JSON.stringify(error.response.data, null, 2)}\`);
 }
 }
}

callDashScope();

## C#

Request example

csharp
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;

class Program
{
 static async Task Main(string\[\] args)
 {
 //If you have not configured an environment variable, replace the following line with apiKey="sk-xxx" using your Model Studio API key. However, do not hard code your API key directly in the code for production environments to reduce the risk of API key leakage.
 string apiKey = Environment.GetEnvironmentVariable("DASHSCOPE_API_KEY") ?? throw new InvalidOperationException("DASHSCOPE_API_KEY environment variable is not set.");
 string appId = "APP_ID"; // Replace with your actual application ID

string url = $"https://dashscope-intl.aliyuncs.com/api/v1/apps/{appId}/completion";

using (HttpClient client = new HttpClient())
 {
 client.DefaultRequestHeaders.Add("Authorization", $"Bearer {apiKey}");

string jsonContent = @"{
 ""input"": {
 ""prompt"": ""Who are you?""
 },
 ""parameters"": {},
 ""debug"": {}
 }";

HttpContent content = new StringContent(jsonContent, Encoding.UTF8, "application/json");

try
 {
 HttpResponseMessage response = await client.PostAsync(url, content);

if (response.IsSuccessStatusCode)
 {
 string responseBody = await response.Content.ReadAsStringAsync();
 Console.WriteLine("Request successful:");
 Console.WriteLine(responseBody);
 }
 else
 {
 Console.WriteLine($"Request failed with status code: {response.StatusCode}");
 string responseBody = await response.Content.ReadAsStringAsync();
 Console.WriteLine(responseBody);
 }
 }
 catch (Exception ex)
 {
 Console.WriteLine($"Error calling DashScope: {ex.Message}");
 }
 }
 }
}

## Go

Request example

go
package main

import (
"bytes"
"encoding/json"
"fmt"
"io"
"net/http"
"os"
)

func main() {
// If you have not configured an environment variable, replace the following line with apiKey := "sk-xxx" using your Model Studio API key. However, do not hard code your API key directly in the code for production environments to reduce the risk of API key leakage.
apiKey := os.Getenv("DASHSCOPE_API_KEY")
appId := "APP_ID" // Replace with your actual application ID

if apiKey == "" {
 fmt.Println("Make sure DASHSCOPE_API_KEY is set.")
 return
}

url := fmt.Sprintf("https://dashscope-intl.aliyuncs.com/api/v1/apps/%s/completion", appId)

// Create request body
requestBody := map\[string\]interface{}{
 "input": map\[string\]string{
 "prompt": "Who are you?",
 },
 "parameters": map\[string\]interface{}{},
 "debug": map\[string\]interface{}{},
}

jsonData, err := json.Marshal(requestBody)
if err != nil {
 fmt.Printf("Failed to marshal JSON: %v\\n", err)
 return
}

// Create HTTP POST request
req, err := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
if err != nil {
 fmt.Printf("Failed to create request: %v\\n", err)
 return
}

// Set request headers
req.Header.Set("Authorization", "Bearer "+apiKey)
req.Header.Set("Content-Type", "application/json")

// Send request
client := \&http.Client{}
resp, err := client.Do(req)
if err != nil {
 fmt.Printf("Failed to send request: %v\\n", err)
 return
}
defer resp.Body.Close()

// Read response
body, err := io.ReadAll(resp.Body)
if err != nil {
 fmt.Printf("Failed to read response: %v\\n", err)
 return
}

// Handle response
if resp.StatusCode == http.StatusOK {
 fmt.Println("Request successful:")
 fmt.Println(string(body))
} else {
 fmt.Printf("Request failed with status code: %d\\n", resp.StatusCode)
 fmt.Println(string(body))
}
}

Multi-turn conversation

Enable multi-turn conversations using session_id or messages.

Python

Request example

python
import os
from http import HTTPStatus
from dashscope import Application
import dashscope
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'

def call_with_session():
 response = Application.call(
 # If you have not configured an environment variable, replace the following line with api_key="sk-xxx" using your Model Studio API key. However, do not hard code your API key directly in the code for production environments to reduce the risk of API key leakage.
 api_key=os.getenv("DASHSCOPE_API_KEY"),
 app_id='APP_ID', # Replace with your actual application ID
 prompt='Who are you?')

if response.status_code != HTTPStatus.OK:
 print(f'request_id={response.request_id}')
 print(f'code={response.status_code}')
 print(f'message={response.message}')
 print(f'See documentation: https://www.alibabacloud.com/help/en/model-studio/developer-reference/error-code')
 return response

responseNext = Application.call(
 # If you have not configured an environment variable, replace the following line with api_key="sk-xxx" using your Model Studio API key. However, do not hard code your API key directly in the code for production environments to reduce the risk of API key leakage.
 api_key=os.getenv("DASHSCOPE_API_KEY"),
 app_id='APP_ID', # Replace with your actual application ID
 prompt='What skills do you have?',
 session_id=response.output.session_id) # session_id from the previous response

if responseNext.status_code != HTTPStatus.OK:
 print(f'request_id={responseNext.request_id}')
 print(f'code={responseNext.status_code}')
 print(f'message={responseNext.message}')
 print(f'See documentation: https://www.alibabacloud.com/help/en/model-studio/developer-reference/error-code')
 else:
 print('%s\\n session_id=%s\\n' % (responseNext.output.text, responseNext.output.session_id))
 # print('%s\\n' % (response.usage))

if __name__ == '__main__':
 call_with_session()

Java

Request example

java
import com.alibaba.dashscope.app.*;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.InputRequiredException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import java.util.Arrays;
import java.util.List;
import com.alibaba.dashscope.utils.Constants;
public class Main {
 static {
 Constants.baseHttpApiUrl="https://dashscope-intl.aliyuncs.com/api/v1";
 }
 public static void callWithSession()
 throws ApiException, NoApiKeyException, InputRequiredException {
 ApplicationParam param = ApplicationParam.builder()
 // If you have not configured an environment variable, replace the following line with .apiKey("sk-xxx") using your Model Studio API key. However, do not hard code your API key directly in the code for production environments to reduce the risk of API key leakage.
 .apiKey(System.getenv("DASHSCOPE_API_KEY"))
 // Replace with your actual application ID
 .appId("APP_ID")
 .prompt("Who are you?")
 .build();

Application application = new Application();
 ApplicationResult result = application.call(param);

param.setSessionId(result.getOutput().getSessionId());
 param.setPrompt("What skills do you have?");
 result = application.call(param);

System.out.printf("%s\\n session_id: %s\\n",
 result.getOutput().getText(), result.getOutput().getSessionId());
 }

public static void main(String\[\] args) {
 try {
 callWithSession();
 } catch (ApiException \| NoApiKeyException \| InputRequiredException e) {
 System.out.printf("Exception: %s", e.getMessage());
 System.out.println("See documentation: https://www.alibabacloud.com/help/en/model-studio/developer-reference/error-code");
 }
 System.exit(0);
 }
}

HTTP

## curl

Request example (previous round of conversation)

curl
curl -X POST https://dashscope-intl.aliyuncs.com/api/v1/apps/APP_ID/completion \\
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \\
--header 'Content-Type: application/json' \\
--data '{
 "input": {
 "prompt": "Who are you?"
 },
 "parameters": {},
 "debug": {}
}'

Request example (next turn)

curl
curl -X POST https://dashscope-intl.aliyuncs.com/api/v1/apps/APP_ID/completion \\
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \\
--header 'Content-Type: application/json' \\
--data '{
 "input": {
 "prompt": "What skills do you have?",
 "session_id":"4f8ef7233dc641aba496cb201fa59f8c"
 },
 "parameters": {},
 "debug": {}
}'

## PHP

Request example (previous round of conversation)

php
\<?php
# If you have not configured an environment variable, replace the following line with $api_key="sk-xxx" using your Model Studio API key. However, do not hard code your API key directly in the code for production environments to reduce the risk of API key leakage.
$api_key = getenv("DASHSCOPE_API_KEY");
$application_id = 'APP_ID'; // Replace with your actual application ID

$url = "https://dashscope-intl.aliyuncs.com/api/v1/apps/$application_id/completion";

// Construct request data
$data = \[
 "input" =\> \[
 'prompt' =\> 'Who are you?'
 \]
\];

// Encode data as JSON
$dataString = json_encode($data);

// Check if json_encode succeeded
if (json_last_error() !== JSON_ERROR_NONE) {
 die("JSON encoding failed with error: " . json_last_error_msg());
}

// Initialize cURL session
$ch = curl_init($url);

// Set cURL options
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $dataString);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, \[
 'Content-Type: application/json',
 'Authorization: Bearer ' . $api_key
\]);

// Execute request
$response = curl_exec($ch);

// Check if cURL execution succeeded
if ($response === false) {
 die("cURL Error: " . curl_error($ch));
}

// Get HTTP status code
$status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
// Close cURL session
curl_close($ch);
// Decode response data
$response_data = json_decode($response, true);
// Handle response
if ($status_code == 200) {
 if (isset($response_data\['output'\]\['text'\])) {
 echo "{$response_data\['output'\]\['text'\]}\\n";
 } else {
 echo "No text in response.\\n";
 };
 if (isset($response_data\['output'\]\['session_id'\])) {
 echo "session_id={$response_data\['output'\]\['session_id'\]}\\n";
 }
}else {
 if (isset($response_data\['request_id'\])) {
 echo "request_id={$response_data\['request_id'\]}\\n";}
 echo "code={$status_code}\\n";
 if (isset($response_data\['message'\])) {
 echo "message={$response_data\['message'\]}\\n";}
 else {
 echo "message=Unknown error\\n";}
}
?\>

Request example (next turn)

php
\<?php
# If you have not configured an environment variable, replace the following line with $api_key="sk-xxx" using your Model Studio API key. However, do not hard code your API key directly in the code for production environments to reduce the risk of API key leakage.
$api_key = getenv("DASHSCOPE_API_KEY");
$application_id = 'APP_ID'; // Replace with your actual application ID

$url = "https://dashscope-intl.aliyuncs.com/api/v1/apps/$application_id/completion";

// Construct request data
$data = \[
 "input" =\> \[
 'prompt' =\> 'What skills do you have?',
 // Replace with the actual session_id returned from the previous conversation
 'session_id' =\> '2e658bcb514f4d30ab7500b4766a8d43'
 \]
\];

// Encode data as JSON
$dataString = json_encode($data);

// Check if json_encode succeeded
if (json_last_error() !== JSON_ERROR_NONE) {
 die("JSON encoding failed with error: " . json_last_error_msg());
}

// Initialize cURL session
$ch = curl_init($url);

// Set cURL options
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $dataString);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, \[
 'Content-Type: application/json',
 'Authorization: Bearer ' . $api_key
\]);

// Execute request
$response = curl_exec($ch);

// Check if cURL execution succeeded
if ($response === false) {
 die("cURL Error: " . curl_error($ch));
}

// Get HTTP status code
$status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
// Close cURL session
curl_close($ch);
// Decode response data
$response_data = json_decode($response, true);
// Handle response
if ($status_code == 200) {
 if (isset($response_data\['output'\]\['text'\])) {
 echo "{$response_data\['output'\]\['text'\]}\\n";
 } else {
 echo "No text in response.\\n";
 };
 if (isset($response_data\['output'\]\['session_id'\])) {
 echo "session_id={$response_data\['output'\]\['session_id'\]}\\n";
 }
}else {
 if (isset($response_data\['request_id'\])) {
 echo "request_id={$response_data\['request_id'\]}\\n";}
 echo "code={$status_code}\\n";
 if (isset($response_data\['message'\])) {
 echo "message={$response_data\['message'\]}\\n";}
 else {
 echo "message=Unknown error\\n";}
}
?\>

## Node.js

Install required dependencies:

sh
npm install axios

Sample request (previous conversation)

javascript
const axios = require('axios');

async function callDashScope() {
 // If you have not configured an environment variable, replace the following line with apiKey='sk-xxx' using your Model Studio API key. However, do not hard code your API key directly in the code for production environments to reduce the risk of API key leakage.
 const apiKey = process.env.DASHSCOPE_API_KEY;
 const appId = 'APP_ID';// Replace with your actual application ID

const url = \`https://dashscope-intl.aliyuncs.com/api/v1/apps/${appId}/completion\`;

const data = {
 input: {
 prompt: "Who are you?"
 },
 parameters: {},
 debug: {}
 };

try {
 const response = await axios.post(url, data, {
 headers: {
 'Authorization': \`Bearer ${apiKey}\`,
 'Content-Type': 'application/json'
 }
 });

if (response.status === 200) {
 console.log(\`${response.data.output.text}\`);
 console.log(\`session_id=${response.data.output.session_id}\`);
 } else {
 console.log(\`request_id=${response.headers\['request_id'\]}\`);
 console.log(\`code=${response.status}\`);
 console.log(\`message=${response.data.message}\`);
 }
 } catch (error) {
 console.error(\`Error calling DashScope: ${error.message}\`);
 if (error.response) {
 console.error(\`Response status: ${error.response.status}\`);
 console.error(\`Response data: ${JSON.stringify(error.response.data, null, 2)}\`);
 }
 }
}
callDashScope();

Request example (next turn)

javascript
const axios = require('axios');

async function callDashScope() {
 // If you have not configured an environment variable, replace the following line with apiKey='sk-xxx' using your Model Studio API key. However, do not hard code your API key directly in the code for production environments to reduce the risk of API key leakage.
 const apiKey = process.env.DASHSCOPE_API_KEY;
 const appId = 'APP_ID';// Replace with your actual application ID

const url = \`https://dashscope-intl.aliyuncs.com/api/v1/apps/${appId}/completion\`;
 // Replace session_id with the actual session_id from the previous conversation
 const data = {
 input: {
 prompt: "What skills do you have?",
 session_id: 'fe4ce8b093bf46159ea9927a7b22f0d3',
 },
 parameters: {},
 debug: {}
 };

try {
 const response = await axios.post(url, data, {
 headers: {
 'Authorization': \`Bearer ${apiKey}\`,
 'Content-Type': 'application/json'
 }
 });

if (response.status === 200) {
 console.log(\`${response.data.output.text}\`);
 console.log(\`session_id=${response.data.output.session_id}\`);
 } else {
 console.log(\`request_id=${response.headers\['request_id'\]}\`);
 console.log(\`code=${response.status}\`);
 console.log(\`message=${response.data.message}\`);
 }
 } catch (error) {
 console.error(\`Error calling DashScope: ${error.message}\`);
 if (error.response) {
 console.error(\`Response status: ${error.response.status}\`);
 console.error(\`Response data: ${JSON.stringify(error.response.data, null, 2)}\`);
 }
 }
}
callDashScope();

## C#

Request example (first turn)

csharp
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;

class Program
{
 static async Task Main(string\[\] args)
 {
 //If you have not configured an environment variable, replace the following line with apiKey="sk-xxx" using your Model Studio API key. However, do not hard code your API key directly in the code for production environments to reduce the risk of API key leakage.
 string apiKey = Environment.GetEnvironmentVariable("DASHSCOPE_API_KEY") ?? throw new InvalidOperationException("DASHSCOPE_API_KEY environment variable is not set.");
 string appId = "APP_ID"; // Replace with your actual application ID

string url = $"https://dashscope-intl.aliyuncs.com/api/v1/apps/{appId}/completion";

using (HttpClient client = new HttpClient())
 {
 client.DefaultRequestHeaders.Add("Authorization", $"Bearer {apiKey}");

string jsonContent = @"{
 ""input"": {
 ""prompt"": ""Who are you?""
 },
 ""parameters"": {},
 ""debug"": {}
 }";

HttpContent content = new StringContent(jsonContent, Encoding.UTF8, "application/json");

try
 {
 HttpResponseMessage response = await client.PostAsync(url, content);

if (response.IsSuccessStatusCode)
 {
 string responseBody = await response.Content.ReadAsStringAsync();
 Console.WriteLine("Request successful:");
 Console.WriteLine(responseBody);
 }
 else
 {
 Console.WriteLine($"Request failed with status code: {response.StatusCode}");
 string responseBody = await response.Content.ReadAsStringAsync();
 Console.WriteLine(responseBody);
 }
 }
 catch (Exception ex)
 {
 Console.WriteLine($"Error calling DashScope: {ex.Message}");
 }
 }
 }
}

Request example (next turn)

csharp
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;

class Program
{
 static async Task Main(string\[\] args)
 {
 //If you have not configured an environment variable, replace the following line with apiKey="sk-xxx" using your Model Studio API key. However, do not hard code your API key directly in the code for production environments to reduce the risk of API key leakage.
 string apiKey = Environment.GetEnvironmentVariable("DASHSCOPE_API_KEY") ?? throw new InvalidOperationException("DASHSCOPE_API_KEY environment variable is not set.");
 string appId = "APP_ID"; // Replace with your actual application ID

string url = $"https://dashscope-intl.aliyuncs.com/api/v1/apps/{appId}/completion";

using (HttpClient client = new HttpClient())
 {
 client.DefaultRequestHeaders.Add("Authorization", $"Bearer {apiKey}");

string jsonContent = @"{
 ""input"": {
 ""prompt"": ""What skills do you have?"",
 ""session_id"": ""7b830e4cc8fe44faad0e648f9b71435f""
 },
 ""parameters"": {},
 ""debug"": {}
 }";

HttpContent content = new StringContent(jsonContent, Encoding.UTF8, "application/json");

try
 {
 HttpResponseMessage response = await client.PostAsync(url, content);

if (response.IsSuccessStatusCode)
 {
 string responseBody = await response.Content.ReadAsStringAsync();
 Console.WriteLine("Request successful:");
 Console.WriteLine(responseBody);
 }
 else
 {
 Console.WriteLine($"Request failed with status code: {response.StatusCode}");
 string responseBody = await response.Content.ReadAsStringAsync();
 Console.WriteLine(responseBody);
 }
 }
 catch (Exception ex)
 {
 Console.WriteLine($"Error calling DashScope: {ex.Message}");
 }
 }
 }
}

## Go

Request example (previous round of conversation)

go
package main

import (
"bytes"
"encoding/json"
"fmt"
"io"
"net/http"
"os"
)

func main() {
// If you have not configured an environment variable, replace the following line with apiKey := "sk-xxx" using your Model Studio API key. However, do not hard code your API key directly in the code for production environments to reduce the risk of API key leakage.
apiKey := os.Getenv("DASHSCOPE_API_KEY")
appId := "APP_ID" // Replace with your actual application ID

if apiKey == "" {
 fmt.Println("Make sure DASHSCOPE_API_KEY is set.")
 return
}

url := fmt.Sprintf("https://dashscope-intl.aliyuncs.com/api/v1/apps/%s/completion", appId)

// Create request body
requestBody := map\[string\]interface{}{
 "input": map\[string\]string{
 "prompt": "Who are you?",
 },
 "parameters": map\[string\]interface{}{},
 "debug": map\[string\]interface{}{},
}

jsonData, err := json.Marshal(requestBody)
if err != nil {
 fmt.Printf("Failed to marshal JSON: %v\\n", err)
 return
}

// Create HTTP POST request
req, err := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
if err != nil {
 fmt.Printf("Failed to create request: %v\\n", err)
 return
}

// Set request headers
req.Header.Set("Authorization", "Bearer "+apiKey)
req.Header.Set("Content-Type", "application/json")

// Send request
client := \&http.Client{}
resp, err := client.Do(req)
if err != nil {
 fmt.Printf("Failed to send request: %v\\n", err)
 return
}
defer resp.Body.Close()

// Read response
body, err := io.ReadAll(resp.Body)
if err != nil {
 fmt.Printf("Failed to read response: %v\\n", err)
 return
}

// Handle response
if resp.StatusCode == http.StatusOK {
 fmt.Println("Request successful:")
 fmt.Println(string(body))
} else {
 fmt.Printf("Request failed with status code: %d\\n", resp.StatusCode)
 fmt.Println(string(body))
}
}

Request example (next turn)

go
package main

import (
"bytes"
"encoding/json"
"fmt"
"io"
"net/http"
"os"
)

func main() {
// If you have not configured an environment variable, replace the following line with apiKey := "sk-xxx" using your Model Studio API key. However, do not hard code your API key directly in the code for production environments to reduce the risk of API key leakage.
apiKey := os.Getenv("DASHSCOPE_API_KEY")
appId := "APP_ID" // Replace with your actual application ID

if apiKey == "" {
 fmt.Println("Make sure DASHSCOPE_API_KEY is set.")
 return
}

url := fmt.Sprintf("https://dashscope-intl.aliyuncs.com/api/v1/apps/%s/completion", appId)

// Create request body
requestBody := map\[string\]interface{}{
 "input": map\[string\]string{
 "prompt": "What skills do you have?",
 "session_id": "f7eea37f0c734c20998a021b688d6de2", // Replace with the actual session_id from the previous conversation
 },
 "parameters": map\[string\]interface{}{},
 "debug": map\[string\]interface{}{},
}

jsonData, err := json.Marshal(requestBody)
if err != nil {
 fmt.Printf("Failed to marshal JSON: %v\\n", err)
 return
}

// Create HTTP POST request
req, err := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
if err != nil {
 fmt.Printf("Failed to create request: %v\\n", err)
 return
}

// Set request headers
req.Header.Set("Authorization", "Bearer "+apiKey)
req.Header.Set("Content-Type", "application/json")

// Send request
client := \&http.Client{}
resp, err := client.Do(req)
if err != nil {
 fmt.Printf("Failed to send request: %v\\n", err)
 return
}
defer resp.Body.Close()

// Read response
body, err := io.ReadAll(resp.Body)
if err != nil {
 fmt.Printf("Failed to read response: %v\\n", err)
 return
}

// Handle response
if resp.StatusCode == http.StatusOK {
 fmt.Println("Request successful:")
 fmt.Println(string(body))
} else {
 fmt.Printf("Request failed with status code: %d\\n", resp.StatusCode)
 fmt.Println(string(body))
}
}

** Replace APP_ID with your actual application ID. Replace the session_id value in the next turn's input parameters with the actual session_id value returned from the previous conversation.

Pass parameters

Pass custom parameters using biz_params.

## Python

<b>Request example**

python
import os
from http import HTTPStatus
# We recommend dashscope SDK version \>= 1.14.0
from dashscope import Application
import dashscope
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
biz_params = {
 # Pass custom plug-in input parameters for agent applications. Replace <TOOL_ID> with your custom plug-in ID.
 "user_defined_params": {
 "<TOOL_ID>": {
 "article_index": 2}​}}
response = Application.call(
 # If you have not configured an environment variable, replace the following line with api_key="sk-xxx" using your Model Studio API key. However, do not hard code your API key directly in the code for production environments to reduce the risk of API key leakage.
 api_key=os.getenv("DASHSCOPE_API_KEY"),
 app_id='APP_ID',
 prompt='Dormitory rules content',
 biz_params=biz_params)

if response.status_code != HTTPStatus.OK:
 print(f'request_id={response.request_id}')
 print(f'code={response.status_code}')
 print(f'message={response.message}')
 print(f'See documentation: https://www.alibabacloud.com/help/en/model-studio/developer-reference/error-code')
else:
 print('%s\\n' % (response.output.text)) # Process to output only text
 # print('%s\\n' % (response.usage))

## Java

Request example

java
import com.alibaba.dashscope.app.*;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.InputRequiredException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.utils.JsonUtils;

import com.alibaba.dashscope.utils.Constants;

public class Main {
 static {
 Constants.baseHttpApiUrl="https://dashscope-intl.aliyuncs.com/api/v1";
 }
 public static void appCall() throws NoApiKeyException, InputRequiredException {
 String bizParams =
 // Pass custom plug-in input parameters for agent applications. Replace <TOOL_ID> with your custom plug-in ID.
 "{\\"user_defined_params\\":{\\"<TOOL_ID>\\":{\\"article_index\\":2}​}}";
 ApplicationParam param = ApplicationParam.builder()
 // If you have not configured an environment variable, replace the following line with .apiKey("sk-xxx") using your Model Studio API key. However, do not hard code your API key directly in the code for production environments to reduce the risk of API key leakage.
 .apiKey(System.getenv("DASHSCOPE_API_KEY"))
 .appId("APP_ID")
 .prompt("Dormitory rules content")
 .bizParams(JsonUtils.parse(bizParams))
 .build();

Application application = new Application();
 ApplicationResult result = application.call(param);
 System.out.printf("%s\\n",
 result.getOutput().getText());
 }

public static void main(String\[\] args) {
 try {
 appCall();
 } catch (ApiException \| NoApiKeyException \| InputRequiredException e) {
 System.out.printf("Exception: %s", e.getMessage());
 System.out.println("See documentation: https://www.alibabacloud.com/help/en/model-studio/developer-reference/error-code");
 }
 System.exit(0);
 }
}

## HTTP

## curl

Request example

curl
curl -X POST https://dashscope-intl.aliyuncs.com/api/v1/apps/APP_ID/completion \\
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \\
--header 'Content-Type: application/json' \\
--data '{
 "input": {
 "prompt": "Dormitory rules content",
 "biz_params":
 {
 "user_defined_params":
 {
 "<TOOL_ID>":
 {
 "article_index": 2
 }
 }
 }
 },
 "parameters": {},
 "debug":{}
}'

** Replace APP_ID with your actual application ID. Replace with your plugin ID.

## PHP

<b>Request example**

php
\<?php

# If you have not configured an environment variable, replace the following line with $api_key="sk-xxx" using your Model Studio API key. However, do not hard code your API key directly in the code for production environments to reduce the risk of API key leakage.
$api_key = getenv("DASHSCOPE_API_KEY");
$application_id = 'APP_ID'; // Replace with your actual application ID
$url = "https://dashscope-intl.aliyuncs.com/api/v1/apps/$application_id/completion";
//Replace <TOOL_ID> with your actual plug-in ID
// Construct request data
$data = \[
 "input" =\> \[
 'prompt' =\> 'Dormitory rules content',
 'biz_params' =\> \[
 'user_defined_params' =\> \[
 '<TOOL_ID>' =\> \[
 'article_index' =\> 2
 \]
 \]
 \]
 \],
\];
// Encode data as JSON
$dataString = json_encode($data);

// Check if json_encode succeeded
if (json_last_error() !== JSON_ERROR_NONE) {
 die("JSON encoding failed with error: " . json_last_error_msg());
}

// Initialize cURL session
$ch = curl_init($url);

// Set cURL options
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $dataString);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, \[
 'Content-Type: application/json',
 'Authorization: Bearer ' . $api_key
\]);

// Execute request
$response = curl_exec($ch);

// Check if cURL execution succeeded
if ($response === false) {
 die("cURL Error: " . curl_error($ch));
}

// Get HTTP status code
$status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
// Close cURL session
curl_close($ch);
// Decode response data
$response_data = json_decode($response, true);
// Handle response
if ($status_code == 200) {
 if (isset($response_data\['output'\]\['text'\])) {
 echo "{$response_data\['output'\]\['text'\]}\\n";
 } else {
 echo "No text in response.\\n";
 }
}else {
 if (isset($response_data\['request_id'\])) {
 echo "request_id={$response_data\['request_id'\]}\\n";}
 echo "code={$status_code}\\n";
 if (isset($response_data\['message'\])) {
 echo "message={$response_data\['message'\]}\\n";}
 else {
 echo "message=Unknown error\\n";}
}
?\>

## Node.js

Install required dependencies:

sh
npm install axios

Request example

javascript
const axios = require('axios');

async function callDashScope() {
 // If you have not configured an environment variable, replace the following line with apiKey='sk-xxx' using your Model Studio API key. However, do not hard code your API key directly in the code for production environments to reduce the risk of API key leakage.
 const apiKey = process.env.DASHSCOPE_API_KEY;
 const appId = 'APP_ID';// Replace with your actual application ID
 const pluginCode = 'TOOL_ID';// Replace with your actual plug-in ID
 const url = \`https://dashscope-intl.aliyuncs.com/api/v1/apps/${appId}/completion\`;

const data = {
 input: {
 prompt: "Dormitory rules content",
 biz_params: {
 user_defined_params: {
 \[pluginCode\]: {
 // article_index is a variable for the custom plug-in. Replace it with your actual plug-in variable.
 'article_index': 3
 }
 }
 }
 },
 parameters: {},
 debug: {}
 };

try {
 console.log("Sending request to DashScope API...");

const response = await axios.post(url, data, {
 headers: {
 'Authorization': \`Bearer ${apiKey}\`,
 'Content-Type': 'application/json'
 }
 });

if (response.status === 200) {
 if (response.data.output \&\& response.data.output.text) {
 console.log(\`${response.data.output.text}\`);
 }
 } else {
 console.log("Request failed:");
 if (response.data.request_id) {
 console.log(\`request_id=${response.data.request_id}\`);
 }
 console.log(\`code=${response.status}\`);
 if (response.data.message) {
 console.log(\`message=${response.data.message}\`);
 } else {
 console.log('message=Unknown error');
 }
 }
 } catch (error) {
 console.error(\`Error calling DashScope: ${error.message}\`);
 if (error.response) {
 console.error(\`Response status: ${error.response.status}\`);
 console.error(\`Response data: ${JSON.stringify(error.response.data, null, 2)}\`);
 }
 }
}
callDashScope();

## C#

Request example

csharp
using System.Text;

class Program
{
 static async Task Main(string\[\] args)
 {
 // If you have not configured an environment variable, replace the following line with apiKey="sk-xxx" using your Model Studio API key. However, do not hard code your API key directly in the code for production environments to reduce the risk of API key leakage.
 string apiKey = Environment.GetEnvironmentVariable("DASHSCOPE_API_KEY")?? throw new InvalidOperationException("DASHSCOPE_API_KEY environment variable is not set.");;
 string appId = "APP_ID";// Replace with your actual application ID

if (string.IsNullOrEmpty(apiKey))
 {
 Console.WriteLine("Make sure DASHSCOPE_API_KEY is set.");
 return;
 }

string url = $"https://dashscope-intl.aliyuncs.com/api/v1/apps/{appId}/completion";

using (HttpClient client = new HttpClient())
 {
 client.DefaultRequestHeaders.Add("Authorization", $"Bearer {apiKey}");
 string pluginCode = "TOOL_ID"; // Replace TOOL_ID with your actual plug-in ID
 string jsonContent = $@"{​{
 ""input"": {​{
 ""prompt"": ""Dormitory rules content"",
 ""biz_params"": {​{
 ""user_defined_params"": {​{
 ""{pluginCode}"": {​{
 ""article_index"": 2
 }​}
 }​}
 }​}
 }​},
 ""parameters"": {​{}​},
 ""debug"": {​{}​}
 }​}";

HttpContent content = new StringContent(jsonContent, Encoding.UTF8, "application/json");

try
 {
 HttpResponseMessage response = await client.PostAsync(url, content);

if (response.IsSuccessStatusCode)
 {
 string responseBody = await response.Content.ReadAsStringAsync();
 Console.WriteLine("Request successful:");
 Console.WriteLine(responseBody);
 }
 else
 {
 Console.WriteLine($"Request failed with status code: {response.StatusCode}");
 string responseBody = await response.Content.ReadAsStringAsync();
 Console.WriteLine(responseBody);
 }
 }
 catch (Exception ex)
 {
 Console.WriteLine($"Error calling DashScope: {ex.Message}");
 }
 }
 }
}

## Go

Request example

go
package main

import (
"bytes"
"encoding/json"
"fmt"
"io"
"net/http"
"os"
)

func main() {
// If you have not configured an environment variable, replace the following line with apiKey := "sk-xxx" using your Model Studio API key. However, do not hard code your API key directly in the code for production environments to reduce the risk of API key leakage.
apiKey := os.Getenv("DASHSCOPE_API_KEY")
appId := "APP_ID" // Replace with your actual application ID
pluginCode := "TOOL_ID" // Replace with your actual plug-in ID

if apiKey == "" {
 fmt.Println("Make sure DASHSCOPE_API_KEY is set.")
 return
}

url := fmt.Sprintf("https://dashscope-intl.aliyuncs.com/api/v1/apps/%s/completion", appId)

// Create request body
requestBody := map\[string\]interface{}{
 "input": map\[string\]interface{}{
 "prompt": "Dormitory rules content",
 "biz_params": map\[string\]interface{}{
 "user_defined_params": map\[string\]interface{}{
 pluginCode: map\[string\]interface{}{
 "article_index": 2,
 },
 },
 },
 },
 "parameters": map\[string\]interface{}{},
 "debug": map\[string\]interface{}{},
}

jsonData, err := json.Marshal(requestBody)
if err != nil {
 fmt.Printf("Failed to marshal JSON: %v\\n", err)
 return
}

// Create HTTP POST request
req, err := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
if err != nil {
 fmt.Printf("Failed to create request: %v\\n", err)
 return
}

// Set request headers
req.Header.Set("Authorization", "Bearer "+apiKey)
req.Header.Set("Content-Type", "application/json")

// Send request
client := \&http.Client{}
resp, err := client.Do(req)
if err != nil {
 fmt.Printf("Failed to send request: %v\\n", err)
 return
}
defer resp.Body.Close()

// Read response
body, err := io.ReadAll(resp.Body)
if err != nil {
 fmt.Printf("Failed to read response: %v\\n", err)
 return
}

// Handle response
if resp.StatusCode == http.StatusOK {
 fmt.Println("Request successful:")
 fmt.Println(string(body))
} else {
 fmt.Printf("Request failed with status code: %d\\n", resp.StatusCode)
 fmt.Println(string(body))
}
}

Streaming output

Enable streaming output using stream.

## Python

Request example

python
import os
from http import HTTPStatus
from dashscope import Application
import dashscope
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
responses = Application.call(
 # If you have not configured an environment variable, replace the following line with api_key="sk-xxx" using your Model Studio API key. However, do not hard code your API key directly in the code for production environments to reduce the risk of API key leakage.
 api_key=os.getenv("DASHSCOPE_API_KEY"),
 app_id='APP_ID',
 prompt='Who are you?',
 stream=True, # Streaming output
 incremental_output=True) # Incremental output

for response in responses:
 if response.status_code != HTTPStatus.OK:
 print(f'request_id={response.request_id}')
 print(f'code={response.status_code}')
 print(f'message={response.message}')
 print(f'See documentation: https://www.alibabacloud.com/help/en/model-studio/developer-reference/error-code')
 else:
 print(f'{response.output.text}\\n') # Process to output only text

## Java

Request example

java
// We recommend dashscope SDK version \>= 2.15.0
import com.alibaba.dashscope.app.*;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.InputRequiredException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import io.reactivex.Flowable;// Streaming output
// Implement streaming output for agent application calls

import com.alibaba.dashscope.utils.Constants;

public class Main {
 static {
 Constants.baseHttpApiUrl="https://dashscope-intl.aliyuncs.com/api/v1";
 }
 public static void streamCall() throws NoApiKeyException, InputRequiredException {
 ApplicationParam param = ApplicationParam.builder()
 // If you have not configured an environment variable, replace the following line with .apiKey("sk-xxx") using your Model Studio API key. However, do not hard code your API key directly in the code for production environments to reduce the risk of API key leakage.
 .apiKey(System.getenv("DASHSCOPE_API_KEY"))
 // Replace with your actual application ID
 .appId("APP_ID")
 .prompt("Who are you?")
 // Incremental output
 .incrementalOutput(true)
 .build();
 Application application = new Application();
 // .streamCall(): streaming output content
 Flowable result = application.streamCall(param);
 result.blockingForEach(data -\> {
 System.out.printf("%s\\n",
 data.getOutput().getText());
 });
 }
 public static void main(String\[\] args) {
 try {
 streamCall();
 } catch (ApiException \| NoApiKeyException \| InputRequiredException e) {
 System.out.printf("Exception: %s", e.getMessage());
 System.out.println("See documentation: https://www.alibabacloud.com/help/en/model-studio/developer-reference/error-code");
 }
 System.exit(0);
 }
}

## HTTP

## curl

Request example

curl
curl -X POST https://dashscope-intl.aliyuncs.com/api/v1/apps/APP_ID/completion \\
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \\
--header 'Content-Type: application/json' \\
--header 'X-DashScope-SSE: enable' \\
--data '{
 "input": {
 "prompt": "Who are you?"

},
 "parameters": {
 "incremental_output":true
 },
 "debug": {}
}'

** Replace APP_ID with your actual application ID.

## PHP

<b>Request example**

php
\<?php

// If you have not configured an environment variable, replace the following line with $api_key="sk-xxx" using your Model Studio API key. However, do not hard code your API key directly in the code for production environments to reduce the risk of API key leakage.
$api_key = getenv("DASHSCOPE_API_KEY");
$application_id = 'APP_ID'; // Replace with your actual application ID

$url = "https://dashscope-intl.aliyuncs.com/api/v1/apps/$application_id/completion";

// Construct request data
$data = \[
 "input" =\> \[
 'prompt' =\> 'Who are you?'\],
 "parameters" =\> \[
 'incremental_output' =\> true\]\];// Incremental output
// Encode data as JSON
$dataString = json_encode($data);

// Check if json_encode succeeded
if (json_last_error() !== JSON_ERROR_NONE) {
 die("JSON encoding failed with error: " . json_last_error_msg());
}

// Initialize cURL session
$ch = curl_init($url);

// Set cURL options
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $dataString);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, false); // Do not return transfer data
curl_setopt($ch, CURLOPT_WRITEFUNCTION, function ($ch, $string) {
 echo $string; // Handle streaming data
 return strlen($string);
});
curl_setopt($ch, CURLOPT_HTTPHEADER, \[
 'Content-Type: application/json',
 'Authorization: Bearer ' . $api_key,
 'X-DashScope-SSE: enable' // Streaming output
\]);

// Execute request
$response = curl_exec($ch);

// Check if cURL execution succeeded
if ($response === false) {
 die("cURL Error: " . curl_error($ch));
}

// Get HTTP status code
$status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
// Close cURL session
curl_close($ch);

if ($status_code != 200) {
 echo "HTTP Status Code: $status_code\\n";
 echo "Request Failed.\\n";
}
?\>

## Node.js

Install required dependencies:

sh
npm install axios

Request example1. Output full response

javascript
const axios = require('axios');

async function callDashScope() {
 //If you have not configured an environment variable, replace the following line with apiKey='sk-xxx' using your Model Studio API key. However, do not hard code your API key directly in the code for production environments to reduce the risk of API key leakage.
 const apiKey = process.env.DASHSCOPE_API_KEY;
 const appId = 'APP_ID';// Replace with your actual application ID

const url = \`https://dashscope-intl.aliyuncs.com/api/v1/apps/${appId}/completion\`;

const data = {
 input: {
 prompt: "Who are you?"
 },
 parameters: {
 'incremental_output' : 'true' // Incremental output
 },
 debug: {}
 };

try {
 console.log("Sending request to DashScope API...");

const response = await axios.post(url, data, {
 headers: {
 'Authorization': \`Bearer ${apiKey}\`,
 'Content-Type': 'application/json',
 'X-DashScope-SSE': 'enable' // Streaming output
 },
 responseType: 'stream' // For handling streaming responses
 });

if (response.status === 200) {
 // Handle streaming response
 response.data.on('data', (chunk) =\> {
 console.log(\`Received chunk: ${chunk.toString()}\`);
 });
 } else {
 console.log("Request failed:");
 if (response.data.request_id) {
 console.log(\`request_id=${response.data.request_id}\`);
 }
 console.log(\`code=${response.status}\`);
 if (response.data.message) {
 console.log(\`message=${response.data.message}\`);
 } else {
 console.log('message=Unknown error');
 }
 }
 } catch (error) {
 console.error(\`Error calling DashScope: ${error.message}\`);
 if (error.response) {
 console.error(\`Response status: ${error.response.status}\`);
 console.error(\`Response data: ${JSON.stringify(error.response.data, null, 2)}\`);
 }
 }
}

callDashScope();

Expand the collapsible panel to view specific content: 2. Output only text field content

javascript
const axios = require('axios');
const { Transform } = require('stream');

async function callDashScope() {
 //If you have not configured an environment variable, replace the following line with apiKey='sk-xxx' using your Model Studio API key. However, do not hard code your API key directly in the code for production environments to reduce the risk of API key leakage.
 const apiKey = process.env.DASHSCOPE_API_KEY;
 const appId = 'APP_ID'; // Replace with your actual application ID

const url = \`https://dashscope.aliyuncs.com/api/v1/apps/${appId}/completion\`;

const data = {
 input: { prompt: "Who are you?" },
 parameters: { incremental_output: true }, // Incremental output
 debug: {}
 };

try {
 console.log("Sending request to DashScope API...");

const response = await axios.post(url, data, {
 headers: {
 'Authorization': \`Bearer ${apiKey}\`,
 'Content-Type': 'application/json',
 'X-DashScope-SSE': 'enable' // Streaming output
 },
 responseType: 'stream' // For handling streaming responses
 });

if (response.status === 200) {
 // // Handle streaming response SSE protocol parsing transform stream
 const sseTransformer = new Transform({
 transform(chunk, encoding, callback) {
 this.buffer += chunk.toString();

// Split by SSE events (two newlines)
 const events = this.buffer.split(/\\n\\n/);
 this.buffer = events.pop() \|\| ''; // Keep incomplete part

events.forEach(eventData =\> {
 const lines = eventData.split('\\n');
 let textContent = '';

// Parse event content
 lines.forEach(line =\> {
 if (line.startsWith('data:')) {
 try {
 const jsonData = JSON.parse(line.slice(5).trim());
 if (jsonData.output?.text) {
 textContent = jsonData.output.text;
 }
 } catch(e) {
 console.error('JSON parsing error:', e.message);
 }
 }
 });

if (textContent) {
 // Add newline and push
 this.push(textContent + '\\n');
 }
 });

callback();
 },
 flush(callback) {
 if (this.buffer) {
 this.push(this.buffer + '\\n');
 }
 callback();
 }
 });
 sseTransformer.buffer = '';

// Pipe processing
 response.data
 .pipe(sseTransformer)
 .on('data', (textWithNewline) =\> {
 process.stdout.write(textWithNewline); // Auto-wrap output
 })
 .on('end', () =\> console.log(""))
 .on('error', err =\> console.error("Pipe error:", err));

} else {
 console.log("Request failed, status code:", response.status);
 response.data.on('data', chunk =\> console.log(chunk.toString()));
 }
 } catch (error) {
 console.error(\`API call failed: ${error.message}\`);
 if (error.response) {
 console.error(\`Status code: ${error.response.status}\`);
 error.response.data.on('data', chunk =\> console.log(chunk.toString()));
 }
 }
}

callDashScope();

## C#

Request example

csharp
using System.Net;
using System.Text;

class Program
{
 static async Task Main(string\[\] args)
 {
 //If you have not configured an environment variable, replace the following line with apiKey="sk-xxx" using your Model Studio API key. However, do not hard code your API key directly in the code for production environments to reduce the risk of API key leakage.
 string apiKey = Environment.GetEnvironmentVariable("DASHSCOPE_API_KEY") ?? throw new InvalidOperationException("DASHSCOPE_API_KEY environment variable is not set.");
 string appId = "APP_ID"; // Replace with your actual application ID
 string url = $"https://dashscope.aliyuncs.com/api/v1/apps/{appId}/completion";

using (HttpClient client = new HttpClient())
 {
 client.DefaultRequestHeaders.Add("Authorization", $"Bearer {apiKey}");
 client.DefaultRequestHeaders.Add("X-DashScope-SSE", "enable");

string jsonContent = @"{
 ""input"": {
 ""prompt"": ""Who are you""
 },
 ""parameters"": {""incremental_output"": true},
 ""debug"": {}
 }";

HttpContent content = new StringContent(jsonContent, Encoding.UTF8, "application/json");

Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:fff"));
 try
 {
 var request = new HttpRequestMessage(HttpMethod.Post, url);
 request.Content = content;

HttpResponseMessage response = await client.SendAsync(request, HttpCompletionOption.ResponseHeadersRead);

if (response.IsSuccessStatusCode)
 {
 Console.WriteLine("Request successful:");
 Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:fff"));
 using (var stream = await response.Content.ReadAsStreamAsync())
 using (var reader = new StreamReader(stream))
 {
 string? line; // Declare as nullable string
 while ((line = await reader.ReadLineAsync()) != null)
 {
 if (line.StartsWith("data:"))
 {
 string data = line.Substring(5).Trim();
 Console.WriteLine(data);
 Console.WriteLine(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss:fff"));
 }
 }
 }
 }
 else
 {
 Console.WriteLine($"Request failed with status code: {response.StatusCode}");
 string responseBody = await response.Content.ReadAsStringAsync();
 Console.WriteLine(responseBody);
 }
 }
 catch (Exception ex)
 {
 Console.WriteLine($"Error calling DashScope: {ex.Message}");
 }
 }
 }
}

## Go

Request example

go
package main

import (
"bytes"
"encoding/json"
"fmt"
"io"
"net/http"
"os"
"strings"
"time"
)

func main() {
// If you have not configured an environment variable, replace the following line with apiKey := "sk-xxx" using your Model Studio API key. However, do not hard code your API key directly in the code for production environments to reduce the risk of API key leakage.
apiKey := os.Getenv("DASHSCOPE_API_KEY")
appId := "APP_ID" // Replace with your actual application ID

if apiKey == "" {
 fmt.Println("Make sure DASHSCOPE_API_KEY is set.")
 return
}

url := fmt.Sprintf("https://dashscope.aliyuncs.com/api/v1/apps/%s/completion", appId)

// Create request body, where incremental_output enables streaming response
requestBody := map\[string\]interface{}{
 "input": map\[string\]string{
 "prompt": "Who are you?",
 },
 "parameters": map\[string\]interface{}{
 "incremental_output": true,
 },
 "debug": map\[string\]interface{}{},
}

jsonData, err := json.Marshal(requestBody)
if err != nil {
 fmt.Printf("Failed to marshal JSON: %v\\n", err)
 return
}

// Create HTTP POST request
req, err := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
if err != nil {
 fmt.Printf("Failed to create request: %v\\n", err)
 return
}

// Set request headers, where X-DashScope-SSE is set to enable for streaming response
req.Header.Set("Authorization", "Bearer "+apiKey)
req.Header.Set("Content-Type", "application/json")
req.Header.Set("X-DashScope-SSE", "enable")

// Send request
client := \&http.Client{}
resp, err := client.Do(req)
if err != nil {
 fmt.Printf("Failed to send request: %v\\n", err)
 return
}
defer resp.Body.Close()

if resp.StatusCode != http.StatusOK {
 fmt.Printf("Request failed with status code: %d\\n", resp.StatusCode)
 body, _ := io.ReadAll(resp.Body)
 fmt.Println(string(body))
 return
}

// Handle streaming response
reader := io.Reader(resp.Body)
buf := make(\[\]byte, 1024)
for {
 n, err := reader.Read(buf)
 if n \> 0 {
 data := string(buf\[:n\])
 lines := strings.Split(data, "\\n")
 for _, line := range lines {
 line = strings.TrimSpace(line)
 if len(line) \>= 5 \&\& line\[:5\] == "data:" {
 timestamp := time.Now().Format("2006-01-02 15:04:05.000")
 fmt.Printf("%s: %s\\n", timestamp, line\[5:\])
 } else if len(line) \> 0 {
 fmt.Println(line)
 }
 }
 }
 if err != nil {
 if err == io.EOF {
 break
 }
 fmt.Printf("Error reading response: %v\\n", err)
 break
 }
}
}

Knowledge base retrieval

When calling a Agent Application, use rag_options to enable knowledge base retrieval.

## Python

Request example

python
import os
from http import HTTPStatus
# We recommend dashscope SDK version \>= 1.20.11
from dashscope import Application
import dashscope
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'

response = Application.call(
 # If you have not configured an environment variable, replace the following line with api_key="sk-xxx" using your Model Studio API key. However, do not hard code your API key directly in the code for production environments to reduce the risk of API key leakage.
 api_key=os.getenv("DASHSCOPE_API_KEY"),
 app_id='APP_ID', # Replace APP_ID with your application ID
 prompt='Please recommend a phone under 3000 yuan',
 rag_options={
 "pipeline_ids": \["PIPELINE_ID1","PIPELINE_ID2"\], # Replace with your actual knowledge base IDs, separated by commas for multiple
 }
)

if response.status_code != HTTPStatus.OK:
 print(f'request_id={response.request_id}')
 print(f'code={response.status_code}')
 print(f'message={response.message}')
 print(f'See documentation: https://www.alibabacloud.com/help/en/model-studio/developer-reference/error-code')
else:
 print('%s\\n' % (response.output.text)) # Process to output only text
 # print('%s\\n' % (response.usage))

## Java

Request example

java
// We recommend dashscope SDK version \>= 2.16.8;
import com.alibaba.dashscope.app.*;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.InputRequiredException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import java.util.Arrays;

import com.alibaba.dashscope.utils.Constants;

public class Main {
 static {
 Constants.baseHttpApiUrl="https://dashscope-intl.aliyuncs.com/api/v1";
 }
 public static void streamCall() throws NoApiKeyException, InputRequiredException {
 ApplicationParam param = ApplicationParam.builder()
 // If you have not configured an environment variable, replace the following line with .apiKey("sk-xxx") using your Model Studio API key. However, do not hard code your API key directly in the code for production environments to reduce the risk of API key leakage.
 .apiKey(System.getenv("DASHSCOPE_API_KEY"))
 .appId("APP_ID") // Replace with your actual application ID
 .prompt("Please recommend a phone around 3000 yuan")
 .ragOptions(RagOptions.builder()
 // Replace with your actual specified knowledge base IDs, separated by commas for multiple
 .pipelineIds(Arrays.asList("PIPELINES_ID1", "PIPELINES_ID2"))
 .build())
 .build();

Application application = new Application();
 ApplicationResult result = application.call(param);
 System.out.printf("%s\\n",
 result.getOutput().getText());// Process to output only text
 }

public static void main(String\[\] args) {
 try {
 streamCall();
 } catch (ApiException \| NoApiKeyException \| InputRequiredException e) {
 System.out.printf("Exception: %s", e.getMessage());
 System.out.println("See documentation: https://www.alibabacloud.com/help/en/model-studio/developer-reference/error-code");
 }
 System.exit(0);
 }
}

## HTTP

## curl

Request example

curl
curl -X POST https://dashscope-intl.aliyuncs.com/api/v1/apps/{APP_ID}/completion \\
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \\
--header 'Content-Type: application/json' \\
--data '{
 "input": {
 "prompt": "Please recommend a phone under 3000 yuan"
 },
 "parameters": {
 "rag_options" : {
 "pipeline_ids":\["PIPELINE_ID1"\]}
 },
 "debug": {}
}'

** Replace APP_ID with your actual application ID and PIPELINE_ID1 with your specified knowledge base ID.

## PHP

<b>Request example**

php
\<?php
# If you have not configured an environment variable, replace the following line with $api_key="sk-xxx" using your Model Studio API key. However, do not hard code your API key directly in the code for production environments to reduce the risk of API key leakage.
$api_key = getenv("DASHSCOPE_API_KEY");
$application_id = 'APP_ID'; // Replace with your actual application ID

$url = "https://dashscope-intl.aliyuncs.com/api/v1/apps/$application_id/completion";

// Construct request data
$data = \[
 "input" =\> \[
 'prompt' =\> 'Please recommend a phone under 3000 yuan'
 \],
 "parameters" =\> \[
 'rag_options' =\> \[
 'pipeline_ids' =\> \['PIPELINE_ID1','PIPELINE_ID2'\]//Replace with your specified knowledge base IDs, separated by commas for multiple
 \]
 \]
\];
// Encode data as JSON
$dataString = json_encode($data);

// Check if json_encode succeeded
if (json_last_error() !== JSON_ERROR_NONE) {
 die("JSON encoding failed with error: " . json_last_error_msg());
}

// Initialize cURL session
$ch = curl_init($url);

// Set cURL options
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $dataString);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, \[
 'Content-Type: application/json',
 'Authorization: Bearer ' . $api_key
\]);

// Execute request
$response = curl_exec($ch);

// Check if cURL execution succeeded
if ($response === false) {
 die("cURL Error: " . curl_error($ch));
}

// Get HTTP status code
$status_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
// Close cURL session
curl_close($ch);
// Decode response data
$response_data = json_decode($response, true);
// Handle response
if ($status_code == 200) {
 if (isset($response_data\['output'\]\['text'\])) {
 echo "{$response_data\['output'\]\['text'\]}\\n";
 } else {
 echo "No text in response.\\n";
 }
}else {
 if (isset($response_data\['request_id'\])) {
 echo "request_id={$response_data\['request_id'\]}\\n";}
 echo "code={$status_code}\\n";
 if (isset($response_data\['message'\])) {
 echo "message={$response_data\['message'\]}\\n";}
 else {
 echo "message=Unknown error\\n";}
}
?\>

## Node.js

Install required dependencies:

sh
npm install axios

Request example

javascript
const axios = require('axios');
async function callDashScope() {
 // If you have not configured an environment variable, replace the following line with apiKey='sk-xxx' using your Model Studio API key. However, do not hard code your API key directly in the code for production environments to reduce the risk of API key leakage.
 const apiKey = process.env.DASHSCOPE_API_KEY;
 const appId = 'APP_ID';//Replace with your actual application ID

const url = \`https://dashscope-intl.aliyuncs.com/api/v1/apps/${appId}/completion\`;

const data = {
 input: {
 prompt: "Please recommend a phone under 3000 yuan"
 },
 parameters: {
 rag_options:{
 pipeline_ids:\['PIPELINE_ID1','PIPELINE_ID2'\] // Replace with your specified knowledge base IDs, separated by commas for multiple
 }
 },
 debug: {}
 };

try {
 const response = await axios.post(url, data, {
 headers: {
 'Authorization': \`Bearer ${apiKey}\`,
 'Content-Type': 'application/json'
 }
 });

if (response.status === 200) {
 console.log(\`${response.data.output.text}\`);
 } else {
 console.log(\`request_id=${response.headers\['request_id'\]}\`);
 console.log(\`code=${response.status}\`);
 console.log(\`message=${response.data.message}\`);
 }
 } catch (error) {
 console.error(\`Error calling DashScope: ${error.message}\`);
 if (error.response) {
 console.error(\`Response status: ${error.response.status}\`);
 console.error(\`Response data: ${JSON.stringify(error.response.data, null, 2)}\`);
 }
 }
}

callDashScope();

## C#

Request example

csharp
using System.Text;

class Program
{
 static async Task Main(string\[\] args)
 {
 // If you have not configured an environment variable, replace the following line with apiKey="sk-xxx" using your Model Studio API key. However, do not hard code your API key directly in the code for production environments to reduce the risk of API key leakage.
 string apiKey = Environment.GetEnvironmentVariable("DASHSCOPE_API_KEY")?? throw new InvalidOperationException("DASHSCOPE_API_KEY environment variable is not set.");;
 string appId = "APP_ID";// Replace with your actual application ID
 // Replace PIPELINE_ID1 with your specified knowledge base ID
 if (string.IsNullOrEmpty(apiKey))
 {
 Console.WriteLine("Make sure DASHSCOPE_API_KEY is set.");
 return;
 }

string url = $"https://dashscope-intl.aliyuncs.com/api/v1/apps/{appId}/completion";

using (HttpClient client = new HttpClient())
 {
 client.DefaultRequestHeaders.Add("Authorization", $"Bearer {apiKey}");
 string jsonContent = $@"{​{
 ""input"": {​{
 ""prompt"": ""Please recommend a phone under 3000 yuan""
 }​},
 ""parameters"": {​{
 ""rag_options"" : {​{
 ""pipeline_ids"":\[""PIPELINE_ID1""\]
 }​}
 }​},
 ""debug"": {​{}​}
 }​}";

HttpContent content = new StringContent(jsonContent, Encoding.UTF8, "application/json");

try
 {
 HttpResponseMessage response = await client.PostAsync(url, content);

if (response.IsSuccessStatusCode)
 {
 string responseBody = await response.Content.ReadAsStringAsync();
 Console.WriteLine(responseBody);
 }
 else
 {
 Console.WriteLine($"Request failed with status code: {response.StatusCode}");
 string responseBody = await response.Content.ReadAsStringAsync();
 Console.WriteLine(responseBody);
 }
 }
 catch (Exception ex)
 {
 Console.WriteLine($"Error calling DashScope: {ex.Message}");
 }
 }
 }
}

## Go

Request example

go
package main

import (
"bytes"
"encoding/json"
"fmt"
"io"
"net/http"
"os"
)

func main() {
// If you have not configured an environment variable, replace the following line with apiKey := "sk-xxx" using your Model Studio API key. However, do not hard code your API key directly in the code for production environments to reduce the risk of API key leakage.
apiKey := os.Getenv("DASHSCOPE_API_KEY")
appId := "APP_ID" // Replace with your actual application ID

if apiKey == "" {
 fmt.Println("Make sure DASHSCOPE_API_KEY is set.")
 return
}

url := fmt.Sprintf("https://dashscope-intl.aliyuncs.com/api/v1/apps/%s/completion", appId)

// Create request body
requestBody := map\[string\]interface{}{
 "input": map\[string\]string{
 "prompt": "Please recommend a phone under 3000 yuan",
 },
 "parameters": map\[string\]interface{}{
 "rag_options": map\[string\]interface{}{
 "pipeline_ids": \[\]string{"PIPELINE_ID1"}, // Replace with your specified knowledge base ID
 },
 },
 "debug": map\[string\]interface{}{},
}

jsonData, err := json.Marshal(requestBody)
if err != nil {
 fmt.Printf("Failed to marshal JSON: %v\\n", err)
 return
}

// Create HTTP POST request
req, err := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
if err != nil {
 fmt.Printf("Failed to create request: %v\\n", err)
 return
}

// Set request headers
req.Header.Set("Authorization", "Bearer "+apiKey)
req.Header.Set("Content-Type", "application/json")

// Send request
client := \&http.Client{}
resp, err := client.Do(req)
if err != nil {
 fmt.Printf("Failed to send request: %v\\n", err)
 return
}
defer resp.Body.Close()

// Read response
body, err := io.ReadAll(resp.Body)
if err != nil {
 fmt.Printf("Failed to read response: %v\\n", err)
 return
}

// Handle response
if resp.StatusCode == http.StatusOK {
 fmt.Println("Request successful:")
 fmt.Println(string(body))
} else {
 fmt.Printf("Request failed with status code: %d\\n", resp.StatusCode)
 fmt.Println(string(body))
}
}

View retrieval process information: Add has_thoughts to your code and set it to True. The retrieval process information will be returned in the output field's thoughts field.

app_id *string* (required) Application ID. Get the application ID from the application card on the Application Management page. ** In the Java SDK, this is <b>appId.** When calling via HTTP, put your actual application ID in the URL, replacing **APP_ID**.

prompt *string* (required) User input that guides the application to generate a response. ** When calling via HTTP, put <b>prompt** in the input object.

**session_id *string* (optional) Conversation history identifier. When you pass session_id, the request automatically carries cloud-stored conversation history. You must pass prompt in this case. Expires after 1 hour of inactivity. ** In the Java SDK, this is <b>setSessionId. When calling via HTTP, put session_id in the input object.

messages *array* (optional) Conversation context passed to the model, arranged in chronological order. When using the messages parameter for multi-turn conversations, you do not need to pass prompt or session_id. If you pass both session_id and messages, the model uses the content in messages and ignores session_id and prompt. ** When calling via HTTP, put <b>messages in the input object. ** To use this parameter, your Python Dashscope SDK version must be at least 1.20.14, and your Java Dashscope SDK version must be at least 2.17.0. <b>Message types

System Message** ***object* (optional) System message that sets the model's role, tone, task objectives, or constraints. Usually placed first in the messages array. Properties

**content **string* *(required) System instruction that defines the model's role, behavior guidelines, response style, and task constraints.

**role **string* *(required) Role of the system message, fixed as system.

User Message** *object*(required)** User message that passes questions, instructions, or context to the model. Properties

content *string *(required) Message content. Properties

**text **string* *(required) Input text.

**role **string* *(required) Role of the user message, fixed as user.

Assistant Message** ***object* (optional) Model response. Typically used as context passed back to the model in multi-turn conversations. Properties

**content **string* *(required) Text content of the model response.

**role **string* *(required) Role of the assistant message, fixed as assistant.

workspace *string* (optional) Business space identifier. Related documentation: Get Workspace ID. You only need to pass the workspace ID when invoking applications in a sub-workspace. ** When calling via HTTP, specify the <b>X-DashScope-WorkSpace** header.

stream *boolean* (optional) Default value is False Enable streaming output. Set to True to improve reading experience and reduce timeout risk. Parameter values:

  • False (default): The model returns all content at once after generation completes.
  • True (recommended): The model outputs content as it generates, returning a data chunk each time it produces new content. You must read these chunks in real time to assemble the complete response. ** To implement streaming output with the Java SDK, use the streamCall interface. To implement streaming output via HTTP, set the X-DashScope-SSE header to enable.

<b>incremental_output** *boolean* (optional) Default value is False Enable incremental output in streaming mode. Set to True to improve reading experience. Parameter values:

  • False (default): Each output contains the entire sequence generated so far. The final output is the complete result.
plaintext
I
I like
I like apple
I like apple.
  • True (recommended): Incremental output. Subsequent outputs do not include previously output content. You must read these segments in real time to get the complete result.
plaintext
I
like
apple
.

** In the Java SDK, this is <b>incrementalOutput**. When calling via HTTP, put incremental_output in the parameters object.

flow_stream_mode *string* (optional) Default value is full_thoughts Streaming output mode for Workflow Application. Parameter values:

  • message_format (recommended): Outputs results from specified nodes (either a Output node or an End node) in the **message** field.

**

**Important ** In the console application, enable the Stream switch for the target node to return results in streaming mode. If disabled, the node's final result is returned all at once.

** In the Java SDK, this is FlowStreamMode.MESSAGE_FORMAT.

  • full_thoughts (default): Outputs results from all nodes in the &lt;b&gt;thoughts** field.

**

**Important ** When using this mode, you must also set the has_thoughts parameter to True.

** In the Java SDK, this is FlowStreamMode.FULL_THOUGHTS.

  • agent_format: Outputs results from specified nodes (LLM nodes or end nodes) in the &lt;b&gt;text**** **field. In the console application, enable the Response switch for the target node to return results in streaming mode.

**

**Important ** Do not use this mode with parallel nodes, as it may cause content mixing. Ensure the enabled nodes have a clear execution order.

** In the Java SDK, this is FlowStreamMode.AGENT_FORMAT. Your Python SDK version must be at least 1.24.0, and your Java SDK version must be at least 2.21.0. When calling via HTTP, put <b>flow_stream_mode** in the parameters object.

**biz_params *object* (optional) Use this field to pass parameters when your application uses custom variables, nodes, or plugins. ** In the Java SDK, this is <b>bizParams. When calling via HTTP, put biz_params in the input object. For Workflow Application, pass custom variables for the start node directly, for example:

python
biz_params = {"city": "Hangzhou"}

For Agent Application, pass prompt variables or plugin variables using the following fields: Properties

user_defined_params *object* (optional) Custom plugin parameter information. Plugins added within an application cannot be duplicated, with a maximum of 10 plugins. Properties

**tool_id ***string* (optional) Plugin ID, available on the plugin card.

**${plugin_params} ***string* (optional) The innermost object contains multiple key-value pairs. Each key-value pair represents a user-defined parameter name and its specified value. For example:

json
"article_index": 2

Usage steps:

  • Associate the specified plugin with your application and Publish the application.
  • Pass plugin information through this parameter during API calls. You can provide multiple key-value pairs, where each key is the plugin's TOOL_ID and the value is the parameter object required by that plugin. Example:
plaintext
"user_defined_params": {
 "<TOOL_ID>": {
 "article_index": 2},
 "<TOOL_ID>": {
 "article_index": 8}
 }

user_defined_tokens *object* (optional) User-level authentication information for custom plugins. Plugins added within an application cannot be duplicated, with a maximum of 10 plugins. Properties

**tool_id ***string* (optional) Plugin ID, available on the plugin card. Pass through the <TOOL_ID> field.

user_token *string* (optional) Pass the user authentication information required by this plugin, such as the actual value of DASHSCOPE_API_KEY.

Usage steps:

  • Associate the specified plugin with your application and Publish the application.
  • Pass plugin user-level authentication information through this parameter during API calls.

You can provide multiple key-value pairs, where each key is the plugin's TOOL_ID and the value is the user_token object.

has_thoughts *boolean* (optional) Default value is False Whether plugin invocation and knowledge retrieval processes, are output in the thoughts field. Parameter values:

  • True: Output included.
  • False (default): Output not included. ** In the Java SDK, this is <b>hasThoughts**. When calling via HTTP, put has_thoughts in the parameters object.

rag_options *object* (optional) Used to configure parameters related to retrieval, including but not limited to retrieving specified knowledge bases or documents.

**

**Note ** Only Agent Application support this parameter.

** In the Java SDK, this is <b>ragOptions**. When calling via HTTP, put **rag_options **in the parameters object. Properties

pipeline_ids *array** *(required) A list containing one or more knowledge base IDs. Maximum of 5. Retrieves all documents within the specified knowledge bases. How to get:

  • Knowledge Base page to get the knowledge base ID;
  • Or through the CreateIndex API (supports only unstructured knowledge bases), which returns Data.Id. ** In the Java SDK, this is <b>pipelineIds**.

**file_ids **array* *(optional) A list containing one or more unstructured document IDs. Maximum of 5. Retrieves unstructured documents within the specified knowledge bases. When passing document IDs, you must also pass the knowledge base ID that these documents belong to in the pipeline_ids field. How to get:

  • Application Data Management page's document list to get the document ID;
  • Or through the AddFile API, which returns the ID. ** In the Java SDK, this is <b>fileIds**.

**metadata_filter ***object* (optional) Used to filter unstructured documents by metadata. By specifying one or more key-value pairs, retrieve unstructured documents within the specified knowledge base that have this metadata. Prerequisites: When passing metadata, you must also pass the knowledge base ID that this metadata belongs to in the pipeline_ids field. How to view:

  • Visit the Knowledge Base page, click the View Details > Metadata Information on the knowledge base card to view.

  • Or through the ListChunks API to get. This object consists of one or more key-value pairs:

  • Key: String type, representing the metadata name.

  • Value: <li> Exact match: Value is a String, meaning only documents with this field value exactly equal to this string are retrieved. <li> Example: "author": "John.Doe" </li>

  • Multi-value "OR" match: Value is an Array (array) or List (list) containing multiple Strings. This means documents with this field value matching any value in the array are retrieved (logical OR). <li> Example: "source": \["internal_wiki", "public_docs"\] </li> </li> Combination logic: Different keys use "AND" logic. For example, "author": "John.Doe", "source": \["internal_wiki", "public_docs"\] means filtering documents authored by "John.Doe" AND sourced from either "internal_wiki" OR "public_docs". ** In the Java SDK, this is <b>metadataFilter**.

tags *array* (optional) A list containing one or more tags for unstructured documents. You can retrieve unstructured documents with this tag. How to view:

  • Visit the Application Data Management page and click Tag to view.
  • Or through the DescribeFile API to get.

Response object

Single-turn conversation response example

json
{
 "output": {
 "finish_reason": "stop",
 "session_id": "6105c965c31b40958a43dc93c28c7a59",
 "text": "I am Qwen, an AI assistant developed by Alibaba Cloud. I'm designed to answer various questions, provide information, and converse with users. How can I help you?"
 },
 "usage": {
 "models": \[
 {
 "output_tokens": 36,
 "model_id": "qwen-plus",
 "input_tokens": 74
 }
 \]
 },
 "request_id": "f97ee37d-0f9c-9b93-b6bf-bd263a232bf9"
}

Specified knowledge base response example When calling the application's knowledge base feature and wanting to output referenced document information from retrieved documents, go to your Model Studio console's Agent Application, click Retrieve Configuration, enable the Show Source switch, and Publish the application.

json
{
 "text": "Based on your budget, I recommend considering the Bailian Zephyr Z9. This phone is lightweight and portable, featuring a 6.4-inch screen with 1080 x 2340 pixel resolution, paired with 128GB storage and 6GB RAM, making it perfect for daily use\[1\]\</ref\>. Additionally, it comes with a 4000mAh battery and a 30x digital zoom lens to capture distant details, priced between 2499-2799 yuan, fully meeting your budget requirements\[1\]\</ref\>.",
 "finish_reason": "stop",
 "session_id": "6c1d47fa5eca46b2ad0668c04ccfbf13",
 "thoughts": null,
 "doc_references": \[
 {
 "index_id": "1",
 "title": "Bailian Phone Product Introduction",
 "doc_id": "file_7c0e9abee4f142f386e488c9baa9cf38_10317360",
 "doc_name": "Bailian Series Phone Product Introduction",
 "doc_url": null,
 "text": "【Document Name】:Bailian Series Phone Product Introduction\\n【Title】:Bailian Phone Product Introduction\\n【Content】:Reference Price: 5999- 6499. Bailian Ace Ultra ------For Gamers: Equipped with a 6.67-inch 1080 x 2400 pixel screen, built-in 10GB RAM and 256GB storage, ensuring smooth gaming. Bailian Ace Ultra ------For Gamers: Equipped with a 6.67-inch 1080 x 2400 pixel screen, built-in 10GB RAM and 256GB storage, ensuring smooth gaming. 5500mAh battery with liquid cooling system keeps your device cool during extended gaming sessions. High-dynamic dual speakers enhance immersive audio for gaming. Reference Price: 3999- 4299. Bailian Zephyr Z9 ------Art of Slim Design: Lightweight 6.4-inch 1080 x 2340 pixel design, paired with 128GB storage and 6GB RAM, handles daily tasks effortlessly. 4000mAh battery ensures all-day usage, while the 30x digital zoom lens captures distant details without compromising on power. Reference Price: 2499- 2799. Bailian Flex Fold+ ------New Era of Foldable Phones: Combines innovation and luxury with a 7.6-inch 1800 x 2400 pixel main screen and 4.7-inch 1080 x 2400 pixel outer screen, supporting multi-angle free-stop design for different scenarios. 512GB storage, 12GB RAM, plus a 4700mAh battery and UTG ultra-thin flexible glass, ushering in a new chapter for foldable phones. Additionally, this phone supports Dual SIM Dual Standby and satellite calls, keeping you connected worldwide. Reference Retail Price: 9999- 10999.\\n",
 "biz_id": null,
 "images": \[

\],
 "page_number": \[
 0\]
 }\]
}

Error response example When a request fails, the response includes error details through code and message. This example shows an error response for an invalid API-KEY.

json
request_id=1d14958f-0498-91a3-9e15-be477971967b,
code=401,
message=Invalid API-key provided.
     **status_code** `*string*` HTTP status code. 200 indicates success; otherwise, the request failed. On failure, get the error code from `code` and error details from `message`. ** The Java SDK does not return this parameter. On failure, it throws an exception containing the &lt;b&gt;status_code** and **message** content.      **request_id** `*string*` Unique ID for this invocation. ** The Java SDK returns this as `requestId`.      &lt;b&gt;code** `*string*` Error code. Empty on success. ** Only returned by the Python SDK.      &lt;b&gt;message** `*string*` Error details. Empty on success. ** Only returned by the Python SDK.      &lt;b&gt;output** `*object*` Invocation result.

output properties

text *string* Model response content.

finish_reason *string* Reason the response ended. stop means natural completion (encountering a preset marker), null means forced interruption (e.g., reaching maximum length limit or manual stop).

**session_id ***string* Unique ID for the current conversation. Pass this in subsequent requests to carry historical conversation records.

**thoughts ***array* When you set the has_thoughts parameter to True during invocation, you can view plugin invocation, knowledge retrieval processes, or the deep thinking model's thinking process in thoughts. thoughts properties

thought *string* Model thinking process. When you select a deep thinking model in your console's Agent Application and successfully publish it, if you set the has_thoughts parameter to True during API invocation, the model's thinking process will be returned in this field. **reasoningContent ***string* Model thinking process. When you select a deep thinking model in your console's Workflow Application and successfully publish it, if you set the has_thoughts parameter to True during API invocation, the model's thinking process will be returned in this field. action_type *string* Type of execution step returned by the model. For example, API means executing an API plugin, agentRag means executing knowledge retrieval, and reasoning means executing the deep thinking model's thinking process.

action_name *string* Name of the executed action, such as knowledge retrieval, API plugin, or thinking process.

action *string* Execution steps.

action_input_stream *string* Streaming result of input parameters.

action_input *string* Plugin input parameters.

observation *string* Process of retrieval or plugin execution.

doc_references *array* Referenced documents that the model cited. In your Model Studio console's Agent Application, enable the Show Source switch and Publish the application for doc_references to possibly contain valid information. doc_references properties

index_id *string* Index of the referenced document, e.g., [1].

title *string* Title of the referenced text segment.

doc_id *string* ID of the referenced document.

doc_name *string* Name of the referenced document.

text *string* Specific text content referenced by the model.

biz_id *string* Business association identifier referenced by the model.

images *array* List of image URLs referenced by the model.

 **usage** `*object*` Token usage for this request.

usage properties **models ***array* Model information for this invocation. models properties

model_id *string* Model ID used by this application.

input_tokens *integer* Input token count.

output_tokens *integer* Output token count.

Rate limits

Default QPM (queries per minute) for a single application is 15,000.

Error codes

If the invocation fails and returns an error, see Error information for solutions.

Mirror of Alibaba Cloud Model Studio docs for reference and RAG. Not affiliated with Alibaba Cloud.