Grįžti į valdymo skydą

Dokumentacija

Sužinokite, kaip naudoti Asyntai

API dokumentacija

Kurkite pasirinktinius integravimus su Asyntai REST API

Gauti API raktą

Reikalingas mokamas planas: API prieiga prieinama Starter, Standard ir Pro planuose. Peržiūrėti kainas

Apžvalga

The Asyntai API allows you to integrate AI-powered customer support into any application. Send messages and receive intelligent responses grounded in your website content and knowledge base.

Autentifikacija

All API requests require authentication using your API key. You can get your API key from the API Settings page.

Įtraukite savo API raktą į užklausas naudodami vieną iš šių metodų:

  • Authorization antraštė (rekomenduojama): Authorization: Bearer YOUR_API_KEY
  • X-API-Key antraštė: X-API-Key: YOUR_API_KEY

Laikykite savo API raktą slaptai. Bet kas su jūsų raktu gali pasiekti jūsų paskyrą per API. Niekada nerodykite jo kliento pusės kode.

Bazinis URL

https://asyntai.com/api/v1/

Galiniai taškai

POST /chat/

Siųskite žinutę ir gaukite DI sugeneruotą atsakymą.

Užklausos turinys

{
  "message": "What are your business hours?",
  "session_id": "user_123",      // optional
  "website_id": 1                 // optional
}
Parametras Tipas Privalomas Aprašymas
message string Taip Naudotojo žinutė, siunčiama DI
session_id string Ne Unikalus pokalbio identifikatorius. Naudokite tą patį session_id pokalbių istorijai išlaikyti.
website_id integer Ne Konkretus svetainės ID. Jei nepateikta, naudojama jūsų pagrindinė svetainė.

Atsakymas

{
  "success": true,
  "response": "Our business hours are Monday-Friday, 9 AM to 5 PM EST.",
  "session_id": "user_123"
}

