API reference

Integrujte enuchat do svých systémů pomocí Tenant API. Spravujte konverzace, odesílejte zprávy a přistupujte k fakturačním datům programově.

Autentizace

Všechny API požadavky jsou autentizovány pomocí API klíče odeslaného v hlavičce X-Api-Key.

Získání API klíče

  1. Přejděte do Nastavení → API klíče v panelu
  2. Klikněte na Vytvořit API klíč a pojmenujte jej
  3. Okamžitě zkopírujte klíč — zobrazí se pouze jednou
  4. Uložte jej bezpečně (proměnná prostředí, správce tajných klíčů)

Provádění požadavků

Zahrňte klíč do každého požadavku:

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

Všechny odpovědi jsou JSON. Úspěšné odpovědi mají pole data. Chyby mají pole error s code a message.

Bezpečnost: API klíče jsou hashovány (SHA-256) v naší databázi. Nikdy neukládáme surový klíč. Zacházejte s klíčem jako s heslem — necommitujte ho do kódu ani ho veřejně nesdílejte.

Základní URL

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

Všechny endpointy níže jsou relativní k této základní URL.

Endpointy

GET /widgets

Výpis všech widgetů vašeho účtu.

Odpověď

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

GET /conversations

Výpis konverzací, seřazených podle nejnovější zprávy.

Query parametry

ParametrTypPopis
statusstringFiltr podle stavu: open, pending, closed
widgetIdstringFiltr podle UUID widgetu
limitintegerMax výsledků (výchozí 20, max 100)
offsetintegerPřeskočit N výsledků

Příklad

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

Odpověď

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

Získání konverzace se všemi zprávami.

Query parametry

ParametrTypPopis
limitintegerMax zpráv (výchozí 50, max 200)

Odpověď

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

Odeslání zprávy do konverzace. Zpráva bude doručena návštěvníkovi v reálném čase přes chatovací widget.

Tělo požadavku

{'{'}
  "content": "Thanks for reaching out! We'll process your request.",
  "role": "system"
}
PoleTypPopis
contentstringPovinné. Text zprávy.
rolestringsystem (výchozí) nebo operator

Odpověď (201 Created)

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

PATCH /conversations/{'{'}id}

Aktualizace stavu konverzace nebo přiřazení.

Tělo požadavku

{'{'}
  "status": "closed"
}
PoleTypPopis
statusstringopen, pending nebo closed
assignedTostring|nullUUID operátora k přiřazení, nebo null pro zrušení přiřazení

GET /billing/balance

Získání aktuálního tarifu a zůstatku kreditů.

Odpověď

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

Zpracování chyb

Chyby vrací non-2xx stavový kód s JSON tělem:

{'{'}
  "error": {'{'}
    "code": "NOT_FOUND",
    "message": "Conversation not found."
  }
}
HTTP StatusVýznam
401Neplatný, expirovaný nebo chybějící API klíč
400Neplatné tělo požadavku nebo parametry
404Zdroj nebyl nalezen (nebo patří jinému tenantovi)
500Chyba serveru

Běžné případy použití

CRM integrace

Periodicky dotazujte nové konverzace a synchronizujte data návštěvníků (jméno, e-mail, jazyk) do svého CRM. Použijte ID konverzace jako externí referenci.

Automatické follow-upy

Po uzavření konverzace odešlete follow-up zprávu přes API: "Děkujeme za chat! Můžeme vám ještě s něčím pomoci?"

Alternativa k webhook

Dokud nebudou dostupné odchozí webhooky, periodicky dotazujte endpoint konverzací pro detekci nových zpráv nebo změn stavu.

Hromadné operace

Uzavřete všechny konverzace starší než 7 dní, přiřaďte konverzace operátorům na základě externí logiky nebo exportujte historii konverzací pro analytiku.

Rate limity

API povoluje až 60 požadavků za minutu na API klíč. Pokud tento limit překročíte, obdržíte odpověď 429 Too Many Requests. Počkejte a zkuste to znovu s exponenciálním backoffem.

Připraveni na integraci?

Vytvořte si bezplatný účet a vygenerujte API klíč za pár minut.

Začít zdarma