API-viittaus

Integroi enuchat järjestelmiisi käyttäen Tenant API:a. Hallinnoi keskusteluja, lähetä viestejä ja käytä laskutustietoja ohjelmallisesti.

Todennus

Kaikki API-pyynnöt todennetaan API-avaimella, joka lähetetään X-Api-Key-otsikossa.

API-avaimesi saaminen

  1. Mene Asetukset → API-avaimet paneelissasi
  2. Napsauta Luo API-avain ja anna sille nimi
  3. Kopioi avain heti — se näytetään vain kerran
  4. Säilytä se turvallisesti (ympäristömuuttuja, salaisuudenhallintaohjelma)

Pyyntöjen tekeminen

Sisällytä avain jokaiseen pyyntöön:

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

Kaikki vastaukset ovat JSON-muodossa. Onnistuneilla vastauksilla on data-kenttä. Virheillä on error-kenttä, jossa on code ja message.

Turvallisuus: API-avaimet hashataan (SHA-256) tietokannassamme. Emme koskaan tallenna raakaa avainta. Käsittele avaintasi kuin salasanaa — älä lisää sitä koodiin tai jaa julkisesti.

Perus-URL

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

Kaikki alla olevat päätepisteet ovat suhteellisia tähän perus-URL-osoitteeseen.

Päätepisteet

GET /widgets

Luettele kaikki tilisi widgetit.

Vastaus

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

GET /conversations

Luettele keskustelut viimeisimmän viestin mukaan järjestettynä.

Kyselyparametrit

ParametriTyyppiKuvaus
statusstringSuodata tilan mukaan: open, pending, closed
widgetIdstringSuodata widgetin UUID:n mukaan
limitintegerMax tulokset (oletus 20, max 100)
offsetintegerOhita N tulosta

Esimerkki

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

Vastaus

{'{'}
  "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}

Hae keskustelu kaikkine viesteineen.

Kyselyparametrit

ParametriTyyppiKuvaus
limitintegerMax viestit (oletus 50, max 200)

Vastaus

{'{'}
  "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

Lähetä viesti keskusteluun. Viesti toimitetaan vierailijalle reaaliajassa chat-widgetin kautta.

Pyynnön runko

{'{'}
  "content": "Thanks for reaching out! We'll process your request.",
  "role": "system"
}
KenttäTyyppiKuvaus
contentstringPakollinen. Viestin teksti.
rolestringsystem (oletus) tai operator

Vastaus (201 Created)

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

PATCH /conversations/{'{'}id}

Päivitä keskustelun tila tai osoitus.

Pyynnön runko

{'{'}
  "status": "closed"
}
KenttäTyyppiKuvaus
statusstringopen, pending tai closed
assignedTostring|nullOperaattorin UUID osoittamista varten tai null osoituksen poistamiseen

GET /billing/balance

Hae nykyinen tilauksesi ja krediittisaldo.

Vastaus

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

Virheenkäsittely

Virheet palauttavat ei-2xx-tilakoodin JSON-rungolla:

{'{'}
  "error": {'{'}
    "code": "NOT_FOUND",
    "message": "Conversation not found."
  }
}
HTTP-tilaMerkitys
401Virheellinen, vanhentunut tai puuttuva API-avain
400Virheellinen pyynnön runko tai parametrit
404Resurssia ei löydy (tai kuuluu toiselle tenantille)
500Palvelinvirhe

Yleiset käyttötapaukset

CRM-integraatio

Kysy uusia keskusteluja ja synkronoi vierailijatiedot (nimi, sähköposti, kieli) CRM:ääsi. Käytä keskustelun ID:tä ulkoisena viitteenä.

Automatisoidut jatkotoimet

Kun keskustelu suljetaan, lähetä jatkoseurantaviesti API:n kautta: „Kiitos chattailusta! Onko muuta missä voimme auttaa?"

Webhook-vaihtoehto

Kunnes ulospäin lähtevät webhookit ovat saatavilla, kysele keskustelupäätepistettä säännöllisesti havaitaksesi uudet viestit tai tilamuutokset.

Massaoperaatiot

Sulje kaikki yli 7 päivää vanhat keskustelut, osoita keskustelut operaattoreille ulkoisen logiikan perusteella tai vie keskusteluhistoria analytiikkaa varten.

Nopeusrajat

API sallii jopa 60 pyyntöä minuutissa per API-avain. Jos ylität tämän rajan, saat 429 Too Many Requests -vastauksen. Odota ja yritä uudelleen eksponentiaalisella backoffilla.

Valmis integroimaan?

Luo ilmainen tilisi ja luo API-avain minuuteissa.

Aloita ilmaiseksi