EN

API štatistík AI asistenta

Všetko, čo Ragnetiq AI asistent zaznamená o konverzáciách, odporúčaných produktoch, košíkoch a objednávkach vo vašom e-shope, ako JSON cez HTTPS.

Úvod

API vracia štatistiky AI asistenta vo vašom e-shope: to, čo vidíte v dashboarde na asistent.ragnetiq.com, a navyše každú jednotlivú konverzáciu, každý odporúčaný produkt a každú objednávku a košík, ktoré sa asistentovi pripísali. 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://asistent.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í.

Staršia adresa dashboard.ragnetiq.com presmeruje na asistent.ragnetiq.com. V API volaniach používajte novú adresu: väčšina HTTP klientov pri presmerovaní na inú doménu hlavičku Authorization zahodí a dostanete 401.

  • Kľúč patrí jednému e-shopu. Ak má obchod viac jazykových mutácií (napríklad slovenskú, českú a maďarskú doménu), kľúč pokrýva všetky alebo len vybrané – podľa toho, čo s nami dohodnete. Parametrom market si dáta zúžite na jednu mutáciu.
  • Obdobie si vyberáte parametrami from a to, najviac 366 dní naraz. Dni sa počítajú v časovom pásme Europe/Bratislava, rovnako ako v dashboarde.
  • Prehľady (/summary, /products) sú rovnaké čísla ako v dashboarde; /conversations, /orders a /carts obsahujú jednotlivé záznamy.
  • Objednávky a košíky sú dostupné, iba ak má váš e-shop zapnuté meranie konverzií (modules v /client).
  • Neukladáme osobné údaje zákazníkov: identifikátor návštevníka je náhodný a e-maily či telefónne čísla v konverzáciách sú nahradené [e-mail] a [telefón].

Autentifikácia

Kľúč vám vystaví Ragnetiq. Má tvar as_ a 64 hexadecimálnych znakov. Posielajte ho v hlavičke Authorization pri každej požiadavke:

Authorization: Bearer as_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žadovanej jazykovej mutácii, 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

ParameterHodnotaVýznam
marketdoména mutácie, voliteľnýObmedzí dáta na jednu alebo viac jazykových mutácií: ?market=demo-shop.cz, ?market=a&market=b alebo ?market=a,b. Bez parametra dostanete všetky mutácie kľúča spolu. Domény nájdete v /client.
fromYYYY-MM-DD, voliteľnýPrvý deň obdobia (vrátane). Predvolene 29 dní pred to.
toYYYY-MM-DD, voliteľnýPosledný deň obdobia (vrátane). Predvolene dnes. Obdobie môže mať najviac 366 dní.
after, limitkurzor, celé čísloStránkovanie konverzácií, 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 sú v mene, ktorú uvádza pole currency.

Stránkovanie

/conversations vracia najviac 200 konverzácií naraz, zoradených od najstaršej. Odpoveď obsahuje next: kurzor za poslednou konverzáciou strany, alebo null, keď už ďalšia strana nie je. Ďalšiu stranu si vyžiadate parametrom after=<next> s rovnakým from, to a market. Veľkosť strany určuje limit (1 – 200, predvolene 100).

Kurzor je nepriehľadný text: neskladajte ho sami, iba ho pošlite späť. Konverzácie majú stále id, takže pri prírastkovom sťahovaní si môžete duplicity jednoducho vyradiť. /products, /orders a /carts vracajú celé obdobie naraz.

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 mutácii demo-shop.cz." }
HTTPerrorKedy
400invalid_periodfrom/to nie sú dátumy, to je pred from, alebo obdobie presahuje 366 dní.
400invalid_market, invalid_paramNesprávny tvar parametra market, after alebo limit.
401unauthorizedChýbajúci, neplatný alebo odvolaný kľúč.
403forbiddenKľúč nepokrýva niektorú z mutácií v market, alebo module_disabled: e-shop nemá zapnuté meranie objednávok či košíkov.
429rate_limitedViac ako 120 požiadaviek za minútu. Počkajte a skúste znova.
502, 503upstream, unavailableDočasný výpadok na našej strane. Zopakujte požiadavku neskôr.

E-shop a mutácie

GET/api/stats/v1/client

E-shop, ku ktorému kľúč patrí, jeho jazykové mutácie, ktoré kľúč vidí, a zapnuté moduly. Doménu z market používate v parametri market; je aj pri každej konverzácii.

