Theme templates
Read a theme template version and its audit changes
Returns an authorized historical template snapshot. Curated native definitions and historical native identities are unavailable while the company native widget catalog release is disabled. Responses are private and never cached.
GET
/
api
/
application_theme_templates
/
{id}
/
version_diff
Read a theme template version and its audit changes
curl --request GET \
--url https://api.fluid.app/api/application_theme_templates/{id}/version_diff \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.fluid.app/api/application_theme_templates/{id}/version_diff"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.fluid.app/api/application_theme_templates/{id}/version_diff', 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.fluid.app/api/application_theme_templates/{id}/version_diff",
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.fluid.app/api/application_theme_templates/{id}/version_diff"
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.fluid.app/api/application_theme_templates/{id}/version_diff")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fluid.app/api/application_theme_templates/{id}/version_diff")
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{
"audit": {
"version": 3,
"created_at": "2026-09-22T15:04:12Z",
"user_id": 4129,
"user_name": "Patrick Wilson",
"changes": {
"content": [
"<p>Welcome</p>",
"<p>Welcome back</p>"
]
}
},
"application_theme_template": {
"id": 48213,
"name": "Paper Product Page",
"content": "<p>Welcome back</p>",
"status": "active",
"country_ids": [],
"stylesheet": null,
"stylesheet_tag_injected": false,
"stylesheet_column_hidden": false,
"variables": {},
"translations": {},
"default": false,
"hide_navbar": false,
"use_active_application_theme": false,
"created_at": "2026-09-08T14:22:31Z",
"updated_at": "2026-09-22T15:04:12Z",
"droplet_name": null,
"app_extension_id": null,
"extension_uri": null,
"themeable_type": "product",
"application_theme_id": 7310,
"company_id": null,
"source": "theme",
"global": false,
"native_widget_key": null,
"native_widget_uri": null
},
"meta": {
"request_id": "4f1c2a9e-7b3d-4e8a-9c61-2d5f8a0b3e17",
"timestamp": "2026-09-22T15:04:12Z"
}
}{
"message": "<string>",
"error": "<string>",
"error_message": "<string>",
"errors": "<string>",
"meta": {
"request_id": "<string>",
"timestamp": "2023-11-07T05:31:56Z"
}
}{
"message": "<string>",
"error": "<string>",
"error_message": "<string>",
"errors": "<string>",
"meta": {
"request_id": "<string>",
"timestamp": "2023-11-07T05:31:56Z"
}
}{
"message": "<string>",
"error": "<string>",
"error_message": "<string>",
"errors": "<string>",
"meta": {
"request_id": "<string>",
"timestamp": "2023-11-07T05:31:56Z"
}
}{
"message": "<string>",
"error": "<string>",
"error_message": "<string>",
"errors": "<string>",
"meta": {
"request_id": "<string>",
"timestamp": "2023-11-07T05:31:56Z"
}
}Authorizations
Bearer token authentication
Path Parameters
Identifier of a company-visible theme template.
Query Parameters
Existing Logidze version number.
⌘I
Read a theme template version and its audit changes
curl --request GET \
--url https://api.fluid.app/api/application_theme_templates/{id}/version_diff \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.fluid.app/api/application_theme_templates/{id}/version_diff"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.fluid.app/api/application_theme_templates/{id}/version_diff', 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.fluid.app/api/application_theme_templates/{id}/version_diff",
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.fluid.app/api/application_theme_templates/{id}/version_diff"
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.fluid.app/api/application_theme_templates/{id}/version_diff")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fluid.app/api/application_theme_templates/{id}/version_diff")
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{
"audit": {
"version": 3,
"created_at": "2026-09-22T15:04:12Z",
"user_id": 4129,
"user_name": "Patrick Wilson",
"changes": {
"content": [
"<p>Welcome</p>",
"<p>Welcome back</p>"
]
}
},
"application_theme_template": {
"id": 48213,
"name": "Paper Product Page",
"content": "<p>Welcome back</p>",
"status": "active",
"country_ids": [],
"stylesheet": null,
"stylesheet_tag_injected": false,
"stylesheet_column_hidden": false,
"variables": {},
"translations": {},
"default": false,
"hide_navbar": false,
"use_active_application_theme": false,
"created_at": "2026-09-08T14:22:31Z",
"updated_at": "2026-09-22T15:04:12Z",
"droplet_name": null,
"app_extension_id": null,
"extension_uri": null,
"themeable_type": "product",
"application_theme_id": 7310,
"company_id": null,
"source": "theme",
"global": false,
"native_widget_key": null,
"native_widget_uri": null
},
"meta": {
"request_id": "4f1c2a9e-7b3d-4e8a-9c61-2d5f8a0b3e17",
"timestamp": "2026-09-22T15:04:12Z"
}
}{
"message": "<string>",
"error": "<string>",
"error_message": "<string>",
"errors": "<string>",
"meta": {
"request_id": "<string>",
"timestamp": "2023-11-07T05:31:56Z"
}
}{
"message": "<string>",
"error": "<string>",
"error_message": "<string>",
"errors": "<string>",
"meta": {
"request_id": "<string>",
"timestamp": "2023-11-07T05:31:56Z"
}
}{
"message": "<string>",
"error": "<string>",
"error_message": "<string>",
"errors": "<string>",
"meta": {
"request_id": "<string>",
"timestamp": "2023-11-07T05:31:56Z"
}
}{
"message": "<string>",
"error": "<string>",
"error_message": "<string>",
"errors": "<string>",
"meta": {
"request_id": "<string>",
"timestamp": "2023-11-07T05:31:56Z"
}
}