Shelf
L’objet Shelf item
Attributs
objectstringshelf_itemidstringThe product (
prod_…) or the establishment (loc_…).kindenumWhat a line of the shelf is: a catalogue product (an offer for a SaaS brand — the word changes, not the object) or an establishment of a local brand.
Valeurs possibles :
product·locationtitlestringcategorystringnullableThe product's category — the city of an establishment.
image_urlstringnullablepricestringnullableDecimal string, in
currency.currencystringnullableurlstringnullablestateenumThe state of one line of the shelf of the home — a product (an establishment for a local brand) as the assistants treat it on a market. Decided by Visibility\Services\ShelfStateJudge alone, never by the front; the thresholds live in
config('skoup.visibility.shelf'). | | |---| |error<br/> « Une IA se trompe »: an open alert on it, or a false verdict of its perception. | |absent<br/> « Absent »: its queries were asked, no answer named it. | |reinforce<br/> « À renforcer »: cited, but a differentiator does not come through or its perception is weak. | |good<br/> « Bien cité ». | |unmeasured<br/> « Pas encore mesuré »: no answer on its queries over the period. |Valeurs possibles :
error·absent·reinforce·good·unmeasuredstate_reasonobjectAfficher les attributs enfants
kindenumnullableWhy a line of the shelf is in its state — the short reason the front words (« Prix faux · ChatGPT », « Absent · 6 requêtes », « À renforcer · USP absente »). A good or unmeasured line has none. | | |---| |
alert<br/> An open alert on the product / establishment (price, stock, invented spec, local fact). | |perception_false<br/> A perception gap judged false (a spec, the price…) not carried by an alert. | |never_cited<br/> Its queries were asked, no answer named it. | |usp_absent<br/> A differentiator of its sheet missing from too many of the answers. | |weak_perception<br/> Its perception score is under the threshold. |Valeurs possibles :
alert·perception_false·never_cited·usp_absent·weak_perceptionmodelstringnullablealert_kindstringnullableelementstringnullablelabelstringnullablecountintegernullableOccurrences of the alert · answers of the false verdict · queries never citing it · differentiators absent · the weak score.
sharenumbernullableShare of the answers to its queries naming it over the period, in %, every measured model.
null= never measured, never 0.deltanumbernullablePoints gained or lost between the last two weekly cycles, every measured model.
nullwithout a previous cycle.by_modelarray of objectAfficher les attributs enfants
modelstringrunsintegerhitsintegerpositionnumbernullable
trendarray of objectAfficher les attributs enfants
week_starts_onstringby_modelarray of objectAfficher les attributs enfants
modelstringrunsintegerhitsinteger
prompt_countintegerleaderobjectnullableThe competitor recommended first most often on its queries.
Afficher les attributs enfants
namestringbrand_namestring
perception_scoreintegernullableConforming ÷ verdicts, 0–100;
nullbefore enough judged answers.ai_revenueobjectnullablenullwithout store orders.Afficher les attributs enfants
amountnumbercurrencystringordersinteger
open_fixesintegerIts open lines in the inbox.
livemodebooleantruepour les données réelles,falsepour le bac à sable du mode test.
{
"object": "shelf_item",
"id": "prod_5ZbXo1Z0hYV8sQnA3x1m2c",
"kind": "product",
"title": "Grizl CF SL 7",
"category": "string",
"image_url": "string",
"price": "string",
"currency": "EUR",
"url": "https://hooks.example.com/skoup",
"state": "error",
"state_reason": {
"kind": "alert",
"model": "string",
"alert_kind": "string",
"element": "string",
"label": "string",
"count": 12
},
"share": 27.5,
"delta": 27.5,
"by_model": [
{
"model": "string",
"runs": 12,
"hits": 12,
"position": 27.5
}
],
"trend": [
{
"week_starts_on": "2026-09-21",
"by_model": [
{
"model": "string",
"runs": 12,
"hits": 12
}
]
}
],
"prompt_count": 12,
"leader": {
"name": "Nordvelo",
"brand_name": "string"
},
"perception_score": 12,
"ai_revenue": {
"amount": 27.5,
"currency": "EUR",
"orders": 12
},
"open_fixes": 12,
"livemode": true
}List the shelf
GET/v1/brands/{brand}/shelf
Every tracked product of the brand on a market — every establishment for a local brand — with how the AI assistants treat it, in the order to look at them: the products an assistant gets wrong first, then the absent ones, the ones to reinforce, the unmeasured, the good; inside a state, the AI revenue then the share. The home screen of the app. Before the first completed sampling of the market, the list is empty.
Paramètres
brandstringobligatoireBrand id (
br_…).limitstringstarting_afterstringCurseur : l'
iddu dernier objet de la page précédente.
Retour
Un dictionnaire dont la propriété data contient jusqu’à limit objets shelf_item, du plus récent au plus ancien, et has_more indique s’il reste une page. Lève une erreur en cas de problème.
curl
curl https://api.skoup.ai/v1/brands/br_034CyfRFSXUqzrbzV6MAfZ/shelf?limit=3 \
-H "Authorization: Bearer skoup_test_4eC39HqLyjWDarjtT1zdp7dc"{
"object": "list",
"url": "/v1/brands/br_034CyfRFSXUqzrbzV6MAfZ/shelf",
"has_more": false,
"data": [
{
"object": "shelf_item",
"id": "prod_5ZbXo1Z0hYV8sQnA3x1m2c",
"kind": "product",
"title": "Grizl CF SL 7",
"category": "string",
"image_url": "string",
"price": "string",
"currency": "EUR",
"url": "https://hooks.example.com/skoup",
"state": "error",
"state_reason": {
"kind": "alert",
"model": "string",
"alert_kind": "string",
"element": "string",
"label": "string",
"count": 12
},
"share": 27.5,
"delta": 27.5,
"by_model": [
{
"model": "string",
"runs": 12,
"hits": 12,
"position": 27.5
}
],
"trend": [
{
"week_starts_on": "2026-09-21",
"by_model": [
{
"model": "string",
"runs": 12,
"hits": 12
}
]
}
],
"prompt_count": 12,
"leader": {
"name": "Nordvelo",
"brand_name": "string"
},
"perception_score": 12,
"ai_revenue": {
"amount": 27.5,
"currency": "EUR",
"orders": 12
},
"open_fixes": 12,
"livemode": true
}
]
}