curl "https://asistent.ragnetiq.com/api/stats/v1/client" \
  -H "Authorization: Bearer as_VAS_KLUC"
Odpoveď
{
  "client": "Demo Shop",
  "access": "client",
  "markets": [
    { "market": "demo-shop.sk", "country": "Slovensko" },
    { "market": "demo-shop.cz", "country": "Česko" }
  ],
  "modules": { "orders": true, "carts": true }
}
PoleTypVýznam
clienttextNázov e-shopu.
accesstextclient = kľúč pokrýva celý e-shop, aj mutácie pridané neskôr; markets = iba mutácie uvedené v markets.
marketspoleJazykové mutácie, ktoré kľúč vidí: market (doména), country (krajina podľa domény). E-shop s jednou doménou má jednu mutáciu.
modulesobjektorders, carts: či má e-shop zapnuté meranie objednávok a košíkov z chatu. Bez modulu vracajú /orders a /carts chybu 403 module_disabled.

Súhrn

GET/api/stats/v1/summary

Čísla z dashboardu: súčty za obdobie, to isté za rovnako dlhé predchádzajúce obdobie (na porovnanie), lievik od konverzácie k objednávke, objednávky a košíky z chatu, hodnoty po dňoch a rozdelenie podľa jazykových mutácií.

curl "https://asistent.ragnetiq.com/api/stats/v1/summary?from=2026-10-01&to=2026-10-15" \
  -H "Authorization: Bearer as_VAS_KLUC"
Odpoveď (skrátená)
{
  "client": "Demo Shop",
  "markets": null,
  "from": "2026-10-01",
  "to": "2026-10-15",
  "timezone": "Europe/Bratislava",
  "totals": {
    "sessions": 1028,
    "users": 846,
    "returning_users": 131,
    "messages": 3410,
    "recommendation_sessions": 612,
    "click_sessions": 247,
    "click_rate": 0.2403,
    "emails": 58,
    "email_rate": 0.0564,
    "avg_duration_seconds": 214,
    "total_duration_seconds": 198732,
    "support_savings_eur": 6063
  },
  "previous": { "from": "2026-09-16", "to": "2026-09-30", "sessions": 964, "…": "…" },
  "funnel": { "sessions": 1028, "recommendation_sessions": 612, "click_sessions": 247, "carts": 91, "orders": 52 },
  "orders": { "count": 52, "revenue": 3184.6, "currency": "EUR", "previous": { "count": 47, "revenue": 2911.2, "currency": "EUR" } },
  "carts": { "count": 91, "revenue": 0, "currency": "EUR", "previous": { "count": 85, "revenue": 0, "currency": "EUR" } },
  "daily": [
    { "day": "2026-10-01", "sessions": 71, "click_sessions": 17, "emails": 4 },
    { "day": "2026-10-02", "sessions": 64, "click_sessions": 15, "emails": 3 }
  ],
  "markets": [
    { "market": "demo-shop.sk", "country": "Slovensko", "sessions": 804, "users": 661, "messages": 2671,
      "click_sessions": 196, "click_rate": 0.2438, "emails": 47 },
    { "market": "demo-shop.cz", "country": "Česko", "sessions": 224, "users": 185, "messages": 739,
      "click_sessions": 51, "click_rate": 0.2277, "emails": 11 }
  ]
}

totals a previous

PoleTypVýznam
sessionsčísloKonverzácie (relácie) s asistentom.
usersčísloRôzni návštevníci; returning_users z nich mali 2 a viac konverzácií.
messagesčísloSprávy, ktoré napísali zákazníci.
recommendation_sessionsčísloKonverzácie, v ktorých asistent odporučil produkt.
click_sessions, click_ratečíslo, číslo 0 – 1Konverzácie s preklikom na odporúčaný produkt a ich podiel zo sessions.
emails, email_ratečíslo, číslo 0 – 1Konverzácie, v ktorých zákazník nechal e-mail (napríklad pre podporu), a ich podiel.
avg_duration_seconds, total_duration_secondsčísloPriemerná dĺžka konverzácie a čas vo všetkých konverzáciách spolu.
support_savings_eurčísloOdhad úspory na podpore: konverzácia bez e-mailu = 15 minút práce podpory po 25 € za hodinu.

previous má tie isté polia a navyše from a to predchádzajúceho obdobia.

funnel

Lievik: sessions → recommendation_sessions dostali odporúčanie → click_sessions preklikli na produkt → carts pridali do košíka → orders objednali. carts a orders sú null, ak e-shop nemá daný modul.

