API Agen AI
Agen AI adalah otak di balik bot Anda: instruksi, kepribadian, bahasa, pengetahuan, dan alatnya. Anda membuat Agen sekali, lalu mengarahkan lalu lintas kepadanya. Panduan ini mencakup semua yang dapat Anda lakukan dengan Agen melalui API — membuatnya, mengonfigurasinya, memberinya pengetahuan dan alat, meninjau drafnya, serta merutekan percakapan kepadanya.
- URL Dasar —
https://api.youraiconnector.com/v1 - Autentikasi — kunci API Anda (lihat Autentikasi)
- Kesalahan & penomoran halaman — lihat Kesalahan & Penomoran Halaman
Semua contoh di bawah ini menunjukkan formulir kueri ?apiKey= dalam cURL dan header X-API-Key dalam JavaScript dan Python — keduanya berfungsi di setiap endpoint.
Jika Anda baru mengenal konsep Agen, baca Agen AI terlebih dahulu.
Cara kerja Agen
Empat hal dikelola secara terpisah, dan ada baiknya mengetahui perbedaannya sebelum Anda memulai:
| Bagian | Apa itu | Di mana Anda mengaturnya |
|---|---|---|
| Konfigurasi | Instruksi, aturan, tujuan, kepribadian, bahasa, tingkat AI, perilaku pemesanan dan tindak lanjut | PUT /agents/{agentId} atau PUT /agents/{agentId}/bot-config yang lebih spesifik |
| Pengetahuan | FAQ dan sumber pengetahuan (halaman dan dokumen yang telah dibaca platform untuk Anda) | API FAQ dan POST /agents/{agentId}/kb-sources |
| Alat | Fungsi kustom dan server MCP yang mungkin dipanggil Agen di tengah percakapan | POST /agents/{agentId}/custom-functions dan POST /agents/{agentId}/mcp-servers |
| Perutean | Saluran dan percakapan mana yang benar-benar menjangkau Agen ini | Titik Masuk — PUT /entry-points/channel-defaults dan POST /agents/{agentId}/entry-points |
Agen baru tidak menjawab siapa pun sampai Anda merutekannya. Membuat Agen tidak secara otomatis menempatkannya di saluran. Itu adalah langkah yang paling sering terlewatkan oleh integrasi — lihat Merutekan percakapan ke Agen di akhir halaman ini.
Objek Agen
Dokumen Agen lengkap berukuran besar — beberapa ratus kilobita, sebagian besar berisi daftar FAQ, sumber pengetahuannya, dan konten halaman apa pun yang dibaca dari situs web Anda. Oleh karena itu, pencantuman daftar akan mengembalikan baris ringkasan per Agen saat Anda memintanya:
{
"id": "ag7HkQ2ZpLxR3mNb",
"name": "Listing assistant",
"active": true,
"language": "en",
"goal": "Book a viewing",
"tags": [],
"anthropic_model": "standard",
"ai_speed": "balanced",
"enable_bookings": false,
"enable_follow_ups": true,
"faq_refs_count": 42,
"kb_source_refs_count": 3,
"created_at": 1700000000000,
"last_modified_at": 1700000000000
}
| Bidang | Tipe | Deskripsi |
|---|---|---|
id |
string | Pengidentifikasi unik Agen. |
name |
string | null | Nama agen, seperti yang ditampilkan di dasbor. |
active |
boolean | null | Apakah Agen saat ini diizinkan untuk membalas. |
language |
string | null | Bahasa yang digunakan Agen untuk membalas. |
goal |
string | null | Apa yang dikerjakan Agen, disingkat menjadi 200 karakter pertama (elipsis di akhir berarti teks telah disingkat). |
tags |
array | null | Aturan penandaan Agen. |
anthropic_model |
string | null | Tingkat kualitas AI: standard, economy, max atau mini. |
ai_speed |
string | null | Seberapa banyak penalaran yang diterapkan Agen sebelum membalas: fast, fast_thinker, balanced atau thorough. |
enable_bookings |
boolean | null | Apakah Agen boleh membuat janji temu. |
enable_follow_ups |
boolean | null | Apakah Agen mengirim pesan tindak lanjut. |
faq_refs_count |
integer | Berapa banyak FAQ yang ada di basis pengetahuan Agen ini. |
kb_source_refs_count |
integer | Berapa banyak sumber pengetahuan yang ditautkan ke Agen ini. |
created_at |
integer | null | Waktu pembuatan, milidetik epoch. |
last_modified_at |
integer | null | Perubahan terakhir, milidetik epoch. |
Dokumen lengkap menambahkan semua hal lainnya: instructions, rules, personality, availability, follow_up_config, daftar FAQ dan sumber pengetahuan yang ditautkan, blok prosa yang dihasilkan, dan status proses apa pun (tag_generation, optimize_run).
Beberapa respons juga membawa
substrate_campaign_id. Ini adalah catatan internal yang disimpan pada akun lama; Anda tidak perlu menindaklanjutinya, dan pada akun yang lebih baru, nilainya adalahnullatau tidak ada.
Daftar Agen
GET /agents — setiap Agen di akun, yang terbaru ditampilkan lebih dulu.
Endpoint ini tidak dipaginasi. Secara default, setiap Agen dikembalikan dengan konfigurasi lengkapnya, yang berukuran besar: satu Agen bisa mencapai 580 KB dan akun dengan 64 Agen bisa lebih dari 3 MB. Berikan view=summary untuk mendapatkan baris singkat per Agen, lalu baca yang Anda inginkan dengan Dapatkan Agen.
Parameter kueri
| Parameter | Deskripsi |
|---|---|
view |
Atur ke summary untuk baris singkat. Nilai lainnya akan mengembalikan 400. Abaikan untuk dokumen lengkap. |
fields |
Hanya berlaku bersama dengan view=summary. Kunci ringkasan yang dipisahkan koma untuk disimpan, contohnya id,name,active. id selalu disertakan; nama yang tidak dikenal akan diabaikan. |
cURL
curl "https://api.youraiconnector.com/v1/agents?apiKey=YOUR_API_KEY&view=summary&fields=id,name,active"
JavaScript
const res = await fetch("https://api.youraiconnector.com/v1/agents?view=summary", {
headers: { "X-API-Key": "YOUR_API_KEY" },
});
const { agents } = await res.json();
Python
import requests
res = requests.get(
"https://api.youraiconnector.com/v1/agents",
headers={"X-API-Key": "YOUR_API_KEY"},
params={"view": "summary"},
)
agents = res.json()["agents"]
Respons (200)
{
"success": true,
"agents": [
{ "id": "ag7HkQ2ZpLxR3mNb", "name": "Listing assistant", "active": true }
]
}
Membuat Agen
POST /agents — hanya name yang benar-benar diperlukan; kirimkan konfigurasi apa pun yang sudah Anda ketahui bersamanya. Agen baru aktif secara default.
Bidang permintaan (semua opsional kecuali name)
| Bidang | Tipe | Deskripsi |
|---|---|---|
name |
string | Nama agen. |
active |
boolean | Apakah agen boleh langsung membalas. Default-nya adalah true. |
language |
string | Bahasa yang digunakan Agen untuk membalas. |
instructions |
string | Instruksi utama yang mengarahkan cara Agen berbicara dengan kontak. |
rules |
string | Aturan ketat yang harus selalu diikuti. |
goal |
string | Hasil akhir yang harus diupayakan. |
personality |
string | Nada bicara dan kepribadian. |
availability |
object | Jam aktif per hari kerja — lihat Atur jam aktif. |
ai_speed |
string | fast, fast_thinker, balanced atau thorough. |
anthropic_model |
string | standard, economy, max atau mini. |
scrape_urls |
string[] | Halaman untuk dibaca dan digunakan dalam menyusun instruksi Agen. |
Membangun Agen dari situs web Anda. Sertakan scrape_urls dan platform akan membaca halaman tersebut serta menulis instruksi untuk Anda. Respons akan memberi tahu Anda apakah pembuatan tersebut telah dimulai, sehingga Anda tahu apakah perlu melakukan polling pada Agen untuk melihat perkembangannya.
cURL
curl -X POST "https://api.youraiconnector.com/v1/agents?apiKey=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Listing assistant",
"language": "en",
"instructions": "Answer questions about our listings and book viewings.",
"goal": "Book a viewing"
}'
JavaScript
const res = await fetch("https://api.youraiconnector.com/v1/agents", {
method: "POST",
headers: { "X-API-Key": "YOUR_API_KEY", "Content-Type": "application/json" },
body: JSON.stringify({
name: "Listing assistant",
scrape_urls: ["https://example.com", "https://example.com/faq"],
}),
});
const data = await res.json();
console.log(data.agent_id);
Python
res = requests.post(
"https://api.youraiconnector.com/v1/agents",
headers={"X-API-Key": "YOUR_API_KEY"},
json={"name": "Listing assistant", "scrape_urls": ["https://example.com"]},
)
print(res.json()["agent_id"])
Respons (201)
{
"success": true,
"agent_id": "ag7HkQ2ZpLxR3mNb",
"substrate_campaign_id": null,
"agent_generation_queued": true
}
agent_generation_queued adalah true saat platform mulai menulis instruksi dari halaman yang Anda berikan.
400 berarti body bukan merupakan objek JSON, ada bidang yang ditolak, atau Agen melebihi ukuran konfigurasi yang diizinkan oleh paket Anda. 403 berarti akun tidak diizinkan menggunakan salah satu pengaturan yang Anda kirim — misalnya tingkat AI yang belum diberikan oleh penyedia akunnya.
Dapatkan Agen
GET /agents/{agentId}
Berikan fields dengan daftar yang dipisahkan koma untuk mendapatkan kembali hanya apa yang Anda butuhkan, contohnya fields=name,active,goal. id selalu disertakan, dan nama yang tidak ada pada Agen akan diabaikan alih-alih ditolak. Abaikan parameter ini untuk mendapatkan seluruh dokumen.
cURL
curl "https://api.youraiconnector.com/v1/agents/ag7HkQ2ZpLxR3mNb?apiKey=YOUR_API_KEY&fields=name,active,goal"
JavaScript
const res = await fetch("https://api.youraiconnector.com/v1/agents/ag7HkQ2ZpLxR3mNb?fields=name,active", {
headers: { "X-API-Key": "YOUR_API_KEY" },
});
const { agent } = await res.json();
Python
res = requests.get(
"https://api.youraiconnector.com/v1/agents/ag7HkQ2ZpLxR3mNb",
headers={"X-API-Key": "YOUR_API_KEY"},
params={"fields": "name,active"},
)
agent = res.json()["agent"]
Agen yang tidak ada di akun Anda akan mengembalikan 404.
Memperbarui Agen
PUT /agents/{agentId} — kirim hanya bidang yang ingin Anda ubah; yang lainnya akan dibiarkan tidak berubah.
Pengaturan bertingkat dapat diakses per bagian dengan kunci bertitik, sehingga "availability.monday" hanya mengubah hari Senin dan membiarkan sisa minggu tetap apa adanya.
Catatan
- Untuk mengubah jenis acara yang dapat dipesan oleh Agen, kirim
event_id(id acara, ataunulluntuk mengosongkannya). Kirimevent_idsdengan array untuk menautkan beberapa sekaligus — yang pertama menjadi yang utama dan[]akan membatalkan tautan semuanya.event_iddanevent_idssaling eksklusif, dan kolomeventitu sendiri tidak dapat ditulis secara langsung. enable_bookingsharus berupa boolean yang valid, danbooking_providerharus salah satu daridefault,zenchef,formitable.- Kolom kepemilikan dan identitas diabaikan, begitu pula status proses internal (kemajuan pembuatan dan pengoptimalan).
- Perutean tidak diatur di sini. Gunakan
PUT /entry-points/channel-defaultsuntuk menjadikan Agen sebagai penjawab saluran,POST /agents/{agentId}/entry-pointsuntuk aturan kata kunci dan komentar, sertaPATCH /agents/{agentId}/activeuntuk menjeda atau melanjutkannya.
cURL
curl -X PUT "https://api.youraiconnector.com/v1/agents/ag7HkQ2ZpLxR3mNb?apiKey=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"instructions": "Answer questions about our listings and always offer a viewing.",
"anthropic_model": "standard"
}'
JavaScript
await fetch("https://api.youraiconnector.com/v1/agents/ag7HkQ2ZpLxR3mNb", {
method: "PUT",
headers: { "X-API-Key": "YOUR_API_KEY", "Content-Type": "application/json" },
body: JSON.stringify({ "availability.monday": { start_time: "09:00", end_time: "17:00" } }),
});
Python
requests.put(
"https://api.youraiconnector.com/v1/agents/ag7HkQ2ZpLxR3mNb",
headers={"X-API-Key": "YOUR_API_KEY"},
json={"goal": "Book a viewing within three messages"},
)
Respons (200)
{ "success": true, "agent_id": "ag7HkQ2ZpLxR3mNb" }
Body kosong akan mengembalikan 400 dengan "No fields to update".
Perbarui pengaturan bot
PUT /agents/{agentId}/bot-config — cara ringkas untuk mengubah pengaturan percakapan saja.
Agen tidak memiliki bagian bot terpisah: pengaturannya berada langsung pada Agen, jadi nama kolom di sini sama dengan yang akan Anda kirim ke PUT /agents/{agentId}. Endpoint ini ada sebagai cara yang aman dan terfokus untuk mengubah beberapa di antaranya. Setidaknya satu kolom diperlukan.
| Kolom | Deskripsi |
|---|---|
instructions |
Instruksi utama yang mengarahkan cara Agen berbicara dengan kontak. |
rules |
Aturan ketat yang harus selalu diikuti. |
goal |
Hasil yang harus diupayakan dalam setiap percakapan. |
personality |
Deskripsi nada suara dan kepribadian. |
language |
Bahasa yang digunakan Agen untuk membalas. |
ai_speed |
fast, fast_thinker, balanced atau thorough. |
anthropic_model |
standard, economy, max atau mini. |
max_messages |
Jumlah maksimum pesan Agen per percakapan. |
alert_human_when |
Kapan Agen harus memberi tahu rekan tim manusia. |
ai_transparency |
Apakah Agen mengungkapkan bahwa dirinya adalah AI. |
Nama kolom harus berupa nama biasa di sini — huruf, angka, garis bawah, dan tanda hubung. Jalur bertitik tidak diterima di endpoint ini (tidak seperti
PUT /agents/{agentId}), jadibot.goalakan ditolak dengan400.
curl -X PUT "https://api.youraiconnector.com/v1/agents/ag7HkQ2ZpLxR3mNb/bot-config?apiKey=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "goal": "Book a viewing within three messages", "ai_speed": "thorough" }'
Teks yang panjang akan dihitung terhadap ukuran konfigurasi yang diizinkan oleh paket Anda, sehingga kumpulan instruksi yang sangat besar dapat ditolak dengan 400.
Atur jam aktif
PUT /agents/{agentId}/active-hours — jam di mana Agen membalas secara otomatis. Di luar jendela waktu tersebut, Agen akan tetap diam.
Kirim objek availability yang dikunci berdasarkan hari kerja (monday hingga sunday). Setiap hari memerlukan satu jendela waktu atau daftar jendela waktu, dalam format HH:MM 24 jam. Hari yang Anda lewatkan akan tetap menggunakan pengaturan sebelumnya, dan kunci apa pun yang bukan hari kerja akan ditolak — sehingga kesalahan ketik tidak akan diabaikan begitu saja.
curl -X PUT "https://api.youraiconnector.com/v1/agents/ag7HkQ2ZpLxR3mNb/active-hours?apiKey=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"availability": {
"monday": { "start_time": "09:00", "end_time": "17:00" },
"tuesday": [
{ "start_time": "09:00", "end_time": "12:00" },
{ "start_time": "13:00", "end_time": "17:00" }
]
}
}'
Respons (200)
{ "success": true, "agent_id": "ag7HkQ2ZpLxR3mNb" }
Kunci hari kerja yang salah akan mengembalikan 400: "Invalid availability keys: funday. Allowed keys: monday through sunday."
Jeda atau lanjutkan Agen
PATCH /agents/{agentId}/active — mengaktifkan atau menonaktifkan Agen. Agen yang dijeda akan menyimpan semua konfigurasinya tetapi segera berhenti membalas; melanjutkan Agen akan langsung berlaku.
curl -X PATCH "https://api.youraiconnector.com/v1/agents/ag7HkQ2ZpLxR3mNb/active?apiKey=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "active": false }'
await fetch("https://api.youraiconnector.com/v1/agents/ag7HkQ2ZpLxR3mNb/active", {
method: "PATCH",
headers: { "X-API-Key": "YOUR_API_KEY", "Content-Type": "application/json" },
body: JSON.stringify({ active: false }),
});
Respons (200)
{ "success": true, "agent_id": "ag7HkQ2ZpLxR3mNb", "active": false }
active harus berupa boolean yang valid — nilai lainnya akan mengembalikan 400 dengan "active (boolean) is required".
Menduplikasi Agen
POST /agents/{agentId}/duplicate — membuat salinan dengan konfigurasi yang tetap terjaga. Salinan tersebut tidak akan mengirim apa pun sampai Anda mengarahkan saluran atau Titik Masuk (Entry Point) ke sana.
curl -X POST "https://api.youraiconnector.com/v1/agents/ag7HkQ2ZpLxR3mNb/duplicate?apiKey=YOUR_API_KEY"
Respons (201)
{ "success": true, "agent_id": "ag9WsX3cRfV6tGyH", "source_agent_id": "ag7HkQ2ZpLxR3mNb" }
Duplikat dihitung terhadap kuota Agen paket Anda sama seperti membuat Agen dari awal, sehingga permintaan akan ditolak dengan 403 jika akun Anda telah mencapai batas.
Menghapus Agen
DELETE /agents/{agentId}
Penghapusan akan ditolak selama Agen masih terhubung ke sesuatu yang akan berhenti berfungsi tanpanya — siaran, Titik Masuk, atau (pada akun lama) kampanye. Respons akan mencantumkan apa yang menahannya sehingga Anda dapat melepasnya terlebih dahulu dan mencoba lagi.
curl -X DELETE "https://api.youraiconnector.com/v1/agents/ag7HkQ2ZpLxR3mNb?apiKey=YOUR_API_KEY"
Respons (200)
{ "success": true, "agent_id": "ag7HkQ2ZpLxR3mNb" }
Diblokir (409)
{
"success": false,
"error": "Agent is still attached to one or more broadcast(s). Detach it first.",
"blocking_campaign_ids": [],
"blocking_broadcast_ids": ["bc5TgYhUj8IkOlPm"],
"blocking_entry_point_ids": []
}
Draf: tinjau perubahan sebelum ditayangkan
Hasil edit yang dibuat di editor, dan penulisan ulang apa pun yang dihasilkan oleh Optimalkan dengan AI, akan disimpan sebagai draf yang belum dipublikasikan hingga Anda memublikasikannya. Agen yang sedang aktif akan terus menjawab dengan konfigurasi saat ini hingga saat itu tiba.
Publikasikan draf
POST /agents/{agentId}/publish-draft — memindahkan draf ke konfigurasi langsung dan menghapus draf dalam langkah yang sama.
curl -X POST "https://api.youraiconnector.com/v1/agents/ag7HkQ2ZpLxR3mNb/publish-draft?apiKey=YOUR_API_KEY"
Respons (200)
{ "success": true, "agent_id": "ag7HkQ2ZpLxR3mNb", "published_keys": ["instructions", "goal"] }
published_keys mencantumkan pengaturan yang dipindahkan dari draf ke Agen langsung, sehingga Anda dapat menunjukkan apa yang berubah.
Pastikan draf ada sebelum memanggil ini. Memublikasikan Agen yang tidak memiliki draf bukanlah panggilan yang didukung dan saat ini akan menghasilkan
500dengan pesan umum, bukan pesan spesifik. Untuk membuang draf sebagai gantinya, gunakan hapus di bawah.
Buang draf
POST /agents/{agentId}/discard-draft — membuang draf dan membiarkan konfigurasi langsung tetap apa adanya. Aman untuk dipanggil saat tidak ada draf; tidak ada yang terjadi.
curl -X POST "https://api.youraiconnector.com/v1/agents/ag7HkQ2ZpLxR3mNb/discard-draft?apiKey=YOUR_API_KEY"
Optimalkan Agen dengan AI
POST /agents/{agentId}/optimize — menulis ulang konfigurasi Agen berdasarkan masukan Anda (“ia terus menawarkan diskon”, “jawabannya terlalu panjang”) dan menyimpan penulisan ulang tersebut sebagai draf alih-alih langsung menerapkannya.
Kirim user_feedback (instruksi biasa) atau, saat menanggapi balasan buruk tertentu, thumbs_down_feedback bersama dengan thumbs_down_message yang bermasalah. Setidaknya salah satu dari keduanya harus berisi teks.
curl -X POST "https://api.youraiconnector.com/v1/agents/ag7HkQ2ZpLxR3mNb/optimize?apiKey=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "user_feedback": "Keep replies under three sentences." }'
Respons (202)
{ "success": true, "agent_id": "ag7HkQ2ZpLxR3mNb" }
Pekerjaan berjalan di latar belakang dan panggilan langsung kembali seketika. Baca Agen dengan GET /agents/{agentId} dan pantau optimize_run.status; setelah kembali ke Draft, penulisan ulang tersebut menunggu sebagai draf Agen. Tinjau draf tersebut, lalu publikasikan atau buang.
Hanya satu proses yang berjalan dalam satu waktu per Agen — panggilan kedua saat satu proses sedang berlangsung akan mengembalikan 409. Ini menggunakan kredit AI.
Aturan penandaan (tagging)
Aturan penandaan adalah tag ditambah deskripsi kapan aturan tersebut berlaku. Selama percakapan, Agen membaca deskripsi tersebut dan menandai kontak saat kondisinya sesuai, yang merupakan cara otomatisasi berbasis tag dipicu.
Objek aturan
| Bidang | Wajib | Deskripsi |
|---|---|---|
name |
Ya | Tag yang akan diterapkan, contohnya hot-lead. |
description |
Tidak | Kapan Agen harus menerapkannya, ditulis sebagai instruksi yang harus diikuti. |
webhook |
Tidak | URL yang dipanggil saat Agen menerapkan tag ini. |
ai_can_remove |
Tidak | Apakah Agen juga boleh menghapus tag tersebut kembali. Standarnya adalah false. |
tag_id |
Tidak | Id tag yang ada di akun Anda untuk menautkan aturan tersebut. Tanpanya, aturan akan tertaut ke tag dengan nama yang sama, dan membuatnya jika belum ada — sehingga setiap aturan dapat diakses berdasarkan id tag setelahnya. |
Tambahkan aturan penandaan
POST /agents/{agentId}/tags
curl -X POST "https://api.youraiconnector.com/v1/agents/ag7HkQ2ZpLxR3mNb/tags?apiKey=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"tag": {
"name": "hot-lead",
"description": "Apply when the contact asks about pricing or wants to book a call.",
"ai_can_remove": false
}
}'
Respons (200)
{ "success": true, "agent_id": "ag7HkQ2ZpLxR3mNb", "tag": { "name": "hot-lead", "...": "..." } }
Ganti aturan penandaan
PUT /agents/{agentId}/tags/{tagId} — aturan ditemukan berdasarkan id tag di jalur dan diganti secara keseluruhan, bukan digabungkan, jadi kirimkan aturan lengkap alih-alih hanya bagian yang ingin Anda ubah. Tag yang ditunjuknya tetap dipertahankan meskipun Anda tidak menyertakan tag_id, sehingga pengeditan tidak dapat melepaskan aturan dari tag-nya.
curl -X PUT "https://api.youraiconnector.com/v1/agents/ag7HkQ2ZpLxR3mNb/tags/tg8YuIoP2aSdF3gH?apiKey=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "tag": { "name": "hot-lead", "description": "Apply only when the contact asks to book a call." } }'
Menghapus aturan penandaan
DELETE /agents/{agentId}/tags/{tagId} — Agen berhenti menerapkan tag tersebut. Tag itu sendiri, dan kontak apa pun yang sudah memilikinya, tidak akan terpengaruh.
curl -X DELETE "https://api.youraiconnector.com/v1/agents/ag7HkQ2ZpLxR3mNb/tags/tg8YuIoP2aSdF3gH?apiKey=YOUR_API_KEY"
Kedua endpoint mengembalikan 404 saat Agen tidak ada atau saat tidak memiliki aturan untuk tag tersebut.
Membuat set tag dengan AI
POST /agents/{agentId}/tags/generate — merancang keseluruhan set aturan (nama tag dan kata-kata “terapkan saat…” di balik setiap aturan) dengan membaca instruksi dan tujuan Agen itu sendiri.
| Bidang | Deskripsi |
|---|---|
mode |
merge (default) mempertahankan aturan yang sudah ada pada Agen dan menambahkannya. replace merancang set tersebut dari awal. |
curl -X POST "https://api.youraiconnector.com/v1/agents/ag7HkQ2ZpLxR3mNb/tags/generate?apiKey=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "mode": "merge" }'
Respons (202)
{ "success": true, "agent_id": "ag7HkQ2ZpLxR3mNb", "mode": "merge" }
Pekerjaan berjalan di latar belakang. Baca Agen dan pantau tag_generation.status; aturan itu sendiri akan muncul di tags Agen. Hanya satu proses yang berjalan dalam satu waktu per Agen (409 jika tidak), dan ini menggunakan kredit AI.
Sumber pengetahuan
Sumber pengetahuan adalah halaman dan dokumen yang telah dibaca oleh platform untuk Anda. Melampirkannya ke Agen memungkinkan Agen menjawab berdasarkan konten tersebut.
Dari mana id sumber berasal. Tambahkan konten dengan endpoint basis pengetahuan — POST /kb-sources/url untuk halaman, POST /kb-sources/file untuk dokumen, POST /kb-sources/bulk-import untuk seluruh situs. Endpoint tersebut mengembalikan source_id yang Anda polling dengan GET /kb-sources/{sourceId} hingga siap. POST /kb-sources/url juga menerima autoLinkToAgentId, yang melampirkan sumber ke Agen segera setelah impor selesai, sehingga Anda dapat melewati panggilan lampiran di bawah.
Melampirkan sumber pengetahuan
POST /agents/{agentId}/kb-sources — kirim kb_source_ids dengan daftar untuk melampirkan seluruh set dalam satu panggilan (apa yang Anda inginkan setelah merayapi situs), atau kb_source_id untuk satu sumber saja. Kirim salah satu dari keduanya. Melampirkan sesuatu yang sudah terlampir tidak akan mengubah apa pun.
curl -X POST "https://api.youraiconnector.com/v1/agents/ag7HkQ2ZpLxR3mNb/kb-sources?apiKey=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "kb_source_ids": ["kb2QwErTyUi9OpAs", "kb6ZxCvBnM4kLjHg"] }'
Respons (200)
{
"success": true,
"agent_id": "ag7HkQ2ZpLxR3mNb",
"kb_source_id": "kb2QwErTyUi9OpAs",
"kb_source_ids": ["kb2QwErTyUi9OpAs", "kb6ZxCvBnM4kLjHg"]
}
Melepaskan sumber pengetahuan
DELETE /agents/{agentId}/kb-sources/{kbSourceId} untuk satu, atau POST /agents/{agentId}/kb-sources/bulk-remove dengan kb_source_ids untuk beberapa. Penghapusan massal adalah POST karena daftar id dikirim di dalam body.
curl -X POST "https://api.youraiconnector.com/v1/agents/ag7HkQ2ZpLxR3mNb/kb-sources/bulk-remove?apiKey=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "kb_source_ids": ["kb2QwErTyUi9OpAs"] }'
Sumber itu sendiri tidak dihapus dan tetap tersedia untuk Agen Anda yang lain. Melepaskan sesuatu yang tidak terpasang tidak mengubah apa pun.
FAQ
FAQ dikelola pada endpoint-nya sendiri dan ditautkan ke Agen dari sana: POST /faqs/{faqId}/link dengan { "agent_id": "ag7HkQ2ZpLxR3mNb" }, dan POST /faqs/{faqId}/unlink untuk menghapusnya kembali. FAQ dapat dibagikan oleh sejumlah Agen. Lihat API FAQ.
FAQ hanya digunakan oleh Agen yang ditautkan dengannya — membuatnya saja tidak cukup.
Alat
Fungsi kustom
POST /agents/{agentId}/custom-functions memungkinkan Agen memanggil salah satu fungsi kustom Anda selama percakapan. Hanya fungsi yang termasuk dalam akun yang sama yang dapat dilampirkan, dan melampirkan fungsi yang sudah terlampir tidak mengubah apa pun.
curl -X POST "https://api.youraiconnector.com/v1/agents/ag7HkQ2ZpLxR3mNb/custom-functions?apiKey=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "custom_function_id": "cf7Hk2ZpLxR3mNbV" }'
DELETE /agents/{agentId}/custom-functions/{customFunctionId} melepaskannya. Fungsi itu sendiri tidak dihapus dan tetap tersedia untuk Agen Anda yang lain.
Kelola fungsi itu sendiri di /custom-functions — lihat Fungsi Kustom untuk mengetahui apa itu fungsi kustom.
Server MCP
Server MCP adalah paket alat siap pakai yang dapat ditemukan dan dipanggil sendiri oleh Agen Anda — lihat Hubungkan Server MCP ke Bot Anda. Server didaftarkan sekali pada akun, kemudian dilampirkan ke Agen mana pun yang harus menggunakannya.
Server MCP memerlukan fitur fungsi kustom pada paket Anda. Tanpa fitur tersebut, endpoint
/mcp-serverstingkat akun akan mengembalikan403. Melampirkan server yang sudah terdaftar ke Agen tidak dibatasi.
Daftarkan server
POST /mcp-servers
| Bidang | Wajib | Deskripsi |
|---|---|---|
name |
Ya | Label untuk server. |
url |
Ya | Alamat server. Harus dapat dijangkau melalui internet publik. |
auth_type |
Tidak | header (default) untuk header otentikasi statis, atau oauth2. |
auth_header_name |
Tidak | Header untuk mengirim kredensial. Default-nya adalah Authorization. |
auth_header_value |
Tidak | Kredensial itu sendiri. Tidak akan pernah dikembalikan dalam respons apa pun. |
enabled |
Tidak | Apakah server tersedia untuk Agen. Default-nya adalah true. |
enabled_tools |
Tidak | Daftar izin nama alat. null berarti setiap alat yang ditawarkan server diaktifkan. |
tool_policies |
Tidak | Batasan per alat, dikunci berdasarkan nama alat — seberapa sering alat dapat dijalankan, penembolokan hasil, dan penggantian baca-saja. Berikan null untuk menghapus semuanya. |
curl -X POST "https://api.youraiconnector.com/v1/mcp-servers?apiKey=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Inventory",
"url": "https://tools.example.com/mcp",
"auth_header_value": "Bearer sk_live_xxx"
}'
Respons (201)
{
"success": true,
"server_id": "ms4TgBnH7yUj2kLp",
"tools": [{ "name": "check_stock", "description": "Look up stock for a SKU." }],
"last_error": null,
"server": { "server_id": "ms4TgBnH7yUj2kLp", "name": "Inventory", "...": "..." }
}
Saat disimpan, platform akan terhubung ke server dan menembolok daftar alat yang ditawarkannya. Server yang tidak dapat dijangkau tetap akan tersimpan, dengan alasan yang tercantum di last_error dan daftar alat kosong — sehingga Anda dapat mendaftar terlebih dahulu dan memperbaiki konektivitas setelahnya.
Sebuah auth_type dengan oauth2 akan menyimpan pendaftaran dengan oauth_connected: false dan tanpa alat: belum ada token. Mengotorisasi server OAuth memerlukan masuk melalui browser dan dilakukan dari dasbor, bukan melalui API.
Mencantumkan, memperbarui, dan menghapus server
GET /mcp-servers— setiap server yang terdaftar, yang terbaru terlebih dahulu, di bawahservers.PUT /mcp-servers/{serverId}— kirim hanya apa yang ingin Anda ubah. Mengubah URL atau bidang otentikasi akan menguji ulang koneksi dan menyegarkan daftar alat yang di-cache.DELETE /mcp-servers/{serverId}— menghapus pendaftaran dan memutuskan tautannya dari setiap Agen dan kampanye yang mengaktifkannya.
curl "https://api.youraiconnector.com/v1/mcp-servers?apiKey=YOUR_API_KEY"
Rahasia tidak akan pernah dikembalikan. Respons membawa auth_header_value_set (bendera true/false yang menyatakan bahwa nilai tersimpan) alih-alih kredensial, dan token OAuth serta rahasia klien tetap berada di sisi server. Semua hal lainnya akan dikembalikan: name, url, enabled, auth_type, auth_header_name, tools, enabled_tools, tool_policies, oauth_connected, tools_cached_at, last_connected_at, last_error, created_at, updated_at.
Menguji koneksi
POST /mcp-servers/test-connection — terhubung ke server dan mencantumkan alat-alatnya. Ada dua cara untuk memanggilnya:
- dengan
server_id— menguji konfigurasi yang disimpan dan menyegarkan daftar alat yang di-cache; - dengan
urlinline (ditambahauth_header_name/auth_header_value) — pengujian sebelum penyimpanan yang tidak menyimpan apa pun.
curl -X POST "https://api.youraiconnector.com/v1/mcp-servers/test-connection?apiKey=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "url": "https://tools.example.com/mcp", "auth_header_value": "Bearer sk_live_xxx" }'
Respons (200)
{
"success": true,
"server_name": "Inventory tools",
"tools": [{ "name": "check_stock", "description": "Look up stock for a SKU." }]
}
Kegagalan koneksi bukan merupakan kesalahan HTTP — Anda akan mendapatkan 200 dengan success: false dan error yang menjelaskan apa yang salah, sehingga Anda dapat menampilkannya di samping kolom yang sedang diedit oleh operator.
Lampirkan server ke Agen
Mendaftarkan server tidak memberikan akses apa pun kepada Agen. Lampirkan server tersebut:
curl -X POST "https://api.youraiconnector.com/v1/agents/ag7HkQ2ZpLxR3mNb/mcp-servers?apiKey=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "mcp_server_id": "ms4TgBnH7yUj2kLp" }'
Respons (200)
{ "success": true, "agent_id": "ag7HkQ2ZpLxR3mNb", "mcp_server_id": "ms4TgBnH7yUj2kLp" }
DELETE /agents/{agentId}/mcp-servers/{mcpServerId} akan melepaskannya kembali. Server itu sendiri tidak dihapus dan tetap tersedia bagi Agen Anda yang lain. Melampirkan atau melepaskan sesuatu yang sudah dalam status tersebut tidak akan mengubah apa pun.
Pustaka media
Pustaka media menyimpan file yang mungkin dikirim oleh Agen selama percakapan — menu, daftar harga, foto produk. Satu Agen dapat menampung maksimal 50 item.
Daftar media
GET /agents/{agentId}/media-library
curl "https://api.youraiconnector.com/v1/agents/ag7HkQ2ZpLxR3mNb/media-library?apiKey=YOUR_API_KEY"
Respons (200)
{
"success": true,
"agent_id": "ag7HkQ2ZpLxR3mNb",
"media_items": [
{
"id": "mi4RtY7uIoP1aSdF",
"item_id": "mi4RtY7uIoP1aSdF",
"media_home": "agent",
"title": "Spring menu",
"description": "Send when someone asks what is on the menu.",
"ai_description": "A one-page menu listing seasonal dishes and prices.",
"type": "document",
"media_content_type": "application/pdf",
"media_url": "https://storage.googleapis.com/...",
"max_sends_per_conversation": 1,
"created_at": 1700000000000
}
]
}
Item yang disimpan di Agen didahulukan, kemudian item lama yang masih tersimpan di kampanye tempat Agen tersebut dibuat; media_home (agent atau campaign) menunjukkan mana yang mana. Dalam setiap grup, yang terbaru diletakkan di urutan pertama.
media_urlkedaluwarsa setelah 7 hari. Ini adalah tautan unduhan yang dibuat saat file diunggah — anggap tautan lama sudah usang, bukan rusak, dan baca ulang daftar untuk mendapatkan tautan baru.
Unggah media
POST /agents/{agentId}/media-library — file diunggah secara inline sebagai base64, hingga 10 MB. Panggilan akan kembali setelah file tersimpan, jadi berikan waktu sedikit lebih lama daripada permintaan biasa. Perhatikan bahwa body ini menggunakan nama field camelCase.
| Field | Wajib | Deskripsi |
|---|---|---|
base64Data |
Ya | Isi file, dikodekan base64, tanpa awalan data-URL. |
mimeType |
Ya | Tipe MIME file. |
fileName |
Ya | Nama file asli, digunakan untuk menamai file yang disimpan. |
title |
Tidak | Label singkat yang ditampilkan di pustaka. |
description |
Tidak | Instruksi “kapan Agen harus mengirim ini”. |
sendMessage |
Tidak | Kata-kata pilihan yang diucapkan Agen saat mengirim item. Dipotong hingga 500 karakter. |
maxSendsPerConversation |
Tidak | Berapa kali item tersebut dapat dikirim ke kontak yang sama dalam satu percakapan. Default-nya adalah 1. |
sendAsVoiceNote |
Tidak | Hanya unggahan audio — simpan file sebagai pesan suara WhatsApp. Diabaikan untuk tipe file lainnya. |
curl -X POST "https://api.youraiconnector.com/v1/agents/ag7HkQ2ZpLxR3mNb/media-library?apiKey=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"base64Data": "JVBERi0xLjQKJcfs...",
"mimeType": "application/pdf",
"fileName": "spring-menu.pdf",
"title": "Spring menu",
"description": "Send when someone asks what is on the menu.",
"maxSendsPerConversation": 1
}'
Dua hal terjadi secara otomatis: GIF animasi dikonversi menjadi video agar dapat diputar di semua saluran, dan platform menulis ringkasan singkat tentang isi file tersebut agar Agen mengetahui kapan file itu sesuai untuk digunakan.
400 mencakup field yang hilang, tipe file yang tidak didukung, file kosong atau terlalu besar, dan mencapai batas 50 item. 403 berarti pustaka media dinonaktifkan untuk akun tersebut.
Perbarui item media
PATCH /agents/{agentId}/media-library/{itemId} — hanya metadata. File itu sendiri tidak dapat diganti; unggah item baru dan hapus yang lama. Body ini menggunakan snake_case: title, description, send_message, max_sends_per_conversation (bilangan bulat non-negatif, atau null untuk menghapus batas).
curl -X PATCH "https://api.youraiconnector.com/v1/agents/ag7HkQ2ZpLxR3mNb/media-library/mi4RtY7uIoP1aSdF?apiKey=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "title": "Summer menu", "max_sends_per_conversation": 2 }'
Respons (200)
{
"success": true,
"agent_id": "ag7HkQ2ZpLxR3mNb",
"item_id": "mi4RtY7uIoP1aSdF",
"campaign_id": "",
"media_home": "agent"
}
Hapus item media
DELETE /agents/{agentId}/media-library/{itemId} — menghapus item dan file yang tersimpan. Menghapus item yang sudah tidak ada akan berhasil dan melaporkan deleted: false, sehingga panggilan ini aman untuk dicoba kembali.
curl -X DELETE "https://api.youraiconnector.com/v1/agents/ag7HkQ2ZpLxR3mNb/media-library/mi4RtY7uIoP1aSdF?apiKey=YOUR_API_KEY"
Hasilkan pesan tindak lanjut
POST /agents/{agentId}/template-generation — menulis pesan tindak lanjut Agen untuk Anda (pengingat yang dikirim saat percakapan menjadi senyap), berdasarkan tujuan Agen tersebut.
| Bidang | Deskripsi |
|---|---|
type |
all (default) menulis seluruh set. cold_only hanya menulis pesan untuk kontak yang tidak pernah membalas. |
curl -X POST "https://api.youraiconnector.com/v1/agents/ag7HkQ2ZpLxR3mNb/template-generation?apiKey=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "type": "all" }'
Ada dua cara hal ini dikembalikan, dan bidang target memberi tahu Anda yang mana:
target: "agent"dengan200— pesan ditulis selama panggilan dan hasilnya ada didata. Baca kembali darifollow_up_configAgen. Ini adalah kasus yang biasa.target: "campaign"dengan202— pekerjaan diantrekan terhadap kampanye yang disebutkan dicampaign_id. Pantautemplate_generation_statuskampanye tersebut hingga selesai.
cold_only memerlukan kampanye keluar dan ditolak dengan 409 (reason: "cold_only_requires_campaign") pada Agen yang tidak memilikinya. 403 berarti tindak lanjut otomatis tidak diaktifkan untuk akun tersebut. Ini menggunakan kredit AI, dan 400 dengan "Insufficient credits." berarti akun tersebut kehabisan kredit.
Mengarahkan percakapan ke Agen
Agen hanya menjawab percakapan yang dikirimkan oleh Titik Masuk (Entry Point). Hingga saluran memiliki satu titik masuk, pesan pertama dari seseorang yang belum pernah Anda ajak bicara tetap disimpan, tetapi tidak ada yang mengambilnya dan tidak ada asisten yang membalas.
| Apa yang ingin Anda lakukan | Panggilan |
|---|---|
| Menjadikan Agen sebagai penjawab untuk seluruh saluran | PUT /entry-points/channel-defaults dengan { "channel": "instagram", "agent_id": "AGENT_ID" } |
| Menambahkan aturan yang lebih spesifik (kata kunci, komentar, pengikut baru) | POST /agents/{agentId}/entry-points |
| Melihat aturan yang mengarah ke satu Agen | GET /agents/{agentId}/entry-points |
| Membiarkan saluran tanpa ada yang menjawab | DELETE /entry-points/channel-defaults?channel=instagram |
Mencantumkan Titik Masuk Agen
GET /agents/{agentId}/entry-points — aturan perutean yang mengirimkan percakapan ke Agen ini, yang terbaru ditampilkan lebih dulu. Baik aturan saat ini maupun yang sudah tidak berlaku akan dikembalikan; aturan yang sudah tidak berlaku memiliki enabled: false.
curl "https://api.youraiconnector.com/v1/agents/ag7HkQ2ZpLxR3mNb/entry-points?apiKey=YOUR_API_KEY"
Untuk default saluran seluruh akun, termasuk saluran yang sengaja diatur ke tidak ada siapa pun, baca GET /entry-points/channel-defaults sebagai gantinya.
Membuat Titik Masuk
POST /agents/{agentId}/entry-points — Agen di jalur tersebut selalu menang, jadi aturan tidak akan pernah bisa dibuat untuk Agen yang berbeda dari yang ada di URL.
type |
Apa fungsinya |
|---|---|
channel_default |
Agen menjawab setiap kontak baru di saluran yang terdaftar. Gunakan PUT /entry-points/channel-defaults untuk ini — ini akan menonaktifkan penjawab sebelumnya untuk Anda, yang tidak dilakukan jika Anda membuat default kedua di sini. |
keyword |
Agen mengambil alih ketika pesan pertama berisi salah satu dari match_config.keywords. Setidaknya satu kata kunci diperlukan. |
instagram_comment / facebook_comment |
Agen membalas komentar pada kiriman Anda. Saluran yang cocok harus terdaftar di channels. |
instagram_follower |
Agen menyapa pengikut baru. |
channels diperlukan dan menyatakan saluran mana yang dicakup oleh aturan tersebut — misalnya whatsapp, whatsapp_web, instagram, messenger, telegram, sms, email, chat_widget atau custom_channel. Aturan baru diaktifkan kecuali Anda menyatakan sebaliknya.
curl -X POST "https://api.youraiconnector.com/v1/agents/ag7HkQ2ZpLxR3mNb/entry-points?apiKey=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"type": "keyword",
"channels": ["whatsapp", "instagram"],
"match_config": { "keywords": ["pricing", "quote"] }
}'
Respons (201)
{ "success": true, "entry_point_id": "ep3KmQ8vTzXr5nWd" }
Aturan mana yang menang jika ada beberapa yang bisa: percakapan yang sedang berlangsung atau penugasan manual akan tetap mempertahankan Agen yang sudah dimilikinya; jika tidak, aturan kata kunci mengalahkan aturan komentar, yang mengalahkan aturan pengikut, dan default saluran adalah pilihan terakhir. Apakah aturan-aturan ini sudah menentukan sesuatu pada akun dilaporkan oleh GET /entry-points/routing-status.
Ini adalah versi singkatnya. Panduan Entry Points API mencakup aturan lengkap mengenai ladder, komentar, dan pengikut, satu Agen per nomor WhatsApp, serta cara mengubah atau menghapus aturan. Lihat Entry Points untuk konsepnya, dan Channels API untuk menghubungkan salurannya sendiri.
Kesalahan API Agen AI
Titik akhir Agen mengembalikan amplop kesalahan standar:
{
"success": false,
"error": "Agent not found"
}
| Status | Kapan ini terjadi pada titik akhir Agen |
|---|---|
400 |
Bidang yang diperlukan hilang atau tidak valid — isi pembaruan kosong, nilai di luar daftar yang diizinkan (ai_speed, anthropic_model, booking_provider, mode, type), kunci bukan hari kerja di availability, nama bidang bertitik pada bot-config, atau id yang salah format di jalur. |
403 |
Akun tidak diizinkan menggunakan pengaturan yang Anda kirim, Anda berada di batas Agen paket Anda, atau fitur yang dibutuhkan titik akhir ini (pustaka media, tindak lanjut, fungsi kustom untuk server MCP) tidak aktif. Perubahan yang melebihi ukuran konfigurasi yang diizinkan paket Anda ditolak dengan 400. |
404 |
Agen, aturan tag, item media, atau server MCP tidak ditemukan — entah karena tidak ada atau milik akun lain. |
409 |
Sesuatu sudah berjalan atau menghalangi: pengoptimalan atau pembuatan tag sedang berjalan, Agen masih terlampir pada siaran, Titik Masuk, atau kampanye, atau cold_only diminta tanpa kampanye keluar. |
Kode bersama yang dapat dikembalikan oleh setiap endpoint — 401, 403 (paket Anda tidak menyertakan akses API), 429 (batas kecepatan) dan 500 — tercantum beserta panduan percobaan ulang di Kesalahan & Penomoran Halaman.
Catatan tentang penjelajah. Titik akhir
/agentsada dalam spesifikasi OpenAPI yang dipublikasikan, sehingga Anda dapat menelusuri bidang persisnya dan menjalankan permintaan langsung di Referensi API. Titik akhir/mcp-serverstingkat akun juga ada dalam spesifikasi, sehingga Anda dapat menjelajahinya di sana juga.
Terkait
- Agen AI — apa itu Agen, dalam bahasa sederhana.
- Titik Masuk — bagaimana percakapan diarahkan ke Agen.
- API FAQ — membangun dan menautkan pengetahuan yang dijawab oleh Agen Anda.
- API Saluran — menghubungkan saluran tempat Agen menjawab.
- Hubungkan Server MCP ke Bot Anda · Fungsi Kustom
- Referensi API — penjelajah titik akhir interaktif lengkap.