API-reference
Byg brugerdefinerede integrationer med Asyntai REST API
Betalt abonnement kræves: API-adgang er tilgængelig på Starter-, Standard- og Pro-abonnementer. Se priser
Oversigt
Asyntai API giver dig mulighed for at integrere AI-drevet kundesupport i enhver applikation. Send beskeder og modtag intelligente svar, der er trænet på dit websteds indhold og vidensbase.
Godkendelse
Alle API-anmodninger kræver godkendelse med din API-nøgle. Du kan hente din API-nøgle fra siden API-indstillinger.
Inkluder din API-nøgle i anmodninger ved hjælp af en af disse metoder:
- Authorization-header (anbefalet):
Authorization: Bearer YOUR_API_KEY - X-API-Key-header:
X-API-Key: YOUR_API_KEY
Hold din API-nøgle hemmelig. Enhver med din nøgle kan tilgå din konto via API'en. Udsæt den aldrig i klientkode.
Basis-URL
https://asyntai.com/api/v1/
Slutpunkter
POST /chat/
Send en besked og modtag et AI-genereret svar.
Anmodningstekst
{
"message": "What are your business hours?",
"session_id": "user_123", // optional
"website_id": 1 // optional
}
| Parameter | Type | Påkrævet | Beskrivelse |
|---|---|---|---|
message |
streng | Ja | Brugerens besked, der skal sendes til AI'en |
session_id |
streng | Nej | Unik identifikator for samtalen. Brug samme session_id for at opretholde samtalens historik. |
website_id |
heltal | Nej | Specifikt websted-ID. Hvis det ikke angives, bruges dit primære websted. |
Svar
{
"success": true,
"response": "Our business hours are Monday-Friday, 9 AM to 5 PM EST.",
"session_id": "user_123"
}
Eksempel (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"}'
Eksempel (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"])
Eksempel (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/
List alle websteder, der er tilknyttet din konto.
Svar
{
"success": true,
"websites": [
{
"id": 1,
"name": "My Website",
"domain": "example.com",
"is_primary": true
}
]
}
Eksempel (cURL)
curl https://asyntai.com/api/v1/websites/ \
-H "Authorization: Bearer YOUR_API_KEY"
GET /conversations/
Hent samtalens historik for en specifik session.
Forespørgselsparametre
| Parameter | Type | Påkrævet | Beskrivelse |
|---|---|---|---|
session_id |
streng | Ja | Session-ID'et, som historikken skal hentes for |
limit |
heltal | Nej | Maks. beskeder der returneres (standard: 50, maks.: 100) |
Svar
{
"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"
}
]
}
Eksempel (cURL)
curl "https://asyntai.com/api/v1/conversations/?session_id=user_123&limit=20" \
-H "Authorization: Bearer YOUR_API_KEY"
GET /sessions/
List dine seneste chatsessioner. Brug dette til at finde session-ID'er, som du derefter kan sende til /conversations/ for at hente den fulde beskedhistorik.
Forespørgselsparametre
| Parameter | Type | Påkrævet | Beskrivelse |
|---|---|---|---|
limit |
heltal | Nej | Antal seneste sessioner der returneres (standard: 20, maks.: 100) |
website_id |
streng | Nej | Filtrer sessioner efter et specifikt websted-ID |
source |
streng | Nej | Filtrer efter sessionskilde: widget, api, whatsapp, instagram, messenger, gorgias, freshchat, zapier |
Svar
{
"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"
}
]
}
Eksempel (cURL)
curl "https://asyntai.com/api/v1/sessions/?limit=10" \
-H "Authorization: Bearer YOUR_API_KEY"
GET /leads/
Hent indsamlede leads — e-mailadresser og telefonnumre indsendt af besøgende under chatsamtaler.
Forespørgselsparametre
| Parameter | Type | Påkrævet | Beskrivelse |
|---|---|---|---|
limit |
heltal | Nej | Antal leads der skal returneres (standard: 50, maks: 100) |
website_id |
streng | Nej | Filtrer leads efter et specifikt websted-ID |
Svar
{
"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"
}
]
}
| Felt | Type | Beskrivelse |
|---|---|---|
session_id |
streng | Chatsession-ID. Send dette til /conversations/ for at se den fulde chathistorik. |
email |
streng eller null | E-mailadresse angivet af den besøgende, eller null hvis ikke indsamlet |
phone |
streng eller null | Telefonnummer angivet af den besøgende, eller null hvis ikke indsamlet |
page_url |
streng eller null | Side-URL'en hvor den besøgende chattede |
started_at |
streng | ISO 8601 tidsstempel for hvornår chatsessionen startede |
Eksempel (cURL)
curl "https://asyntai.com/api/v1/leads/?limit=20" \
-H "Authorization: Bearer YOUR_API_KEY"
Eksempel (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/
Hent dine kontooplysninger og brugsstatistikker.
Svar
{
"success": true,
"account": {
"email": "you@example.com",
"plan": "starter",
"messages_used": 150,
"messages_limit": 2500
}
}
Eksempel (cURL)
curl https://asyntai.com/api/v1/account/ \
-H "Authorization: Bearer YOUR_API_KEY"
Flere websteder? Vidensbasens slutpunkter anvender som standard dit primære websted. Hvis du har flere websteder, skal du sende website_id for at målrette en bestemt. Du kan finde dine hjemmeside-ID'er ved at bruge GET /websites/.
Daglige uploadgrænser: Upload til vidensbasen (tekst, URL, regneark) er underlagt en daglig tegngrænse baseret på dit abonnement. Dette gælder det samlede indhold, der uploades på tværs af alle vidensbasens slutpunkter pr. dag.
| Plan | Tegn/dag |
|---|---|
| Starter | 100.000 |
| Standard | 500.000 |
| Pro | 2.000.000 |
GET /knowledge/
List dine vidensbaseindgange. Dette er de indholdskilder, som din AI-chatbot bruger til at besvare spørgsmål.
Forespørgselsparametre
| Parameter | Type | Påkrævet | Beskrivelse |
|---|---|---|---|
limit |
heltal | Nej | Antal indgange der returneres (standard: 50, maks.: 100) |
website_id |
streng | Nej | Filtrer efter websted-ID (standard er dit primære websted) |
Svar
{
"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"
}
]
}
Eksempel (cURL)
curl "https://asyntai.com/api/v1/knowledge/?limit=10" \
-H "Authorization: Bearer YOUR_API_KEY"
POST /knowledge/text/
Tilføj brugerdefineret tekstindhold til din vidensbase. AI'en vil bruge dette til at besvare besøgendes spørgsmål.
Anmodningstekst
{
"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 | Påkrævet | Beskrivelse |
|---|---|---|---|
title |
streng | Ja | En titel til denne vidensindgang |
content |
streng | Ja | Tekstindholdet (min. 10 tegn) |
website_id |
streng | Nej | Målwebsted (standard er dit primære websted) |
Svar
{
"success": true,
"id": "abc-123-def",
"title": "Return Policy",
"chunks_created": 1
}
Eksempel (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/
Tilføj en webside til din vidensbase. Indholdet hentes og udtrækkes automatisk.
Anmodningstekst
{
"url": "https://example.com/faq",
"website_id": "123"
}
| Parameter | Type | Påkrævet | Beskrivelse |
|---|---|---|---|
url |
streng | Ja | URL'en, som indhold hentes fra |
website_id |
streng | Nej | Målwebsted (standard er dit primære websted) |
Svar
{
"success": true,
"id": "abc-123-def",
"title": "FAQ - Example",
"url": "https://example.com/faq",
"chunks_created": 5
}
Eksempel (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 et CSV- eller Excel-regneark (.xlsx) til din vidensbase. Hver række bliver en separat vidensindgang, ideel til produktkataloger, FAQ-lister, pristabeller og mapper.
Anmodning
Send som multipart/form-data (filupload), ikke JSON.
| Parameter | Type | Påkrævet | Beskrivelse |
|---|---|---|---|
file |
fil | Ja | En .csv- eller .xlsx-fil. Første række skal være kolonneoverskrifter. Maks. rækker pr. upload: Starter 500, Standard 2.000, Pro 10.000. Overskydende rækker afkortes. |
website_id |
streng | Nej | Målwebsted (standard er dit primære websted) |
Svar
{
"success": true,
"id": "abc-123-def",
"title": "products.csv",
"rows_processed": 15,
"chunks_created": 15
}
Eksempel (cURL)
curl -X POST "https://asyntai.com/api/v1/knowledge/spreadsheet/" \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "file=@products.csv"
DELETE /knowledge/{id}/
Slet en vidensbaseindgang. id kan findes i svaret fra GET /knowledge/.
Svar
{
"success": true,
"message": "Knowledge base entry deleted"
}
Eksempel (cURL)
curl -X DELETE "https://asyntai.com/api/v1/knowledge/abc-123-def/" \
-H "Authorization: Bearer YOUR_API_KEY"
Tip: Du kan også administrere webhooks fra API-indstillinger siden uden at skrive nogen kode.
GET /webhooks/
List dine registrerede webhooks.
Svar
{
"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"
}
]
}
Eksempel (cURL)
curl "https://asyntai.com/api/v1/webhooks/" \
-H "Authorization: Bearer YOUR_API_KEY"
POST /webhooks/
Registrer en ny webhook for at modtage realtidsbegivenhedsnotifikationer.
Tilgængelige begivenheder
| Begivenhed | Beskrivelse |
|---|---|
message.received |
En besøgende sendte en besked og modtog et svar |
conversation.started |
En ny chatsession blev startet |
escalation.requested |
AI'en udløste en eskalering til en menneskelig agent |
takeover.started |
En menneskelig agent overtog en chatsession |
Anmodningstekst
{
"url": "https://example.com/webhook",
"events": ["message.received", "escalation.requested"],
"website_id": "123"
}
| Parameter | Type | Påkrævet | Beskrivelse |
|---|---|---|---|
url |
streng | Ja | HTTPS-URL'en til at modtage webhook POST-anmodninger |
events |
array | Ja | Liste over begivenheder, der abonneres på (se tabellen ovenfor) |
website_id |
streng | Nej | Målwebsted (standard er dit primære websted) |
Svar
{
"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"
}
}
Verificering af webhooks: Hver webhook inkluderer en secret (vises kun ved oprettelse). Hvert POST til din URL inkluderer en X-Webhook-Signature header — en HMAC-SHA256 af anmodningsteksten signeret med din hemmelighed.
Eksempel (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}/
Slet en webhook. id kan findes i svaret fra GET /webhooks/.
Svar
{
"success": true,
"message": "Webhook deleted"
}
Eksempel (cURL)
curl -X DELETE "https://asyntai.com/api/v1/webhooks/abc-123-def/" \
-H "Authorization: Bearer YOUR_API_KEY"
Fejlsvar
Alle fejlsvar følger dette format:
{
"success": false,
"error": "Error message describing what went wrong"
}
| Statuskode | Beskrivelse |
|---|---|
400 |
Ugyldig anmodning - Ugyldige parametre eller manglende påkrævede felter |
401 |
Ikke autoriseret - Ugyldig eller manglende API-nøgle |
429 |
For mange anmodninger - Beskedgrænsen for dit abonnement er nået |
503 |
Tjeneste utilgængelig - AI-tjenesten er midlertidigt utilgængelig |
Hastighedsgrænser
API-brug er begrænset af dit abonnement:
- Free: 100 beskeder/måned
- Starter ($39/md.): 2.500 beskeder/måned
- Standard ($139/md.): 15.000 beskeder/måned
- Pro ($449/md.): 50.000 beskeder/måned
Brug for hjælp?
Hvis du har spørgsmål eller støder på problemer, kan du kontakte os på hello@asyntai.com.