Pavyzdys (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"}'

Pavyzdys (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"])

Pavyzdys (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/

Išvardykite visas su jūsų paskyra susietas svetaines.

Atsakymas

{
  "success": true,
  "websites": [
    {
      "id": 1,
      "name": "My Website",
      "domain": "example.com",
      "is_primary": true
    }
  ]
}

Pavyzdys (cURL)

curl https://asyntai.com/api/v1/websites/ \
  -H "Authorization: Bearer YOUR_API_KEY"

POST /websites/

Create a new AI agent. This does the same thing as adding a website in your dashboard: it makes the agent, reads your site, and writes the first draft of the AI instructions.

Use this to set up customers from your own software. You get back the widget ID and the code to put on the website.

Užklausos turinys

Laukas Tipas Aprašymas
domain string Required. The website address, for example example.com
name string Optional. A display name for the agent. Useful when one website has several agents.
crawl boolean Optional, true by default. Set it to false to create the agent without reading the website. Nothing is crawled and no instructions are written.
force boolean Optional, false by default. Set it to true to add a website you already have. The copy is stored with a number after it.

Atsakymas

{
  "success": true,
  "website": {
    "id": 42,
    "domain": "example.com",
    "name": "Support agent",
    "widget_id": "asyntai_ab12cd34ef56",
    "is_primary": true,
    "crawl_started": true,
    "instructions_status": "generating",
    "job_id": "8f2c1e90-..."
  },
  "embed_code": "<script>...</script>"
}

Pavyzdys (cURL)

curl -X POST https://asyntai.com/api/v1/websites/ \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"domain": "example.com", "name": "Support agent"}'

Reading a website takes a few minutes, so this call answers straight away. Check when the agent is ready with the next endpoint.

Errors

Code Meaning
403 You have reached the number of websites your plan allows. The answer tells you the limit.
409 Your account already has this website. Send force as true to add it again.

GET /websites/{id}/

Get one website and see whether it is ready. Use this after you create an agent, to wait until the website has been read and the AI instructions are written.

Atsakymas

{
  "success": true,
  "website": {
    "id": 42,
    "domain": "example.com",
    "name": "Support agent",
    "widget_id": "asyntai_ab12cd34ef56",
    "is_primary": true,
    "created_at": "2026-08-11T09:12:00+00:00",
    "ready": true,
    "instructions": {
      "status": "completed",
      "has_instructions": true,
      "characters": 3421
    },
    "crawl": {
      "job_id": "8f2c1e90-...",
      "status": "completed",
      "pages_crawled": 47,
      "pages_found": 50,
      "max_pages": 50,
      "completed_at": "2026-08-11T09:15:31+00:00",
      "error": ""
    },
    "knowledge_items": 47
  },
  "embed_code": "<script>...</script>"
}

The ready field is true when nothing is still running. A crawl that failed also counts as ready, because it has finished. Look at the crawl status to see what happened.

Pavyzdys (cURL)

curl https://asyntai.com/api/v1/websites/42/ \
  -H "Authorization: Bearer YOUR_API_KEY"

GET PATCH /websites/{id}/settings/

Read or change the chat widget settings for one website. These are the same settings you see on the Customize page: colours, the name of the assistant, the first message, lead capture, and everything else.

Reading the settings

A GET request returns every setting with its current value, plus a locked list. Locked shows the settings your plan cannot change, and which plans they need.

{
  "success": true,
  "settings": {
    "ai_support_name": "AI Assistant",
    "widget_color": "#0B0D10",
    "initial_message": "Hi, how can I help you?",
    "hide_branding": false,
    "...": "..."
  },
  "locked": {
    "hide_branding": ["pro", "enterprise"],
    "widget_style": ["pro", "enterprise"]
  }
}

Changing the settings

A PATCH request changes only the settings you send. Everything you leave out stays as it is.

curl -X PATCH https://asyntai.com/api/v1/websites/42/settings/ \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"ai_support_name": "Ava", "widget_color": "#0f172a", "use_emoji": true}'
{
  "success": true,
  "updated": ["ai_support_name", "use_emoji", "widget_color"],
  "settings": { "...": "..." },
  "locked": { "...": "..." }
}

Plans

Each setting needs its own plan, the same as in the dashboard. For example, hiding the Asyntai branding needs the Pro plan, and voice input needs Standard.

Plan needed Nustatymai Examples
Any paid plan 25 widget_color, ai_support_name, initial_message
Starter ir aukštesni 22 profile_picture, conversation_starters_enabled
Standard ir aukštesni 25 speech_to_text_enabled, image_vision_enabled, escalation_enabled
Pro 6 hide_branding, widget_style

If you send a setting your plan does not allow, the whole request is refused with code 403 and nothing is saved. The same happens if any value is wrong, for example a colour that is not a hex code. Your settings never end up half changed.

GET PUT /websites/{id}/instructions/

Read or replace the AI instructions for one website. These are the rules that tell the assistant who it is, what it may say, and what it must not say. They are the same instructions you edit in the dashboard.

Reading

{
  "success": true,
  "instructions": "You are the support agent for Acme Tools...",
  "characters": 1979,
  "version": 7,
  "mode": "instructions",
  "ask_questions": true,
  "generation_status": "completed",
  "being_edited_by": null
}

Replacing

A PUT request replaces the whole text, the same as saving in the dashboard. There is no append mode. To add a paragraph, read the instructions, add your text, then write it back.

curl -X PUT https://asyntai.com/api/v1/websites/42/instructions/ \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"instructions": "You are the support agent for Acme Tools...", "version": 7}'

Užklausos turinys

Laukas Tipas Aprašymas
instructions string Required. The complete new text. It replaces everything that was there.
version number Optional but recommended. The version you read. If somebody changed the instructions since then, your write is refused instead of overwriting their work.
mode string Optional. Either instructions or general.
ask_questions boolean Optional. Whether the assistant asks a follow-up question at the end of its answers.
force boolean Optional, false by default. Needed only when your new text is less than half the length of the current text.

How your instructions are protected

Instructions can take hours to write, so a write can be refused to protect them:

Code Meaning
400 Your new text is less than half the length of the current text. This catches a script that sends empty or cut-off text over instructions somebody spent hours on. Send force as true if you meant it.
409 The instructions changed after you read them. Read them again, apply your change, then write.
423 Somebody is editing the instructions in the dashboard right now. The answer tells you who. Try again in a couple of minutes.

Every change also saves a copy of the previous text, so an earlier version can always be restored from the dashboard.

GET /conversations/

Gaukite pokalbių istoriją konkrečiai sesijai.

Užklausos parametrai

Parametras Tipas Privalomas Aprašymas
session_id string Taip Sesijos ID, kurio istoriją norite gauti
limit integer Ne Maksimalus grąžinamų žinučių skaičius (numatytasis: 50, maks.: 100)

Atsakymas

{
  "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",
      "sender_type": "ai",
      "agent_name": null,
      "response_time_ms": 1840.5
    }
  ]
}

Klausimas ir jo atsakymas saugomi viename įraše, todėl abu turi tą patį timestamp. Neatimkite vieno iš kito, kad išmatuotumėte atsakymo greitį, nes rezultatas visada bus nulis. Naudokite response_time_ms, tai yra tikrasis atsakymo laikas milisekundėmis.

sender_type yra ai, kai atsakė pokalbių robotas, ir human, kai pokalbį perėmė vienas iš jūsų operatorių. agent_name saugo to operatoriaus rodomą vardą.

Pavyzdys (cURL)

curl "https://asyntai.com/api/v1/conversations/?session_id=user_123&limit=20" \
  -H "Authorization: Bearer YOUR_API_KEY"

GET /sessions/

Parodykite savo naujausias pokalbių sesijas. Naudokite tai sesijų ID sužinojimui, kuriuos galite perduoti /conversations/ pilnai žinučių istorijai gauti.

Užklausos parametrai

Parametras Tipas Privalomas Aprašymas
limit integer Ne Grąžinamų naujausių sesijų skaičius (numatytasis: 20, maks.: 100)
website_id string Ne Filtruoti sesijas pagal konkretų svetainės ID
source string Ne Filtruoti pagal sesijos šaltinį: widget, api, whatsapp, instagram, messenger, gorgias, freshchat, zapier
since string Ne Tik sesijos, kurių paskutinė žinutė yra šią ISO datą arba vėliau, pavyzdžiui 2024-01-15
before string Ne Tik sesijos, kurių paskutinė žinutė yra prieš šią ISO datą arba datą ir laiką. Naudokite jį puslapiavimui atgal, žr. žemiau.

Atsakymas

{
  "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",
      "first_response_time_ms": 1840.5,
      "first_human_response_at": null,
      "started_at": "2024-01-15T10:29:58Z",
      "ended_at": "2024-01-15T10:41:12Z",
      "taken_over_at": null,
      "page_url": "https://example.com/pricing",
      "country": "Germany",
      "category": "Pricing",
      "website_domain": "example.com"
    }
  ]
}

