TikTok
List the company's TikTok product listings
Lists the TikTok product listings on the company’s TikTok Shop connection, one per Fluid product selected for the shop, with TikTok’s listing status and review (audit) status side by side plus the last publish/sync times and error. Requires a company admin token with the products.view permission. Returns 404 when the company has never connected a TikTok Shop. Cursor-paginated, newest first: page[limit] defaults to 25 (max 100); pass meta.pagination.next_cursor back as page[cursor] to fetch the next page.
GET
/
api
/
v202506
/
tiktok
/
product_listings
List the company's TikTok product listings
curl --request GET \
--url https://api.fluid.app/api/v202506/tiktok/product_listings \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.fluid.app/api/v202506/tiktok/product_listings"
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/v202506/tiktok/product_listings', 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/v202506/tiktok/product_listings",
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/v202506/tiktok/product_listings"
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/v202506/tiktok/product_listings")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fluid.app/api/v202506/tiktok/product_listings")
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{
"product_listings": [
{
"id": 27418,
"tiktok_product_id": "1729587461203847291",
"product_id": 91274,
"product_title": "Hydrating Face Serum",
"tiktok_category_id": "600966",
"status": "active",
"audit_status": "approved",
"last_published_at": "2026-09-22T14:05:37.000Z",
"last_synced_at": "2026-09-29T09:12:44.000Z",
"last_error": null
},
{
"id": 27419,
"tiktok_product_id": null,
"product_id": 91288,
"product_title": "Vitamin C Brightening Cream",
"tiktok_category_id": "600966",
"status": "publish_failed",
"audit_status": null,
"last_published_at": null,
"last_synced_at": null,
"last_error": {
"type": "tiktok_error",
"description": "Main image does not meet the minimum resolution",
"details": {}
}
}
],
"status": 200,
"meta": {
"request_uuid": "8b4e2f71-3c9a-4d6e-b1f0-5a7c9e2d4b18",
"timestamp": "2026-09-30T16:42:11Z",
"pagination": {
"cursor": "eyJpZCI6NDgyMTMsImNyZWF0ZWRfYXQiOiIyMDI2LTA5LTI5In0",
"limit": 25,
"prev_cursor": null,
"next_cursor": "eyJpZCI6Mjc0MTksImNyZWF0ZWRfYXQiOiIyMDI2LTA5LTIyIn0"
}
}
}{
"message": "<string>",
"error_message": "<string>",
"errors": "<string>",
"meta": {
"request_id": "<string>",
"timestamp": "2023-11-07T05:31:56Z",
"pagination": {
"cursor": "<string>",
"limit": 123,
"prev_cursor": "<string>",
"next_cursor": "<string>",
"total_count": 123
}
}
}{
"message": "<string>",
"error": "<string>",
"error_message": "<string>",
"errors": "<string>",
"meta": {
"request_id": "<string>",
"timestamp": "2023-11-07T05:31:56Z",
"pagination": {
"cursor": "<string>",
"limit": 123,
"prev_cursor": "<string>",
"next_cursor": "<string>",
"total_count": 123
}
}
}{
"message": "<string>",
"error": "<string>",
"error_message": "<string>",
"errors": "<string>",
"meta": {
"request_id": "<string>",
"timestamp": "2023-11-07T05:31:56Z",
"pagination": {
"cursor": "<string>",
"limit": 123,
"prev_cursor": "<string>",
"next_cursor": "<string>",
"total_count": 123
}
}
}{
"message": "<string>",
"error": "<string>",
"error_message": "<string>",
"errors": "<string>",
"meta": {
"request_id": "<string>",
"timestamp": "2023-11-07T05:31:56Z",
"pagination": {
"cursor": "<string>",
"limit": 123,
"prev_cursor": "<string>",
"next_cursor": "<string>",
"total_count": 123
}
}
}Authorizations
Query Parameters
⌘I
List the company's TikTok product listings
curl --request GET \
--url https://api.fluid.app/api/v202506/tiktok/product_listings \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.fluid.app/api/v202506/tiktok/product_listings"
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/v202506/tiktok/product_listings', 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/v202506/tiktok/product_listings",
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/v202506/tiktok/product_listings"
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/v202506/tiktok/product_listings")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fluid.app/api/v202506/tiktok/product_listings")
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{
"product_listings": [
{
"id": 27418,
"tiktok_product_id": "1729587461203847291",
"product_id": 91274,
"product_title": "Hydrating Face Serum",
"tiktok_category_id": "600966",
"status": "active",
"audit_status": "approved",
"last_published_at": "2026-09-22T14:05:37.000Z",
"last_synced_at": "2026-09-29T09:12:44.000Z",
"last_error": null
},
{
"id": 27419,
"tiktok_product_id": null,
"product_id": 91288,
"product_title": "Vitamin C Brightening Cream",
"tiktok_category_id": "600966",
"status": "publish_failed",
"audit_status": null,
"last_published_at": null,
"last_synced_at": null,
"last_error": {
"type": "tiktok_error",
"description": "Main image does not meet the minimum resolution",
"details": {}
}
}
],
"status": 200,
"meta": {
"request_uuid": "8b4e2f71-3c9a-4d6e-b1f0-5a7c9e2d4b18",
"timestamp": "2026-09-30T16:42:11Z",
"pagination": {
"cursor": "eyJpZCI6NDgyMTMsImNyZWF0ZWRfYXQiOiIyMDI2LTA5LTI5In0",
"limit": 25,
"prev_cursor": null,
"next_cursor": "eyJpZCI6Mjc0MTksImNyZWF0ZWRfYXQiOiIyMDI2LTA5LTIyIn0"
}
}
}{
"message": "<string>",
"error_message": "<string>",
"errors": "<string>",
"meta": {
"request_id": "<string>",
"timestamp": "2023-11-07T05:31:56Z",
"pagination": {
"cursor": "<string>",
"limit": 123,
"prev_cursor": "<string>",
"next_cursor": "<string>",
"total_count": 123
}
}
}{
"message": "<string>",
"error": "<string>",
"error_message": "<string>",
"errors": "<string>",
"meta": {
"request_id": "<string>",
"timestamp": "2023-11-07T05:31:56Z",
"pagination": {
"cursor": "<string>",
"limit": 123,
"prev_cursor": "<string>",
"next_cursor": "<string>",
"total_count": 123
}
}
}{
"message": "<string>",
"error": "<string>",
"error_message": "<string>",
"errors": "<string>",
"meta": {
"request_id": "<string>",
"timestamp": "2023-11-07T05:31:56Z",
"pagination": {
"cursor": "<string>",
"limit": 123,
"prev_cursor": "<string>",
"next_cursor": "<string>",
"total_count": 123
}
}
}{
"message": "<string>",
"error": "<string>",
"error_message": "<string>",
"errors": "<string>",
"meta": {
"request_id": "<string>",
"timestamp": "2023-11-07T05:31:56Z",
"pagination": {
"cursor": "<string>",
"limit": 123,
"prev_cursor": "<string>",
"next_cursor": "<string>",
"total_count": 123
}
}
}