API-reference
Integrér enuchat i dine systemer ved hjælp af Tenant API. Administrér samtaler, send beskeder og få adgang til faktureringsdata programmatisk.
Autentificering
Alle API-anmodninger autentificeres ved hjælp af en API-nøgle sendt i X-Api-Key-headeren.
Få din API-nøgle
- Gå til Indstillinger → API-nøgler i dit dashboard
- Klik på Opret API-nøgle og giv den et navn
- Kopiér nøglen øjeblikkeligt — den vises kun én gang
- Opbevar den sikkert (miljøvariabel, hemmelighedsadministrator)
At lave anmodninger
Inkludér nøglen i hver anmodning:
curl -H "X-Api-Key: tak_your_key_here" \
https://api.enuchat.com/api/v1/tenant-api/widgetsAlle svar er JSON. Vellykkede svar har et data-felt. Fejl har et error-felt med code og message.
Sikkerhed: API-nøgler hashes (SHA-256) i vores database. Vi gemmer aldrig den rå nøgle. Behandl din nøgle som et kodeord — commit den ikke til kode eller del den offentligt.
Basis-URL
https://api.enuchat.com/api/v1/tenant-apiAlle endpoints nedenfor er relative til denne basis-URL.
Endpoints
GET /widgets
Vis alle widgets for din konto.
Svar
{'{'}
"data": [
{'{'}
"id": "019d19c6-7e0b-...",
"name": "Main Website Chat",
"isActive": true,
"aiEnabled": true,
"translationEnabled": true,
"primaryColor": "#2563eb",
"position": "bottom-right"
}
]
}GET /conversations
Vis samtaler, ordnet efter seneste besked.
Forespørgselsparametre
| Parameter | Type | Beskrivelse |
|---|---|---|
status | string | Filtrér efter status: open, pending, closed |
widgetId | string | Filtrér efter widget UUID |
limit | integer | Maks. resultater (standard 20, maks. 100) |
offset | integer | Spring N resultater over |
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 beskeder.
Forespørgselsparametre
| Parameter | Type | Beskrivelse |
|---|---|---|
limit | integer | Maks. beskeder (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 besked til en samtale. Beskeden leveres til den besøgende i realtid via chat-widgetten.
Anmodningskrop
{'{'}
"content": "Thanks for reaching out! We'll process your request.",
"role": "system"
}| Felt | Type | Beskrivelse |
|---|---|---|
content | string | Påkrævet. Beskedteksten. |
role | string | system (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}
Opdatér en samtales status eller tildeling.
Anmodningskrop
{'{'}
"status": "closed"
}| Felt | Type | Beskrivelse |
|---|---|---|
status | string | open, pending, eller closed |
assignedTo | string|null | Operatør UUID at tildele, eller null for at fjerne tildeling |
GET /billing/balance
Hent din nuværende plan og kreditsaldo.
Svar
{'{'}
"data": {'{'}
"plan": "pro",
"creditBalance": 4500000,
"totalCreditsAdded": 10000000
}
}Fejlhåndtering
Fejl returnerer en ikke-2xx statuskode med en JSON-krop:
{'{'}
"error": {'{'}
"code": "NOT_FOUND",
"message": "Conversation not found."
}
}| HTTP-status | Betydning |
|---|---|
401 | Ugyldig, udløbet eller manglende API-nøgle |
400 | Ugyldig anmodningskrop eller parametre |
404 | Ressource ikke fundet (eller tilhører en anden tenant) |
500 | Serverfejl |
Almindelige anvendelsestilfælde
CRM-integration
Afstem efter nye samtaler og synkronisér besøgendes data (navn, e-mail, sprog) til dit CRM. Brug samtale-ID'et som ekstern reference.
Automatiserede opfølgninger
Efter en samtale er lukket, send en opfølgningsbesked via API'et: „Tak for din chat! Er der andet, vi kan hjælpe med?“
Webhook-alternativ
Indtil udgående webhooks er tilgængelige, afstem samtaler-endpointet periodisk for at registrere nye beskeder eller statusændringer.
Masseoperationer
Luk alle samtaler ældre end 7 dage, tildel samtaler til operatører baseret på ekstern logik, eller eksportér samtalehistorik til analyse.
Ratebegrænsninger
API'et tillader op til 60 anmodninger pr. minut pr. API-nøgle. Hvis du overskrider denne grænse, modtager du et 429 Too Many Requests-svar. Vent og prøv igen med eksponentiel backoff.