API referenca

Integrišite enuchat u svoje sisteme koristeći Tenant API. Upravljajte razgovorima, šaljite poruke i pristupajte podacima o naplati programski.

Autentifikacija

Svi API zahtjevi se autentifikuju koristeći API ključ poslan u X-Api-Key zaglavlju.

Dobijanje vašeg API ključa

  1. Idite na Postavke → API ključevi u svom dashboardu
  2. Kliknite Kreiraj API ključ i dajte mu ime
  3. Odmah kopirajte ključ — prikazuje se samo jednom
  4. Pohranite ga sigurno (varijabla okruženja, menadžer tajni)

Slanje zahtjeva

Uključite ključ u svaki zahtjev:

curl -H "X-Api-Key: tak_your_key_here" \
     https://api.enuchat.com/api/v1/tenant-api/widgets

Svi odgovori su JSON. Uspješni odgovori imaju data polje. Greške imaju error polje sa code i message.

Sigurnost: API ključevi su heširani (SHA-256) u našoj bazi podataka. Nikada ne čuvamo sirovi ključ. Tretirajte svoj ključ kao lozinku — ne commitujte ga u kod niti dijelite javno.

Osnovni URL

https://api.enuchat.com/api/v1/tenant-api

Svi endpointi ispod su relativni u odnosu na ovaj osnovni URL.

Endpointi

GET /widgets

Lista svih widgeta za vaš nalog.

Odgovor

{'{'}
  "data": [
{'{'}
      "id": "019d19c6-7e0b-...",
      "name": "Main Website Chat",
      "isActive": true,
      "aiEnabled": true,
      "translationEnabled": true,
      "primaryColor": "#2563eb",
      "position": "bottom-right"
    }
  ]
}

GET /conversations

Lista razgovora, poredana po najnovijoj poruci.

Query parametri

ParametarTipOpis
statusstringFiltriraj po statusu: open, pending, closed
widgetIdstringFiltriraj po UUID widgeta
limitintegerMaksimalni rezultati (zadano 20, max 100)
offsetintegerPreskoči N rezultata

Primjer

curl -H "X-Api-Key: tak_..." \
     "https://api.enuchat.com/api/v1/tenant-api/conversations?status=open&limit=10"

Odgovor

{'{'}
  "data": [
{'{'}
      "id": "019d6724-000e-...",
      "widgetId": "019d19c6-7e0b-...",
      "visitorId": "v-abc123",
      "visitorName": "John",
      "visitorEmail": "john{'@'}example.com",
      "visitorLanguage": "en",
      "status": "open",
      "assignedTo": null,
      "lastMessageAt": "2026-04-11T14:30:00+00:00",
      "startedAt": "2026-04-11T14:25:00+00:00"
    }
  ]
}

GET /conversations/{'{'}id}

Dobijte razgovor sa svim porukama.

Query parametri

ParametarTipOpis
limitintegerMaksimalno poruka (zadano 50, max 200)

Odgovor

{'{'}
  "data": {'{'}
    "id": "019d6724-000e-...",
    "visitorLanguage": "en",
    "status": "open",
    "messages": [
{'{'}
        "id": "019d6724-1234-...",
        "role": "visitor",
        "content": "Hello, how much does it cost?",
        "contentLanguage": "en",
        "translatedContent": "Cześć, ile to kosztuje?",
        "translatedLanguage": "pl",
        "isAutoReply": false,
        "createdAt": "2026-04-11T14:25:30+00:00"
      },
{'{'}
        "id": "019d6724-5678-...",
        "role": "ai",
        "content": "Our plans start at €19/month...",
        "isAutoReply": true,
        "createdAt": "2026-04-11T14:25:32+00:00"
      }
    ]
  }
}

POST /conversations/{'{'}id}/messages

Pošalji poruku u razgovor. Poruka će biti isporučena posjetitelju u realnom vremenu putem chat widgeta.

Tijelo zahtjeva

{'{'}
  "content": "Thanks for reaching out! We'll process your request.",
  "role": "system"
}
PoljeTipOpis
contentstringObavezno. Tekst poruke.
rolestringsystem (zadano) ili operator

Odgovor (201 Created)

{'{'}
  "data": {'{'}
    "id": "019d6725-abcd-...",
    "role": "system",
    "content": "Thanks for reaching out!",
    "createdAt": "2026-04-11T14:35:00+00:00"
  }
}

PATCH /conversations/{'{'}id}

Ažuriraj status ili dodjelu razgovora.

Tijelo zahtjeva

{'{'}
  "status": "closed"
}
PoljeTipOpis
statusstringopen, pending, ili closed
assignedTostring|nullUUID operatera za dodjelu, ili null za poništavanje dodjele

GET /billing/balance

Dobijte svoj trenutni plan i stanje kredita.

Odgovor

{'{'}
  "data": {'{'}
    "plan": "pro",
    "creditBalance": 4500000,
    "totalCreditsAdded": 10000000
  }
}

Rukovanje greškama

Greške vraćaju ne-2xx statusni kod sa JSON tijelom:

{'{'}
  "error": {'{'}
    "code": "NOT_FOUND",
    "message": "Conversation not found."
  }
}
HTTP statusZnačenje
401Nevažeći, istekao ili nedostajući API ključ
400Nevažeće tijelo zahtjeva ili parametri
404Resurs nije pronađen (ili pripada drugom tenantu)
500Greška servera

Uobičajeni slučajevi upotrebe

CRM integracija

Pollujte nove razgovore i sinhronizujte podatke o posjetitelju (ime, email, jezik) sa svojim CRM-om. Koristite ID razgovora kao vanjsku referencu.

Automatizovana praćenja

Nakon što je razgovor zatvoren, pošaljite poruku praćenja putem API-a: "Hvala na razgovoru! Ima li još nešto sa čim možemo pomoći?"

Alternativa webhookovima

Dok izlazni webhookovi ne budu dostupni, periodično pollujte endpoint razgovora da detektujete nove poruke ili promjene statusa.

Masovne operacije

Zatvorite sve razgovore starije od 7 dana, dodijelite razgovore operaterima na osnovu vanjske logike ili izvezite historiju razgovora za analitiku.

Ograničenja stope

API dozvoljava do 60 zahtjeva u minuti po API ključu. Ako premašite ovaj limit, primit ćete 429 Too Many Requests odgovor. Sačekajte i pokušajte ponovo sa eksponencijalnim backoffom.

Spremni za integraciju?

Kreirajte svoj besplatan nalog i generišite API ključ za nekoliko minuta.

Započnite besplatno