Get the form theme
curl --request GET \
--url https://formhug.ai/api/v1/forms/{form_token}/theme \
--header 'Authorization: Bearer <token>'import requests
url = "https://formhug.ai/api/v1/forms/{form_token}/theme"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://formhug.ai/api/v1/forms/{form_token}/theme', 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://formhug.ai/api/v1/forms/{form_token}/theme",
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://formhug.ai/api/v1/forms/{form_token}/theme"
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://formhug.ai/api/v1/forms/{form_token}/theme")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://formhug.ai/api/v1/forms/{form_token}/theme")
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{
"data": {
"header": {
"images": [
{
"url": "<string>",
"id": "<string>"
}
]
},
"wallpaper": {
"color": "<string>",
"image": {
"url": "<string>",
"id": "<string>"
}
},
"primary_color": "<string>",
"submit_button": {
"style": {
"background_color": "<string>",
"color": "<string>"
}
},
"typography": {
"form_header": {
"color": "<string>"
},
"field_label": {
"color": "<string>"
},
"choice_style": {
"color": "<string>"
}
},
"general_button": {
"color": "<string>",
"border_color": "<string>"
},
"form_container": {
"style": {
"background_color": "<string>"
}
}
}
}{
"error": "Insufficient scope"
}{
"error": "Form not found"
}Form Themes
Get the form theme
Required scope: form:read.
GET
/
api
/
v1
/
forms
/
{form_token}
/
theme
Get the form theme
curl --request GET \
--url https://formhug.ai/api/v1/forms/{form_token}/theme \
--header 'Authorization: Bearer <token>'import requests
url = "https://formhug.ai/api/v1/forms/{form_token}/theme"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://formhug.ai/api/v1/forms/{form_token}/theme', 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://formhug.ai/api/v1/forms/{form_token}/theme",
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://formhug.ai/api/v1/forms/{form_token}/theme"
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://formhug.ai/api/v1/forms/{form_token}/theme")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://formhug.ai/api/v1/forms/{form_token}/theme")
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{
"data": {
"header": {
"images": [
{
"url": "<string>",
"id": "<string>"
}
]
},
"wallpaper": {
"color": "<string>",
"image": {
"url": "<string>",
"id": "<string>"
}
},
"primary_color": "<string>",
"submit_button": {
"style": {
"background_color": "<string>",
"color": "<string>"
}
},
"typography": {
"form_header": {
"color": "<string>"
},
"field_label": {
"color": "<string>"
},
"choice_style": {
"color": "<string>"
}
},
"general_button": {
"color": "<string>",
"border_color": "<string>"
},
"form_container": {
"style": {
"background_color": "<string>"
}
}
}
}{
"error": "Insufficient scope"
}{
"error": "Form not found"
}Authorizations
Personal Access Token prefixed with fh_. Sent as Authorization: Bearer fh_xxx.
The scope required by each endpoint is listed in that endpoint's description.
Path Parameters
Form token
Response
With header image
Show child attributes
Show child attributes
Last modified on July 9, 2026
Was this page helpful?
⌘I