curl --request GET \
--url https://api.1club.ai/v1/platform/website/theme-tokens \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.1club.ai/v1/platform/website/theme-tokens"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.1club.ai/v1/platform/website/theme-tokens', 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.1club.ai/v1/platform/website/theme-tokens",
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.1club.ai/v1/platform/website/theme-tokens"
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.1club.ai/v1/platform/website/theme-tokens")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.1club.ai/v1/platform/website/theme-tokens")
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{
"tokens": [
{
"key": "<string>",
"type": "<string>",
"group": "<string>",
"options": [
"<string>"
],
"defaultValue": "<unknown>",
"inheritsFrom": "<string>",
"order": 123,
"visibleIf": {}
}
],
"notes": {},
"presets": [
{
"key": "<string>",
"tokens": {}
}
],
"fonts": [
{
"name": "<string>",
"category": "<string>"
}
]
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}Get the design-token catalog
Every design token the website accepts, what it means, what it falls back to when unset, and the named looks on offer.
Read this before writing a theme. It is the machine-readable counterpart to /section-types: that one says what may go IN a page, this one says how the site LOOKS. Tokens are added over time, so read it rather than hardcoding the values.
Two things worth knowing before you write anything. Unset is the normal state - every token falls back to the organization’s branding or to a value derived from the tokens above it, so a good theme sets the fewest tokens it needs and leaves the rest inherited. And the tokens are only coherent in combinations, which is what presets are for: start from one and adjust two or three tokens, rather than composing 32 from scratch.
curl --request GET \
--url https://api.1club.ai/v1/platform/website/theme-tokens \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.1club.ai/v1/platform/website/theme-tokens"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.1club.ai/v1/platform/website/theme-tokens', 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.1club.ai/v1/platform/website/theme-tokens",
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.1club.ai/v1/platform/website/theme-tokens"
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.1club.ai/v1/platform/website/theme-tokens")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.1club.ai/v1/platform/website/theme-tokens")
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{
"tokens": [
{
"key": "<string>",
"type": "<string>",
"group": "<string>",
"options": [
"<string>"
],
"defaultValue": "<unknown>",
"inheritsFrom": "<string>",
"order": 123,
"visibleIf": {}
}
],
"notes": {},
"presets": [
{
"key": "<string>",
"tokens": {}
}
],
"fonts": [
{
"name": "<string>",
"category": "<string>"
}
]
}{
"error": "<string>"
}{
"error": "<string>"
}{
"error": "<string>"
}Authorizations
Organization-scoped bearer credential: a customer API key (1club_sk_live_...) or an MCP OAuth access token.
Response
The token catalog
Every writable token.
Show child attributes
Show child attributes
Authoring guidance, one entry per group.
Show child attributes
Show child attributes
Named looks. Each tokens is a complete, coordinated set - apply one with PUT /theme and adjust from there.
Show child attributes
Show child attributes
The families the site can load, with the category each belongs to - which is what a heading/body pairing is chosen on.
Show child attributes
Show child attributes
Was this page helpful?