API-reference

Byg brugerdefinerede integrationer med Asyntai REST API

Hent API-nøgle

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
Starter100.000
Standard500.000
Pro2.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.