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

  1. Gå til Indstillinger → API-nøgler i dit dashboard
  2. Klik på Opret API-nøgle og giv den et navn
  3. Kopiér nøglen øjeblikkeligt — den vises kun én gang
  4. 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/widgets

Alle 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-api

Alle 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

ParameterTypeBeskrivelse
statusstringFiltrér efter status: open, pending, closed
widgetIdstringFiltrér efter widget UUID
limitintegerMaks. resultater (standard 20, maks. 100)
offsetintegerSpring 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

ParameterTypeBeskrivelse
limitintegerMaks. 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"
}
FeltTypeBeskrivelse
contentstringPåkrævet. Beskedteksten.
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}

Opdatér en samtales status eller tildeling.

Anmodningskrop

{'{'}
  "status": "closed"
}
FeltTypeBeskrivelse
statusstringopen, pending, eller closed
assignedTostring|nullOperatø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-statusBetydning
401Ugyldig, udløbet eller manglende API-nøgle
400Ugyldig anmodningskrop eller parametre
404Ressource ikke fundet (eller tilhører en anden tenant)
500Serverfejl

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.

Klar til at integrere?

Opret din gratis konto og generér en API-nøgle på minutter.

Kom i gang gratis