API-referanse

Integrer enuchat i systemene dine med Tenant API. Administrer samtaler, send meldinger og få tilgang til faktureringsdata programmatisk.

Autentisering

Alle API-forespørsler autentiseres med en API-nøkkel sendt i X-Api-Key-headeren.

Skaffe API-nøkkelen din

  1. Gå til Innstillinger → API-nøkler i kontrollpanelet
  2. Klikk Opprett API-nøkkel og gi den et navn
  3. Kopier nøkkelen umiddelbart — den vises kun én gang
  4. Lagre den sikkert (miljøvariabel, hemmelighetsbehandler)

Gjøre forespørsler

Inkluder nøkkelen i hver forespørsel:

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

Alle svar er JSON. Vellykkede svar har et data-felt. Feil har et error-felt med code og message.

Sikkerhet: API-nøkler hashes (SHA-256) i databasen vår. Vi lagrer aldri den rå nøkkelen. Behandle nøkkelen som et passord — ikke commit den til kode eller del den offentlig.

Basis-URL

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

Alle endpoints nedenfor er relative til denne basis-URL-en.

Endpoints

GET /widgets

List alle widgets for kontoen din.

Svar

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

GET /conversations

List samtaler, sortert etter nyeste melding.

Spørringsparametre

ParameterTypeBeskrivelse
statusstringFiltrer etter status: open, pending, closed
widgetIdstringFiltrer etter widget-UUID
limitintegerMaks resultater (standard 20, maks 100)
offsetintegerHopp over N resultater

Eksempel

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

Svar

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

Hent en samtale med alle meldinger.

Spørringsparametre

ParameterTypeBeskrivelse
limitintegerMaks meldinger (standard 50, maks 200)

Svar

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

Send en melding til en samtale. Meldingen leveres til besøkende i sanntid via chatwidgeten.

Forespørselskropp

{'{'}
  "content": "Thanks for reaching out! We'll process your request.",
  "role": "system"
}
FeltTypeBeskrivelse
contentstringPåkrevd. Meldingsteksten.
rolestringsystem (standard) eller operator

Svar (201 Created)

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

PATCH /conversations/{'{'}id}

Oppdater en samtales status eller tildeling.

Forespørselskropp

{'{'}
  "status": "closed"
}
FeltTypeBeskrivelse
statusstringopen, pending eller closed
assignedTostring|nullOperatør-UUID for tildeling, eller null for å fjerne tildeling

GET /billing/balance

Hent gjeldende plan og kredittsaldo.

Svar

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

Feilhåndtering

Feil returnerer en ikke-2xx statuskode med en JSON-kropp:

{'{'}
  "error": {'{'}
    "code": "NOT_FOUND",
    "message": "Conversation not found."
  }
}
HTTP-statusBetydning
401Ugyldig, utløpt eller manglende API-nøkkel
400Ugyldig forespørselskropp eller parametre
404Ressurs ikke funnet (eller tilhører en annen leietaker)
500Serverfeil

Vanlige bruksscenarioer

CRM-integrasjon

Spør etter nye samtaler og synkroniser besøkendedata (navn, e-post, språk) til CRM-et ditt. Bruk samtale-ID-en som ekstern referanse.

Automatiserte oppfølginger

Etter at en samtale er lukket, send en oppfølgingsmelding via API-et: "Takk for chatten! Er det noe annet vi kan hjelpe deg med?"

Webhook-alternativ

Inntil utgående webhooks er tilgjengelige, kan du spørre samtale-endpointet periodisk for å oppdage nye meldinger eller statusendringer.

Masseoperasjoner

Lukk alle samtaler eldre enn 7 dager, tildel samtaler til operatører basert på ekstern logikk, eller eksporter samtalehistorikk for analyse.

Hastighetsgrenser

API-et tillater opptil 60 forespørsler per minutt per API-nøkkel. Hvis du overskrider denne grensen, mottar du et 429 Too Many Requests-svar. Vent og prøv igjen med eksponentiell backoff.

Klar til å integrere?

Opprett din gratis konto og generer en API-nøkkel på minutter.

Kom i gang gratis