List the company's Meta catalog listings
Lists every Meta catalog listing on the company’s Meta connection, newest first, including drafts, failed publishes, and deleted rows. Each listing carries its publish status, the rolled-up audit_status, and the raw per-surface review values, so you can see why a product is not showing on Facebook, Instagram, or WhatsApp. Requires a company admin Bearer token with the products.view permission. Cursor-paginated: pass page[limit] (default 25, max 100) and follow meta.pagination.next_cursor with page[cursor]. Returns 404 when the company has never connected Meta.
curl --request GET \
--url https://api.fluid.app/api/v202506/meta/catalog_listings \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.fluid.app/api/v202506/meta/catalog_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/meta/catalog_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/meta/catalog_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/meta/catalog_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/meta/catalog_listings")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fluid.app/api/v202506/meta/catalog_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{
"catalog_listings": [
{
"id": 90412,
"product_id": 48213,
"product_retailer_id": "01923f4a-7c2e-7b91-a5d3-6e8f0b4c2a17",
"marketplace_review_status": null,
"shops_review_status": "approved",
"whatsapp_review_status": "approved",
"instagram_review_status": "approved",
"status": "active",
"audit_status": "approved",
"last_published_at": "2026-09-15T10:04:12Z",
"last_synced_at": "2026-09-29T06:30:00Z",
"last_error": null
},
{
"id": 90407,
"product_id": 48219,
"product_retailer_id": "01923f4a-6b1d-7a80-94c2-5d7e9a3b1f06",
"marketplace_review_status": null,
"shops_review_status": "pending",
"whatsapp_review_status": "pending",
"instagram_review_status": "pending",
"status": "pending",
"audit_status": "auditing",
"last_published_at": "2026-09-15T10:04:12Z",
"last_synced_at": null,
"last_error": null
}
],
"status": 200,
"meta": {
"request_id": "7c3a9e51-4b2d-4f86-a0e7-2d9b6f1c8a35",
"timestamp": "2026-09-30T14:18:44Z",
"pagination": {
"cursor": "eyJjcmVhdGVkX2F0IjoiMjAyNi0wOS0xNVQxMDowMToyMloiLCJpZCI6OTA0MTJ9",
"limit": 25,
"prev_cursor": null,
"next_cursor": "eyJjcmVhdGVkX2F0IjoiMjAyNi0wOS0xNFQxNzo0MjowOVoiLCJpZCI6OTA0MDd9"
}
}
}{
"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
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Query Parameters
Cursor token for pagination (from meta.pagination in the response).
Number of records per page (max 100).
1 <= x <= 100curl --request GET \
--url https://api.fluid.app/api/v202506/meta/catalog_listings \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.fluid.app/api/v202506/meta/catalog_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/meta/catalog_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/meta/catalog_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/meta/catalog_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/meta/catalog_listings")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.fluid.app/api/v202506/meta/catalog_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{
"catalog_listings": [
{
"id": 90412,
"product_id": 48213,
"product_retailer_id": "01923f4a-7c2e-7b91-a5d3-6e8f0b4c2a17",
"marketplace_review_status": null,
"shops_review_status": "approved",
"whatsapp_review_status": "approved",
"instagram_review_status": "approved",
"status": "active",
"audit_status": "approved",
"last_published_at": "2026-09-15T10:04:12Z",
"last_synced_at": "2026-09-29T06:30:00Z",
"last_error": null
},
{
"id": 90407,
"product_id": 48219,
"product_retailer_id": "01923f4a-6b1d-7a80-94c2-5d7e9a3b1f06",
"marketplace_review_status": null,
"shops_review_status": "pending",
"whatsapp_review_status": "pending",
"instagram_review_status": "pending",
"status": "pending",
"audit_status": "auditing",
"last_published_at": "2026-09-15T10:04:12Z",
"last_synced_at": null,
"last_error": null
}
],
"status": 200,
"meta": {
"request_id": "7c3a9e51-4b2d-4f86-a0e7-2d9b6f1c8a35",
"timestamp": "2026-09-30T14:18:44Z",
"pagination": {
"cursor": "eyJjcmVhdGVkX2F0IjoiMjAyNi0wOS0xNVQxMDowMToyMloiLCJpZCI6OTA0MTJ9",
"limit": 25,
"prev_cursor": null,
"next_cursor": "eyJjcmVhdGVkX2F0IjoiMjAyNi0wOS0xNFQxNzo0MjowOVoiLCJpZCI6OTA0MDd9"
}
}
}{
"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
}
}
}