Media and playlists
Get media by slug (deprecated)
deprecated
Deprecated: use Get media by slug. Looks up the media item named by media.id (its slug or id) in the request body. Unlike Get media by slug, product prices are not resolved for a country and the call-to-action URL is not resolved for a rep. Send the shop in metadata.fluid_shop (404 when it does not resolve) and optionally a locale in metadata.fluid_locale as <language>_<COUNTRY>, for example en_US; without one the company’s default language and country are used. Translatable text is returned in that language. No authentication is required. Returns 404 when no media matches.
POST
/
api
/
public
/
v2025-06
/
media
Get media by slug (deprecated)
curl --request POST \
--url https://api.fluid.app/api/public/v2025-06/media \
--header 'Content-Type: application/json' \
--data '
{
"media": {
"id": "scranton-branch-tour"
},
"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/media"
payload = {
"media": { "id": "scranton-branch-tour" },
"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({
media: {id: 'scranton-branch-tour'},
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/media', 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/media",
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([
'media' => [
'id' => 'scranton-branch-tour'
],
'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/media"
payload := strings.NewReader("{\n \"media\": {\n \"id\": \"scranton-branch-tour\"\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/media")
.header("Content-Type", "application/json")
.body("{\n \"media\": {\n \"id\": \"scranton-branch-tour\"\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/media")
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 \"media\": {\n \"id\": \"scranton-branch-tour\"\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": 200,
"media": {
"id": 7731,
"slug": "scranton-branch-tour",
"custom_slug": true,
"title": "A tour of the Scranton branch",
"kind": "video",
"media_type": "share",
"media_format": "mp4",
"image_url": "https://cdn.fluid.app/uploads/dunder-mifflin/media/scranton-branch-tour/poster.jpg",
"video_url": "https://cdn.fluid.app/uploads/dunder-mifflin/media/scranton-branch-tour/tour.mp4",
"pdf_url": null,
"powerpoint_url": null,
"duration": 186,
"active": true,
"canonical_url": "https://shop.dundermifflin.com/home/media/scranton-branch-tour",
"description": "<p>Michael Scott walks you through the branch that sells the most paper in Pennsylvania.</p>",
"subtitles": {},
"comments_count": 12,
"settings": null,
"products": [
{
"id": 30412,
"title": "Dunder Mifflin 20lb Copy Paper",
"image_url": "https://cdn.fluid.app/uploads/dunder-mifflin/products/20lb-copy-paper/case.jpg",
"image_path": "uploads/dunder-mifflin/products/20lb-copy-paper/case.jpg",
"cv": "40.0",
"tax": "0.0",
"sku": "DM-20LB-CASE",
"metadata": {},
"external_id": null,
"canonical_url": "https://shop.dundermifflin.com/home/products/20lb-copy-paper",
"price": "54.99",
"introduction": "The paper that keeps Scranton running.",
"price_in_currency": "$54.99",
"tax_in_currency": "$0.00",
"cv_in_currency": "40.0",
"metafields": [],
"variants": [
{
"id": 91544,
"title": "Case of 10 reams",
"display_name": "Dunder Mifflin 20lb Copy Paper - Case of 10 reams",
"image_url": "https://cdn.fluid.app/uploads/dunder-mifflin/products/20lb-copy-paper/case.jpg",
"image_path": "uploads/dunder-mifflin/products/20lb-copy-paper/case.jpg",
"sku": "DM-20LB-CASE",
"primary_image": "https://cdn.fluid.app/uploads/dunder-mifflin/products/20lb-copy-paper/case.jpg",
"price": "54.99",
"price_in_currency": "$54.99",
"currency_code": "USD",
"options": [
{
"title": "Pack size",
"value": "Case of 10 reams"
}
]
}
]
}
],
"enrollment_packs": [
{
"id": 2204,
"title": "Paper Sales Starter Kit",
"status": "active",
"image_thumbnail_url": "https://cdn.fluid.app/uploads/dunder-mifflin/enrollment-packs/starter-kit/thumb.jpg"
}
]
},
"metadata": {
"fluid_shop": "dunder-mifflin.fluid.app",
"fluid_session": "fs_7kQx9mR2vWbT4nHcJ8pLz3",
"fluid_locale": "en_US",
"request_uuid": "1d8b4f62-7e3c-4a19-9f05-2c6a8e1b7d34",
"timestamp": "2026-09-14T15:30:37Z"
}
}⌘I
Get media by slug (deprecated)
curl --request POST \
--url https://api.fluid.app/api/public/v2025-06/media \
--header 'Content-Type: application/json' \
--data '
{
"media": {
"id": "scranton-branch-tour"
},
"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/media"
payload = {
"media": { "id": "scranton-branch-tour" },
"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({
media: {id: 'scranton-branch-tour'},
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/media', 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/media",
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([
'media' => [
'id' => 'scranton-branch-tour'
],
'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/media"
payload := strings.NewReader("{\n \"media\": {\n \"id\": \"scranton-branch-tour\"\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/media")
.header("Content-Type", "application/json")
.body("{\n \"media\": {\n \"id\": \"scranton-branch-tour\"\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/media")
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 \"media\": {\n \"id\": \"scranton-branch-tour\"\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": 200,
"media": {
"id": 7731,
"slug": "scranton-branch-tour",
"custom_slug": true,
"title": "A tour of the Scranton branch",
"kind": "video",
"media_type": "share",
"media_format": "mp4",
"image_url": "https://cdn.fluid.app/uploads/dunder-mifflin/media/scranton-branch-tour/poster.jpg",
"video_url": "https://cdn.fluid.app/uploads/dunder-mifflin/media/scranton-branch-tour/tour.mp4",
"pdf_url": null,
"powerpoint_url": null,
"duration": 186,
"active": true,
"canonical_url": "https://shop.dundermifflin.com/home/media/scranton-branch-tour",
"description": "<p>Michael Scott walks you through the branch that sells the most paper in Pennsylvania.</p>",
"subtitles": {},
"comments_count": 12,
"settings": null,
"products": [
{
"id": 30412,
"title": "Dunder Mifflin 20lb Copy Paper",
"image_url": "https://cdn.fluid.app/uploads/dunder-mifflin/products/20lb-copy-paper/case.jpg",
"image_path": "uploads/dunder-mifflin/products/20lb-copy-paper/case.jpg",
"cv": "40.0",
"tax": "0.0",
"sku": "DM-20LB-CASE",
"metadata": {},
"external_id": null,
"canonical_url": "https://shop.dundermifflin.com/home/products/20lb-copy-paper",
"price": "54.99",
"introduction": "The paper that keeps Scranton running.",
"price_in_currency": "$54.99",
"tax_in_currency": "$0.00",
"cv_in_currency": "40.0",
"metafields": [],
"variants": [
{
"id": 91544,
"title": "Case of 10 reams",
"display_name": "Dunder Mifflin 20lb Copy Paper - Case of 10 reams",
"image_url": "https://cdn.fluid.app/uploads/dunder-mifflin/products/20lb-copy-paper/case.jpg",
"image_path": "uploads/dunder-mifflin/products/20lb-copy-paper/case.jpg",
"sku": "DM-20LB-CASE",
"primary_image": "https://cdn.fluid.app/uploads/dunder-mifflin/products/20lb-copy-paper/case.jpg",
"price": "54.99",
"price_in_currency": "$54.99",
"currency_code": "USD",
"options": [
{
"title": "Pack size",
"value": "Case of 10 reams"
}
]
}
]
}
],
"enrollment_packs": [
{
"id": 2204,
"title": "Paper Sales Starter Kit",
"status": "active",
"image_thumbnail_url": "https://cdn.fluid.app/uploads/dunder-mifflin/enrollment-packs/starter-kit/thumb.jpg"
}
]
},
"metadata": {
"fluid_shop": "dunder-mifflin.fluid.app",
"fluid_session": "fs_7kQx9mR2vWbT4nHcJ8pLz3",
"fluid_locale": "en_US",
"request_uuid": "1d8b4f62-7e3c-4a19-9f05-2c6a8e1b7d34",
"timestamp": "2026-09-14T15:30:37Z"
}
}