Analytics & Reports API
Näiden vain luku -päätepisteiden avulla voit tuoda tilisi toiminnan omiin koontinäyttöihisi ja raportteihisi: viestitapahtumien määrät, krediittien kulutuksen, tekoälyn kustannukset sekä samat kaaviot ja oivallukset, jotka näkyvät sovelluksen sisäisessä koontinäytössä. Tämä opas kattaa:
- Yhteenveto — viestien määrän laskurit (lähetetyt, toimitetut, luetut, vastatut, varatut, luodut yhteystiedot, krediitit).
- Krediitit — yksityiskohtainen, sivutettu loki krediittien käytöstä summineen ja erittelyineen.
- AI-kustannukset — päiväkohtainen kooste tekoälyn käytön kustannuksista.
- Metriikkasarjat — kaavioita varten valmis aikasarja yhdelle tai useammalle metriikalle, ryhmiteltynä kampanjan, kanavan, tekoälyagentin tai numeron mukaan.
- Keskustelujen tulokset — keskustelut ajan mittaan, ryhmiteltynä niihin liitettyjen yhteystietotunnisteiden mukaan (päättävät tunnisteet, jotka agenttisi lisää).
- Keskustelukustannukset: keskimääräiset krediittikustannukset keskustelulle, jonka tekoäly hoiti yksin, verrattuna keskusteluun, johon tiimisi osallistui.
- Koontinäytön oivallukset ja Koontinäytön tekoälyoivallukset — sovelluksen sisäisen koontinäytön taustalla oleva täydellinen data, mukaan lukien tekoälyn kirjoittamat yhteenvedot.
- Entiteetin toiminta — yksittäisen yhteystiedon, sopimuksen tai tehtävän aikajana.
- Aggregoidut tapahtumalaskurit — vanha, camelCase-muotoinen Yhteenveto-versio, joka on säilytetty olemassa olevia integraatioita varten.
Jokainen tämän sivun päätepiste vaatii tarkan laajuuden (scope), ei molempia: välitä enintään yksi campaign_id (vanha) tai agent_id, jos päätepiste hyväksyy sen. Molempien lähettäminen palauttaa 400, ja tunnus, jota ei ole tililläsi, palauttaa 404 eikä 403, jotta muiden tilien tunnukset pysyvät arvaamattomina.
Vain kaksi päätepistettä suodattaa yhteystunnisteen mukaan.
tag_ids(yhdessätag_matchkanssa) huomioidaan Dashboard insights ja Aggregated event counts -kohdissa – nämä ovat ne kaksi, joita sovelluksen sisäisen hallintapaneelin Kaikki tunnisteet -suodatin käyttää. Yhteenveto, Metriikkasarjat ja Keskustelujen tulokset validoivat parametrin (virheellinen tunnusluettelo palauttaa silti400), mutta ne eivät sovella** sitä: saat takaisin koko tilin kattavat luvut ilman virheilmoitusta. Älä tulkitse suodattamatonta kokonaissummaa tunnisteella suodatetuksi.
Kaikki alla olevat polut ovat suhteessa rajapinnan perus-URL-osoitteeseen:
https://api.youraiconnector.com/v1
Jokainen pyyntö on todennettava. Katso kohdasta Todennus neljä hyväksyttyä menetelmää. Tässä olevissa esimerkeissä käytetään X-API-Key-otsikkoa (ja yhtä kyselyparametrimuotoa cURL-kutsulle).
Päivämääräväli
Kaikki kolme päätepistettä hyväksyvät samat valinnaiset päivämääräsuodattimet:
| Parametri | Kuvaus |
|---|---|
from |
Välin alku, YYYY-MM-DD, sisältäen kyseisen päivän. Oletusarvo on 30 päivää sitten. |
to |
Välin loppu, YYYY-MM-DD, sisältäen kyseisen päivän. Oletusarvo on tänään. |
Päivämäärät tulkitaan UTC-ajassa. Välin oletusarvo on viimeiset 30 päivää, ja se on rajoitettu 366 päivään — tätä laajempi väli palauttaa 400-virheen. from ei saa olla päivämäärä, joka on to-päivämäärän jälkeen.
truncated-lippu
Yhteenveto- ja Krediitit-päätepisteet rajoittavat sitä, kuinka monta tietuetta yksi pyyntö voi skannata. Jos valitsemasi väli on niin vilkas, että se saavuttaa tämän rajan, vastaus sisältää "truncated": true-arvon. Kun näet sen, luvut perustuvat osittaiseen skannaukseen — rajaa päivämääräväliäsi (tai selaa sivuja pienemmillä ikkunoilla) saadaksesi täydelliset luvut.
Huomautus: Kustannus- ja tunnusluvut sisältyvät vain niihin tekoälypyyntöihin, jotka laskutetaan omilta palveluntarjoajan API-avaimiltasi. Kun kustannusluvut on piilotettu tililtäsi, vastaus asettaa "costs_redacted": true ja kustannuskenttien arvoksi palautetaan nolla.
Viestimäärien yhteenveto
Palauttaa tilisi aggregoidut viestitapahtumien laskurit sekä välin kokonaissummina että päiväkohtaisena sarjana. Jokainen päivä välillä näkyy by_date-kohdassa — hiljaiset päivät täytetään nollilla. Voit halutessasi suodattaa tulokset yhteen kampanjaan käyttämällä campaign_id-parametria.
GET /analytics/summary
| Parametri | Pakollinen | Kuvaus |
|---|---|---|
from |
Ei | Alueen alku, YYYY-MM-DD. |
to |
Ei | Alueen loppu, YYYY-MM-DD. |
campaign_id |
Ei | Laske vain tähän kampanjaan kuuluvat tapahtumat. |
cURL
curl "https://api.youraiconnector.com/v1/analytics/summary?from=2026-05-01&to=2026-05-31&apiKey=YOUR_API_KEY"
JavaScript
const params = new URLSearchParams({ from: "2026-05-01", to: "2026-05-31" });
const res = await fetch(`https://api.youraiconnector.com/v1/analytics/summary?${params}`, {
headers: { "X-API-Key": "YOUR_API_KEY" },
});
const data = await res.json();
Python
import requests
res = requests.get(
"https://api.youraiconnector.com/v1/analytics/summary",
headers={"X-API-Key": "YOUR_API_KEY"},
params={"from": "2026-05-01", "to": "2026-05-31"},
)
data = res.json()
Vastaus
{
"success": true,
"from": "2026-05-01",
"to": "2026-05-31",
"totals": {
"total": 1240,
"sent": 800,
"delivered": 760,
"read": 540,
"replied": 210,
"booked": 35,
"contact_created": 120,
"credits_spent": 412.5,
"credits_recharged": 500
},
"by_date": [
{
"date": "2026-05-01",
"total": 40,
"sent": 25,
"delivered": 24,
"read": 18,
"replied": 7,
"booked": 1,
"contact_created": 4,
"credits_spent": 13.5,
"credits_recharged": 0
}
],
"truncated": false
}
Jokaisella by_date-kohdan merkinnällä on samat laskurikentät kuin totals-kohdassa, sekä lisäksi date.
Jos annat campaign_id-arvon, joka ei kuulu tilillesi, vastauksena on 404 ja { "success": false, "error": "Campaign not found" }.
Krediittien käyttö
Palauttaa krediittien käytön määritetyllä välillä: sivutettu luettelo yksittäisistä tietueista sekä alueen kokonaissummat ja erittelyt syyn ja kampanjan mukaan.
GET /analytics/credits
| Parametri | Pakollinen | Kuvaus |
|---|---|---|
from |
Ei | Alueen alku, YYYY-MM-DD. |
to |
Ei | Alueen loppu, YYYY-MM-DD. |
campaign_id |
Ei | Sisällytä vain tähän kampanjaan kohdistuva käyttö. |
limit |
Ei | Sivukoko records-toiminnolle, 1–100. Oletusarvo on 50. |
cursor |
Ei | Käytä edellisen sivun next_cursor-arvoa seuraavan sivun hakemiseen. |
Oikaisut vs. kulutus: Saldon muutokset, kuten bonukset, tilauksen uusimiset ja korjaukset, on jätetty pois
totals-kohdasta ja erittelyistä – ne eivät ole varsinaista kulutusta. Ne näkyvät edelleenrecords-luettelossa, merkittynä"is_adjustment": true-tunnisteella.
Kokonaissummat ja erittelyt näkyvät vain ensimmäisellä sivulla (kun cursor-arvoa ei ole annettu). Seuraavilla sivuilla totals, by_reason, by_reason_cost ja by_campaign palautetaan muodossa null – vain records-taulukko jatkuu. Tämä estää koko alueen uudelleenskannauksen jokaisen sivun kohdalla.
cURL
curl "https://api.youraiconnector.com/v1/analytics/credits?from=2026-05-01&to=2026-05-31&limit=50&apiKey=YOUR_API_KEY"
JavaScript
const params = new URLSearchParams({
from: "2026-05-01",
to: "2026-05-31",
limit: "50",
});
const res = await fetch(`https://api.youraiconnector.com/v1/analytics/credits?${params}`, {
headers: { "X-API-Key": "YOUR_API_KEY" },
});
const data = await res.json();
// To page: pass data.next_cursor as ?cursor on the next request, until it is null.
Python
import requests
res = requests.get(
"https://api.youraiconnector.com/v1/analytics/credits",
headers={"X-API-Key": "YOUR_API_KEY"},
params={"from": "2026-05-01", "to": "2026-05-31", "limit": 50},
)
data = res.json()
# To page: pass data["next_cursor"] as cursor on the next request, until it is None.
Vastaus (ensimmäinen sivu)
{
"success": true,
"from": "2026-05-01",
"to": "2026-05-31",
"totals": {
"credits_used": 412.5,
"cost_usd": 1.284512,
"records": 318
},
"by_reason": {
"AI Message": 380.0,
"Campaign Message": 32.5
},
"by_reason_cost": {
"AI Message": 1.284512,
"Campaign Message": 0
},
"by_campaign": {
"Spring Promo": 250.0,
"Reactivation": 162.5
},
"records": [
{
"id": "rec_abc123",
"amount": 1,
"timestamp": "2026-05-31T14:02:11.000Z",
"reason": "AI Message",
"is_adjustment": false,
"campaign_id": "campaign123",
"campaign_name": "Spring Promo",
"contact_id": "contact456",
"contact_name": "Jane Smith",
"credit_type": "ai",
"custom_keys_used": false,
"description": null,
"cost_usd": 0,
"input_tokens": 0,
"output_tokens": 0,
"cache_read_tokens": 0,
"cache_creation_tokens": 0,
"ai_model": null,
"request_id": null,
"is_test": false
}
],
"next_cursor": "rec_abc123",
"costs_redacted": false,
"truncated": false
}
Kenttähuomautukset:
amount— tietueesta veloitetut krediitit. Nolla, jos tietueet laskutetaan oman palveluntarjoajan API-avaimesi kautta.is_adjustment—truesaldomuutoksille (jätetty pois kokonaissummista/erittelyistä).cost_usd,input_tokens,output_tokens,cache_read_tokens,cache_creation_tokens,ai_model,request_id— täytetään vain tietueissa, jotka laskutetaan oman palveluntarjoajan API-avaimesi kautta; muussa tapauksessa nolla tainull.is_test—trueleikkikenttä-/testiajoille, joita ei koskaan laskuteta.next_cursor— seuraavan sivun kohdistin tainull, kun tietueita ei ole enää jäljellä.
Käyttösaldo
GET /users/me/credits — tilisi nykyinen saldo yhdellä kutsulla: paljonko on käytettävissä, kuukausittainen kiintiö sekä automaattisen latauksen ja alhaisen saldon asetukset. Yllä oleva luottojen käyttö on historiatietoa; tämä on nykyinen saldo. Tiimin jäsenet, jotka kutsuvat tätä, tarvitsevat laskutusoikeudet; tilin omistajan avaimella on ne aina.
curl "https://api.youraiconnector.com/v1/users/me/credits?apiKey=YOUR_API_KEY"
const res = await fetch("https://api.youraiconnector.com/v1/users/me/credits", {
headers: { "X-API-Key": "YOUR_API_KEY" },
});
const { balance } = await res.json();
Vastaus (200)
{
"success": true,
"balance": 1837.5,
"monthly_credits": 2000,
"used_this_month": null,
"auto_recharge_enabled": true,
"low_credit_threshold": null
}
| Kenttä | Merkitys |
|---|---|
balance |
Jäljellä olevat krediitit – sama luku kuin Krediitit-kortissa. |
monthly_credits |
Tilauksen kuukausittainen kiintiö tai null, jos tilillä ei ole sellaista. |
used_this_month |
Tässä kuussa käytetyt krediitit allokaatiotilille (toimiston alitili); null tavalliselle tilille – käytä siihen Krediittien käyttöä. |
auto_recharge_enabled |
Onko automaattinen lataus päällä. |
low_credit_threshold |
Saldoraja, jolla alhaisen saldon webhook laukeaa, tai null, kun oletusarvo on käytössä. |
Toimistot voivat välittää sub_account_id-parametrin lukeakseen asiakastilin saldon. Automaation sisällä Tarkista krediitit -vaihe palauttaa samat kentät.
AI-kustannusten yhteenveto
Palauttaa tilisi päivittäisen AI-kulujen yhteenvedon. Tämä lukee valmiiksi koostetut päivittäiset summat, joten se on nopea myös pitkillä aikaväleillä. Jokainen alueen päivä näkyy days-kohdassa – hiljaiset päivät täytetään nollilla.
GET /analytics/ai-cost
| Parametri | Pakollinen | Kuvaus |
|---|---|---|
from |
Ei | Alueen alku, YYYY-MM-DD. |
to |
Ei | Alueen loppu, YYYY-MM-DD. |
cURL
curl "https://api.youraiconnector.com/v1/analytics/ai-cost?from=2026-05-01&to=2026-05-31&apiKey=YOUR_API_KEY"
JavaScript
const params = new URLSearchParams({ from: "2026-05-01", to: "2026-05-31" });
const res = await fetch(`https://api.youraiconnector.com/v1/analytics/ai-cost?${params}`, {
headers: { "X-API-Key": "YOUR_API_KEY" },
});
const data = await res.json();
Python
import requests
res = requests.get(
"https://api.youraiconnector.com/v1/analytics/ai-cost",
headers={"X-API-Key": "YOUR_API_KEY"},
params={"from": "2026-05-01", "to": "2026-05-31"},
)
data = res.json()
Vastaus
{
"success": true,
"from": "2026-05-01",
"to": "2026-05-31",
"totals": {
"total_usd": 12.4821,
"byok_usd": 12.4821,
"platform_usd": 0,
"calls": 4210
},
"days": [
{
"date": "2026-05-01",
"total_usd": 0.4012,
"byok_usd": 0.4012,
"platform_usd": 0,
"input_usd": 0.18,
"output_usd": 0.19,
"cache_creation_usd": 0.02,
"cache_read_usd": 0.0112,
"calls": 140,
"by_provider": { "anthropic": 0.4012 }
}
],
"costs_redacted": false
}
Kenttähuomautukset:
byok_usd— laskutettu käyttö omilla palveluntarjoajan API-avaimillasi.platform_usd— se osa käytöstä, joka suoritettiin alustalla oman avaimesi sijaan.input_usd,output_usd,cache_creation_usd,cache_read_usd— kustannuskomponentit, jotka muodostavat kohdantotal_usd.by_provider— USD-määräinen käyttö AI-palveluntarjoajan nimen mukaan jaoteltuna.- USD-summat palautetaan vain tileille, jotka käyttävät omaa palveluntarjoajan avaintaan. Luottoa käyttäville tileille jokainen USD-kenttä on nolla ja
costs_redactedontrue(kutsulaskurit pysyvät näkyvissä).
Metriikkasarjat
Palauttaa yhden tai useamman metriikan aikasarjan yhdellä kutsulla, valinnaisesti ryhmiteltynä enintään kahden ulottuvuuden mukaan – päätepiste kaavion sitomiseen. Yksi pyyntö voi vastata kysymykseen “lähetetyt ja vastatut per päivä, per kanava, tälle kampanjalle” ilman kutsua per kampanja.
GET /analytics/series
Jokainen vastaus sisältää labels-taulukon (aikakseli, nollatäytetty koko alueella) ja yhden merkinnän series-kohdassa per ryhmä, joista jokainen sisältää yhden taulukon per pyydetty metriikka kohdistettuna labels-kohtaan. limit-kohdan jälkeisiä sarjoja ei hylätä – ne tiivistyvät other_bucket-kohtaan, joka lasketaan alueen kokonaissummana miinus palautetut sarjat, joten renderöity kaavio vastaa aina todellisia lukuja; truncated on true aina kun näin tapahtuu.
Mistä luvut tulevat: sent, delivered, read ja replied tulevat viestitietueista, jotka sisältävät kanavan ja lähettävän numeron. booked, contact_created ja credits_spent tulevat tapahtumavirrasta, joka ei sisällä lähettävää numeroa, joten nämä metriikat päätyvät null-numeroiseen säiliöön, kun ryhmittelet number-kohdan mukaan.
conversations laskee kussakin ryhmässä alkaneet keskustelut (chat-istunnot) ja conversation_credits sen, mitä nämä keskustelut maksoivat, laskettuna täsmälleen kuten Keskustelukustannukset. Jaa toinen toisella ryhmittäin saadaksesi keskimääräiset kustannukset per keskustelu ajan mittaan. Kun ryhmittelet tai suodatat kampanjan, agentin, kanavan tai numeron mukaan, keskustelu lasketaan kuuluvaksi siihen, johon sen ensimmäinen viesti kuuluu.
| Parametri | Pakollinen | Kuvaus |
|---|---|---|
from |
Ei | Alueen alku, YYYY-MM-DD. Oletusarvo on 30 päivää sitten. |
to |
Ei | Alueen loppu, YYYY-MM-DD. Oletusarvo on tänään. |
metrics |
Ei | Pilkuilla erotettu luettelo arvoista sent, ai_sent, human_sent, automated_sent, delivered, read, replied, booked, contact_created, credits_spent, conversations, conversation_credits. Oletusarvo on sent,replied. Tuntematon mittari palauttaa arvon 400. |
group_by |
Ei | Pilkuilla erotettu luettelo enintään kahdesta dimensiosta arvoista date, campaign, channel, agent, number. date hyväksytään, mutta sillä ei ole vaikutusta – jokainen vastaus sisältää jo aika-akselin. Jätä pois, jos haluat yhden koko tilin kattavan sarjan. |
granularity |
Ei | day (oletus), week tai month. Viikkokorit alkavat maanantaina, kuukausikorit 1. päivänä. |
limit |
Ei | Palautettavien sarjojen määrä ennen kuin loput yhdistetään kohteeseen other_bucket, 1–50. Oletusarvo on 12. |
campaign_id |
Ei | Laske vain tähän kampanjaan kuuluva toiminta. Vanhentunut; käytä mieluummin kohdetta agent_id. |
agent_id |
Ei | Laske vain tähän tekoälyagenttiin kuuluva toiminta. |
channel |
Ei | Laske vain tällä kanavalla tapahtuva toiminta, esimerkiksi whatsapp. |
Tämän päätepisteen päivämääräväli on rajoitettu 92 päivään (tiukempi kuin muualla tällä sivulla käytetty 366 päivän rajoitus).
cURL
curl "https://api.youraiconnector.com/v1/analytics/series?from=2026-05-01&to=2026-05-31&metrics=sent,replied,booked&group_by=campaign,channel&limit=10&apiKey=YOUR_API_KEY"
JavaScript
const params = new URLSearchParams({
from: "2026-05-01",
to: "2026-05-31",
metrics: "sent,replied,booked",
group_by: "campaign,channel",
limit: "10",
});
const res = await fetch(`https://api.youraiconnector.com/v1/analytics/series?${params}`, {
headers: { "X-API-Key": "YOUR_API_KEY" },
});
const data = await res.json();
Python
import requests
res = requests.get(
"https://api.youraiconnector.com/v1/analytics/series",
headers={"X-API-Key": "YOUR_API_KEY"},
params={
"from": "2026-05-01",
"to": "2026-05-31",
"metrics": "sent,replied,booked",
"group_by": "campaign,channel",
"limit": 10,
},
)
data = res.json()
Vastaus
{
"success": true,
"from": "2026-05-01",
"to": "2026-05-31",
"granularity": "day",
"labels": ["2026-05-01", "2026-05-02"],
"group_by": ["campaign", "channel"],
"metrics": ["sent", "replied", "booked"],
"series": [
{
"key": {
"campaign_id": "campaign123",
"campaign_name": "Spring Promo",
"channel": "whatsapp"
},
"total": 812,
"metrics": {
"sent": [40, 35],
"replied": [12, 9],
"booked": [2, 1]
}
}
],
"other_bucket": {
"series_count": 6,
"total": 340,
"metrics": {
"sent": [18, 20],
"replied": [5, 6],
"booked": [0, 1]
}
},
"truncated": true
}
Kenttähuomautukset:
key— yhden sarjan identiteetti. Vain pyydettyjengroup_by-ulottuvuuksien avaimet ovat läsnä; ulottuvuus, jonka arvo on tuntematon riville (viesti ilman kampanjaa, tapahtuma ilman kanavaa), palautuu muodossanullsen sijaan, että se hylättäisiin, joten sarjat summautuvat edelleen kokonaissummiin.other_bucket—null, kun mitään ei tiivistetty.- Tämä päätepiste palauttaa
503ja"error_code": "analytics_unavailable", kun raportointitietokanta ei pysty vastaamaan tilisi osalta, sen sijaan että palauttaisi200täynnä nollia – nollattu kaavio tulkittaisiin faktaksi.
Keskustelujen tulokset
Palauttaa keskustelujen tulokset tietyllä aikavälillä: päiväkohtainen määrä keskusteluja kunkin yhteystietotunnisteen alla, sekä aikavälin kokonaismäärät vastauksille, varauksille, ihmiselle siirroille ja keskusteluille, joiden yhteystiedolla ei ole tunnisteita.
Tunniste on yhteystietotunniste: tunnisteet, joita AI-agenttisi käyttää tunnisteryökalullaan, automaattisilla tunnistesäännöillä, API:n kautta tai tiimisi toimesta. Se ei ole keskustelukohtainen merkintä. Keskustelu lasketaan niiden tunnisteiden alle, jotka yhteystiedolla on pyyntöhetkellä, joten useita tunnisteita sisältävä yhteystieto lasketaan kerran jokaisen tunnisteen kohdalla, ja myöhemmin poistettu tunniste poistuu myös menneiltä päiviltä. Anna agentillesi yksi päättävä tunniste per tulos (esimerkiksi resolved_ai, handoff_asked_for_human), niin tämä päätepiste palauttaa keskustelujen sisällön ja siirtosyyt ajan kuluessa.
GET /analytics/outcomes
Välitä group_by=tag tiivistääksesi aikakselin ja saadaksesi vain alueen kokonaissummat per tunniste – tässä tilassa labels on tyhjä ja jokaisen tunnisteen counts-taulukko on tyhjä, kun taas total on edelleen täytetty.
| Parametri | Pakollinen | Kuvaus |
|---|---|---|
from |
Ei | Aikavälin alku, YYYY-MM-DD. Oletusarvo on 30 päivää sitten. |
to |
Ei | Aikavälin loppu, YYYY-MM-DD. Oletusarvo on tänään. |
campaign_id |
Ei | Laske vain keskustelut, joiden yhteyshenkilöt ovat tällä hetkellä tässä kampanjassa. Vanhentunut; käytä mieluummin agent_id. |
agent_id |
Ei | Laske vain tämän tekoälyagentin tulokset. |
group_by |
Ei | date (oletus) säilyttää päiväkohtaiset laskelmat; tag tiivistää ne aikavälin kokonaissummiksi. |
Tämän päätepisteen aikaväli on rajoitettu 92 päivään.
cURL
curl "https://api.youraiconnector.com/v1/analytics/outcomes?from=2026-05-01&to=2026-05-31&apiKey=YOUR_API_KEY"
JavaScript
const params = new URLSearchParams({ from: "2026-05-01", to: "2026-05-31" });
const res = await fetch(`https://api.youraiconnector.com/v1/analytics/outcomes?${params}`, {
headers: { "X-API-Key": "YOUR_API_KEY" },
});
const data = await res.json();
Python
import requests
res = requests.get(
"https://api.youraiconnector.com/v1/analytics/outcomes",
headers={"X-API-Key": "YOUR_API_KEY"},
params={"from": "2026-05-01", "to": "2026-05-31"},
)
data = res.json()
Vastaus
{
"success": true,
"from": "2026-05-01",
"to": "2026-05-31",
"group_by": "date",
"labels": ["2026-05-01", "2026-05-02"],
"by_tag": [
{ "tag_id": "tag_8f2k1", "tag": "interested", "total": 84, "counts": [3, 5] },
{ "tag_id": "tag_c91xq", "tag": "not_interested", "total": 40, "counts": [1, 2] },
{ "tag_id": null, "tag": null, "total": 12, "counts": [0, 1] }
],
"totals": {
"sessions": 260,
"replied": 210,
"booked": 35,
"human_alerted": 18,
"unresolved": 12
}
}
Kenttähuomautukset:
by_tag[].tag/by_tag[].tag_id— yhteystietotunnisteen nimi ja id; molemmat ovatnullsillä rivillä, joka sisältää keskustelut, joiden yhteystiedolla ei ole tunnisteita. Enintään 20 tunnistetta palautetaan, suurimman volyymin mukaan järjestettynä.totals.sessions— kyseisellä aikavälillä aloitetut erilliset keskustelut. Tämä ei oleby_tag[].total-arvojen summa: yhteystieto, jolla on kolme tunnistetta, lisää yhden keskustelun kolmelle eri riville.totals.unresolved— keskustelut, joiden yhteystiedolla ei ole tunnisteita.totals.human_alerted— ihmiselle siirretyt keskustelut; tämä kirjataan jokaisen siirron yhteydessä, eikä se ollut aiemmin saatavilla minkään päätepisteen kautta.- Sama
503/analytics_unavailable-toimintatapa kuin Metriikkasarjoissa, kun raportointitietokanta ei pysty vastaamaan.
Keskustelukustannukset
Palauttaa keskustelun keskimääräiset kustannukset tietyllä aikavälillä jaoteltuna sen mukaan, miten keskustelu eteni. Tämä on luku, joka kannattaa näyttää asiakkaalle sijoitetun pääoman tuottona: mitä tekoälyn yksin hoitama keskustelu maksaa verrattuna siihen, johon tiimisi joutui puuttumaan.
GET /analytics/conversation-costs
| Parametri | Pakollinen | Kuvaus |
|---|---|---|
from |
Ei | Aloituspäivämäärä, YYYY-MM-DD, mukaan lukien. Oletuksena 30 päivää sitten. |
to |
Ei | Päättymispäivämäärä, YYYY-MM-DD, mukaan lukien. Oletuksena tämä päivä. Enimmäisväli 31 päivää. |
sub_account_id |
Ei | Toimistoavaimet: raportoi tästä asiakastilistä oman tilisi sijaan. |
curl "https://api.youraiconnector.com/v1/analytics/conversation-costs?from=2026-08-26&to=2026-09-24&apiKey=YOUR_API_KEY"
Vastaus
{
"success": true,
"from": "2026-08-26",
"to": "2026-09-24",
"sessions": 564,
"total_credits": 5957,
"summary": {
"contained": { "sessions": 503, "credits": 5168, "avg_credits": 10.2744 },
"handed_off": { "sessions": 50, "credits": 781, "avg_credits": 15.62 },
"no_ai": { "sessions": 11, "credits": 8, "avg_credits": 0.7273 }
},
"sessions_truncated": false
}
Kenttähuomautukset:
- Laskee keskustelut (chat-istunnot), jotka alkoivat kyseisellä aikavälillä, mukaan lukien kunkin keskustelun aikana veloitetut krediitit, hyvitykset vähennettynä. Keskustelujen ulkopuolella käytetyt krediitit (päivittäiset yhteenvedot, kuukausimaksut, automaatiot, joita yhteyshenkilö ei käynnistänyt, kuten webhook- tai RSS-laukaisimet) eivät sisälly tähän. Yhteyshenkilön käynnistämät automaatioajot ja tekoälyvaiheet lasketaan kyseisen yhteyshenkilön keskusteluun 26. syyskuuta 2026 alkaen.
contained: tekoäly vastasi eikä kenenkään tiimistä tarvinnut puuttua asiaan.handed_off: joku lähetti viestin tekoälyn vastattua tai tekoäly hälytti ihmisen.no_ai: tekoäly ei koskaan vastannut (esimerkiksi keskustelut, joita tiimisi hoitaa tekoälyn ollessa tauolla).- Enintään 20 000 keskustelua lasketaan;
sessions_truncatedontrue, kun aikavälillä oli enemmän keskusteluja, joten rajaa aikaväliä. - Vaatii tiimin jäseniltä laskutusoikeudet. Sama
503/analytics_unavailable-asettelu kuin mittarisarjoissa. - Yhteyshenkilökohtainen erittely löytyy kohdasta Hae yhteyshenkilön kustannukset.
Koontinäytön oivallukset
Palauttaa koko koontinäytön hyötykuorman yhdellä kutsulla: vastausprosentin lämpökartta viikonpäivän ja tunnin mukaan, kampanjoiden tulostaulu, kanavakohtainen volyymi, tarkat yhteyskohtaiset summat, päiväkohtaiset mittarikoosteet (tili-, kanava- ja numerokohtaisesti), yhteyshenkilöiden alkuperä, saapuneiden viestien vastausaika ja viimeisimpien toimintojen syöte. Tämä on API:n kattavin raportointihyötykuorma — se ohjaa suoraan sovelluksen sisäistä koontinäyttöä.
GET /analytics/dashboard-insights
| Parametri | Pakollinen | Kuvaus |
|---|---|---|
startDate |
Kyllä | Alueen alku, YYYY-MM-DD. |
endDate |
Kyllä | Alueen loppu, YYYY-MM-DD. |
campaignId |
Ei | Sisällytä vain tähän kampanjaan kuuluva toiminta (campaign_id hyväksytään myös). Vanhentunut; käytä mieluummin agent_id. |
agent_id |
Ei | Sisällytä vain tähän tekoälyagenttiin kuuluva toiminta (agentId hyväksytään myös). Agentin laajuudessa kampanjan tulostaulu muodostetaan vain kyseisen agentin toiminnasta. |
tag_ids |
Ei | Pilkuilla erotetut tunnisteiden tunnukset (tagIds hyväksytään myös, enintään 25). Rajaa jokaisen lohkon yhteystietoihin, joilla on tällä hetkellä mikä tahansa näistä tunnisteista – sama “täsmää mihin tahansa” -sääntö, jota Yhteystiedot-sivun suodatin käyttää. Yhdistyy campaignId tai agent_id kanssa. Rivit, joilla ei ole yhteystietoa (tilin tason hyvityslataukset), putoavat pois tunnisteella rajatusta näkymästä, ja conversation_outcomes-lohko palautuu null tunnisteen laajuudessa. Palauttaa 400 ja error_code: 400, kun tunnistesuodatin ei ole käytettävissä tilille. |
tag_match |
Ei | Miten tag_ids yhdistyvät (tagMatch hyväksytään myös): any (oletus – yhteystiedolla on oltava yksi tunnisteista) tai all (yhteystiedolla on oltava jokainen niistä). Jätetään huomiotta, kun tag_ids puuttuu; mikä tahansa muu arvo on 400, kun tag_ids on läsnä. |
granularity |
Ei | Ämpärin koko vain metricDailyBreakdown:lle: day (oletus), week (maanantai-pohjainen, kuten /analytics/series) tai month. Sen labels ovat tällöin ämpärin aloitukset, ja lohko kantaa granularity takaisin. Kaikki muut lohkot pysyvät ennallaan. |
Tämä päätepiste käyttää startDate/endDate-muotoa (ei from/to), koska se jakaa toteutuksensa sovelluksen sisäisen koontinäytön kanssa. Aikaväli on rajoitettu 92 päivään, ja jos se on tätä laajempi, se rajataan, ei hylätä.
Null tarkoittaa ei saatavilla, ei nollaa. Useat lohkot (
numberStats,channelDailySeries,metricDailyBreakdown,contactsByCountry) lasketaan raportointitietokannasta ja ne palauttavatnull, kun tietokanta ei pysty vastaamaan tilisi osalta. Älä renderöinull-lohkoa tyhjänä kaaviona.
cURL
curl "https://api.youraiconnector.com/v1/analytics/dashboard-insights?startDate=2026-05-01&endDate=2026-05-31&apiKey=YOUR_API_KEY"
JavaScript
const params = new URLSearchParams({ startDate: "2026-05-01", endDate: "2026-05-31" });
const res = await fetch(`https://api.youraiconnector.com/v1/analytics/dashboard-insights?${params}`, {
headers: { "X-API-Key": "YOUR_API_KEY" },
});
const data = await res.json();
Python
import requests
res = requests.get(
"https://api.youraiconnector.com/v1/analytics/dashboard-insights",
headers={"X-API-Key": "YOUR_API_KEY"},
params={"startDate": "2026-05-01", "endDate": "2026-05-31"},
)
data = res.json()
Vastaus (lyhennetty — tämä hyötykuorma on suuri; katso täydellinen skeema API-viitteestä)
{
"success": true,
"data": {
"heatmap": {
"buckets": [
{ "weekday": 1, "hour": 9, "sent": 12, "replied": 5, "replyRate": 0.42 }
]
},
"topCampaigns": [
{ "campaignId": "campaign123", "name": "Spring Promo", "sent": 420, "replied": 180, "booked": 22, "replyRate": 0.43, "creditsSpent": 210.5 }
],
"channelVolume": [
{ "channel": "whatsapp", "sent": 800, "received": 540, "lastMessageAt": "2026-05-31T14:02:11.000Z" }
],
"inboxSla": { "medianFirstResponseMs": 92000, "sampleSize": 140 },
"activityFeed": [
{ "id": "evt_1", "kind": "booked", "at": "2026-05-31T14:02:11.000Z", "contactId": "contact456", "contactName": "Jane Smith", "campaignId": "campaign123", "campaignName": "Spring Promo", "label": "Jane Smith booked an appointment" }
],
"numberStats": null,
"channelDailySeries": null,
"metricDailyBreakdown": null,
"contactsByCountry": null,
"ai_human_split": null
}
}
Kenttähuomautukset:
heatmap.buckets[].weekday—0on sunnuntai ja6on lauantai.numberStats,channelDailySeries,metricDailyBreakdown,contactsByCountry,ai_human_split— jokainen palauttaa itsenäisestinull, kun raportointitietokanta ei ole käytettävissä tilillesi; kaikki muut lohkot palautuvat normaalisti.
Tekoälyn koontinäytön oivallukset
Palauttaa kolme lyhyttä, tekoälyn kirjoittamaa oivallusta tilin viestinnästä tietyllä aikavälillä: yksi onnistuminen, yksi seurattava asia ja yksi vinkki — lauseita, jotka voit kopioida suoraan raporttiin sen sijaan, että joutuisit tulkitsemaan lukuja itse. Luotu vain tilin omien viestimittareiden perusteella.
GET /analytics/dashboard-ai-insights
| Parametri | Pakollinen | Kuvaus |
|---|---|---|
startDate |
Kyllä | Aikavälin alku, YYYY-MM-DD. |
endDate |
Kyllä | Aikavälin loppu, YYYY-MM-DD. |
Tämä päätepiste koskee koko tiliä — se ei vaadi kampanja- tai agenttilaajuutta.
cURL
curl "https://api.youraiconnector.com/v1/analytics/dashboard-ai-insights?startDate=2026-05-01&endDate=2026-05-31&apiKey=YOUR_API_KEY"
JavaScript
const params = new URLSearchParams({ startDate: "2026-05-01", endDate: "2026-05-31" });
const res = await fetch(`https://api.youraiconnector.com/v1/analytics/dashboard-ai-insights?${params}`, {
headers: { "X-API-Key": "YOUR_API_KEY" },
});
const data = await res.json();
Python
import requests
res = requests.get(
"https://api.youraiconnector.com/v1/analytics/dashboard-ai-insights",
headers={"X-API-Key": "YOUR_API_KEY"},
params={"startDate": "2026-05-01", "endDate": "2026-05-31"},
)
data = res.json()
Vastaus
{
"success": true,
"data": {
"insights": [
{ "tone": "win", "title": "Reply rate is up", "detail": "Your reply rate climbed to 43% this period, up from 36% the period before." },
{ "tone": "watch", "title": "Bookings slowed midweek", "detail": "Wednesday bookings dropped to a third of Monday's, worth a look at your Wednesday follow-up timing." },
{ "tone": "tip", "title": "Re-send to non-repliers", "detail": "212 contacts received a message but never replied — a short follow-up template often recovers 10-15% of them." }
]
}
}
Puuttuva startDate tai endDate palauttaa 400.
Entiteetin toiminnan aikajana
Palauttaa yksittäisen yhteystiedon, kaupan tai tehtävän toiminnan yhtenä aikajanana, uusimmasta alkaen: mitä tapahtui ja milloin, sisältäen viestit, tapaamiset, muistiinpanot ja tilamuutokset. Käytä tätä vastataksesi kysymykseen “mitä tälle henkilölle on tapahtunut” ilman, että joudut yhdistelemään useita listauspäätepisteitä.
GET /analytics/entity-activity
| Parametri | Pakollinen | Kuvaus |
|---|---|---|
entityType |
Kyllä | contact, deal tai task. |
entityId |
Kyllä | Sen tietueen ID, jonka aikajana palautetaan. |
cURL
curl "https://api.youraiconnector.com/v1/analytics/entity-activity?entityType=contact&entityId=contact456&apiKey=YOUR_API_KEY"
JavaScript
const params = new URLSearchParams({ entityType: "contact", entityId: "contact456" });
const res = await fetch(`https://api.youraiconnector.com/v1/analytics/entity-activity?${params}`, {
headers: { "X-API-Key": "YOUR_API_KEY" },
});
const data = await res.json();
Python
import requests
res = requests.get(
"https://api.youraiconnector.com/v1/analytics/entity-activity",
headers={"X-API-Key": "YOUR_API_KEY"},
params={"entityType": "contact", "entityId": "contact456"},
)
data = res.json()
Vastaus
{
"success": true,
"data": {
"items": [
{
"id": "evt_9",
"kind": "appointment_booked",
"at": "2026-05-31T14:02:11.000Z",
"label": "Booked an appointment for June 3",
"detail": "Consultation call, 30 minutes"
},
{
"id": "evt_8",
"kind": "message_replied",
"at": "2026-05-31T13:58:02.000Z",
"label": "Replied: \"Yes, that time works\""
}
]
}
}
Puuttuva tai virheellinen entityType/entityId palauttaa 400. Entiteetti, jota ei ole tililläsi, palauttaa 404, joten muiden tilien tunnukset pysyvät arvaamattomina.
Aggregoidut tapahtumien määrät (vanhentunut)
Palauttaa samat aggregoidut tapahtumien määrät kuin Viestien määrän yhteenveto, mutta camelCase-muodossa (contactCreated eikä contact_created, byDate eikä by_date), jota jotkin vanhemmat integraatiot käyttävät. Suosi /analytics/summary-päätepistettä uusissa integraatioissa — tämä päätepiste on olemassa vain siksi, että sovelluksen sisäinen hallintapaneeli ja API jakavat saman toteutuksen.
GET /analytics/aggregate
| Parametri | Pakollinen | Kuvaus |
|---|---|---|
startDate |
Ei | Alueen alku, ISO-päivämäärä tai päivämäärä-aika. Käyttää oletuksena samaa ikkunaa kuin /analytics/summary. |
endDate |
Ei | Alueen loppu, ISO-päivämäärä tai päivämäärä-aika. |
campaignId |
Ei | Laske vain tähän kampanjaan kuuluvat tapahtumat (campaign_id hyväksytään myös). Vanhentunut; käytä mieluummin agent_id. |
agent_id |
Ei | Laske vain tähän tekoälyagenttiin kuuluvat tapahtumat (agentId hyväksytään myös). |
tag_ids |
Ei | Pilkuilla erotetut tunnisteiden tunnukset (tagIds hyväksytään myös, enintään 25). Laske vain tapahtumat, joiden yhteystiedolla on tällä hetkellä mikä tahansa näistä tunnisteista. Yhdistyy campaignId tai agent_id kanssa. Tapahtumat, joilla ei ole yhteystietoa (creditsRecharged), suljetaan pois tunnisteen laajuudessa. |
tag_match |
Ei | Miten tag_ids yhdistyvät (tagMatch hyväksytään myös): any (oletus) tai all (vain yhteystiedot, joilla on jokainen tunnisteista). Jätetään huomiotta, kun tag_ids puuttuu; mikä tahansa muu arvo on 400, kun tag_ids on läsnä. |
cURL
curl "https://api.youraiconnector.com/v1/analytics/aggregate?startDate=2026-05-01&endDate=2026-05-31&apiKey=YOUR_API_KEY"
Vastaus
{
"success": true,
"data": {
"from": "2026-05-01",
"to": "2026-05-31",
"total": 1240,
"byAnalyticType": {
"total": 1240,
"sent": 800,
"delivered": 760,
"read": 540,
"replied": 210,
"booked": 35,
"contactCreated": 120,
"creditsSpent": 412.5,
"creditsRecharged": 500
},
"byDate": [
{ "date": "2026-05-01", "byAnalyticType": { "total": 40, "sent": 25, "delivered": 24, "read": 18, "replied": 7, "booked": 1, "contactCreated": 4, "creditsSpent": 13.5, "creditsRecharged": 0 } }
]
}
}
Toimiston alitilien yhteenveto
Analytics API -virheet
Analytics-päätepisteet palauttavat vakioituneen virhemuodon:
{
"success": false,
"error": "Date range too large. Maximum is 366 days."
}
Analytiikkapäätepisteessä virheellinen päivämäärämuoto tai sallitun ikkunan ulkopuolinen aikaväli palauttaa 400, ja tuntematon campaign_id tai agent_id palauttaa 404. Sekä campaign_id- että agent_id-parametrien lähettäminen päätepisteeseen, joka hyväksyy vain toisen, on myös 400 — lähetä enintään yksi. Vain PG-raportointipäätepisteet (metrisarjat, keskustelujen tulokset, toimiston yhteenveto) palauttavat 503 ja "error_code": "analytics_unavailable" sen sijaan, että palauttaisivat 200 täynnä nollia, kun raportointitietokanta ei pysty vastaamaan tilisi osalta — yritä pian uudelleen. Jaetut koodit, jotka jokainen päätepiste voi palauttaa — 401, 403 (tilauksesi ei sisällä API-pääsyä tai toimiston yhteenvedossa tilisi ei ole Agency/Dev), 429 (nopeusrajoitus) ja 500 — on lueteltu uudelleenkokeiluohjeiden kanssa kohdassa Virheet ja sivutus.
Seuraavat vaiheet
- Todennus — neljä tapaa todentaa pyyntö.
- Virheet ja nopeusrajoitukset — tilakoodit ja 300 pyyntöä minuutissa -rajoitus.
- AI Agents API — agentit, joiden mukaan nämä luvut voidaan suodattaa.