API referenca

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

Autentifikacija

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

Dobivanje API ključa

  1. Idite na Postavke → API ključevi u nadzornoj ploči
  2. Kliknite Stvori API ključ i dajte mu naziv
  3. Odmah kopirajte ključ — prikazuje se samo jednom
  4. Pohranite ga sigurno (varijabla okruženja, upravitelj 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 polje data. Greške imaju polje error s code i message.

Sigurnost: API ključevi su hashirani (SHA-256) u našoj bazi podataka. Nikada ne pohranjujemo neobrađeni ključ. Tretirajte svoj ključ kao lozinku — ne unosite ga u kod niti ga dijelite javno.

Bazni URL

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

Svi endpointi u nastavku su relativni prema ovom baznom URL-u.

Endpointi

GET /widgets

Popis svih widgeta za vaš račun.

Odgovor

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

GET /conversations

Popis razgovora, poredano po najnovijoj poruci.

Parametri upita

ParametarTipOpis
statusstringFiltriraj po statusu: open, pending, closed
widgetIdstringFiltriraj po UUID widgeta
limitintegerMaks. rezultata (zadano 20, maks. 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}

Dohvatite razgovor sa svim porukama.

Parametri upita

ParametarTipOpis
limitintegerMaks. poruka (zadano 50, maks. 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šaljite poruku u razgovor. Poruka će biti dostavljena posjetitelju u stvarnom 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žurirajte status ili dodjelu razgovora.

Tijelo zahtjeva

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

GET /billing/balance

Dohvatite trenutni plan i stanje kredita.

Odgovor

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

Obrada grešaka

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

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

Česti slučajevi korištenja

CRM integracija

Periodično provjeravajte nove razgovore i sinkronizirajte podatke posjetitelja (ime, email, jezik) s vašim CRM-om. Koristite ID razgovora kao vanjsku referencu.

Automatizirano praćenje

Nakon zatvaranja razgovora, pošaljite poruku praćenja putem API-ja: "Hvala na chatu! Postoji li još nešto u čemu vam možemo pomoći?"

Alternativa za webhook

Dok odlazni webhookovi nisu dostupni, periodično provjeravajte endpoint razgovora za otkrivanje novih poruka ili promjena statusa.

Skupne operacije

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

Ograničenja brzine

API dopušta do 60 zahtjeva u minuti po API ključu. Ako premašite ovaj limit, dobiti ćete odgovor 429 Too Many Requests. Pričekajte i pokušajte ponovno s eksponencijalnim povlačenjem.

Spremni za integraciju?

Stvorite besplatni račun i generirajte API ključ za nekoliko minuta.

Započnite besplatno