API viide
Looge kohandatud integratsioonid Asyntai REST API-ga
Nõutav tasuline pakett: API juurdepääs on saadaval Starter, Standard ja Pro pakettidel. Vaata hindu
Ülevaade
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.
Autentimine
Kõik API päringud vajavad autentimist teie API võtme abil. Saate oma API võtme API sätete lehelt.
Kaasake oma API võti päringutesse, kasutades ühte järgmistest meetoditest:
- Autoriseerimise päis (soovitatav):
Authorization: Bearer YOUR_API_KEY - X-API-Key päis:
X-API-Key: YOUR_API_KEY
Hoidke oma API võti saladuses. Igaüks, kellel on teie võti, pääseb teie kontole ligi API kaudu. Ärge kunagi paljastage seda kliendipoolses koodis.
Baas-URL
https://asyntai.com/api/v1/
Lõpp-punktid
POST /chat/
Saatke sõnum ja saage AI loodud vastus.
Päringu keha
{
"message": "What are your business hours?",
"session_id": "user_123", // optional
"website_id": 1 // optional
}
| Parameeter | Tüüp | Nõutav | Kirjeldus |
|---|---|---|---|
message |
string | Jah | Kasutaja sõnum, mis saadetakse AI-le |
session_id |
string | Ei | Vestluse unikaalne identifikaator. Kasutage sama session_id-d vestluse ajaloo säilitamiseks. |
website_id |
integer | Ei | Konkreetne veebisaidi ID. Kui seda ei esitata, kasutatakse teie peamist veebisaiti. |
Vastus
{
"success": true,
"response": "Our business hours are Monday-Friday, 9 AM to 5 PM EST.",
"session_id": "user_123"
}
Näide (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"}'
Näide (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"])
Näide (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/
Loetlege kõik teie kontoga seotud veebisaidid.
Vastus
{
"success": true,
"websites": [
{
"id": 1,
"name": "My Website",
"domain": "example.com",
"is_primary": true
}
]
}
Näide (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.
Päringu keha
| Väli | Tüüp | Kirjeldus |
|---|---|---|
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. |
Vastus
{
"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>"
}
Näide (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.
Vastus
{
"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.
Näide (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": "#6366f1",
"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 | Seaded | Examples |
|---|---|---|
| Any paid plan | 25 | widget_color, ai_support_name, initial_message |
| Starter ja kõrgemad | 22 | profile_picture, conversation_starters_enabled |
| Standard ja kõrgemad | 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}'
Päringu keha
| Väli | Tüüp | Kirjeldus |
|---|---|---|
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/
Hankige konkreetse seansi vestlusajalugu.
Päringu parameetrid
| Parameeter | Tüüp | Nõutav | Kirjeldus |
|---|---|---|---|
session_id |
string | Jah | Seansi ID, mille ajalugu hankida |
limit |
integer | Ei | Tagastatavate sõnumite maksimum (vaikimisi: 50, maks: 100) |
Vastus
{
"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
}
]
}
Küsimus ja selle vastus salvestatakse ühte kirjesse, seega on mõlemal sama timestamp. Ärge lahutage üht teisest vastuse kiiruse mõõtmiseks, sest tulemus on alati null. Kasutage välja response_time_ms, mis on vastuse tegelik aeg millisekundites.
sender_type on ai, kui vastas vestlusrobot, ja human, kui üks teie agentidest võttis vestluse üle. agent_name sisaldab selle agendi kuvatavat nime.
Näide (cURL)
curl "https://asyntai.com/api/v1/conversations/?session_id=user_123&limit=20" \
-H "Authorization: Bearer YOUR_API_KEY"
GET /sessions/
Loetlege oma hiljutised vestlussessioonid. Kasutage seda sessioonide ID-de leidmiseks, mille saate edastada /conversations/ lõpp-punktile täieliku sõnumite ajaloo saamiseks.
Päringu parameetrid
| Parameeter | Tüüp | Nõutav | Kirjeldus |
|---|---|---|---|
limit |
integer | Ei | Tagastatavate hiljutiste seansside arv (vaikimisi: 20, maks: 100) |
website_id |
string | Ei | Filtreerige sessioone konkreetse veebisaidi ID järgi |
source |
string | Ei | Filtreerige seansi allika järgi: widget, api, whatsapp, instagram, messenger, gorgias, freshchat, zapier |
Vastus
{
"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,
"website_domain": "example.com"
}
]
}
Ajatempliväljad aruandluseks
| Väli | Kirjeldus |
|---|---|
started_at |
Millal külastaja vestluse avas. Saadaval ainult vidina seansside puhul, sest API kaudu loodud seansid ei ava kunagi vidinat. |
first_message_at |
Millal vestluse esimene sõnum salvestati. |
first_response_time_ms |
Kui kaua esimene vastus võttis, millisekundites. Kasutage seda esimese vastuse aja jaoks. |
first_human_response_at |
Millal üks teie agentidest saatis esimese vastuse. Väärtus on null, kui vestlusrobot tegeles kogu vestlusega. |
taken_over_at |
Millal agent võttis vestluse vestlusrobotilt üle. |
last_message_at |
Millal vestluse viimane sõnum salvestati. |
ended_at |
Millal külastaja vestlusest lahkus. Vestlusel ei ole lahendatud ega suletud olekut, sest külastaja võib alati tagasi tulla ja uue küsimuse esitada. |
Kõik ajatemplid on UTC-ajas ja kasutavad vormingut ISO 8601. Ajavööndit ei saa muuta. Teisendage väärtused oma aruandlustööriistas.
Näide (cURL)
curl "https://asyntai.com/api/v1/sessions/?limit=10" \
-H "Authorization: Bearer YOUR_API_KEY"
GET /leads/
Kogutud müügivihjete toomine — e-posti aadressid ja telefoninumbrid, mille külastajad vestluste käigus esitasid.
Päringu parameetrid
| Parameeter | Tüüp | Nõutav | Kirjeldus |
|---|---|---|---|
limit |
integer | Ei | Tagastatavate müügivihjete arv (vaikimisi: 50, maks: 100) |
website_id |
string | Ei | Filtreerige müügivihjeid konkreetse veebisaidi ID järgi |
Vastus
{
"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"
}
]
}
| Väli | Tüüp | Kirjeldus |
|---|---|---|
session_id |
string | Vestlusseansi ID. Edastage see /conversations/-le, et näha täielikku vestlusajalugu. |
email |
string või null | Külastaja esitatud e-posti aadress, või null kui ei kogutud |
phone |
string või null | Külastaja esitatud telefoninumber, või null kui ei kogutud |
page_url |
string või null | Lehe URL, kus külastaja vestles |
started_at |
string | ISO 8601 ajatempel vestlusseansi alguse kohta |
Näide (cURL)
curl "https://asyntai.com/api/v1/leads/?limit=20" \
-H "Authorization: Bearer YOUR_API_KEY"
Näide (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/
Hankige oma konto andmed ja kasutusstatistika.
Vastus
{
"success": true,
"account": {
"email": "[email protected]",
"plan": "starter",
"messages_used": 150,
"messages_limit": 2500
}
}
Näide (cURL)
curl https://asyntai.com/api/v1/account/ \
-H "Authorization: Bearer YOUR_API_KEY"
Mitu veebisaiti? Teadmistebaasi lõpp-punktid kasutavad vaikimisi teie põhiveebisaiti. Kui teil on mitu veebisaiti, edastage website_id konkreetse sihtimiseks. Leiate oma veebisaidi ID-d, kasutades GET /websites/.
Igapäevased üleslaadimispiirangud: Teadmistebaasi üleslaadimised (tekst, URL, arvutustabel) on piiratud igapäevase tähemärkide limiidiga vastavalt teie paketile. See kehtib kogu sisu kohta, mis laaditakse üles kõigi teadmistebaasi lõpp-punktide kaudu päevas.
| Pakett | Tähemärke/päevas |
|---|---|
| Starter | 300 000 |
| Standard | 1 500 000 |
| Pro | 6 000 000 |
GET /knowledge/
Loetlege oma teadmistebaasi kirjed. Need on sisuallikad, mida teie AI vestlusrobot kasutab küsimustele vastamiseks.
Päringu parameetrid
| Parameeter | Tüüp | Nõutav | Kirjeldus |
|---|---|---|---|
limit |
integer | Ei | Tagastatavate kirjete arv (vaikimisi: 50, maks: 100) |
website_id |
string | Ei | Filtreerige veebisaidi ID järgi (vaikimisi teie põhiveebisait) |
Vastus
{
"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"
}
]
}
Näide (cURL)
curl "https://asyntai.com/api/v1/knowledge/?limit=10" \
-H "Authorization: Bearer YOUR_API_KEY"
POST /knowledge/text/
Lisage kohandatud tekstisisu oma teadmistebaasi. AI kasutab seda külastajate küsimustele vastamiseks.
Päringu keha
{
"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"
}
| Parameeter | Tüüp | Nõutav | Kirjeldus |
|---|---|---|---|
title |
string | Jah | Selle teadmuskirje pealkiri |
content |
string | Jah | Tekstisisu (vähemalt 10 tähemärki) |
website_id |
string | Ei | Sihtveebisait (vaikimisi teie põhiveebisait) |
Vastus
{
"success": true,
"id": "abc-123-def",
"title": "Return Policy",
"chunks_created": 1
}
Näide (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/
Lisage veebileht oma teadmistebaasi. Sisu toomitakse ja eraldatakse automaatselt.
Päringu keha
{
"url": "https://example.com/faq",
"website_id": "123"
}
| Parameeter | Tüüp | Nõutav | Kirjeldus |
|---|---|---|---|
url |
string | Jah | URL, kust sisu tuua |
website_id |
string | Ei | Sihtveebisait (vaikimisi teie põhiveebisait) |
Vastus
{
"success": true,
"id": "abc-123-def",
"title": "FAQ - Example",
"url": "https://example.com/faq",
"chunks_created": 5
}
Näide (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/
Laadige CSV või Exceli (.xlsx) arvutustabel oma teadmistebaasi. Iga rida saab eraldi teadmistebaasi kirjeks, ideaalne tootekataloogide, KKK loendite, hinnatabelite ja kataloogide jaoks.
Päring
Saatke kui multipart/form-data (faili üleslaadimine), mitte JSON.
| Parameeter | Tüüp | Nõutav | Kirjeldus |
|---|---|---|---|
file |
fail | Jah | .csv või .xlsx fail. Esimene rida peab olema veergude päised. Maksimaalne ridade arv üleslaadimise kohta: Starter 500, Standard 2000, Pro 10 000. Üleliigsed read kärbitakse. |
website_id |
string | Ei | Sihtveebisait (vaikimisi teie põhiveebisait) |
Vastus
{
"success": true,
"id": "abc-123-def",
"title": "products.csv",
"rows_processed": 15,
"chunks_created": 15
}
Näide (cURL)
curl -X POST "https://asyntai.com/api/v1/knowledge/spreadsheet/" \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "[email protected]"
GET /knowledge/{id}/
Lugege üht teadmusbaasi kirjet koos selle jaoks salvestatud tekstiga. Väärtus id tuleb vastusest GET /knowledge/.
Sisu tagastatakse nende kirjete puhul, mille te ise lisasite: tekst, failid, tabelid, üksikud URL-id ja videod. Veebisaidi läbivaatus on loendis näha, kuid selle lehti ei tagastata, sest allikas on teie enda avalik veebisait. Sel juhul on content väärtus null ja väli reason selgitab põhjust.
Vastus
{
"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
}
Näide (cURL)
curl "https://asyntai.com/api/v1/knowledge/abc-123-def/" \
-H "Authorization: Bearer YOUR_API_KEY"
DELETE /knowledge/{id}/
Kustutage teadmistebaasi kirje. id on leitav GET /knowledge/ vastusest.
Vastus
{
"success": true,
"message": "Knowledge base entry deleted"
}
Näide (cURL)
curl -X DELETE "https://asyntai.com/api/v1/knowledge/abc-123-def/" \
-H "Authorization: Bearer YOUR_API_KEY"
Vihje: Veebikonkse saate hallata ka API sätted lehelt ilma koodi kirjutamata.
GET /webhooks/
Loetlege oma registreeritud veebihaagid.
Vastus
{
"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"
}
]
}
Näide (cURL)
curl "https://asyntai.com/api/v1/webhooks/" \
-H "Authorization: Bearer YOUR_API_KEY"
POST /webhooks/
Registreerige uus veebihaak reaalajas sündmuste teavituste saamiseks.
Saadaolevad sündmused
| Sündmus | Kirjeldus |
|---|---|
message.received |
Külastaja saatis sõnumi ja sai vastuse |
conversation.started |
Alustati uut vestlusseanssi |
escalation.requested |
AI käivitas eskaleerimise inimesest agendile |
takeover.started |
Inimesest agent võttis vestlussessiooni üle |
Päringu keha
{
"url": "https://example.com/webhook",
"events": ["message.received", "escalation.requested"],
"website_id": "123"
}
| Parameeter | Tüüp | Nõutav | Kirjeldus |
|---|---|---|---|
url |
string | Jah | HTTPS URL veebihaagi POST päringute vastuvõtmiseks |
events |
massiiv | Jah | Tellimisel olevate sündmuste loend (vt ülaltoodud tabelit) |
website_id |
string | Ei | Sihtveebisait (vaikimisi teie põhiveebisait) |
Vastus
{
"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"
}
}
Veebihaakide kontrollimine: Iga veebihaak sisaldab secret (näidatakse ainult loomisel). Iga POST teie URL-ile sisaldab X-Webhook-Signature päis — päringu keha HMAC-SHA256, mis on allkirjastatud teie salavõtmega.
Näide (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}/
Kustutage veebihaak. id on leitav GET /webhooks/ vastusest.
Vastus
{
"success": true,
"message": "Webhook deleted"
}
Näide (cURL)
curl -X DELETE "https://asyntai.com/api/v1/webhooks/abc-123-def/" \
-H "Authorization: Bearer YOUR_API_KEY"
Veavastused
Kõik veavastused järgivad seda vormingut:
{
"success": false,
"error": "Error message describing what went wrong"
}
| Olekukood | Kirjeldus |
|---|---|
400 |
Vigane päring - Sobimatud parameetrid või puuduvad kohustuslikud väljad |
401 |
Volitamata - Sobimatu või puuduv API võti |
429 |
Liiga palju päringuid - Teie paketi sõnumite limiit on täitunud |
503 |
Teenus pole saadaval - AI teenus on ajutiselt kättesaamatu |
Päringupiirangud
API kasutust piirab teie tellimispakett:
- Tasuta: 100 sõnumit/kuus
- Starter (39 $/kuus): 2500 sõnumit/kuus
- Standard (139 $/kuus): 15 000 sõnumit/kuus
- Pro (449 $/kuus): 50 000 sõnumit/kuus
Vajate abi?
Kui teil on küsimusi või tekib probleeme, võtke meiega ühendust aadressil [email protected].