API uzziņu rokasgrāmata
Veidojiet pielāgotas integrācijas ar Asyntai REST API
Nepieciešams maksas plāns: API piekļuve ir pieejama Starter, Standard un Pro plānos. Skatīt cenas
Pārskats
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.
Autentifikācija
All API requests require authentication using your API key. You can get your API key from the API Settings page.
Iekļaujiet savu API atslēgu pieprasījumos, izmantojot kādu no šīm metodēm:
- Authorization galvene (ieteicams):
Authorization: Bearer YOUR_API_KEY - X-API-Key galvene:
X-API-Key: YOUR_API_KEY
Neizpaudiet savu API atslēgu. Jebkurš, kam ir jūsu atslēga, var piekļūt jūsu kontam caur API. Nekad neatklājiet to klienta puses kodā.
Bāzes URL
https://asyntai.com/api/v1/
Galapunkti
POST /chat/
Nosūtiet ziņojumu un saņemiet MI ģenerētu atbildi.
Pieprasījuma pamatteksts
{
"message": "What are your business hours?",
"session_id": "user_123", // optional
"website_id": 1 // optional
}
| Parametrs | Tips | Obligāts | Apraksts |
|---|---|---|---|
message |
string | Jā | Lietotāja ziņojums, kas jānosūta MI |
session_id |
string | Nē | Unikāls sarunas identifikators. Izmantojiet to pašu session_id, lai saglabātu sarunas vēsturi. |
website_id |
integer | Nē | Konkrēts vietnes ID. Ja nav norādīts, tiek izmantota jūsu galvenā vietne. |
Atbilde
{
"success": true,
"response": "Our business hours are Monday-Friday, 9 AM to 5 PM EST.",
"session_id": "user_123"
}
Piemērs (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"}'
Piemērs (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"])
Piemērs (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/
Uzskaitiet visas ar jūsu kontu saistītās vietnes.
Atbilde
{
"success": true,
"websites": [
{
"id": 1,
"name": "My Website",
"domain": "example.com",
"is_primary": true
}
]
}
Piemērs (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.
Pieprasījuma pamatteksts
| Lauks | Tips | Apraksts |
|---|---|---|
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. |
Atbilde
{
"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>"
}
Piemērs (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.
Atbilde
{
"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.
Piemērs (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 | Iestatījumi | Examples |
|---|---|---|
| Any paid plan | 25 | widget_color, ai_support_name, initial_message |
| Starter un augstāk | 22 | profile_picture, conversation_starters_enabled |
| Standard un augstāk | 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}'
Pieprasījuma pamatteksts
| Lauks | Tips | Apraksts |
|---|---|---|
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/
Izgūstiet sarunas vēsturi konkrētai sesijai.
Vaicājuma parametri
| Parametrs | Tips | Obligāts | Apraksts |
|---|---|---|---|
session_id |
string | Jā | Sesijas ID, kurai izgūt vēsturi |
limit |
integer | Nē | Maksimālais atgriežamo ziņojumu skaits (noklusējums: 50, maks.: 100) |
Atbilde
{
"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
}
]
}
Jautājums un tā atbilde tiek glabāti vienā ierakstā, tāpēc abiem ir viens un tas pats timestamp. Neatņemiet vienu no otra, lai mērītu atbildes ātrumu, jo rezultāts vienmēr būs nulle. Izmantojiet response_time_ms, kas ir patiesais atbildes laiks milisekundēs.
sender_type ir ai, kad atbildēja tērzēšanas robots, un human, kad tērzēšanu pārņēma kāds no jūsu aģentiem. agent_name satur šī aģenta attēloto vārdu.
Piemērs (cURL)
curl "https://asyntai.com/api/v1/conversations/?session_id=user_123&limit=20" \
-H "Authorization: Bearer YOUR_API_KEY"
GET /sessions/
Uzskaitiet savas nesenās tērzēšanas sesijas. Izmantojiet šo, lai atklātu sesiju ID, ko pēc tam varat nodot /conversations/, lai izgūtu pilnu ziņojumu vēsturi.
Vaicājuma parametri
| Parametrs | Tips | Obligāts | Apraksts |
|---|---|---|---|
limit |
integer | Nē | Atgriežamo neseno sesiju skaits (noklusējums: 20, maks.: 100) |
website_id |
string | Nē | Filtrēt sesijas pēc konkrēta vietnes ID |
source |
string | Nē | Filtrēt pēc sesijas avota: widget, api, whatsapp, instagram, messenger, gorgias, freshchat, zapier |
since |
string | Nē | Tikai sesijas, kuru pēdējā ziņa ir šajā ISO datumā vai vēlāk, piemēram 2024-01-15 |
before |
string | Nē | Tikai sesijas, kuru pēdējā ziņa ir pirms šī ISO datuma vai datuma un laika. Izmantojiet to, lai lapotu atpakaļ, skatīt zemāk. |
Atbilde
{
"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"
}
]
}
Laika zīmogu lauki pārskatiem
| Lauks | Apraksts |
|---|---|
started_at |
Kad apmeklētājs atvēra tērzēšanu. Pieejams tikai logrīka sesijām, jo caur API izveidotās sesijas nekad neatver logrīku. |
first_message_at |
Kad tika saglabāts pirmais sarunas ziņojums. |
first_response_time_ms |
Cik ilgi ilga pirmā atbilde, milisekundēs. Izmantojiet to pirmās atbildes laikam. |
first_human_response_at |
Kad kāds no jūsu aģentiem nosūtīja pirmo atbildi. Vērtība ir null, kad visu sarunu apstrādāja tērzēšanas robots. |
taken_over_at |
Kad aģents pārņēma tērzēšanu no tērzēšanas robota. |
last_message_at |
Kad tika saglabāts pēdējais sarunas ziņojums. |
ended_at |
Kad apmeklētājs pameta tērzēšanu. Tērzēšanai nav atrisināta vai slēgta stāvokļa, jo apmeklētājs vienmēr var atgriezties un uzdot citu jautājumu. |
Visi laika zīmogi ir UTC un izmanto ISO 8601 formātu. Laika joslu nevar mainīt. Konvertējiet vērtības savā pārskatu rīkā.
Citi lauki atskaitēm
| Lauks | Apraksts |
|---|---|
page_url |
Lapa, kurā apmeklētājs bija, kad sākās saruna. Pieejams tikai logrīka sesijām. |
country |
Apmeklētāja valsts pēc IP adreses sarunas laikā. Pieejams tikai logrīka sesijām. |
category |
Tēma no sarunu kategorijām. Tukšs, kad funkcija ir izslēgta vai ikdienas uzdevums šo sarunu vēl nav marķējis. |
Piemērs (cURL)
curl "https://asyntai.com/api/v1/sessions/?since=2024-01-01&limit=100" \
-H "Authorization: Bearer YOUR_API_KEY"
Vēstures lapošana
Viens izsaukums atgriež ne vairāk kā 100 sesijas, jaunākās vispirms. Lai lasītu tālāk pagātnē, paņemiet lapas pēdējās sesijas last_message_at un nododiet to kā before nākamajā izsaukumā. Atkārtojiet, līdz izsaukums atgriež tukšu sarakstu.
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/
Iegūt savāktos potenciālos klientus — e-pasta adreses un tālruņu numurus, ko apmeklētāji iesniedza tērzēšanas sarunu laikā.
Vaicājuma parametri
| Parametrs | Tips | Obligāts | Apraksts |
|---|---|---|---|
limit |
integer | Nē | Atgriežamo potenciālo klientu skaits (noklusējums: 50, maks.: 100) |
website_id |
string | Nē | Filtrēt potenciālos klientus pēc konkrēta vietnes ID |
since |
string | Nē | Tikai potenciālie klienti, kas sākti šajā ISO datumā vai vēlāk, piemēram 2024-01-15 |
before |
string | Nē | Tikai potenciālie klienti, kas sākti pirms šī ISO datuma vai laika. Izmantojiet to, lai pārlūkotu visu vēsturi atpakaļ. |
Atbilde
{
"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"
}
]
}
| Lauks | Tips | Apraksts |
|---|---|---|
session_id |
string | Tērzēšanas sesijas ID. Nododiet to /conversations/, lai apskatītu pilnu tērzēšanas vēsturi. |
email |
virkne vai null | Apmeklētāja norādītā e-pasta adrese vai null, ja netika savākta |
phone |
virkne vai null | Apmeklētāja norādītais tālruņa numurs vai null, ja netika savākts |
page_url |
virkne vai null | Lapas URL, kurā apmeklētājs tērzēja |
started_at |
string | ISO 8601 laika zīmogs par tērzēšanas sesijas sākumu |
Piemērs (cURL)
curl "https://asyntai.com/api/v1/leads/?limit=20" \
-H "Authorization: Bearer YOUR_API_KEY"
Piemērs (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/
Iegūstiet atbalsta pieteikumus ar laika zīmogiem, kas nepieciešami apstrādes laiku mērīšanai: kad pieteikums pienāca, kad kāds to pārņēma, kad uz to pirmoreiz atbildēja un kad tas tika atrisināts.
Vaicājuma parametri
| Parametrs | Tips | Obligāts | Apraksts |
|---|---|---|---|
limit |
integer | Nē | Atgriežamo pieteikumu skaits (noklusējums: 50, ne vairāk kā: 100) |
website_id |
string | Nē | Filtrēt pieteikumus pēc vietnes ID vai pēc vietnes domēna, piemēram, example.com |
name |
string | Nē | Filtrēt pēc jebkuras apmeklētāja vārda daļas, piemēram, anna |
status |
string | Nē | Filtrēt pēc statusa: open, in_progress, resolved vai closed |
since |
string | Nē | Tikai pieteikumi, kas izveidoti šajā ISO datumā vai vēlāk, piemēram, 2024-01-15 |
before |
string | Nē | Tikai pieteikumi, kas izveidoti pirms šī ISO datuma vai datuma un laika. Izmantojiet to, lai lapotu atpakaļ, skatīt zemāk. |
Atbilde
{
"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"
}
]
}
| Lauks | Tips | Apraksts |
|---|---|---|
ticket_number |
string | Pieteikuma numurs, kas redzams jūsu panelī |
session_id |
string | Tērzēšanas sesija, no kuras radās pieteikums. Nododiet to uz /conversations/, lai izlasītu visu sarunu aiz pieteikuma. |
visitor_name |
virkne vai null | Apmeklētāja vārds vai null, ja apmeklētājs to nenorādīja |
status |
string | Viens no: open, in_progress, resolved, closed |
priority |
string | Viens no: low, medium, high |
channel |
string | No kurienes saruna atnāca, piemēram, session vietnes tērzēšanai |
assigned_to |
virkne vai null | Komandas dalībnieks, kuram ir pieteikums, vai null, ja neviens to nav pārņēmis |
created_at |
string | Kad pieteikums tika izveidots |
first_assigned_at |
virkne vai null | Kad kāds pirmoreiz pārņēma pieteikumu. Null, ja to nav izdarījis neviens. |
first_response_at |
virkne vai null | Kad no Asyntai tika nosūtīta pirmā atbilde. Null, ja no Asyntai atbilde nav sūtīta. |
resolved_at |
virkne vai null | Kad pieteikums tika atzīmēts kā atrisināts. Null, kamēr tas ir atvērts. |
Mēs redzam tikai no Asyntai nosūtītās atbildes. Ja jūsu komanda atbild apmeklētājam no savas pastkastes, mēs to nekad neredzam, un first_response_at paliek tukšs, kaut arī apmeklētājam ir atbildēts. Paturiet to prātā, pirms rēķināt vidējos rādītājus.
Visi laika zīmogi ir UTC un izmanto ISO 8601 formātu. Pieteikumiem, kas izveidoti pirms šīs funkcijas, nav first_assigned_at un first_response_at, jo šie laiki nekad netika reģistrēti.
Piemērs (cURL)
curl "https://asyntai.com/api/v1/tickets/?status=resolved&limit=20" \
-H "Authorization: Bearer YOUR_API_KEY"
Piemērs (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)
Vēstures lapošana
Viens izsaukums atgriež ne vairāk kā 100 pieteikumus, jaunākos vispirms. Lai lasītu tālāk pagātnē, paņemiet lapas pēdējā pieteikuma created_at un nododiet to kā before nākamajā izsaukumā. Atkārtojiet, līdz izsaukums atgriež tukšu sarakstu.
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/
Iegūstiet sava konta informāciju un lietošanas statistiku.
Atbilde
{
"success": true,
"account": {
"email": "[email protected]",
"plan": "starter",
"messages_used": 150,
"messages_limit": 800
}
}
Piemērs (cURL)
curl https://asyntai.com/api/v1/account/ \
-H "Authorization: Bearer YOUR_API_KEY"
Vairākas vietnes? Zināšanu bāzes galapunkti pēc noklusējuma izmanto jūsu galveno vietni. Ja jums ir vairākas vietnes, nododiet website_id lai atlasītu konkrētu vietni. Jūs varat atrast savu vietņu ID, izmantojot GET /websites/.
Ikdienas augšupielādes ierobežojumi: Zināšanu bāzes augšupielādēm (teksts, URL, izklājlapa) ir noteikts ikdienas rakstzīmju ierobežojums atkarībā no jūsu plāna. Tas attiecas uz kopējo saturu, kas augšupielādēts visos zināšanu bāzes galapunktos dienā.
| Plāns | Rakstzīmes/dienā |
|---|---|
| Starter | 300 000 |
| Standard | 1 500 000 |
| Pro | 6 000 000 |
GET /knowledge/
Uzskaitiet savus zināšanu bāzes ierakstus. Tie ir satura avoti, ko jūsu MI tērzēšanas robots izmanto, lai atbildētu uz jautājumiem.
Vaicājuma parametri
| Parametrs | Tips | Obligāts | Apraksts |
|---|---|---|---|
limit |
integer | Nē | Atgriežamo ierakstu skaits (noklusējums: 50, maks.: 100) |
website_id |
string | Nē | Filtrēt pēc vietnes ID (noklusējums - jūsu galvenā vietne) |
Atbilde
{
"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"
}
]
}
Piemērs (cURL)
curl "https://asyntai.com/api/v1/knowledge/?limit=10" \
-H "Authorization: Bearer YOUR_API_KEY"
POST /knowledge/text/
Pievienojiet pielāgotu teksta saturu savai zināšanu bāzei. MI izmantos to, lai atbildētu uz apmeklētāju jautājumiem.
Pieprasījuma pamatteksts
{
"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"
}
| Parametrs | Tips | Obligāts | Apraksts |
|---|---|---|---|
title |
string | Jā | Nosaukums šim zināšanu bāzes ierakstam |
content |
string | Jā | Teksta saturs (min. 10 rakstzīmes) |
website_id |
string | Nē | Mērķa vietne (noklusējums - jūsu galvenā vietne) |
Atbilde
{
"success": true,
"id": "abc-123-def",
"title": "Return Policy",
"chunks_created": 1
}
Piemērs (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/
Pievienojiet tīmekļa lapu savai zināšanu bāzei. Saturs tiks iegūts un izvilkts automātiski.
Pieprasījuma pamatteksts
{
"url": "https://example.com/faq",
"website_id": "123"
}
| Parametrs | Tips | Obligāts | Apraksts |
|---|---|---|---|
url |
string | Jā | URL, no kura iegūt saturu |
website_id |
string | Nē | Mērķa vietne (noklusējums - jūsu galvenā vietne) |
Atbilde
{
"success": true,
"id": "abc-123-def",
"title": "FAQ - Example",
"url": "https://example.com/faq",
"chunks_created": 5
}
Piemērs (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/
Augšupielādējiet CSV vai Excel (.xlsx) izklājlapu savā zināšanu bāzē. Katra rinda kļūst par atsevišķu zināšanu ierakstu - ideāli piemērots produktu katalogiem, BUJ sarakstiem, cenu tabulām un direktorijām.
Pieprasījums
Sūtiet kā multipart/form-data (faila augšupielāde), nevis JSON.
| Parametrs | Tips | Obligāts | Apraksts |
|---|---|---|---|
file |
file | Jā | .csv vai .xlsx fails. Pirmajai rindai jābūt kolonnu virsrakstiem. Maks. rindu skaits vienā augšupielādē: Starter 500, Standard 2 000, Pro 10 000. Liekās rindas tiek nogrieztas. |
website_id |
string | Nē | Mērķa vietne (noklusējums - jūsu galvenā vietne) |
Atbilde
{
"success": true,
"id": "abc-123-def",
"title": "products.csv",
"rows_processed": 15,
"chunks_created": 15
}
Piemērs (cURL)
curl -X POST "https://asyntai.com/api/v1/knowledge/spreadsheet/" \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "[email protected]"
GET /knowledge/{id}/
Nolasiet vienu zināšanu bāzes ierakstu kopā ar tam saglabāto tekstu. Vērtība id nāk no GET /knowledge/ atbildes.
Saturs tiek atgriezts tiem ierakstiem, kurus pievienojāt jūs: teksts, faili, izklājlapas, atsevišķas URL adreses un video. Vietnes pārmeklēšana ir redzama sarakstā, taču tās lapas netiek atgrieztas, jo avots ir jūsu pašu publiskā vietne. Šādā gadījumā content ir null, un lauks reason paskaidro iemeslu.
Atbilde
{
"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
}
Piemērs (cURL)
curl "https://asyntai.com/api/v1/knowledge/abc-123-def/" \
-H "Authorization: Bearer YOUR_API_KEY"
DELETE /knowledge/{id}/
Dzēsiet zināšanu bāzes ierakstu. id var atrast no GET /knowledge/ atbildes.
Atbilde
{
"success": true,
"message": "Knowledge base entry deleted"
}
Piemērs (cURL)
curl -X DELETE "https://asyntai.com/api/v1/knowledge/abc-123-def/" \
-H "Authorization: Bearer YOUR_API_KEY"
Padoms: Jūs varat arī pārvaldīt tīmekļa āķus no API iestatījumi lapas bez jebkāda koda rakstīšanas.
GET /webhooks/
Uzskaitiet savus reģistrētos tīmekļa āķus.
Atbilde
{
"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"
}
]
}
Piemērs (cURL)
curl "https://asyntai.com/api/v1/webhooks/" \
-H "Authorization: Bearer YOUR_API_KEY"
POST /webhooks/
Reģistrējiet jaunu tīmekļa āķi, lai saņemtu reāllaika notikumu paziņojumus.
Pieejamie notikumi
| Notikums | Apraksts |
|---|---|
message.received |
Apmeklētājs nosūtīja ziņojumu un saņēma atbildi |
conversation.started |
Jauna tērzēšanas sesija tika uzsākta |
escalation.requested |
MI aktivizēja eskalāciju uz cilvēka aģentu |
takeover.started |
Cilvēka aģents pārņēma tērzēšanas sesiju |
Pieprasījuma pamatteksts
{
"url": "https://example.com/webhook",
"events": ["message.received", "escalation.requested"],
"website_id": "123"
}
| Parametrs | Tips | Obligāts | Apraksts |
|---|---|---|---|
url |
string | Jā | HTTPS URL tīmekļa āķa POST pieprasījumu saņemšanai |
events |
array | Jā | Notikumu saraksts, uz kuriem abonēt (skatiet tabulu augstāk) |
website_id |
string | Nē | Mērķa vietne (noklusējums - jūsu galvenā vietne) |
Atbilde
{
"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"
}
}
Tīmekļa āķu verificēšana: Katrs tīmekļa āķis ietver secret (redzams tikai izveidošanas brīdī). Katrs POST uz jūsu URL ietver X-Webhook-Signature galvene — pieprasījuma pamatteksta HMAC-SHA256, parakstīts ar jūsu noslēpumu.
Piemērs (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}/
Dzēsiet tīmekļa āķi. id var atrast no GET /webhooks/ atbildes.
Atbilde
{
"success": true,
"message": "Webhook deleted"
}
Piemērs (cURL)
curl -X DELETE "https://asyntai.com/api/v1/webhooks/abc-123-def/" \
-H "Authorization: Bearer YOUR_API_KEY"
Kļūdu atbildes
Visas kļūdu atbildes seko šim formātam:
{
"success": false,
"error": "Error message describing what went wrong"
}
| Statusa kods | Apraksts |
|---|---|
400 |
Nederīgs pieprasījums - Nederīgi parametri vai trūkstoši obligātie lauki |
401 |
Neautorizēts - Nederīga vai trūkstoša API atslēga |
429 |
Pārāk daudz pieprasījumu - Sasniegts jūsu plāna ziņojumu ierobežojums |
503 |
Pakalpojums nav pieejams - MI pakalpojums īslaicīgi nav pieejams |
Ātruma ierobežojumi
API lietošana ir ierobežota ar jūsu abonēšanas plānu:
- Free: 50 ziņojumu/mēnesī
- Starter ($39/mēn.): 800 ziņojumu/mēnesī
- Standard ($139/mēn.): 15 000 ziņojumu/mēnesī
- Pro ($449/mēn.): 50 000 ziņojumu/mēnesī
Nepieciešama palīdzība?
If you have any questions or run into issues, contact us at [email protected].