API-referens

Integrera enuchat i dina system med Tenant API. Hantera konversationer, skicka meddelanden och få åtkomst till faktureringsdata programmatiskt.

Autentisering

Alla API-förfrågningar autentiseras med en API-nyckel som skickas i X-Api-Key-headern.

Få din API-nyckel

  1. Gå till Inställningar → API-nycklar i din panel
  2. Klicka på Skapa API-nyckel och ge den ett namn
  3. Kopiera nyckeln omedelbart — den visas bara en gång
  4. Förvara den säkert (miljövariabel, hemlighetshanterare)

Göra förfrågningar

Inkludera nyckeln i varje förfrågan:

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

Alla svar är JSON. Lyckade svar har ett data-fält. Fel har ett error-fält med code och message.

Säkerhet: API-nycklar hashas (SHA-256) i vår databas. Vi lagrar aldrig den råa nyckeln. Behandla din nyckel som ett lösenord — lägg inte in den i kod eller dela den offentligt.

Bas-URL

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

Alla endpoints nedan är relativa till denna bas-URL.

Endpoints

GET /widgets

Lista alla widgetar för ditt konto.

Svar

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

GET /conversations

Lista konversationer, sorterade efter senaste meddelande.

Query-parametrar

ParameterTypBeskrivning
statusstringFiltrera efter status: open, pending, closed
widgetIdstringFiltrera efter widget-UUID
limitintegerMax resultat (standard 20, max 100)
offsetintegerHoppa över N resultat

Exempel

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}

Hämta en konversation med alla meddelanden.

Query-parametrar

ParameterTypBeskrivning
limitintegerMax meddelanden (standard 50, max 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

Skicka ett meddelande till en konversation. Meddelandet levereras till besökaren i realtid via chattwidgeten.

Request body

{'{'}
  "content": "Thanks for reaching out! We'll process your request.",
  "role": "system"
}
FältTypBeskrivning
contentstringKrävs. Meddelandetexten.
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}

Uppdatera en konversations status eller tilldelning.

Request body

{'{'}
  "status": "closed"
}
FältTypBeskrivning
statusstringopen, pending, eller closed
assignedTostring|nullOperatör-UUID att tilldela, eller null för att avtilldela

GET /billing/balance

Hämta din aktuella plan och kreditsaldo.

Svar

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

Felhantering

Fel returnerar en icke-2xx-statuskod med en JSON-kropp:

{'{'}
  "error": {'{'}
    "code": "NOT_FOUND",
    "message": "Conversation not found."
  }
}
HTTP-statusBetydelse
401Ogiltig, utgången eller saknad API-nyckel
400Ogiltig request body eller parametrar
404Resurs hittades inte (eller tillhör en annan tenant)
500Serverfel

Vanliga användningsfall

CRM-integration

Polla efter nya konversationer och synka besökardata (namn, e-post, språk) till ditt CRM. Använd konversations-ID som extern referens.

Automatiserade uppföljningar

Efter att en konversation stängts, skicka ett uppföljningsmeddelande via API:et: „Tack för chatten! Finns det något annat vi kan hjälpa till med?"

Webhook-alternativ

Tills utgående webhooks är tillgängliga, polla konversationsendpointen periodiskt för att upptäcka nya meddelanden eller statusändringar.

Massoperationer

Stäng alla konversationer äldre än 7 dagar, tilldela konversationer till operatörer baserat på extern logik, eller exportera konversationshistorik för analys.

Hastighetsgränser

API:et tillåter upp till 60 förfrågningar per minut per API-nyckel. Om du överskrider denna gräns får du ett 429 Too Many Requests-svar. Vänta och försök igen med exponentiell backoff.

Redo att integrera?

Skapa ditt gratiskonto och generera en API-nyckel på minuter.

Kom igång gratis