orders a carts

Objednávky a košíky pripísané asistentovi: count, revenue, currency a to isté v previous. Celé pole je null, ak e-shop nemá daný modul. Jednotlivé záznamy vracajú /orders a /carts.

daily

Jeden záznam pre každý deň obdobia (aj s nulami): day (YYYY-MM-DD), sessions, click_sessions, emails.

markets

To isté po jazykových mutáciách: market, country, sessions, users, messages, click_sessions, click_rate, emails.

Konverzácie

GET/api/stats/v1/conversations

Každá konverzácia s asistentom aj s celým priebehom, od najstaršej, po stranách. Všetko, čo /summary počíta o konverzáciách, sa dá odvodiť odtiaľto.

ParameterHodnotaVýznam
aftertextKurzor next z predchádzajúcej strany. Bez neho prvá strana.
limit1 – 200Veľkosť strany. Predvolene 100.
curl "https://asistent.ragnetiq.com/api/stats/v1/conversations?market=demo-shop.cz&from=2026-10-01&to=2026-10-15&limit=200" \
  -H "Authorization: Bearer as_VAS_KLUC"
Odpoveď (skrátená)
{
  "client": "Demo Shop",
  "markets": ["demo-shop.cz"],
  "from": "2026-10-01",
  "to": "2026-10-15",
  "timezone": "Europe/Bratislava",
  "items": [
    {
      "id": "3f0c5a92-6b1e-4c7d-9a10-2e8f4b6d1c55",
      "market": "demo-shop.cz",
      "started_at": "2026-10-14T08:21:36.412+00:00",
      "visitor_id": "k2v9x1m4p7q8r3s6",
      "user_messages": 3,
      "had_recommendation": true,
      "had_click": true,
      "email_submitted": false,
      "city": "Brno",
      "duration_seconds": 184,
      "feedback": "positive",
      "messages": [
        { "role": "user", "content": "Jaký čaj doporučujete na spaní?", "at": "2026-10-14T08:21:36.412Z" },
        { "role": "assistant", "content": "Na klidný spánek vyzkoušejte **Bylinný čaj 100 g** …", "at": "2026-10-14T08:21:39.907Z" }
      ]
    }
  ],
  "next": "MjAyNi0xMC0xNFQwODoyMTozNi40MTIrMDA6MDB8M2YwYzVhOTI…"
}

Polia konverzácie

PoleTypVýznam
idtextStále id konverzácie (UUID).
markettextDoména jazykovej mutácie, na ktorej konverzácia prebehla.
started_atčasZačiatok konverzácie (UTC).
visitor_idtext | nullNáhodný identifikátor prehliadača. Nie je to osoba.
user_messagesčísloPočet správ zákazníka.
had_recommendation, had_clickáno/nieAsistent odporučil produkt; zákazník preklikol na odporúčaný produkt.
email_submittedáno/nieZákazník v chate nechal e-mail (samotný e-mail API nevracia).
citytext | nullMesto podľa IP adresy, ak sa dalo určiť.
duration_secondsčísloDĺžka konverzácie.
feedbacktext | nullHodnotenie zákazníka: positive, negative alebo null.
messagespolePriebeh: role (user zákazník, assistant asistent), content, at. E-maily a telefónne čísla sú nahradené [e-mail] a [telefón].

Produkty

GET/api/stats/v1/products

Najviac 100 produktov, ktoré asistent v konverzáciách odporučil, zoradených podľa počtu odporúčaní.

curl "https://asistent.ragnetiq.com/api/stats/v1/products?from=2026-09-16&to=2026-10-15" \
  -H "Authorization: Bearer as_VAS_KLUC"
Odpoveď (skrátená)
{
  "client": "Demo Shop",
  "markets": null,
  "from": "2026-09-16",
  "to": "2026-10-15",
  "timezone": "Europe/Bratislava",
  "items": [
    { "product_id": "1042", "name": "Bylinný čaj 100 g", "url": "https://demo-shop.sk/bylinny-caj-100-g",
      "recommendations": 214, "clicks": 61, "click_rate": 0.285, "avg_position": 1.4 }
  ]
}
PoleTypVýznam
product_idtextIdentifikátor produktu z vášho feedu, takže si ho viete spojiť s vlastným katalógom.
name, urltext, text | nullNázov produktu a jeho adresa v e-shope.
recommendationsčísloKoľkokrát asistent produkt odporučil.
clicks, click_ratečíslo, číslo 0 – 1Prekliky zákazníkov na produkt a ich podiel z odporúčaní.
avg_positiončíslo | nullPriemerné poradie produktu v odporúčaní (1 = prvý).

