Úvod
API vracia štatistiky SmartBoxu vo vašom e-shope: to, čo vidíte v prehľade na smartbox.ragnetiq.com, a navyše každú jednotlivú otázku zákazníka, odpoveď SmartBoxu a každú objednávku, ktorá sa SmartBoxu pripísala. Dáta sú vaše: môžete si ich stiahnuť do vlastného reportingu, dátového skladu alebo BI nástroja.
Základná adresa je https://smartbox.ragnetiq.com/api/stats/v1. Všetky odpovede sú JSON v UTF-8, časy záznamov sú ISO 8601 v UTC. Požiadavky sú iba GET; API nič nemení.
- Kľúč pokrýva celé obchody alebo len vybrané trhy (jazykové mutácie, napríklad slovenskú a českú doménu obchodu) – podľa toho, čo s nami dohodnete.
- Obdobie si vyberáte parametrami
fromato, najviac 366 dní naraz. Dni sa počítajú v časovom pásmeEurope/Bratislava, rovnako ako v administrácii. - Agregované prehľady (
/summary,/products) sú rovnaké čísla ako v administrácii; surové dáta (/events,/orders) obsahujú všetko, čo sa zaznamenalo. - Neukladáme osobné údaje zákazníkov: identifikátory návštevníka a relácie sú náhodné a e-maily či telefónne čísla v otázkach a odpovediach sú nahradené
[e-mail]a[telefón].
Autentifikácia
Kľúč vám vystaví Ragnetiq. Má tvar sb_ a 64 hexadecimálnych znakov. Posielajte ho v hlavičke Authorization pri každej požiadavke:
Authorization: Bearer sb_9f2c1a7e…Kľúč je tajný ako heslo. Používajte ho len zo servera (cron, backend, ETL), nikdy nie v prehliadači ani v mobilnej aplikácii. Ak unikne, napíšte nám: starý kľúč odvoláme a vystavíme nový; odvolaný kľúč prestane fungovať okamžite.
Neplatný, chýbajúci alebo odvolaný kľúč dostane odpoveď 401 unauthorized. Kľúč, ktorý nemá prístup k požadovanému obchodu alebo trhu, dostane 403 forbidden.
Pravidlá spoločné pre všetky API Ragnetiq (kľúče, stránkovanie, limity, chyby, verzie) sú aj na jednej stránke: Základy API.
Spoločné parametre a pravidlá
Parametre v adrese
| Parameter | Hodnota | Význam |
|---|---|---|
shop | id obchodu, voliteľný | Obmedzí dáta na jeden alebo viac obchodov: ?shop=a, ?shop=a&shop=b alebo ?shop=a,b. Bez parametra dostanete všetky obchody kľúča spolu. Id nájdete v /shops. |
market | doména trhu, voliteľný | Obmedzí dáta na jednu alebo viac jazykových mutácií: ?market=demo-shop.cz. Domény trhov nájdete v /shops. Dá sa kombinovať so shop. |
from | YYYY-MM-DD, voliteľný | Prvý deň obdobia (vrátane). Predvolene 29 dní pred to. |
to | YYYY-MM-DD, voliteľný | Posledný deň obdobia (vrátane). Predvolene dnes. Obdobie môže mať najviac 366 dní. |
after, limit | celé čísla | Stránkovanie surových dát, pozri nižšie. |
Deň začína a končí o polnoci v Bratislave (Europe/Bratislava), rovnako ako v administrácii; každá odpoveď to uvádza v poli timezone. Tržby v rôznych menách sa nikdy nesčítavajú, sú rozdelené podľa meny.
Stránkovanie
/events a /orders vracajú najviac 1 000 záznamov naraz, zoradených od najstaršieho. Odpoveď obsahuje next: id posledného záznamu strany, alebo null, keď už ďalšia strana nie je. Ďalšiu stranu si vyžiadate parametrom after=<next>. Veľkosť strany určuje limit (1 – 1 000, predvolene 1 000).
Id záznamov sú stále a rastú s časom, takže after môžete použiť aj na prírastkové sťahovanie: zapamätajte si posledné id a nabudúce začnite od neho.
Limity
- Najviac 120 požiadaviek za minútu na jeden kľúč; pri prekročení dostanete
429 rate_limited. - Obdobie najviac 366 dní; dlhšiu históriu stiahnete po častiach.
- Dáta sú dostupné do niekoľkých sekúnd po tom, čo sa udalosť stala, takže čísla za dnešný deň sa priebežne menia. Pre uzavreté čísla sťahujte včerajší deň a staršie.
Chyby
Chybová odpoveď má vždy rovnaký tvar: HTTP stavový kód, pole error so strojovým kódom a message s vysvetlením.
HTTP/1.1 403 Forbidden
Content-Type: application/json; charset=utf-8
{ "error": "forbidden", "message": "Kľúč nemá prístup k trhu demo-shop.cz." }| HTTP | error | Kedy |
|---|---|---|
| 400 | invalid_period | from/to nie sú dátumy, to je pred from, alebo obdobie presahuje 366 dní. |
| 400 | invalid_shop, invalid_market, invalid_param | Nesprávny tvar parametra shop, market, after, limit alebo kind, prípadne trh, ktorý nepatrí k vybraným obchodom. |
| 401 | unauthorized | Chýbajúci, neplatný alebo odvolaný kľúč. |
| 403 | forbidden | Kľúč nepokrýva niektorý z obchodov v shop alebo trhov v market. |
| 429 | rate_limited | Viac ako 120 požiadaviek za minútu. Počkajte a skúste znova. |
| 502, 503 | upstream, unavailable | Dočasný výpadok na našej strane. Zopakujte požiadavku neskôr. |
Obchody a trhy
Obchody a ich trhy, ku ktorým má kľúč prístup. id obchodu používate v parametri shop, website trhu v parametri market; obe nájdete aj pri každom zázname v surových dátach (shop, market).
curl "https://smartbox.ragnetiq.com/api/stats/v1/shops" \
-H "Authorization: Bearer sb_VAS_KLUC"{
"shops": [
{
"id": "demo-shop",
"name": "Demo Shop",
"platform": "upgates",
"access": "shop",
"markets": [
{ "website": "demo-shop.sk", "language": "sk", "currency": "EUR" },
{ "website": "demo-shop.cz", "language": "cs", "currency": "CZK" }
]
}
]
}| Pole | Typ | Význam |
|---|---|---|
id, name | text | Id a názov obchodu. |
platform | text | Platforma e-shopu (upgates, shoptet, eshop_rychle, custom). |
access | text | shop = kľúč pokrýva celý obchod, aj trhy pridané neskôr; markets = iba trhy uvedené v markets. |
markets | pole | Trhy (jazykové mutácie), ktoré kľúč vidí: website (doména trhu), language, currency. Obchod s jednou doménou má jeden trh. |
Súhrn
Čísla z prehľadu v administrácii: súčty za obdobie, to isté za rovnako dlhé predchádzajúce obdobie (na porovnanie), hodnoty po dňoch, lievik od otázky k objednávke, rozdelenie podľa trhov a najčastejšie predvolené otázky.
curl "https://smartbox.ragnetiq.com/api/stats/v1/summary?shop=demo-shop&from=2026-10-01&to=2026-10-15" \
-H "Authorization: Bearer sb_VAS_KLUC"{
"shops": ["demo-shop"],
"markets": null,
"from": "2026-10-01",
"to": "2026-10-15",
"timezone": "Europe/Bratislava",
"totals": {
"users": 805,
"interactions": 1714,
"chip_clicks": 1623,
"custom_inputs": 91,
"answers": 1702,
"products": 383,
"returning_users": 412,
"custom_users": 74,
"orders": 139,
"direct_orders": 100,
"assisted_orders": 39,
"converted_users": 137,
"user_conversion_rate": 0.1702,
"direct_conversion_rate": 0.1242,
"revenue": [
{ "currency": "EUR", "total": 5314.2, "direct": 4102.9, "orders": 112, "avg_order": 47.45 },
{ "currency": "CZK", "total": 27838, "direct": 21390, "orders": 27, "avg_order": 1031.04 }
]
},
"previous": { "from": "2026-09-16", "to": "2026-09-30", "users": 731, "…": "…" },
"daily": [
{ "day": "2026-10-01", "users": 54, "interactions": 117, "direct_orders": 7, "assisted_orders": 2 },
{ "day": "2026-10-02", "users": 49, "interactions": 98, "direct_orders": 5, "assisted_orders": 3 }
],
"funnel": { "users": 805, "answered": 798, "ordered": 136, "direct": 99 },
"markets": [
{ "market": "demo-shop.cz", "users": 160, "interactions": 331, "custom_inputs": 17, "orders": 27, "direct_orders": 19,
"conversion_rate": 0.1625, "currency": "CZK", "revenue": 27838, "avg_order": 1031.04 },
{ "market": "demo-shop.sk", "users": 645, "interactions": 1383, "custom_inputs": 74, "orders": 112, "direct_orders": 81,
"conversion_rate": 0.1721, "currency": "EUR", "revenue": 5314.2, "avg_order": 47.45 }
],
"top_questions": [
{ "question": "Ako sa používa?", "clicks": 412 },
{ "question": "Je vhodný pre deti?", "clicks": 198 }
]
}totals a previous
| Pole | Typ | Význam |
|---|---|---|
users | číslo | Rôzni návštevníci, ktorí v SmartBoxe klikli na otázku alebo napísali vlastnú. |
interactions | číslo | Všetky otázky: chip_clicks (klik na predvolenú otázku) + custom_inputs (vlastná otázka). |
answers | číslo | Odpovede, ktoré SmartBox vygeneroval. |
products | číslo | Rôzne produkty, na ktoré sa zákazníci pýtali. |
returning_users | číslo | Návštevníci s 2 a viac otázkami. |
custom_users | číslo | Návštevníci, ktorí položili aspoň jednu vlastnú otázku. |
orders | číslo | Objednávky pripísané SmartBoxu: zákazník v tom istom prehliadači do 30 dní pred objednávkou použil SmartBox. Každá objednávka sa počíta raz. |
direct_orders | číslo | Priame objednávky: zákazník objednal produkt, na ktorý sa pýtal. |
assisted_orders | číslo | Asistované objednávky: po použití SmartBoxu objednal iný produkt. |
converted_users | číslo | Návštevníci SmartBoxu, ktorí objednali. |
user_conversion_rate, direct_conversion_rate | číslo 0 – 1 | converted_users / users, resp. podiel návštevníkov s priamou objednávkou. |
revenue | pole | Hodnota objednávok po menách: currency, total, direct (z priamych objednávok), orders, avg_order. |
previous má tie isté polia a navyše from a to predchádzajúceho obdobia.
daily
Jeden záznam pre každý deň obdobia (aj s nulami): day (YYYY-MM-DD), users, interactions, direct_orders, assisted_orders.
funnel
Lievik návštevníkov: users použili SmartBox → answered dostali odpoveď → ordered z nich objednali → direct objednali produkt, na ktorý sa pýtali.
markets
To isté po trhoch (doménach): market, users, interactions, custom_inputs, orders, direct_orders, conversion_rate, currency, revenue, avg_order.
top_questions
Najviac 50 predvolených otázok s najväčším počtom klikov: question, clicks.
Produkty
Najviac 100 produktov, na ktoré sa zákazníci v SmartBoxe pýtali, zoradených podľa počtu otázok.
curl "https://smartbox.ragnetiq.com/api/stats/v1/products?market=demo-shop.sk" \
-H "Authorization: Bearer sb_VAS_KLUC"{
"shops": null,
"markets": ["demo-shop.sk"],
"from": "2026-09-16",
"to": "2026-10-15",
"timezone": "Europe/Bratislava",
"products": [
{ "product_id": "1042", "market": "demo-shop.sk", "name": "Bylinný čaj 100 g", "interactions": 96, "chip_clicks": 90,
"custom_inputs": 6, "users": 51, "ordered_users": 11, "conversion_rate": 0.2157 }
]
}| Pole | Typ | Význam |
|---|---|---|
product_id | text | Identifikátor produktu vo vašej platforme (id alebo kód), takže si ho viete spojiť s vlastným katalógom. |
market | text | Trh, na ktorom sa na produkt prvýkrát v období pýtali. |
name | text | Názov produktu (bez variantu). |
interactions, chip_clicks, custom_inputs | číslo | Počet otázok k produktu, z toho predvolené a vlastné. |
users | číslo | Rôzni návštevníci, ktorí sa na produkt pýtali. |
ordered_users, conversion_rate | číslo | Koľkí z nich si tento produkt objednali (priama objednávka) a aký je to podiel z users. |
Otázky a odpovede (surové dáta)
Každá zaznamenaná interakcia so SmartBoxom, od najstaršej, po stranách: klik na predvolenú otázku, vlastná otázka a odpoveď SmartBoxu. Všetko, čo agregované prehľady počítajú, sa dá odvodiť odtiaľto a z /orders.
| Parameter | Hodnota | Význam |
|---|---|---|
kind | chip, custom, answer | Voliteľne iba jeden druh záznamu. |
after | číslo | Id posledného záznamu predchádzajúcej strany (next). Predvolene 0. |
limit | 1 – 1000 | Veľkosť strany. Predvolene 1 000. |
curl "https://smartbox.ragnetiq.com/api/stats/v1/events?from=2026-10-01&to=2026-10-15&kind=custom&limit=500" \
-H "Authorization: Bearer sb_VAS_KLUC"{
"shops": null,
"markets": null,
"from": "2026-10-01",
"to": "2026-10-15",
"timezone": "Europe/Bratislava",
"kind": null,
"items": [
{
"id": 48213,
"shop": "demo-shop",
"market": "demo-shop.sk",
"occurred_at": "2026-10-14T08:21:36.412Z",
"kind": "chip",
"visitor_id": "6f1c2d5e-…",
"session_id": "9a7b3e10-…",
"product_id": "1042",
"product_code": "CAJ-100",
"product_name": "Bylinný čaj 100 g",
"product_url": "https://demo-shop.sk/bylinny-caj-100-g",
"question": "Ako sa pripravuje?",
"answer": null,
"language": "sk",
"integration": "standalone_script"
},
{
"id": 48214,
"shop": "demo-shop",
"market": "demo-shop.sk",
"occurred_at": "2026-10-14T08:21:39.907Z",
"kind": "answer",
"visitor_id": "6f1c2d5e-…",
"session_id": "9a7b3e10-…",
"product_id": "1042",
"product_code": "CAJ-100",
"product_name": "Bylinný čaj 100 g",
"product_url": "https://demo-shop.sk/bylinny-caj-100-g",
"question": "Ako sa pripravuje?",
"answer": "Jednu lyžičku zalejte 250 ml vody s teplotou 95 °C a nechajte lúhovať 5 až 7 minút.",
"language": "sk",
"integration": "standalone_script"
}
],
"next": null
}Polia záznamu
| Pole | Typ | Význam |
|---|---|---|
id | číslo | Stále, rastúce id záznamu; slúži na stránkovanie. |
shop, market | text | Id obchodu a doména trhu. |
occurred_at | čas | Kedy sa to stalo (UTC). |
kind | text | chip klik na predvolenú otázku, custom vlastná otázka zákazníka, answer odpoveď SmartBoxu. |
visitor_id | text | null | Náhodný identifikátor prehliadača (dlhodobý). Nie je to osoba. |
session_id | text | null | Náhodný identifikátor návštevy. |
product_id, product_code, product_name, product_url | text | null | Produkt, pri ktorom sa zákazník pýtal. |
question | text | null | Otázka; e-maily a telefónne čísla sú nahradené [e-mail] a [telefón]. |
answer | text | null | Odpoveď SmartBoxu (pri kind=answer), tiež bez osobných údajov. |
language | text | null | Jazyk odpovede (sk, cs, …). |
integration | text | null | Ako je SmartBox v obchode vložený (napríklad standalone_script, upgates_addon). |
Objednávky (surové dáta)
Objednávky pripísané SmartBoxu, od najstaršej, po stranách (after, limit ako pri /events). Každá objednávka je tu raz.
curl "https://smartbox.ragnetiq.com/api/stats/v1/orders?from=2026-10-01&to=2026-10-15" \
-H "Authorization: Bearer sb_VAS_KLUC"{
"shops": null,
"markets": null,
"from": "2026-10-01",
"to": "2026-10-15",
"timezone": "Europe/Bratislava",
"items": [
{
"id": 931,
"shop": "demo-shop",
"market": "demo-shop.sk",
"occurred_at": "2026-10-14T09:02:11.055Z",
"order_id": "2026001234",
"attribution": "direct",
"value": 42.9,
"currency": "EUR",
"items": [{ "sku": "1042", "name": "Bylinný čaj 100 g", "quantity": 2 }],
"matched_count": 1,
"ordered_items_count": 3,
"interactions_count": 4,
"attribution_window_days": 30,
"visitor_id": "6f1c2d5e-…",
"session_id": "9a7b3e10-…",
"integration": "standalone_script"
}
],
"next": null
}| Pole | Typ | Význam |
|---|---|---|
id | číslo | Stále, rastúce id záznamu; slúži na stránkovanie. |
shop, market | text | Id obchodu a doména trhu. |
occurred_at | čas | Kedy bola objednávka zaznamenaná (UTC). |
order_id | text | Číslo objednávky vo vašom e-shope. |
attribution | text | direct = zákazník objednal produkt, na ktorý sa pýtal; assisted = objednal po použití SmartBoxu iný produkt. |
value, currency | číslo | null, text | null | Hodnota objednávky a jej mena. |
items | pole | Objednané produkty, na ktoré sa zákazník pýtal: [{ sku, name, quantity }]. |
matched_count, ordered_items_count | číslo | null | Počet takých produktov a počet všetkých položiek objednávky. |
interactions_count | číslo | null | Koľko otázok zákazník pred objednávkou položil. |
attribution_window_days | číslo | null | Okno pripísania v dňoch (štandardne 30). |
visitor_id, session_id | text | null | Rovnaké identifikátory ako v /events: podľa nich sa objednávka spája s otázkami. |
integration | text | null | Ako je SmartBox v obchode vložený. |
Príklady
Odporúčaný postup: raz denne (napríklad ráno) si stiahnite /summary za včerajšok pre denné reporty a /events + /orders prírastkovo od posledného id, ktoré ste spracovali. Kľúč držte v premennej prostredia, nie v kóde.
const BASE = "https://smartbox.ragnetiq.com/api/stats/v1";
const headers = { Authorization: `Bearer ${process.env.SMARTBOX_API_KEY}` };
async function get(path, params = {}) {
const url = new URL(BASE + path);
for (const [k, v] of Object.entries(params)) if (v != null) url.searchParams.set(k, String(v));
const res = await fetch(url, { headers });
if (!res.ok) throw new Error(`${res.status} ${await res.text()}`);
return res.json();
}
// súhrn za september
const summary = await get("/summary", { from: "2026-09-01", to: "2026-09-30" });
console.log(summary.totals.users, summary.totals.orders);
// všetky otázky a odpovede po stranách
let after = 0;
do {
const page = await get("/events", { from: "2026-09-01", to: "2026-09-30", after, limit: 1000 });
for (const e of page.items) store(e); // vaša logika
after = page.next;
} while (after);import os, requests
BASE = "https://smartbox.ragnetiq.com/api/stats/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['SMARTBOX_API_KEY']}"}
def get(path, **params):
r = requests.get(BASE + path, headers=HEADERS, params=params, timeout=30)
r.raise_for_status()
return r.json()
summary = get("/summary", **{"from": "2026-09-01", "to": "2026-09-30", "market": "demo-shop.cz"})
print(summary["totals"]["users"])
after = 0
while after is not None:
page = get("/orders", **{"from": "2026-09-01", "to": "2026-09-30", "after": after})
for order in page["items"]:
... # vaša logika
after = page["next"]Zmeny
| Dátum | Verzia | Zmena |
|---|---|---|
| 18. 10. 2026 | v1 | Prvé vydanie: /shops, /summary, /products, /events, /orders; kľúče na celé obchody aj jednotlivé trhy. |
Verzia je v adrese (/v1). Nové polia môžeme pridávať kedykoľvek; existujúce polia a ich význam v rámci verzie nemeníme. O prípadnej novej verzii vás vopred informujeme.