Retrieve page settings
Returns the settings the storefront SDK needs when a page loads, and records a URL-visit analytics event for the page. The response includes the shop’s branding with its enabled countries and languages, the affiliate resolved from the page URL or metadata.attribution (with the attribution used), the token of the visitor’s open cart for this session and country, and the widget scripts to load (empty on rep shop pages). metadata.fluid_locale in the response is the resolved locale - the requested fluid_locale where the shop supports it, otherwise the most preferred language in the request’s Accept-Language header that the shop offers (falling back to the shop’s default language) and the visitor’s country. Both page and metadata.fluid_shop are required; an unknown shop returns 404 and an invalid session token 422. No authentication is required.
curl --request POST \
--url https://api.fluid.app/api/public/v2025-06/settings \
--header 'Content-Type: application/json' \
--data '
{
"page": {
"url": "https://shop.dundermifflin.com/products/20lb-copy-paper",
"title": "Dunder Mifflin 20lb Copy Paper",
"description": "Bright white 20lb multipurpose copy paper, 10 reams per case.",
"image": "https://cdn.fluid.app/uploads/products/20lb-copy-paper/hero.jpg"
},
"metadata": {
"fluid_shop": "dunder-mifflin.fluid.app",
"fluid_session": "fs_7kQx9mR2vWbT4nHcJ8pLz3",
"fluid_locale": "en_US",
"attribution": {
"username": "dwight-schrute"
}
}
}
'import requests
url = "https://api.fluid.app/api/public/v2025-06/settings"
payload = {
"page": {
"url": "https://shop.dundermifflin.com/products/20lb-copy-paper",
"title": "Dunder Mifflin 20lb Copy Paper",
"description": "Bright white 20lb multipurpose copy paper, 10 reams per case.",
"image": "https://cdn.fluid.app/uploads/products/20lb-copy-paper/hero.jpg"
},
"metadata": {
"fluid_shop": "dunder-mifflin.fluid.app",
"fluid_session": "fs_7kQx9mR2vWbT4nHcJ8pLz3",
"fluid_locale": "en_US",
"attribution": { "username": "dwight-schrute" }
}
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
page: {
url: 'https://shop.dundermifflin.com/products/20lb-copy-paper',
title: 'Dunder Mifflin 20lb Copy Paper',
description: 'Bright white 20lb multipurpose copy paper, 10 reams per case.',
image: 'https://cdn.fluid.app/uploads/products/20lb-copy-paper/hero.jpg'
},
metadata: {
fluid_shop: 'dunder-mifflin.fluid.app',
fluid_session: 'fs_7kQx9mR2vWbT4nHcJ8pLz3',
fluid_locale: 'en_US',
attribution: {username: 'dwight-schrute'}
}
})
};
fetch('https://api.fluid.app/api/public/v2025-06/settings', 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/public/v2025-06/settings",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'page' => [
'url' => 'https://shop.dundermifflin.com/products/20lb-copy-paper',
'title' => 'Dunder Mifflin 20lb Copy Paper',
'description' => 'Bright white 20lb multipurpose copy paper, 10 reams per case.',
'image' => 'https://cdn.fluid.app/uploads/products/20lb-copy-paper/hero.jpg'
],
'metadata' => [
'fluid_shop' => 'dunder-mifflin.fluid.app',
'fluid_session' => 'fs_7kQx9mR2vWbT4nHcJ8pLz3',
'fluid_locale' => 'en_US',
'attribution' => [
'username' => 'dwight-schrute'
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.fluid.app/api/public/v2025-06/settings"
payload := strings.NewReader("{\n \"page\": {\n \"url\": \"https://shop.dundermifflin.com/products/20lb-copy-paper\",\n \"title\": \"Dunder Mifflin 20lb Copy Paper\",\n \"description\": \"Bright white 20lb multipurpose copy paper, 10 reams per case.\",\n \"image\": \"https://cdn.fluid.app/uploads/products/20lb-copy-paper/hero.jpg\"\n },\n \"metadata\": {\n \"fluid_shop\": \"dunder-mifflin.fluid.app\",\n \"fluid_session\": \"fs_7kQx9mR2vWbT4nHcJ8pLz3\",\n \"fluid_locale\": \"en_US\",\n \"attribution\": {\n \"username\": \"dwight-schrute\"\n }\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.fluid.app/api/public/v2025-06/settings")
.header("Content-Type", "application/json")
.body("{\n \"page\": {\n \"url\": \"https://shop.dundermifflin.com/products/20lb-copy-paper\",\n \"title\": \"Dunder Mifflin 20lb Copy Paper\",\n \"description\": \"Bright white 20lb multipurpose copy paper, 10 reams per case.\",\n \"image\": \"https://cdn.fluid.app/uploads/products/20lb-copy-paper/hero.jpg\"\n },\n \"metadata\": {\n \"fluid_shop\": \"dunder-mifflin.fluid.app\",\n \"fluid_session\": \"fs_7kQx9mR2vWbT4nHcJ8pLz3\",\n \"fluid_locale\": \"en_US\",\n \"attribution\": {\n \"username\": \"dwight-schrute\"\n }\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fluid.app/api/public/v2025-06/settings")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"page\": {\n \"url\": \"https://shop.dundermifflin.com/products/20lb-copy-paper\",\n \"title\": \"Dunder Mifflin 20lb Copy Paper\",\n \"description\": \"Bright white 20lb multipurpose copy paper, 10 reams per case.\",\n \"image\": \"https://cdn.fluid.app/uploads/products/20lb-copy-paper/hero.jpg\"\n },\n \"metadata\": {\n \"fluid_shop\": \"dunder-mifflin.fluid.app\",\n \"fluid_session\": \"fs_7kQx9mR2vWbT4nHcJ8pLz3\",\n \"fluid_locale\": \"en_US\",\n \"attribution\": {\n \"username\": \"dwight-schrute\"\n }\n }\n}"
response = http.request(request)
puts response.read_body{
"status": 201,
"settings": {
"shop": {
"name": "Dunder Mifflin Paper Company",
"primary_color": "#1F4E8C",
"secondary_color": "#F5F3EE",
"logo_url": "https://cdn.fluid.app/uploads/companies/1405/logo.png",
"icon_url": "https://cdn.fluid.app/uploads/companies/1405/icon.png",
"countries": [
"US",
"CA"
],
"languages": [
"en",
"es"
]
},
"cart": {
"token": "ct_4mW8hTq2ZkP9vRnB6xYs1c"
},
"scripts": [
{
"id": "cart-widget",
"src": "https://assets.fluid.app/scripts/fluid-sdk/latest/web-widgets/cart.js",
"data": {}
},
{
"id": "chat-widget",
"src": "https://assets.fluid.app/scripts/fluid-sdk/latest/web-widgets/chat.js",
"data": {}
}
],
"affiliate": {
"name": "Dwight Schrute",
"email": "dwight.schrute@dundermifflin.com",
"image_url": "https://cdn.fluid.app/uploads/users/48213/avatar.jpg",
"username": "dwight-schrute",
"external_id": "DM-REP-1042",
"fluid_rep_id": 48213
},
"attribution": {
"username": "dwight-schrute"
}
},
"metadata": {
"fluid_shop": "dunder-mifflin.fluid.app",
"fluid_session": "fs_7kQx9mR2vWbT4nHcJ8pLz3",
"fluid_locale": "en_US",
"request_uuid": "5e7a1c38-2f9b-4d06-b8c4-3a1e6d9f2b70",
"timestamp": "2026-09-14T15:30:10Z"
}
}curl --request POST \
--url https://api.fluid.app/api/public/v2025-06/settings \
--header 'Content-Type: application/json' \
--data '
{
"page": {
"url": "https://shop.dundermifflin.com/products/20lb-copy-paper",
"title": "Dunder Mifflin 20lb Copy Paper",
"description": "Bright white 20lb multipurpose copy paper, 10 reams per case.",
"image": "https://cdn.fluid.app/uploads/products/20lb-copy-paper/hero.jpg"
},
"metadata": {
"fluid_shop": "dunder-mifflin.fluid.app",
"fluid_session": "fs_7kQx9mR2vWbT4nHcJ8pLz3",
"fluid_locale": "en_US",
"attribution": {
"username": "dwight-schrute"
}
}
}
'import requests
url = "https://api.fluid.app/api/public/v2025-06/settings"
payload = {
"page": {
"url": "https://shop.dundermifflin.com/products/20lb-copy-paper",
"title": "Dunder Mifflin 20lb Copy Paper",
"description": "Bright white 20lb multipurpose copy paper, 10 reams per case.",
"image": "https://cdn.fluid.app/uploads/products/20lb-copy-paper/hero.jpg"
},
"metadata": {
"fluid_shop": "dunder-mifflin.fluid.app",
"fluid_session": "fs_7kQx9mR2vWbT4nHcJ8pLz3",
"fluid_locale": "en_US",
"attribution": { "username": "dwight-schrute" }
}
}
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
page: {
url: 'https://shop.dundermifflin.com/products/20lb-copy-paper',
title: 'Dunder Mifflin 20lb Copy Paper',
description: 'Bright white 20lb multipurpose copy paper, 10 reams per case.',
image: 'https://cdn.fluid.app/uploads/products/20lb-copy-paper/hero.jpg'
},
metadata: {
fluid_shop: 'dunder-mifflin.fluid.app',
fluid_session: 'fs_7kQx9mR2vWbT4nHcJ8pLz3',
fluid_locale: 'en_US',
attribution: {username: 'dwight-schrute'}
}
})
};
fetch('https://api.fluid.app/api/public/v2025-06/settings', 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/public/v2025-06/settings",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'page' => [
'url' => 'https://shop.dundermifflin.com/products/20lb-copy-paper',
'title' => 'Dunder Mifflin 20lb Copy Paper',
'description' => 'Bright white 20lb multipurpose copy paper, 10 reams per case.',
'image' => 'https://cdn.fluid.app/uploads/products/20lb-copy-paper/hero.jpg'
],
'metadata' => [
'fluid_shop' => 'dunder-mifflin.fluid.app',
'fluid_session' => 'fs_7kQx9mR2vWbT4nHcJ8pLz3',
'fluid_locale' => 'en_US',
'attribution' => [
'username' => 'dwight-schrute'
]
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.fluid.app/api/public/v2025-06/settings"
payload := strings.NewReader("{\n \"page\": {\n \"url\": \"https://shop.dundermifflin.com/products/20lb-copy-paper\",\n \"title\": \"Dunder Mifflin 20lb Copy Paper\",\n \"description\": \"Bright white 20lb multipurpose copy paper, 10 reams per case.\",\n \"image\": \"https://cdn.fluid.app/uploads/products/20lb-copy-paper/hero.jpg\"\n },\n \"metadata\": {\n \"fluid_shop\": \"dunder-mifflin.fluid.app\",\n \"fluid_session\": \"fs_7kQx9mR2vWbT4nHcJ8pLz3\",\n \"fluid_locale\": \"en_US\",\n \"attribution\": {\n \"username\": \"dwight-schrute\"\n }\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.fluid.app/api/public/v2025-06/settings")
.header("Content-Type", "application/json")
.body("{\n \"page\": {\n \"url\": \"https://shop.dundermifflin.com/products/20lb-copy-paper\",\n \"title\": \"Dunder Mifflin 20lb Copy Paper\",\n \"description\": \"Bright white 20lb multipurpose copy paper, 10 reams per case.\",\n \"image\": \"https://cdn.fluid.app/uploads/products/20lb-copy-paper/hero.jpg\"\n },\n \"metadata\": {\n \"fluid_shop\": \"dunder-mifflin.fluid.app\",\n \"fluid_session\": \"fs_7kQx9mR2vWbT4nHcJ8pLz3\",\n \"fluid_locale\": \"en_US\",\n \"attribution\": {\n \"username\": \"dwight-schrute\"\n }\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fluid.app/api/public/v2025-06/settings")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"page\": {\n \"url\": \"https://shop.dundermifflin.com/products/20lb-copy-paper\",\n \"title\": \"Dunder Mifflin 20lb Copy Paper\",\n \"description\": \"Bright white 20lb multipurpose copy paper, 10 reams per case.\",\n \"image\": \"https://cdn.fluid.app/uploads/products/20lb-copy-paper/hero.jpg\"\n },\n \"metadata\": {\n \"fluid_shop\": \"dunder-mifflin.fluid.app\",\n \"fluid_session\": \"fs_7kQx9mR2vWbT4nHcJ8pLz3\",\n \"fluid_locale\": \"en_US\",\n \"attribution\": {\n \"username\": \"dwight-schrute\"\n }\n }\n}"
response = http.request(request)
puts response.read_body{
"status": 201,
"settings": {
"shop": {
"name": "Dunder Mifflin Paper Company",
"primary_color": "#1F4E8C",
"secondary_color": "#F5F3EE",
"logo_url": "https://cdn.fluid.app/uploads/companies/1405/logo.png",
"icon_url": "https://cdn.fluid.app/uploads/companies/1405/icon.png",
"countries": [
"US",
"CA"
],
"languages": [
"en",
"es"
]
},
"cart": {
"token": "ct_4mW8hTq2ZkP9vRnB6xYs1c"
},
"scripts": [
{
"id": "cart-widget",
"src": "https://assets.fluid.app/scripts/fluid-sdk/latest/web-widgets/cart.js",
"data": {}
},
{
"id": "chat-widget",
"src": "https://assets.fluid.app/scripts/fluid-sdk/latest/web-widgets/chat.js",
"data": {}
}
],
"affiliate": {
"name": "Dwight Schrute",
"email": "dwight.schrute@dundermifflin.com",
"image_url": "https://cdn.fluid.app/uploads/users/48213/avatar.jpg",
"username": "dwight-schrute",
"external_id": "DM-REP-1042",
"fluid_rep_id": 48213
},
"attribution": {
"username": "dwight-schrute"
}
},
"metadata": {
"fluid_shop": "dunder-mifflin.fluid.app",
"fluid_session": "fs_7kQx9mR2vWbT4nHcJ8pLz3",
"fluid_locale": "en_US",
"request_uuid": "5e7a1c38-2f9b-4d06-b8c4-3a1e6d9f2b70",
"timestamp": "2026-09-14T15:30:10Z"
}
}