Theme templates
Lists all theme templates
Lists the templates available to a theme: the theme’s own templates, global templates it has not overridden, and — when you filter by themeable_type — active templates from installed droplets. Requires a company admin user or company API token with the application_themes view permission. The list is not paginated.
GET
/
api
/
application_theme_templates
Lists all theme templates
curl --request GET \
--url https://api.fluid.app/api/application_theme_templates \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.fluid.app/api/application_theme_templates"
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', 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",
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"
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")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fluid.app/api/application_theme_templates")
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{
"templates": [
{
"id": 48213,
"name": "Paper Product Page",
"content": "{% layout 'theme' %}\n<section class=\"product\">\n <h1>{{ product.title }}</h1>\n {{ product.description }}\n</section>",
"status": "active",
"themeable_type": "product",
"company_id": 1405,
"variables": {
"show_breadcrumbs": true
},
"created_at": "2026-09-08T14:22:31Z",
"updated_at": "2026-09-21T16:05:47Z",
"default": false,
"translations": {},
"hide_navbar": false,
"use_active_application_theme": false,
"country_ids": [
214
],
"stylesheet": null,
"stylesheet_tag_injected": true,
"stylesheet_column_hidden": true,
"global": false,
"application_theme_id": 7310,
"source": "theme",
"droplet_name": null,
"app_extension_id": null,
"extension_uri": null
},
{
"id": 48214,
"name": "Default Product",
"content": "{% layout 'theme' %}\n<h1>{{ product.title }}</h1>",
"status": "active",
"themeable_type": "product",
"company_id": 1405,
"variables": {},
"created_at": "2026-09-02T09:15:00Z",
"updated_at": "2026-09-02T09:15:00Z",
"default": true,
"translations": {},
"hide_navbar": false,
"use_active_application_theme": false,
"country_ids": [],
"stylesheet": null,
"stylesheet_tag_injected": true,
"stylesheet_column_hidden": true,
"global": false,
"application_theme_id": 7310,
"source": "theme",
"droplet_name": null,
"app_extension_id": null,
"extension_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"
}
}Authorizations
Bearer token authentication
Query Parameters
Theme whose templates to list. The server requires it and returns 422 when it is missing; it may also be sent in a JSON body.
Only return templates of this type, such as product, page, or sections.
Return the published snapshot of each template, omitting templates that have never been published.
Filter by template name.
⌘I
Lists all theme templates
curl --request GET \
--url https://api.fluid.app/api/application_theme_templates \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.fluid.app/api/application_theme_templates"
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', 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",
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"
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")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fluid.app/api/application_theme_templates")
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{
"templates": [
{
"id": 48213,
"name": "Paper Product Page",
"content": "{% layout 'theme' %}\n<section class=\"product\">\n <h1>{{ product.title }}</h1>\n {{ product.description }}\n</section>",
"status": "active",
"themeable_type": "product",
"company_id": 1405,
"variables": {
"show_breadcrumbs": true
},
"created_at": "2026-09-08T14:22:31Z",
"updated_at": "2026-09-21T16:05:47Z",
"default": false,
"translations": {},
"hide_navbar": false,
"use_active_application_theme": false,
"country_ids": [
214
],
"stylesheet": null,
"stylesheet_tag_injected": true,
"stylesheet_column_hidden": true,
"global": false,
"application_theme_id": 7310,
"source": "theme",
"droplet_name": null,
"app_extension_id": null,
"extension_uri": null
},
{
"id": 48214,
"name": "Default Product",
"content": "{% layout 'theme' %}\n<h1>{{ product.title }}</h1>",
"status": "active",
"themeable_type": "product",
"company_id": 1405,
"variables": {},
"created_at": "2026-09-02T09:15:00Z",
"updated_at": "2026-09-02T09:15:00Z",
"default": true,
"translations": {},
"hide_navbar": false,
"use_active_application_theme": false,
"country_ids": [],
"stylesheet": null,
"stylesheet_tag_injected": true,
"stylesheet_column_hidden": true,
"global": false,
"application_theme_id": 7310,
"source": "theme",
"droplet_name": null,
"app_extension_id": null,
"extension_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"
}
}