Laiko žymų laukai ataskaitoms

Laukas Aprašymas
started_at Kada lankytojas atidarė pokalbį. Pasiekiama tik valdiklio seansams, nes per API sukurti seansai niekada neatidaro valdiklio.
first_message_at Kada buvo išsaugota pirmoji pokalbio žinutė.
first_response_time_ms Kiek truko pirmasis atsakymas milisekundėmis. Naudokite tai pirmojo atsakymo laikui.
first_human_response_at Kada vienas iš jūsų operatorių išsiuntė pirmąjį atsakymą. Reikšmė yra null, kai visą pokalbį tvarkė pokalbių robotas.
taken_over_at Kada operatorius perėmė pokalbį iš pokalbių roboto.
last_message_at Kada buvo išsaugota paskutinė pokalbio žinutė.
ended_at Kada lankytojas paliko pokalbį. Pokalbis neturi išspręstos ar uždarytos būsenos, nes lankytojas visada gali grįžti ir užduoti kitą klausimą.

Visos laiko žymos yra UTC ir naudoja ISO 8601 formatą. Laiko juostos pakeisti negalima. Konvertuokite reikšmes savo ataskaitų įrankyje.

Kiti laukai ataskaitoms

Laukas Aprašymas
page_url Puslapis, kuriame lankytojas buvo pradėjus pokalbį. Prieinama tik valdiklio sesijoms.
country Lankytojo šalis pagal IP adresą pokalbio metu. Prieinama tik valdiklio sesijoms.
category Tema iš pokalbių kategorijų. Tuščia, kai funkcija išjungta arba kasdienė užduotis šio pokalbio dar nepažymėjo.

