Get App WebApp Settings
Available for: Chatflow, Workflow, Agent, Chatbot, Legacy Agent, Text Generator apps.
Returns the branding and display settings for the app’s hosted web app, such as its title, icon, theme colors, and default language.
curl --request GET \
--url https://{api_base_url}/site \
--header 'Authorization: Bearer <token>'import requests
url = "https://{api_base_url}/site"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://{api_base_url}/site', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://{api_base_url}/site",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://{api_base_url}/site"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://{api_base_url}/site")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://{api_base_url}/site")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"chat_color_theme": "#4A90D9",
"chat_color_theme_inverted": false,
"copyright": "2025 Dify",
"custom_disclaimer": "",
"default_language": "en-US",
"description": "A helpful customer service chatbot.",
"icon": "🤖",
"icon_background": "#FFFFFF",
"icon_type": "emoji",
"icon_url": null,
"input_placeholder": "Ask me anything about our products...",
"privacy_policy": "https://example.com/privacy",
"show_workflow_steps": false,
"title": "My Chat App",
"use_icon_as_answer_icon": true
}{
"code": "forbidden",
"message": "You don't have the permission to access the requested resource. It is either read-protected or not readable by the server.",
"status": 403
}Authorizations
Every request authenticates with an API key: Authorization: Bearer {API_KEY}. App endpoints take an app API key; knowledge endpoints take a knowledge base API key (Get Started).
Keep keys server-side; never embed them in client code. Requests with a missing or invalid key fail with HTTP 401 (unauthorized).
Response
Web app settings of the application.
Chat color theme.
Whether the chat color theme is inverted.
Copyright text.
Custom disclaimer text.
Default language code.
Web app description.
Icon content (emoji or image ID).
Icon background color.
Type of icon used. emoji for emoji icons, image for uploaded image icons.
URL of the icon image.
Placeholder text shown in the web app message input box. null when not configured.
Privacy policy URL.
Whether to show workflow steps.
Web app title.
Whether to use the app icon as the answer icon.
Was this page helpful?
curl --request GET \
--url https://{api_base_url}/site \
--header 'Authorization: Bearer <token>'import requests
url = "https://{api_base_url}/site"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://{api_base_url}/site', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://{api_base_url}/site",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://{api_base_url}/site"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://{api_base_url}/site")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://{api_base_url}/site")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"chat_color_theme": "#4A90D9",
"chat_color_theme_inverted": false,
"copyright": "2025 Dify",
"custom_disclaimer": "",
"default_language": "en-US",
"description": "A helpful customer service chatbot.",
"icon": "🤖",
"icon_background": "#FFFFFF",
"icon_type": "emoji",
"icon_url": null,
"input_placeholder": "Ask me anything about our products...",
"privacy_policy": "https://example.com/privacy",
"show_workflow_steps": false,
"title": "My Chat App",
"use_icon_as_answer_icon": true
}{
"code": "forbidden",
"message": "You don't have the permission to access the requested resource. It is either read-protected or not readable by the server.",
"status": 403
}