API-referentie
Bouw aangepaste integraties met de Asyntai REST API
Betaald abonnement vereist: API-toegang is beschikbaar op Starter, Standard en Pro plannen. Prijzen bekijken
Overzicht
Met de Asyntai API kunt u AI-gestuurde klantenondersteuning integreren in elke applicatie. Verstuur berichten en ontvang intelligente antwoorden die zijn getraind op de inhoud van uw website en kennisbank.
Authenticatie
Alle API-verzoeken vereisen authenticatie met uw API-sleutel. U kunt uw API-sleutel ophalen op de pagina API-instellingen.
Voeg uw API-sleutel toe aan verzoeken met een van deze methoden:
- Authorization-header (aanbevolen):
Authorization: Bearer YOUR_API_KEY - X-API-Key-header:
X-API-Key: YOUR_API_KEY
Houd uw API-sleutel geheim. Iedereen met uw sleutel heeft toegang tot uw account via de API. Maak deze nooit zichtbaar in client-side code.
Basis-URL
https://asyntai.com/api/v1/
Endpoints
POST /chat/
Verstuur een bericht en ontvang een AI-gegenereerd antwoord.
Verzoekinhoud
{
"message": "What are your business hours?",
"session_id": "user_123", // optional
"website_id": 1 // optional
}
| Parameter | Type | Vereist | Beschrijving |
|---|---|---|---|
message |
string | Ja | Het bericht van de gebruiker om naar de AI te sturen |
session_id |
string | Nee | Unieke identificatie voor het gesprek. Gebruik dezelfde session_id om de gespreksgeschiedenis te behouden. |
website_id |
integer | Nee | Specifiek website-ID. Indien niet opgegeven, wordt uw primaire website gebruikt. |
Antwoord
{
"success": true,
"response": "Our business hours are Monday-Friday, 9 AM to 5 PM EST.",
"session_id": "user_123"
}
Voorbeeld (cURL)
curl -X POST https://asyntai.com/api/v1/chat/ \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"message": "What are your business hours?", "session_id": "user_123"}'
Voorbeeld (Python)
import requests
response = requests.post(
"https://asyntai.com/api/v1/chat/",
headers={
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json"
},
json={
"message": "What are your business hours?",
"session_id": "user_123"
}
)
data = response.json()
print(data["response"])
Voorbeeld (JavaScript)
const response = await fetch("https://asyntai.com/api/v1/chat/", {
method: "POST",
headers: {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json"
},
body: JSON.stringify({
message: "What are your business hours?",
session_id: "user_123"
})
});
const data = await response.json();
console.log(data.response);
GET /websites/
Toon alle websites die aan uw account zijn gekoppeld.
Antwoord
{
"success": true,
"websites": [
{
"id": 1,
"name": "My Website",
"domain": "example.com",
"is_primary": true
}
]
}
Voorbeeld (cURL)
curl https://asyntai.com/api/v1/websites/ \
-H "Authorization: Bearer YOUR_API_KEY"
GET /conversations/
Haal de gespreksgeschiedenis op voor een specifieke sessie.
Queryparameters
| Parameter | Type | Vereist | Beschrijving |
|---|---|---|---|
session_id |
string | Ja | Het sessie-ID waarvoor de geschiedenis moet worden opgehaald |
limit |
integer | Nee | Maximaal aantal berichten om te retourneren (standaard: 50, max: 100) |
Antwoord
{
"success": true,
"session_id": "user_123",
"messages": [
{
"role": "user",
"content": "What are your business hours?",
"timestamp": "2024-01-15T10:30:00Z"
},
{
"role": "assistant",
"content": "Our business hours are Monday-Friday, 9 AM to 5 PM EST.",
"timestamp": "2024-01-15T10:30:01Z"
}
]
}
Voorbeeld (cURL)
curl "https://asyntai.com/api/v1/conversations/?session_id=user_123&limit=20" \
-H "Authorization: Bearer YOUR_API_KEY"
GET /sessions/
Toon uw recente chatsessies. Gebruik dit om sessie-ID's te ontdekken, die u vervolgens kunt doorgeven aan /conversations/ om de volledige berichtgeschiedenis op te halen.
Queryparameters
| Parameter | Type | Vereist | Beschrijving |
|---|---|---|---|
limit |
integer | Nee | Aantal recente sessies om te retourneren (standaard: 20, max: 100) |
website_id |
string | Nee | Filter sessies op een specifiek website-ID |
source |
string | Nee | Filteren op sessiebron: widget, api, whatsapp, instagram, messenger, gorgias, freshchat, zapier |
Antwoord
{
"success": true,
"sessions": [
{
"session_id": "session_abc123def",
"source": "widget",
"message_count": 5,
"first_message": "What are your business hours?",
"first_message_at": "2024-01-15T10:30:00Z",
"last_message_at": "2024-01-15T10:35:00Z",
"website_domain": "example.com"
}
]
}
Voorbeeld (cURL)
curl "https://asyntai.com/api/v1/sessions/?limit=10" \
-H "Authorization: Bearer YOUR_API_KEY"
GET /leads/
Verzamelde leads ophalen — e-mailadressen en telefoonnummers die door bezoekers zijn ingediend tijdens chatgesprekken.
Queryparameters
| Parameter | Type | Vereist | Beschrijving |
|---|---|---|---|
limit |
integer | Nee | Aantal leads om terug te geven (standaard: 50, max: 100) |
website_id |
string | Nee | Filter leads op een specifiek website-ID |
Antwoord
{
"success": true,
"leads": [
{
"session_id": "session_abc123def",
"email": "visitor@example.com",
"phone": "+1234567890",
"page_url": "https://example.com/pricing",
"started_at": "2024-01-15T10:30:00Z"
}
]
}
| Veld | Type | Beschrijving |
|---|---|---|
session_id |
string | De chatsessie-ID. Geef dit door aan /conversations/ om de volledige chatgeschiedenis te zien. |
email |
string of null | E-mailadres verstrekt door de bezoeker, of null indien niet verzameld |
phone |
string of null | Telefoonnummer verstrekt door de bezoeker, of null indien niet verzameld |
page_url |
string of null | De pagina-URL waar de bezoeker aan het chatten was |
started_at |
string | ISO 8601 tijdstempel van wanneer de chatsessie begon |
Voorbeeld (cURL)
curl "https://asyntai.com/api/v1/leads/?limit=20" \
-H "Authorization: Bearer YOUR_API_KEY"
Voorbeeld (Python)
import requests
response = requests.get(
"https://asyntai.com/api/v1/leads/",
headers={"Authorization": "Bearer YOUR_API_KEY"},
params={"limit": 20}
)
leads = response.json()["leads"]
for lead in leads:
print(f"{lead['email'] or ''} | {lead['phone'] or ''}")
GET /account/
Haal uw accountinformatie en gebruiksstatistieken op.
Antwoord
{
"success": true,
"account": {
"email": "you@example.com",
"plan": "starter",
"messages_used": 150,
"messages_limit": 2500
}
}
Voorbeeld (cURL)
curl https://asyntai.com/api/v1/account/ \
-H "Authorization: Bearer YOUR_API_KEY"
Meerdere websites? Kennisbank-endpoints gebruiken standaard uw primaire website. Als u meerdere websites heeft, geef dan website_id om een specifieke te targeten. U kunt uw website-ID's vinden met GET /websites/.
Dagelijkse uploadlimieten: Kennisbank-uploads (tekst, URL, spreadsheet) zijn onderworpen aan een dagelijkse tekenlimiet op basis van uw abonnement. Dit geldt voor de totale inhoud die per dag via alle kennisbank-endpoints wordt geüpload.
| Abonnement | Tekens/dag |
|---|---|
| Starter | 100.000 |
| Standard | 500.000 |
| Pro | 2.000.000 |
GET /knowledge/
Toon uw kennisbankitems. Dit zijn de inhoudsbronnen die uw AI-chatbot gebruikt om vragen te beantwoorden.
Queryparameters
| Parameter | Type | Vereist | Beschrijving |
|---|---|---|---|
limit |
integer | Nee | Aantal items om te retourneren (standaard: 50, max: 100) |
website_id |
string | Nee | Filter op website-ID (standaard uw primaire website) |
Antwoord
{
"success": true,
"entries": [
{
"id": "abc-123-def",
"type": "text",
"title": "Business Hours",
"description": "Manual text content (150 words)",
"created_at": "2024-01-15T10:30:00Z"
},
{
"id": "ghi-456-jkl",
"type": "url",
"title": "About Us - Example",
"description": "Content from https://example.com/about",
"created_at": "2024-01-14T09:00:00Z"
}
]
}
Voorbeeld (cURL)
curl "https://asyntai.com/api/v1/knowledge/?limit=10" \
-H "Authorization: Bearer YOUR_API_KEY"
POST /knowledge/text/
Voeg aangepaste tekstinhoud toe aan uw kennisbank. De AI gebruikt dit om vragen van bezoekers te beantwoorden.
Verzoekinhoud
{
"title": "Return Policy",
"content": "We offer a 30-day return policy on all items. Items must be unused and in original packaging. Refunds are processed within 5-7 business days.",
"website_id": "123"
}
| Parameter | Type | Vereist | Beschrijving |
|---|---|---|---|
title |
string | Ja | Een titel voor dit kennisbankitem |
content |
string | Ja | De tekstinhoud (minimaal 10 tekens) |
website_id |
string | Nee | Doelwebsite (standaard uw primaire website) |
Antwoord
{
"success": true,
"id": "abc-123-def",
"title": "Return Policy",
"chunks_created": 1
}
Voorbeeld (cURL)
curl -X POST "https://asyntai.com/api/v1/knowledge/text/" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"title": "Return Policy", "content": "We offer a 30-day return policy..."}'
POST /knowledge/url/
Voeg een webpagina toe aan uw kennisbank. De inhoud wordt automatisch opgehaald en geëxtraheerd.
Verzoekinhoud
{
"url": "https://example.com/faq",
"website_id": "123"
}
| Parameter | Type | Vereist | Beschrijving |
|---|---|---|---|
url |
string | Ja | De URL waarvan de inhoud moet worden opgehaald |
website_id |
string | Nee | Doelwebsite (standaard uw primaire website) |
Antwoord
{
"success": true,
"id": "abc-123-def",
"title": "FAQ - Example",
"url": "https://example.com/faq",
"chunks_created": 5
}
Voorbeeld (cURL)
curl -X POST "https://asyntai.com/api/v1/knowledge/url/" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com/faq"}'
POST /knowledge/spreadsheet/
Upload een CSV- of Excel-spreadsheet (.xlsx) naar uw kennisbank. Elke rij wordt een apart kennisbankitem, ideaal voor productcatalogi, FAQ-lijsten, prijstabellen en adreslijsten.
Verzoek
Verzend als multipart/form-data (bestandsupload), niet als JSON.
| Parameter | Type | Vereist | Beschrijving |
|---|---|---|---|
file |
bestand | Ja | Een .csv- of .xlsx-bestand. De eerste rij moet kolomkoppen bevatten. Maximaal aantal rijen per upload: Starter 500, Standard 2.000, Pro 10.000. Overtollige rijen worden afgekapt. |
website_id |
string | Nee | Doelwebsite (standaard uw primaire website) |
Antwoord
{
"success": true,
"id": "abc-123-def",
"title": "products.csv",
"rows_processed": 15,
"chunks_created": 15
}
Voorbeeld (cURL)
curl -X POST "https://asyntai.com/api/v1/knowledge/spreadsheet/" \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "file=@products.csv"
DELETE /knowledge/{id}/
Verwijder een kennisbankitem. Het id is te vinden in het antwoord van GET /knowledge/.
Antwoord
{
"success": true,
"message": "Knowledge base entry deleted"
}
Voorbeeld (cURL)
curl -X DELETE "https://asyntai.com/api/v1/knowledge/abc-123-def/" \
-H "Authorization: Bearer YOUR_API_KEY"
Tip: U kunt webhooks ook beheren via de API-instellingen pagina zonder code te schrijven.
GET /webhooks/
Toon uw geregistreerde webhooks.
Antwoord
{
"success": true,
"webhooks": [
{
"id": "abc-123-def",
"url": "https://example.com/webhook",
"events": ["message.received", "escalation.requested"],
"is_active": true,
"created_at": "2024-01-15T10:30:00Z"
}
]
}
Voorbeeld (cURL)
curl "https://asyntai.com/api/v1/webhooks/" \
-H "Authorization: Bearer YOUR_API_KEY"
POST /webhooks/
Registreer een nieuwe webhook om realtime evenementmeldingen te ontvangen.
Beschikbare gebeurtenissen
| Gebeurtenis | Beschrijving |
|---|---|
message.received |
Een bezoeker heeft een bericht gestuurd en een antwoord ontvangen |
conversation.started |
Er is een nieuwe chatsessie gestart |
escalation.requested |
De AI heeft een escalatie naar een menselijke medewerker geactiveerd |
takeover.started |
Een menselijke medewerker heeft een chatsessie overgenomen |
Verzoekinhoud
{
"url": "https://example.com/webhook",
"events": ["message.received", "escalation.requested"],
"website_id": "123"
}
| Parameter | Type | Vereist | Beschrijving |
|---|---|---|---|
url |
string | Ja | De HTTPS-URL om webhook POST-verzoeken te ontvangen |
events |
array | Ja | Lijst met gebeurtenissen om u op te abonneren (zie tabel hierboven) |
website_id |
string | Nee | Doelwebsite (standaard uw primaire website) |
Antwoord
{
"success": true,
"webhook": {
"id": "abc-123-def",
"url": "https://example.com/webhook",
"events": ["message.received", "escalation.requested"],
"secret": "whsec_abc123...",
"created_at": "2024-01-15T10:30:00Z"
}
}
Webhooks verifiëren: Elke webhook bevat een secret (alleen getoond bij aanmaak). Elke POST naar uw URL bevat een X-Webhook-Signature header \u2014 een HMAC-SHA256 van de verzoekbody ondertekend met uw geheim.
Voorbeeld (cURL)
curl -X POST "https://asyntai.com/api/v1/webhooks/" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url": "https://example.com/webhook", "events": ["message.received"]}'
DELETE /webhooks/{id}/
Verwijder een webhook. Het id is te vinden in het antwoord van GET /webhooks/.
Antwoord
{
"success": true,
"message": "Webhook deleted"
}
Voorbeeld (cURL)
curl -X DELETE "https://asyntai.com/api/v1/webhooks/abc-123-def/" \
-H "Authorization: Bearer YOUR_API_KEY"
Foutmeldingen
Alle foutmeldingen volgen dit formaat:
{
"success": false,
"error": "Error message describing what went wrong"
}
| Statuscode | Beschrijving |
|---|---|
400 |
Ongeldig verzoek - Ongeldige parameters of ontbrekende verplichte velden |
401 |
Niet geautoriseerd - Ongeldige of ontbrekende API-sleutel |
429 |
Te veel verzoeken - Berichtlimiet bereikt voor uw abonnement |
503 |
Service niet beschikbaar - AI-service tijdelijk niet beschikbaar |
Snelheidslimieten
API-gebruik is beperkt op basis van uw abonnement:
- Free: 100 berichten/maand
- Starter ($39/mnd): 2.500 berichten/maand
- Standard ($139/mnd): 15.000 berichten/maand
- Pro ($449/mnd): 50.000 berichten/maand
Hulp nodig?
Als u vragen heeft of problemen ondervindt, neem dan contact met ons op via hello@asyntai.com.