Pavyzdys (cURL)

curl "https://asyntai.com/api/v1/sessions/?since=2024-01-01&limit=100" \
  -H "Authorization: Bearer YOUR_API_KEY"

Istorijos puslapiavimas

Vienas iškvietimas grąžina daugiausiai 100 sesijų, naujausios pirmos. Norėdami skaityti toliau į praeitį, paimkite paskutinės puslapio sesijos last_message_at ir perduokite jį kaip before kitame iškvietime. Kartokite, kol iškvietimas grąžins tuščią sąrašą.

import requests

url = "https://asyntai.com/api/v1/sessions/"
headers = {"Authorization": "Bearer YOUR_API_KEY"}
params = {"since": "2024-01-01", "limit": 100}

sessions = []
while True:
    page = requests.get(url, headers=headers, params=params).json()["sessions"]
    if not page:
        break
    sessions.extend(page)
    params["before"] = page[-1]["last_message_at"]

print(len(sessions), "sessions since 2024-01-01")

GET /leads/

Gauti surinktus potencialius klientus — el. pašto adresus ir telefonų numerius, kuriuos lankytojai pateikė pokalbių metu.

Užklausos parametrai

Parametras Tipas Privalomas Aprašymas
limit integer Ne Grąžinamų potencialių klientų skaičius (numatytasis: 50, maks: 100)
website_id string Ne Filtruoti potencialius klientus pagal konkretų svetainės ID
since string Ne Tik potencialūs klientai, pradėti šią ISO datą arba vėliau, pavyzdžiui 2024-01-15
before string Ne Tik potencialūs klientai, pradėti prieš šią ISO datą arba laiką. Naudokite tai norėdami peržiūrėti visą istoriją atgal.

Atsakymas

{
  "success": true,
  "leads": [
    {
      "session_id": "session_abc123def",
      "email": "[email protected]",
      "phone": "+1234567890",
      "page_url": "https://example.com/pricing",
      "started_at": "2024-01-15T10:30:00Z"
    }
  ]
}
Laukas Tipas Aprašymas
session_id string Pokalbio sesijos ID. Perduokite jį į /conversations/, kad pamatytumėte visą pokalbių istoriją.
email eilutė arba null Lankytojo pateiktas el. pašto adresas, arba null jei nebuvo surinktas
phone eilutė arba null Lankytojo pateiktas telefono numeris, arba null jei nebuvo surinktas
page_url eilutė arba null Puslapio URL, kuriame lankytojas kalbėjosi
started_at string ISO 8601 laiko žyma, kada pokalbio sesija prasidėjo

Pavyzdys (cURL)

curl "https://asyntai.com/api/v1/leads/?limit=20" \
  -H "Authorization: Bearer YOUR_API_KEY"