Objednávky

GET/api/stats/v1/orders

Objednávky pripísané asistentovi za obdobie, od najstaršej, s konverzáciou, ktorá k objednávke viedla. Iba pre e-shopy so zapnutým meraním objednávok.

curl "https://asistent.ragnetiq.com/api/stats/v1/orders?from=2026-10-01&to=2026-10-15" \
  -H "Authorization: Bearer as_VAS_KLUC"
Odpoveď (skrátená)
{
  "client": "Demo Shop",
  "markets": null,
  "from": "2026-10-01",
  "to": "2026-10-15",
  "timezone": "Europe/Bratislava",
  "count": 52,
  "revenue": 3184.6,
  "currency": "EUR",
  "items": [
    {
      "id": "2026001234",
      "code": "2026001234",
      "created_at": "2026-10-14T09:02:11.055Z",
      "attribution": "direct",
      "confidence": 0.92,
      "revenue": 42.9,
      "currency": "EUR",
      "recommendation_query": "čaj na spanie",
      "recommended_product": "Bylinný čaj 100 g",
      "clicked_url": "https://demo-shop.sk/bylinny-caj-100-g",
      "minutes_from_click": 18,
      "conversation": [
        { "role": "user", "content": "Aký čaj odporúčate na spanie?", "at": "2026-10-14T08:41:02.118Z" }
      ]
    }
  ]
}
PoleTypVýznam
count, revenue, currencyčíslo, číslo, textPočet pripísaných objednávok a ich tržba spolu.
items[].id, codetext, text | nullČíslo objednávky vo vašom e-shope a jej kód, ak sa líši.
created_atčas | nullKedy bola objednávka vytvorená (UTC).
attribution, confidencetext, číslo 0 – 1Ako silno sa objednávka asistentovi pripísala (napríklad direct) a istota pripísania.
revenue, currencyčíslo, textTržba objednávky pripísaná asistentovi.
recommendation_query, recommended_product, clicked_urltext | nullNa čo sa zákazník pýtal, aký produkt dostal a kam preklikol.
minutes_from_clickčíslo | nullMinúty od prekliku po objednávku.
conversationpoleKonverzácia pred objednávkou (role, content, at), bez osobných údajov.

Košíky

GET/api/stats/v1/carts

Pridania do košíka pripísané asistentovi, v rovnakom tvare ako /orders: zákazník po konverzácii a preklike pridal produkt do košíka. Iba pre e-shopy so zapnutým meraním košíkov.

curl "https://asistent.ragnetiq.com/api/stats/v1/carts?market=demo-shop.sk&from=2026-10-01&to=2026-10-15" \
  -H "Authorization: Bearer as_VAS_KLUC"

Príklady

Odporúčaný postup: raz denne (napríklad ráno) si stiahnite /summary za včerajšok pre denné reporty a /conversations a /orders za včerajší deň do vlastného skladu. Kľúč držte v premennej prostredia, nie v kóde.

Node.js 18+ (fetch)
const BASE = "https://asistent.ragnetiq.com/api/stats/v1";
const headers = { Authorization: `Bearer ${process.env.ASSISTANT_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.sessions, summary.orders?.count);

// všetky konverzácie po stranách
let after = null;
do {
  const page = await get("/conversations", { from: "2026-09-01", to: "2026-09-30", after, limit: 200 });
  for (const c of page.items) store(c); // vaša logika
  after = page.next;
} while (after);
Python (requests)
import os, requests

BASE = "https://asistent.ragnetiq.com/api/stats/v1"
HEADERS = {"Authorization": f"Bearer {os.environ['ASSISTANT_API_KEY']}"}

def get(path, **params):
    r = requests.get(BASE + path, headers=HEADERS, params=params, timeout=60)
    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"]["sessions"])

orders = get("/orders", **{"from": "2026-09-01", "to": "2026-09-30"})
for order in orders["items"]:
    ...  # vaša logika

Zmeny

DátumVerziaZmena
25. 10. 2026v1Prvé vydanie: /client, /summary, /conversations, /products, /orders, /carts; kľúče na celý e-shop aj jednotlivé jazykové mutácie.

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.