Sponsored Content
curl --request GET \
--url https://api.example.com/api/v1/brands/{brandId}/sponsored \
--header 'Authorization: <authorization>'import requests
url = "https://api.example.com/api/v1/brands/{brandId}/sponsored"
headers = {"Authorization": "<authorization>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<authorization>'}};
fetch('https://api.example.com/api/v1/brands/{brandId}/sponsored', 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.example.com/api/v1/brands/{brandId}/sponsored",
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: <authorization>"
],
]);
$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.example.com/api/v1/brands/{brandId}/sponsored"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<authorization>")
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.example.com/api/v1/brands/{brandId}/sponsored")
.header("Authorization", "<authorization>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/v1/brands/{brandId}/sponsored")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<authorization>'
response = http.request(request)
puts response.read_body{
"success": true,
"pagination": {
"total": 123,
"count": 123,
"limit": 123,
"offset": 123
},
"sponsored": [
{
"id": "<string>",
"advertiserName": "<string>",
"advertiserLogo": "<string>",
"productName": "<string>",
"description": "<string>",
"imageUrl": "<string>",
"position": 123,
"provider": "<string>",
"competitorRelationship": "<string>",
"prompt": "<string>",
"createdAt": "<string>"
}
]
}Insights
Sponsored Content
Sponsored placements detected in AI responses
GET
/
api
/
v1
/
brands
/
{brandId}
/
sponsored
Sponsored Content
curl --request GET \
--url https://api.example.com/api/v1/brands/{brandId}/sponsored \
--header 'Authorization: <authorization>'import requests
url = "https://api.example.com/api/v1/brands/{brandId}/sponsored"
headers = {"Authorization": "<authorization>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<authorization>'}};
fetch('https://api.example.com/api/v1/brands/{brandId}/sponsored', 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.example.com/api/v1/brands/{brandId}/sponsored",
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: <authorization>"
],
]);
$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.example.com/api/v1/brands/{brandId}/sponsored"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<authorization>")
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.example.com/api/v1/brands/{brandId}/sponsored")
.header("Authorization", "<authorization>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.example.com/api/v1/brands/{brandId}/sponsored")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<authorization>'
response = http.request(request)
puts response.read_body{
"success": true,
"pagination": {
"total": 123,
"count": 123,
"limit": 123,
"offset": 123
},
"sponsored": [
{
"id": "<string>",
"advertiserName": "<string>",
"advertiserLogo": "<string>",
"productName": "<string>",
"description": "<string>",
"imageUrl": "<string>",
"position": 123,
"provider": "<string>",
"competitorRelationship": "<string>",
"prompt": "<string>",
"createdAt": "<string>"
}
]
}Access sponsored content (ads) detected in AI responses, primarily from ChatGPT. Track which advertisers appear, what products they promote, and which prompts trigger these placements.
List Sponsored Content
string
required
Bearer token. Example:
Bearer qw-api-xxxGET /api/v1/brands/{brandId}/sponsored
Path Parameters
string
required
The unique identifier of the brand
Query Parameters
number
Number of days to include. If not specified, returns all data.
string
Start date (ISO 8601 format)
string
End date (ISO 8601 format)
string
Filter by AI provider. Supports comma-separated multi-select (e.g.,
chatgpt).string
Filter by advertiser name (case-insensitive partial match)
number
default:"50"
Maximum number of results to return (max: 100)
number
default:"0"
Number of results to skip for pagination
string
default:"createdAt"
Field to sort by:
createdAt, advertiserName, productName, positionstring
default:"desc"
Sort order:
asc or descResponse
boolean
Indicates if the request was successful
object
array
Show Sponsored content object
Show Sponsored content object
string
Sponsored content record ID
string
Name of the advertiser
string
URL of the advertiser’s logo
string
Name of the advertised product
string
Product description text
string
Product image URL
number
Position of the ad within the response (1 = first)
string
AI provider model ID
string
Relationship to your brand if advertiser is a known competitor:
SELF, DIRECT, INDIRECT, or nullstring
Original prompt that triggered this sponsored placement
string
ISO 8601 timestamp
Example Request
curl -X GET "https://www.qwairy.co/api/v1/brands/cm1234567890abcdef/sponsored?period=30&limit=10" \
-H "Authorization: Bearer qw-api-your-token-here"
Example Response
{
"success": true,
"pagination": {
"total": 24,
"count": 2,
"limit": 10,
"offset": 0
},
"sponsored": [
{
"id": "sp1",
"advertiserName": "Expedia",
"advertiserLogo": "https://bzrcdn.openai.com/expedia-logo.png",
"productName": "Cheap Flights from Chicago, IL",
"description": "Compare Cheap Flights from Chicago, Illinois. View Deals and Book Now on Expedia.",
"imageUrl": null,
"position": 1,
"provider": "chatgpt-4o",
"competitorRelationship": "DIRECT",
"prompt": "What are the best flight deals from Chicago?",
"createdAt": "2026-04-10T14:30:00Z"
},
{
"id": "sp2",
"advertiserName": "Nordstrom",
"advertiserLogo": "https://bzrcdn.openai.com/nordstrom-logo.png",
"productName": "Spring Collection Sale",
"description": "Shop the latest spring styles at Nordstrom. Free shipping and returns.",
"imageUrl": null,
"position": 1,
"provider": "chatgpt-4o",
"competitorRelationship": null,
"prompt": "Best spring fashion deals 2026",
"createdAt": "2026-04-09T09:15:00Z"
}
]
}
Error Responses
| Status | Code | Description |
|---|---|---|
| 401 | INVALID_TOKEN | Authentication failed |
| 404 | BRAND_NOT_FOUND | Brand doesn’t exist or not accessible |
⌘I