Pavyzdys (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 /tickets/

Gaukite palaikymo užklausas su laiko žymomis, kurių reikia apdorojimo laikui matuoti: kada užklausa atėjo, kada kas nors ją perėmė, kada į ją pirmą kartą atsakyta ir kada ji išspręsta.

Užklausos parametrai

Parametras Tipas Privalomas Aprašymas
limit integer Ne Grąžinamų užklausų skaičius (numatyta: 50, daugiausia: 100)
website_id string Ne Filtruoti bilietus pagal svetainės ID arba pagal svetainės domeną, pavyzdžiui example.com
name string Ne Filtruoti pagal bet kurią lankytojo vardo dalį, pavyzdžiui anna
status string Ne Filtruoti pagal būseną: open, in_progress, resolved arba closed
since string Ne Tik užklausos, sukurtos šią ISO datą arba vėliau, pavyzdžiui 2024-01-15
before string Ne Tik bilietai, sukurti prieš šią ISO datą arba datą ir laiką. Naudokite jį puslapiavimui atgal, žr. žemiau.

Atsakymas

{
  "success": true,
  "tickets": [
    {
      "ticket_number": "TKT-00001",
      "session_id": "session_abc123def",
      "status": "resolved",
      "priority": "medium",
      "subject": "Cannot complete checkout",
      "visitor_email": "[email protected]",
      "visitor_name": "Anna Novak",
      "page_url": "https://example.com/checkout",
      "website_id": 12,
      "channel": "session",
      "assigned_to": "[email protected]",
      "created_at": "2024-01-15T10:30:00Z",
      "first_assigned_at": "2024-01-15T10:41:00Z",
      "first_response_at": "2024-01-15T11:02:00Z",
      "resolved_at": "2024-01-15T12:20:00Z"
    }
  ]
}
Laukas Tipas Aprašymas
ticket_number string Užklausos numeris, rodomas jūsų skydelyje
session_id string Pokalbio sesija, iš kurios kilo užklausa. Perduokite ją į /conversations/, kad perskaitytumėte visą pokalbį už užklausos.
visitor_name eilutė arba null Lankytojo vardas arba null, jei lankytojas jo nenurodė
status string Viena iš: open, in_progress, resolved, closed
priority string Viena iš: low, medium, high
channel string Iš kur atėjo pokalbis, pavyzdžiui session svetainės pokalbių lange
assigned_to eilutė arba null Komandos narys, kuriam priskirta užklausa, arba null, jei niekas jos neperėmė
created_at string Kada užklausa sukurta
first_assigned_at eilutė arba null Kada kas nors pirmą kartą perėmė užklausą. Null, jei to niekas nepadarė.
first_response_at eilutė arba null Kada iš Asyntai išsiųstas pirmas atsakymas. Null, jei iš Asyntai atsakymo nebuvo.
resolved_at eilutė arba null Kada užklausa pažymėta kaip išspręsta. Null, kol ji lieka atvira.

Matome tik iš Asyntai išsiųstus atsakymus. Jei jūsų komanda atsako lankytojui iš savo pašto dėžutės, mes to niekada nematome, ir first_response_at lieka tuščias, nors lankytojui atsakyta. Turėkite tai omenyje prieš skaičiuodami vidurkius.

Visos laiko žymos yra UTC ir naudoja ISO 8601 formatą. Užklausos, sukurtos prieš šią funkciją, neturi first_assigned_at ir first_response_at, nes tie laikai niekada nebuvo įrašomi.

Pavyzdys (cURL)

curl "https://asyntai.com/api/v1/tickets/?status=resolved&limit=20" \
  -H "Authorization: Bearer YOUR_API_KEY"

Pavyzdys (Python)

import requests
from datetime import datetime

response = requests.get(
    "https://asyntai.com/api/v1/tickets/",
    headers={"Authorization": "Bearer YOUR_API_KEY"},
    params={"since": "2024-01-01", "limit": 100}
)

for ticket in response.json()["tickets"]:
    if ticket["first_response_at"]:
        created = datetime.fromisoformat(ticket["created_at"])
        replied = datetime.fromisoformat(ticket["first_response_at"])
        print(ticket["ticket_number"], replied - created)

Istorijos puslapiavimas

Vienas iškvietimas grąžina daugiausiai 100 bilietų, naujausi pirmi. Norėdami skaityti toliau į praeitį, paimkite paskutinio puslapio bilieto created_at ir perduokite jį kaip before kitame iškvietime. Kartokite, kol iškvietimas grąžins tuščią sąrašą.

import requests

url = "https://asyntai.com/api/v1/tickets/"
headers = {"Authorization": "Bearer YOUR_API_KEY"}
params = {"since": "2024-01-01", "limit": 100}

tickets = []
while True:
    page = requests.get(url, headers=headers, params=params).json()["tickets"]
    if not page:
        break
    tickets.extend(page)
    params["before"] = page[-1]["created_at"]

print(len(tickets), "tickets since 2024-01-01")

GET /account/

Gaukite savo paskyros informaciją ir naudojimo statistiką.

Atsakymas

{
  "success": true,
  "account": {
    "email": "[email protected]",
    "plan": "starter",
    "messages_used": 150,
    "messages_limit": 800
  }
}

Pavyzdys (cURL)

curl https://asyntai.com/api/v1/account/ \
  -H "Authorization: Bearer YOUR_API_KEY"

Kelios svetainės? Žinių bazės galutiniai taškai numatytai naudoja jūsų pagrindinę svetainę. Jei turite kelias svetaines, perduokite website_id kad nurodytumėte konkrečią. Savo svetainių ID galite rasti naudodami GET /websites/.

Dienos įkėlimo limitai: Žinių bazės įkėlimams (tekstas, URL, skaičiuoklė) taikomas dienos simbolių limitas pagal jūsų planą. Tai taikoma visam turiniui, įkeltam per visus žinių bazės galutinius taškus per dieną.

Planas Simboliai/dieną
Starter300 000
Standard1 500 000
Pro6 000 000

GET /knowledge/

Parodykite savo žinių bazės įrašus. Tai turinio šaltiniai, kuriuos jūsų DI pokalbių robotas naudoja atsakyti į klausimus.

Užklausos parametrai

Parametras Tipas Privalomas Aprašymas
limit integer Ne Grąžinamų įrašų skaičius (numatytasis: 50, maks.: 100)
website_id string Ne Filtruoti pagal svetainės ID (numatytoji - jūsų pagrindinė svetainė)

Atsakymas

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

Pavyzdys (cURL)

curl "https://asyntai.com/api/v1/knowledge/?limit=10" \
  -H "Authorization: Bearer YOUR_API_KEY"

POST /knowledge/text/

Pridėkite pasirinktinį tekstinį turinį prie savo žinių bazės. DI naudos tai lankytojų klausimams atsakyti.

Užklausos turinys

{
  "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"
}
Parametras Tipas Privalomas Aprašymas
title string Taip Šio žinių įrašo pavadinimas
content string Taip Tekstinis turinys (min. 10 simbolių)
website_id string Ne Tikslinė svetainė (numatytoji - jūsų pagrindinė svetainė)

Atsakymas

{
  "success": true,
  "id": "abc-123-def",
  "title": "Return Policy",
  "chunks_created": 1
}

Pavyzdys (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/

Pridėkite tinklalapį prie savo žinių bazės. Turinys bus automatiškai gautas ir ištrauktas.

Užklausos turinys

{
  "url": "https://example.com/faq",
  "website_id": "123"
}
Parametras Tipas Privalomas Aprašymas
url string Taip URL, iš kurio bus gaunamas turinys
website_id string Ne Tikslinė svetainė (numatytoji - jūsų pagrindinė svetainė)

Atsakymas

{
  "success": true,
  "id": "abc-123-def",
  "title": "FAQ - Example",
  "url": "https://example.com/faq",
  "chunks_created": 5
}

Pavyzdys (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/

Įkelkite CSV arba Excel (.xlsx) skaičiuoklę į savo žinių bazę. Kiekviena eilutė tampa atskiru žinių įrašu, idealiai tinka produktų katalogams, DUK sąrašams, kainų lentelėms ir katalogams.

Užklausa

Siųskite kaip multipart/form-data (failo įkėlimas), ne JSON.

Parametras Tipas Privalomas Aprašymas
file failas Taip .csv arba .xlsx failas. Pirma eilutė turi būti stulpelių antraštės. Maks. eilučių per įkėlimą: Starter 500, Standard 2 000, Pro 10 000. Perteklinės eilutės apkarpamos.
website_id string Ne Tikslinė svetainė (numatytoji - jūsų pagrindinė svetainė)

Atsakymas

{
  "success": true,
  "id": "abc-123-def",
  "title": "products.csv",
  "rows_processed": 15,
  "chunks_created": 15
}

Pavyzdys (cURL)

curl -X POST "https://asyntai.com/api/v1/knowledge/spreadsheet/" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -F "[email protected]"

GET /knowledge/{id}/

Perskaitykite vieną žinių bazės įrašą kartu su jam išsaugotu tekstu. Reikšmė id gaunama iš GET /knowledge/ atsakymo.

Turinys grąžinamas tiems įrašams, kuriuos pridėjote patys: tekstui, failams, skaičiuoklėms, atskiriems URL adresams ir vaizdo įrašams. Svetainės peržiūra rodoma sąraše, tačiau jos puslapiai negrąžinami, nes šaltinis yra jūsų pačių viešoji svetainė. Tokiu atveju content yra null, o laukas reason paaiškina priežastį.

Atsakymas

{
  "success": true,
  "id": "abc-123-def",
  "type": "text",
  "title": "Business Hours",
  "description": "Manual text content (150 words)",
  "created_at": "2024-01-15T10:30:00Z",
  "chunks_count": 3,
  "content": "We are open Monday to Friday, 9am to 5pm...",
  "content_available": true,
  "char_count": 43
}

Pavyzdys (cURL)

curl "https://asyntai.com/api/v1/knowledge/abc-123-def/" \
  -H "Authorization: Bearer YOUR_API_KEY"

DELETE /knowledge/{id}/

Ištrinkite žinių bazės įrašą. id galima rasti iš GET /knowledge/ atsakymo.

Atsakymas

{
  "success": true,
  "message": "Knowledge base entry deleted"
}

Pavyzdys (cURL)

curl -X DELETE "https://asyntai.com/api/v1/knowledge/abc-123-def/" \
  -H "Authorization: Bearer YOUR_API_KEY"

Patarimas: Taip pat galite valdyti „webhook“ iš API nustatymai puslapio nerašydami jokio kodo.

GET /webhooks/

Išvardykite savo registruotus „webhooks“.

Atsakymas

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

Pavyzdys (cURL)

curl "https://asyntai.com/api/v1/webhooks/" \
  -H "Authorization: Bearer YOUR_API_KEY"

POST /webhooks/

Užregistruokite naują webhook realiojo laiko įvykių pranešimams gauti.

Galimi įvykiai

Įvykis Aprašymas
message.received Lankytojas išsiuntė žinutę ir gavo atsakymą
conversation.started Pradėta nauja pokalbių sesija
escalation.requested DI suaktyvino perdavimą žmogui operatoriui
takeover.started Žmogus operatorius perėmė pokalbių sesiją

Užklausos turinys

{
  "url": "https://example.com/webhook",
  "events": ["message.received", "escalation.requested"],
  "website_id": "123"
}
Parametras Tipas Privalomas Aprašymas
url string Taip HTTPS URL webhook POST užklausoms gauti
events masyvas Taip Įvykių, kuriuos norite prenumeruoti, sąrašas (žr. lentelę aukščiau)
website_id string Ne Tikslinė svetainė (numatytoji - jūsų pagrindinė svetainė)

Atsakymas

{
  "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 tikrinimas: Kiekvienas webhook apima secret (rodomas tik sukūrimo metu). Kiekvienas POST į jūsų URL apima X-Webhook-Signature antraštę — HMAC-SHA256 užklausos turinio, pasirašyto jūsų slaptu raktu.

Pavyzdys (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}/

Ištrinkite webhook. id galima rasti iš GET /webhooks/ atsakymo.

Atsakymas

{
  "success": true,
  "message": "Webhook deleted"
}

Pavyzdys (cURL)

curl -X DELETE "https://asyntai.com/api/v1/webhooks/abc-123-def/" \
  -H "Authorization: Bearer YOUR_API_KEY"

Klaidų atsakymai

Visi klaidų atsakymai atitinka šį formatą:

{
  "success": false,
  "error": "Error message describing what went wrong"
}
Būsenos kodas Aprašymas
400 Bloga užklausa - Netinkami parametrai arba trūksta privalomų laukų
401 Neautorizuota - Netinkamas arba trūkstamas API raktas
429 Per daug užklausų - Pasiektas jūsų plano žinučių limitas
503 Paslauga nepasiekiama - DI paslauga laikinai nepasiekiama

Užklausų limitai

API naudojimas ribojamas pagal jūsų prenumeratos planą:

  • Free: 50 žinučių/mėn.
  • Starter (39 $/mėn.): 800 žinučių/mėn.
  • Standard (139 $/mėn.): 15 000 žinučių/mėn.
  • Pro (449 $/mėn.): 50 000 žinučių/mėn.

Reikia pagalbos?

If you have any questions or run into issues, contact us at [email protected].