Kanal Bağlantısı API’si
Bu kılavuz, API kullanarak mesajlaşma kanallarının bir hesaba nasıl bağlanacağını gösterir. Bir entegrasyon veya sarmalayıcı (wrapper) oluşturan geliştiriciler için yazılmıştır; bu nedenle tam isteklere, bunların yapılma sırasına ve aldığınız yanıtlara odaklanır.
Buradaki hemen hemen her kanal için geçerli olduğundan, en başta anlamanız gereken bir model vardır.
Bağlan ve sorgula (connect-then-poll) modeli
Çoğu kanal tek bir API çağrısıyla bağlanamaz. WhatsApp, Instagram veya Messenger’ı bağlamak, hesap sahibinin kendi sağlayıcı hesabına giriş yapmasını ve erişimi onaylamasını gerektirir. Bu onay için başsız (tamamen otomatik) bir yol yoktur - gerçek bir kişinin bir tarayıcıda URL açması veya telefonuyla bir QR kodu taraması gerekir.
Bu nedenle akış her zaman şöyledir:
POSTile bağlantıyı başlatın. Yanıt size ya açılacak bir URL ya da görüntülenecek bir QR kodu verir.- Bunu son kullanıcıya iletin - URL’yi tarayıcılarında açın veya taramaları için QR kodunu ekranda oluşturun.
- Durum bağlı bir duruma ulaşana kadar kısa aralıklarla (birkaç saniyede bir)
GETile durum uç noktasını sorgulayın.
Entegrasyonunuzun görevi bu döngüyü yönetmektir: URL’yi veya QR’ı gösterin, ardından tamamlanana kadar sorgulayın. Kullanıcı arayüzünüzü sorgulama etrafında planlayın; “tarayıcınızda işlemin bitmesi bekleniyor” mesajı içeren bir yükleme simgesi iyi çalışır.
Not: Başlamadan önce, planınızda API erişiminin etkinleştirildiğinden ve bir API anahtarınız olduğundan emin olun. Nasıl oluşturacağınızı öğrenmek için API Erişimi bölümüne bakın. Aşağıdaki tüm istekler https://api.youraiconnector.com/v1 temel URL’sini kullanır ve her isteğin kimliğini doğrulamanız gerekir. Kabul edilen dört yöntem için Kimlik Doğrulama bölümüne bakın; buradaki örnekler X-API-Key başlığını kullanır ve her sayfada daha basit olan ?apiKey= sorgu biçimini gösteren bir cURL örneği bulunur.
Instagram + Messenger (Meta)
Instagram ve Messenger, her ikisi de bir Facebook Sayfası üzerinde çalıştığı için tek bir akışta birlikte bağlanır. Hesap sahibi Facebook aracılığıyla yetkilendirme yapar, siz yönettikleri Sayfaların listesini getirirsiniz ve hangi Sayfanın bağlanacağını seçersiniz.
1. Adım - Instagram + Messenger bağlantısını başlatın
POST /channels/meta/connect
Bu, bir onay URL’si döndürür. Bu istekte hiçbir kimlik bilgisi gönderilmez; bağlantı tamamen tarayıcıda yetkilendirilir.
cURL
curl -X POST "https://api.youraiconnector.com/v1/channels/meta/connect?apiKey=YOUR_API_KEY"
JavaScript
const res = await fetch("https://api.youraiconnector.com/v1/channels/meta/connect", {
method: "POST",
headers: { "X-API-Key": "YOUR_API_KEY" },
});
const data = await res.json();
// Open data.oauth_url in the end user's browser.
Python
import requests
res = requests.post(
"https://api.youraiconnector.com/v1/channels/meta/connect",
headers={"X-API-Key": "YOUR_API_KEY"},
)
data = res.json()
# Open data["oauth_url"] in the end user's browser.
Yanıt
{
"success": true,
"oauth_url": "https://www.facebook.com/v21.0/dialog/oauth?client_id=...&state=...",
"state_token": "opaque-one-time-token",
"connect_url": "https://api.youraiconnector.com/v1/channels/meta/connect/page?token=eyJhbGciOi...",
"connect_url_expires_at": 1717000000000,
"expires_at": "2026-06-10T12:30:00.000Z"
}
Son kullanıcının Facebook’a giriş yapıp erişimi onaylayabilmesi için oauth_url adresini tarayıcılarında açın. Bağlantı girişimi expires_at (yaklaşık 30 dakika) süresinde sona erer; süre dolarsa baştan başlayın. state_token değerini kısa ömürlü bir gizli bilgi olarak kabul edin ve günlüğe kaydetmeyin.
Instagram + Messenger için en kolay seçenek: connect_url teslim edin
Yanıt ayrıca hazır bir connect_url içerir: hesap sahibi için tüm akışı çalıştıran barındırılan bir sayfa. Sayfayı açıp Facebook’a giriş yaparlar ve birden fazla Sayfaları varsa, liste gösterilir ve hangisini bağlayacaklarını seçmelerine olanak tanınır - ardından kendi kendine başarı raporu verir. oauth_url’i kendiniz açmak, bir Sayfa seçici oluşturmak ve yoklama yapmak yerine bu bağlantıyı hesap sahibine verin. Bağlantı yaklaşık 30 dakika çalışır (connect_url_expires_at); süresi dolarsa yeni bir bağlantı başlatın. Aşağıdaki manuel adımlar, akışı yönetmek ve Sayfa seçiciyi kendileri oluşturmak isteyen entegrasyonlar içindir.
Adım 2 - Sayfalar yüklenene kadar durumu sorgulayın
GET /channels/meta/status
Kullanıcı Facebook girişini tamamladıktan sonra, bu uç noktayı her birkaç saniyede bir sorgulayın. status alanı şu adımlardan geçer:
status |
Anlamı |
|---|---|
pending |
Onay henüz tamamlanmadı. Beklemeye devam edin. |
token_received |
Yetkilendirildi, ancak Sayfa listesi hala yükleniyor. |
pages_loaded |
Sayfalar mevcut - 3. adıma geçin. |
connected |
Bir Sayfa seçildi ve kanal yayında. |
cURL
curl "https://api.youraiconnector.com/v1/channels/meta/status" \
-H "X-API-Key: YOUR_API_KEY"
JavaScript
const res = await fetch("https://api.youraiconnector.com/v1/channels/meta/status", {
headers: { "X-API-Key": "YOUR_API_KEY" },
});
const data = await res.json();
// Poll until data.status === "pages_loaded".
Python
res = requests.get(
"https://api.youraiconnector.com/v1/channels/meta/status",
headers={"X-API-Key": "YOUR_API_KEY"},
)
data = res.json()
# Poll until data["status"] == "pages_loaded".
Yanıt (sayfalar yüklendiğinde)
{
"success": true,
"status": "pages_loaded",
"pages": [
{
"id": "1234567890",
"name": "My Business Page",
"category": "Local business",
"instagram_business_account": {
"id": "17890000000000000",
"username": "mybusiness"
}
}
],
"selected_page": null
}
Adım 3 - Sayfaları listeleyin (isteğe bağlı)
Sayfa listesini kendi başına getirmeyi tercih ederseniz (örneğin, bir seçici oluşturmak için), şunu kullanın:
GET /channels/meta/pages
curl "https://api.youraiconnector.com/v1/channels/meta/pages" \
-H "X-API-Key: YOUR_API_KEY"
Bu, durum uç noktasıyla aynı pages dizisini döndürür. (status uç noktası zaten sayfaları içerir, bu nedenle bu çağrı sadece kolaylık sağlamak içindir.)
Adım 4 - Bağlanacak sayfayı seçin
POST /channels/meta/select-page
Kullanıcının seçtiği Sayfanın page_id değerini gönderin. O Sayfaya bağlı Instagram hesabı otomatik olarak bağlanır; yalnızca hangi Instagram hesabının kullanılacağını geçersiz kılmak istiyorsanız instagram nesnesine ihtiyacınız vardır.
cURL
curl -X POST "https://api.youraiconnector.com/v1/channels/meta/select-page" \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "page_id": "1234567890" }'
JavaScript
const res = await fetch("https://api.youraiconnector.com/v1/channels/meta/select-page", {
method: "POST",
headers: {
"X-API-Key": "YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({ page_id: "1234567890" }),
});
const data = await res.json();
Python
res = requests.post(
"https://api.youraiconnector.com/v1/channels/meta/select-page",
headers={"X-API-Key": "YOUR_API_KEY"},
json={"page_id": "1234567890"},
)
data = res.json()
Yanıt
{
"success": true,
"page_id": "1234567890",
"instagram_business_account_id": "17890000000000000"
}
Kanal artık bağlı. Takip eden bir GET /channels/meta/status, status: "connected" değerini bildirecektir.
Bağlı sayfanın gönderilerini listele
GET /channels/meta/posts?platform=instagram
Bağladığınız sayfanın son gönderilerini (Instagram medyası veya Facebook gönderileri) döndürür. Belirli bir gönderiye yapılan yorumlara tepki veren bir Giriş Noktası (Entry Point) ayarladığınızda, seçiciyi (picker) bunun üzerinden oluşturursunuz.
| Sorgu parametresi | Gerekli | Açıklama |
|---|---|---|
platform |
Evet | instagram veya facebook. Başka herhangi bir değer 400 döndürür. |
limit |
Hayır | Kaç tane gönderi döndürüleceği, 1-50 arası. Varsayılan değer 25. |
after |
Hayır | Bir sonraki sayfa için imleç - önceki yanıttan nextCursor değerini iletin. |
cURL
curl "https://api.youraiconnector.com/v1/channels/meta/posts?platform=instagram&limit=25" \
-H "X-API-Key: YOUR_API_KEY"
Yanıt
{
"success": true,
"connected": true,
"platform": "instagram",
"posts": [
{
"id": "17900000000000000",
"caption": "New spring menu is live",
"thumbnailUrl": "https://scontent.cdninstagram.com/...",
"permalink": "https://www.instagram.com/p/Cxxxxxxxxxx/",
"createdAt": "2026-05-02T09:12:00.000Z",
"mediaType": "REELS"
}
],
"nextCursor": "QVFIUkxxxxxxxx"
}
mediaType, Instagram’ın kendi etiketidir (REELS, FEED, STORY veya format - IMAGE, VIDEO, CAROUSEL_ALBUM); Facebook için bu her zaman POST değerindedir. nextCursor, son sayfada null değerini alır.
Eğer listelenecek bir şey yoksa, çağrı yine de connected: false ve boş bir posts dizisi içeren 200 değerini ve nedenini belirten bir reason döndürür:
reason |
Ne yapmalı |
|---|---|
| (yok) | Henüz hiçbir sayfa bağlı değil - önce bağlantı akışını çalıştırın. |
no_instagram_account |
Bir Facebook Sayfası bağlı ancak ona bağlı bir Instagram işletme hesabı yok. Facebook gönderileri yine de düzgün bir şekilde listelenir. |
token_expired |
Kayıtlı sayfa kimlik bilgisi artık çalışmıyor - kanalı yeniden bağlayın. |
Instagram + Messenger bağlantısını kesin
DELETE /channels/meta
curl -X DELETE "https://api.youraiconnector.com/v1/channels/meta" \
-H "X-API-Key: YOUR_API_KEY"
Yanıt
{ "success": true, "disconnected": true }
Bu, hem Instagram hem de Messenger için gelen yönlendirmeyi durdurur. İşlem eş değerlidir (idempotent) - hiçbir şey bağlı değilken çağrıldığında bile başarılı olur.
WhatsApp Business
Bu, resmi bir WhatsApp Business numarasını bağlar. Bağlantıyı çağırmadan önce numaranın hesapta zaten mevcut olması gerekir. Meta’da olduğu gibi, hesap sahibi tarayıcısında yetkilendirme yapar, ardından numara ONLINE bildirene kadar sorgulama yaparsınız.
1. Adım - WhatsApp Business bağlantısını başlatın
POST /channels/whatsapp/connect
cURL
curl -X POST "https://api.youraiconnector.com/v1/channels/whatsapp/connect?apiKey=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "phone_number": "+14155551234" }'
JavaScript
const res = await fetch("https://api.youraiconnector.com/v1/channels/whatsapp/connect", {
method: "POST",
headers: {
"X-API-Key": "YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({ phone_number: "+14155551234" }),
});
const data = await res.json();
// Open data.oauth_url in the account holder's browser.
Python
res = requests.post(
"https://api.youraiconnector.com/v1/channels/whatsapp/connect",
headers={"X-API-Key": "YOUR_API_KEY"},
json={"phone_number": "+14155551234"},
)
data = res.json()
# Open data["oauth_url"] in the account holder's browser.
| Alan | Gerekli | Açıklama |
|---|---|---|
phone_number |
Evet | E.164 formatında bağlanacak numara (örneğin +14155551234). |
only_waba_sharing |
Hayır | Yetkilendirmeyi mevcut bir WhatsApp Business Hesabı paylaşımıyla sınırlandırır, yeni gönderici kurulumunu atlar. Varsayılan değer false. |
retry |
Hayır | Önceki girişimi tamamlanmamış bir numara için yetkilendirmeyi yeniden çalıştırır. Varsayılan değer false. |
business_name |
Hayır | Yalnızca onay ekranında gösterilen işletme adı için kozmetik geçersiz kılma (maks. 256 karakter). Saklanmaz. |
description |
Hayır | Yalnızca onay ekranında gösterilen işletme açıklaması için kozmetik geçersiz kılma (maks. 256 karakter). Saklanmaz. |
Yanıt
{
"success": true,
"status": "pending",
"oauth_url": "https://www.facebook.com/v21.0/dialog/oauth?client_id=...&state=...",
"state_token": "opaque-one-time-token",
"expires_at": "2026-06-10T12:30:00.000Z"
}
Yetkilendirmek için hesap sahibinin tarayıcısında oauth_url adresini açın. Onayladıklarında, kayıt arka planda tamamlanır.
Adım 2 - ONLINE olana kadar durumu sorgulayın
GET /channels/whatsapp/connect/{phoneNumber}/status
status değeri ONLINE olana kadar bunu sorgulayın.
cURL
curl "https://api.youraiconnector.com/v1/channels/whatsapp/connect/+14155551234/status" \
-H "X-API-Key: YOUR_API_KEY"
JavaScript
const phone = encodeURIComponent("+14155551234");
const res = await fetch(
`https://api.youraiconnector.com/v1/channels/whatsapp/connect/${phone}/status`,
{ headers: { "X-API-Key": "YOUR_API_KEY" } }
);
const data = await res.json();
// Poll until data.status === "ONLINE".
Python
import urllib.parse
phone = urllib.parse.quote("+14155551234")
res = requests.get(
f"https://api.youraiconnector.com/v1/channels/whatsapp/connect/{phone}/status",
headers={"X-API-Key": "YOUR_API_KEY"},
)
data = res.json()
# Poll until data["status"] == "ONLINE".
Yanıt
{
"success": true,
"phone_number": "+14155551234",
"channel": "whatsapp",
"status": "ONLINE",
"status_reason": null,
"live": true
}
status alanı şunlar olabilir:
status |
Anlamı |
|---|---|
PENDING |
Yetkilendirildi, onay süreci devam ediyor. Sorgulamaya devam edin. |
ONLINE |
Bağlandı ve gönderime hazır. |
RATE_LIMITED |
Çok fazla deneme - tekrar denemeden önce bekleyin. |
REGISTRATION_FAILED |
Kurulum tamamlanamadı. |
DELETED |
Kayıt artık mevcut değil. |
live: true, durumun sağlayıcıya karşı gerçek zamanlı olarak kontrol edildiği anlamına gelir; false ise son önbelleğe alınmış durumdan geldiği anlamına gelir.
Bir WhatsApp Business numarasının bağlantısını kesin
DELETE /channels/whatsapp/{phoneNumber}
curl -X DELETE "https://api.youraiconnector.com/v1/channels/whatsapp/+14155551234" \
-H "X-API-Key: YOUR_API_KEY"
Yanıt
{ "success": true, "phone_number": "+14155551234", "disconnected": true }
Numaranın kendisi hesapta kalır, böylece daha sonra tekrar bağlayabilirsiniz.
WhatsApp Web
WhatsApp Web, tıpkı WhatsApp uygulamasında bir cihazı bağlamak gibi, bir QR kodunu tarayarak normal bir WhatsApp numarasını bağlar. İş akışı şöyledir: oturumu başlatın, QR kodunu getirin ve gösterin, ardından durum connected olana kadar sorgulama yapın.
1. Adım - Bir WhatsApp Web eşleştirme oturumu başlatın
POST /channels/whatsapp-web/connections
cURL
curl -X POST "https://api.youraiconnector.com/v1/channels/whatsapp-web/connections?apiKey=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "phone_number": "+15551230000" }'
JavaScript
const res = await fetch("https://api.youraiconnector.com/v1/channels/whatsapp-web/connections", {
method: "POST",
headers: {
"X-API-Key": "YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({ phone_number: "+15551230000" }),
});
const data = await res.json();
Python
res = requests.post(
"https://api.youraiconnector.com/v1/channels/whatsapp-web/connections",
headers={"X-API-Key": "YOUR_API_KEY"},
json={"phone_number": "+15551230000"},
)
data = res.json()
| Alan | Gerekli | Açıklama |
|---|---|---|
phone_number |
Evet | Bağlanacak WhatsApp numarası, E.164 formatında. |
proxy_country |
Hayır | Yönlendirme bölgesi için ISO 3166-1 alpha-2 ülke kodu. Belirtilmediğinde numaradan otomatik olarak algılanır. |
force_new |
Hayır | Mevcut oturumu atın ve yeni bir eşleştirme başlatın. Varsayılan değer false. |
import_contacts |
Hayır | İlk bağlantıda cihazın mevcut kişilerini içe aktarın. Varsayılan değer false. |
pause_ai_for_imported_contacts |
Hayır | Kişileri içe aktarırken, onlar için otomatik yanıtları duraklatın. Varsayılan değer true. |
import_existing_chats |
Hayır | Mevcut sohbet geçmişini içe aktarın (import_contacts: true gerektirir). Varsayılan değer false. |
Yanıt
{
"success": true,
"phone_number": "+15551230000",
"session_id": "session-id",
"status": "qr_pending",
"connect_url": "https://api.youraiconnector.com/v1/channels/whatsapp-web/connect?token=eyJhbGciOi...",
"connect_url_expires_at": 1717000000000,
"poll_qr_path": "/v1/channels/whatsapp-web/connections/%2B15551230000/qr",
"poll_status_path": "/v1/channels/whatsapp-web/connections/%2B15551230000/status"
}
WhatsApp Web için en kolay seçenek: connect_url teslim edin
Yanıt, kullanıma hazır bir connect_url içerir: QR kodunu gösteren, döndükçe otomatik olarak yenileyen ve numara bağlandığı anda başarı mesajına geçen barındırılan bir sayfa. Bu bağlantıyı hesap sahibine vermeniz (tarayıcıda açın, onlara gönderin veya bir QR/buton olarak gösterin) ve WhatsApp ile taratmalarını sağlamanız yeterlidir; QR’ı kendiniz getirmenize veya herhangi bir şeyi sorgulamanıza gerek yoktur. Bağlantı yaklaşık 30 dakika boyunca çalışır (connect_url_expires_at); bu süre dolmadan işlemi tamamlayamazlarsa, yeni bir tane almak için yeni bir bağlantı başlatın.
Bir kişinin bağlantı açabildiği durumlarda önerilen yol budur. Aşağıdaki manuel adımlar (QR’ı kendiniz getirme, durumu sorgulama), QR’ı kendi arayüzlerinde oluşturmak isteyen entegrasyonlar içindir.
Yanıt ayrıca kullanmanız için tam poll_qr_path ve poll_status_path değerlerini de verir, böylece bunları kendiniz oluşturmak zorunda kalmazsınız.
Adım 2 - QR kodunu getirme ve gösterme
GET /channels/whatsapp-web/connections/{phoneNumber}/qr
cURL
curl "https://api.youraiconnector.com/v1/channels/whatsapp-web/connections/+15551230000/qr" \
-H "X-API-Key: YOUR_API_KEY"
JavaScript
const phone = encodeURIComponent("+15551230000");
const res = await fetch(
`https://api.youraiconnector.com/v1/channels/whatsapp-web/connections/${phone}/qr`,
{ headers: { "X-API-Key": "YOUR_API_KEY" } }
);
const data = await res.json();
// Render data.qr_data_url as an <img src> for the user to scan.
Python
import urllib.parse
phone = urllib.parse.quote("+15551230000")
res = requests.get(
f"https://api.youraiconnector.com/v1/channels/whatsapp-web/connections/{phone}/qr",
headers={"X-API-Key": "YOUR_API_KEY"},
)
data = res.json()
# Render data["qr_data_url"] for the user to scan.
Yanıt
{
"success": true,
"phone_number": "+15551230000",
"status": "qr_pending",
"qr_code": "2@raw-qr-payload-string...",
"qr_data_url": "data:image/png;base64,iVBORw0KGgo...",
"expires_at": "2026-06-10T12:05:00.000Z"
}
Kullanıcının telefonuyla taraması için QR kodunu oluşturun (WhatsApp > Bağlı Cihazlar > Cihaz Bağla):
qr_data_urlkullanıma hazır bir görseldir - doğrudan bir<img src>içine yerleştirin.qr_code, görseli kendiniz oluşturmayı tercih ederseniz kullanabileceğiniz ham veridir.
QR kodunun ömrü kısadır. Oturumu başlattıktan hemen sonra bu çağrıyı yaparsanız “QR code not available yet” (QR kodu henüz hazır değil) hatası içeren bir 404 alabilirsiniz; sadece bir an bekleyin ve tekrar deneyin. Eğer 410 (“QR code expired” - QR kodu süresi doldu) alırsanız, yeni bir kod almak için bağlantıyı baştan başlatın.
Adım 3 - Bağlanana kadar durumu sorgulama
GET /channels/whatsapp-web/connections/{phoneNumber}/status
cURL
curl "https://api.youraiconnector.com/v1/channels/whatsapp-web/connections/+15551230000/status" \
-H "X-API-Key: YOUR_API_KEY"
JavaScript
const phone = encodeURIComponent("+15551230000");
const res = await fetch(
`https://api.youraiconnector.com/v1/channels/whatsapp-web/connections/${phone}/status`,
{ headers: { "X-API-Key": "YOUR_API_KEY" } }
);
const data = await res.json();
// Poll until data.status === "connected" (or "open").
Python
import urllib.parse
phone = urllib.parse.quote("+15551230000")
res = requests.get(
f"https://api.youraiconnector.com/v1/channels/whatsapp-web/connections/{phone}/status",
headers={"X-API-Key": "YOUR_API_KEY"},
)
data = res.json()
# Poll until data["status"] == "connected" (or "open").
Yanıt
{
"success": true,
"phone_number": "+15551230000",
"status": "connected",
"has_qr": false,
"qr_expires_at": null,
"last_activity": null,
"message_count": null,
"proxy": null,
"live": true
}
status |
Anlamı |
|---|---|
not_initialized |
Henüz oturum yok (son hata). |
qr_pending |
QR kodunun taranması bekleniyor. |
connecting |
Tarandı, kurulum tamamlanıyor. |
connected / open |
Bağlandı ve aktif - bu başarıdır. |
disconnected |
Oturum sonlandırıldı (son hata). |
Bir WhatsApp Web oturumunun bağlantısını kesin
DELETE /channels/whatsapp-web/connections/{phoneNumber}
curl -X DELETE "https://api.youraiconnector.com/v1/channels/whatsapp-web/connections/+15551230000" \
-H "X-API-Key: YOUR_API_KEY"
Yanıt
{ "success": true, "phone_number": "+15551230000", "status": "removed" }
Bu, cihazın bağlantısını keser ve bağlantıyı kaldırır. Yerel durumu her zaman temizler, bu nedenle altta yatan oturum zaten gitmiş olsa bile işlemsel olarak eş değerdir (idempotent).
Telegram
Kullanılabilirlik: Telegram diğer tüm kanallar gibi bağlanır ve her hesaba açıktır; sizin için açılmasına gerek yoktur. Telegram hesabın planına dahil değilse, aşağıdaki Telegram uç noktaları yine de
403döndürebilir; bu durumda hata"This channel is not included in your current plan. Upgrade to unlock it."şeklinde görünür.
Telegram, kişisel bir hesabı telefon numarası ve tek kullanımlık giriş kodu (ve hesapta ayarlıysa iki faktörlü parola) ile bağlar. Akış şöyledir: oturumu başlatın, kodu gönderin, isteğe bağlı olarak parolayı gönderin ve ardından durum aracılığıyla onaylayın.
1. Adım - Bir Telegram bağlantı oturumu başlatın
POST /channels/telegram/connect
cURL
curl -X POST "https://api.youraiconnector.com/v1/channels/telegram/connect?apiKey=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "phone_number": "+14155550100" }'
JavaScript
const res = await fetch("https://api.youraiconnector.com/v1/channels/telegram/connect", {
method: "POST",
headers: {
"X-API-Key": "YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({ phone_number: "+14155550100" }),
});
const data = await res.json();
Python
res = requests.post(
"https://api.youraiconnector.com/v1/channels/telegram/connect",
headers={"X-API-Key": "YOUR_API_KEY"},
json={"phone_number": "+14155550100"},
)
data = res.json()
| Alan | Gerekli | Açıklama |
|---|---|---|
phone_number |
Evet | E.164 formatında bağlanacak hesap telefon numarası. |
mode |
Hayır | code (varsayılan) hesaba tek kullanımlık bir giriş kodu gönderir; qr bir giriş belirteci ve görüntülenecek QR URL’si döndürür. |
proxy_country |
Hayır | Giden ağ rotası için ISO 3166-1 alpha-2 ülke kodu. |
force_new |
Hayır | true olduğunda, mevcut tüm oturumları atar ve yeni bir başlangıç yapar. |
Yanıt
{
"success": true,
"phone_number": "+14155550100",
"status": "code_required",
"session_id": "session-id",
"connect_url": "https://api.youraiconnector.com/v1/channels/telegram/connect/page?token=eyJhbGciOi...",
"connect_url_expires_at": 1717000000000
}
code modunda hesap Telegram’da bir giriş kodu alır ve status, code_required olur. (qr modunda yanıt ayrıca login_token ve tarama için qr_url içerir, ayrıca status, qr_required olur.)
Telegram için en kolay seçenek: connect_url teslim edin
Yanıt, bağlantıyı kendi başına tamamlayan barındırılan bir sayfa olan hazır bir connect_url içerir. code modunda hesap sahibi giriş kodunu ve varsa iki adımlı doğrulama şifresini girer. qr modunda sayfa, Telegram uygulamasından taramaları için kendisini yenileyen bir QR kodu gösterir. Her iki durumda da başarıyı kendi kendine bildirir, bu nedenle kendi kullanıcı arayüzünüzü oluşturup sorgulama yapmak yerine bu bağlantıyı doğrudan hesap sahibine verebilirsiniz. Bağlantı yaklaşık 30 dakika (connect_url_expires_at) boyunca çalışır; süresi dolarsa, yeni bir tane almak için bağlantıyı yeniden başlatın.
Aşağıdaki manuel adımlar (kodu kendiniz toplayın, gönderin ve durumu sorgulayın; veya qr_url oluşturup sorgulayın), kullanıcı arayüzünü kendisi oluşturmak isteyen entegrasyonlar içindir.
Adım 2 - Giriş kodunu gönderin
POST /channels/telegram/connect/{phoneNumber}/verify-code
cURL
curl -X POST "https://api.youraiconnector.com/v1/channels/telegram/connect/+14155550100/verify-code" \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "code": "12345" }'
JavaScript
const phone = encodeURIComponent("+14155550100");
const res = await fetch(
`https://api.youraiconnector.com/v1/channels/telegram/connect/${phone}/verify-code`,
{
method: "POST",
headers: {
"X-API-Key": "YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({ code: "12345" }),
}
);
const data = await res.json();
Python
import urllib.parse
phone = urllib.parse.quote("+14155550100")
res = requests.post(
f"https://api.youraiconnector.com/v1/channels/telegram/connect/{phone}/verify-code",
headers={"X-API-Key": "YOUR_API_KEY"},
json={"code": "12345"},
)
data = res.json()
Yanıt
{
"success": true,
"phone_number": "+14155550100",
"status": "connected",
"telegram_user_id": "100000001",
"username": "myhandle"
}
Eğer status, connected ise işleminiz tamamlanmıştır. Eğer hesapta iki faktörlü doğrulama etkinse, status bunun yerine password_required olacaktır - 3. adıma geçin.
Adım 3 - İki faktörlü doğrulama şifresini gönderin (yalnızca gerekliyse)
POST /channels/telegram/connect/{phoneNumber}/verify-password
Bunu yalnızca 2. adım password_required döndürdüğünde çağırın.
cURL
curl -X POST "https://api.youraiconnector.com/v1/channels/telegram/connect/+14155550100/verify-password" \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "password": "the-2fa-password" }'
JavaScript
const phone = encodeURIComponent("+14155550100");
const res = await fetch(
`https://api.youraiconnector.com/v1/channels/telegram/connect/${phone}/verify-password`,
{
method: "POST",
headers: {
"X-API-Key": "YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({ password: "the-2fa-password" }),
}
);
const data = await res.json();
Python
import urllib.parse
phone = urllib.parse.quote("+14155550100")
res = requests.post(
f"https://api.youraiconnector.com/v1/channels/telegram/connect/{phone}/verify-password",
headers={"X-API-Key": "YOUR_API_KEY"},
json={"password": "the-2fa-password"},
)
data = res.json()
Yanıt
{
"success": true,
"phone_number": "+14155550100",
"status": "connected",
"telegram_user_id": "100000001",
"username": "myhandle"
}
Telegram durumunu kontrol edin
GET /channels/telegram/connect/{phoneNumber}/status
curl "https://api.youraiconnector.com/v1/channels/telegram/connect/+14155550100/status" \
-H "X-API-Key: YOUR_API_KEY"
Yanıt
{
"success": true,
"phone_number": "+14155550100",
"status": "connected",
"telegram_user_id": "100000001",
"live": true
}
status; connected, code_required, password_required, initializing, disconnected, not_initialized veya error olabilir.
Telegram bağlantısını kesin
DELETE /channels/telegram/{phoneNumber}
curl -X DELETE "https://api.youraiconnector.com/v1/channels/telegram/+14155550100" \
-H "X-API-Key: YOUR_API_KEY"
Yanıt
{ "success": true, "phone_number": "+14155550100", "status": "removed" }
İdempotent - tekrarlanan çağrılar başarılı olur.
Instagram (kişisel hesap)
Sınırlı erişimli beta, hesap bazında etkinleştirilir. Bu, kişisel bir Instagram hesabını kullanıcı adı ve şifresiyle (resmi İşletme API’si değil) giriş yaparak bağlar. Hesap beta için etkinleştirilmemişse, bağlantı çağrısı bir izin hatası döndürür.
Bu işlem hesap sahibinin kendi Instagram giriş bilgilerini gerektirdiğinden, en basit yol onlara barındırılan connect_url’ı vermek ve kimlik bilgilerini orada girmelerine izin vermektir - entegrasyonunuz şifreyi asla işlemez.
1. Adım - Bir Instagram (kişisel) bağlantısı başlatın
POST /channels/instagram-private/connect
Instagram username ve password gönderin.
Yanıt
{
"success": true,
"status": "connected",
"connect_url": "https://api.youraiconnector.com/v1/channels/instagram-private/connect/page?token=eyJhbGciOi...",
"connect_url_expires_at": 1717000000000
}
Hesapta iki faktörlü kimlik doğrulama varsa veya Instagram bir kontrol noktası (checkpoint) sunarsa, status değeri two_factor_required veya challenge_required olarak döner - kodu aşağıdaki /connect/{id}/verify-2fa veya /connect/{id}/verify-challenge adresine gönderin, ardından connected olana kadar /connect/{id}/status’i sorgulayın. {id}, yukarıdaki yanıtta account_id/username olarak döndürülen normalleştirilmiş Instagram kullanıcı adıdır - aşağıdaki her adımda bunu kullanın.
Adım 2 - İki faktörlü kodu gönderin (istenirse)
POST /channels/instagram-private/connect/{id}/verify-2fa
Bunu yalnızca 1. adım (veya 3. adım) two_factor_required döndürdüğünde çağırın.
curl -X POST "https://api.youraiconnector.com/v1/channels/instagram-private/connect/yourbrand/verify-2fa" \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "code": "123456" }'
Yanıt
{
"success": true,
"account_id": "yourbrand",
"status": "connected",
"ig_user_id": "17890000000000000",
"username": "yourbrand"
}
status değeri connected (tamamlandı), two_factor_required (yanlış kod, tekrar deneyin) veya challenge_required (Instagram ayrıca bir kontrol noktası kodu istiyor - 3. adıma gidin) olarak dönebilir.
Adım 3 - Kontrol noktası onay kodunu gönderin (istenirse)
POST /channels/instagram-private/connect/{id}/verify-challenge
Bunu yalnızca önceki bir adım challenge_required döndürdüğünde çağırın. Yukarıdaki 2. adımla aynı istek ve yanıt yapısına sahiptir.
curl -X POST "https://api.youraiconnector.com/v1/channels/instagram-private/connect/yourbrand/verify-challenge" \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "code": "123456" }'
Instagram (kişisel) durumunu kontrol et
GET /channels/instagram-private/connect/{id}/status
status değeri connected olana veya nihai bir hata bildirene kadar bunu sorgulayın.
curl "https://api.youraiconnector.com/v1/channels/instagram-private/connect/yourbrand/status" \
-H "X-API-Key: YOUR_API_KEY"
Yanıt
{
"success": true,
"account_id": "yourbrand",
"status": "connected",
"ig_user_id": "17890000000000000",
"username": "yourbrand",
"live": true
}
status değeri connected, two_factor_required, challenge_required, initializing, disconnected, not_initialized veya error olabilir. live: true, bunun önbelleğe alınmış bir değer yerine doğrudan bağlantı çalışanından canlı olarak okunduğu anlamına gelir.
Instagram (kişisel) için en kolay seçenek: connect_url teslim edin
Yanıt bir connect_url içerir: hesap sahibinin Instagram kullanıcı adını ve şifresini (ve Instagram isterse bir 2FA veya kontrol noktası kodunu) girdiği ve kendi kendine başarı raporu veren barındırılan bir sayfa. Kimlik bilgileri doğrudan Instagram’a gider ve saklanmaz. Şifrelerini kendi kullanıcı arayüzünüzde toplamak yerine bu bağlantıyı hesap sahibine verin. Bağlantı yaklaşık 30 dakika çalışır (connect_url_expires_at).
Instagram’ın bağlantısını kes (kişisel)
DELETE /channels/instagram-private/{id}
İdempotent - tekrarlanan çağrılar başarılı olur.
Takipçileri eşitle
POST /channels/instagram-private/{id}/sync-followers
Bağlı bir hesap için manuel olarak bir takipçi eşitlemesi tetikler - arka planda otomatik olarak çalışan işin aynısıdır, burada isteğe bağlı bir “Takipçileri yenile” eylemi olarak sunulmuştur. Hesabın mevcut takipçi listesini getirir, yeni kişileri kaydeder ve (Canlı bir kampanyada takipçi erişimi açık olduğunda) yeni takipçilere günlük sınıra kadar bir açılış DM’si gönderir.
curl -X POST "https://api.youraiconnector.com/v1/channels/instagram-private/yourbrand/sync-followers" \
-H "X-API-Key: YOUR_API_KEY"
Yanıt
{
"success": true,
"accountId": "yourbrand",
"totalFollowers": 1204,
"newFollowers": 6,
"dmsSent": 6,
"isBaselineSeed": false
}
Bu beş alan, bu sayfada
snake_caseyerinecamelCasedönen tek yerdir - bu bir yazım hatası değil, bu uç noktanın mevcut çalışma şeklidir.isBaselineSeed: true, bunun bağlantı kurulduktan sonraki ilk eşitleme olduğu anlamına gelir; bu sadece başlangıç takipçi listesini kaydeder ve asla erişim DM’leri göndermez (bu nedenle o çalıştırmadadmsSenther zaman0olur).
Bir hesap için yapılan ilk çağrı biraz zaman alabilir (tüm takipçi listesini taradığı için); sonraki çağrılar daha hızlıdır çünkü sadece yeni takipçiler arasındaki fark alınır. 404, hesabın bağlı olmadığı anlamına gelir; 412, bağlantının henüz başlatılmasının tamamlanmadığı anlamına gelir - bekleyin ve tekrar deneyin.
LINE
LINE, tarayıcı yönlendirmesi veya yoklama (polling) gerektirmediği için bağlanması en kolay kanaldır. Müşteri, LINE Developers konsolunda bir Messaging API kanalı oluşturur, iki değeri kopyalar ve siz bunları tek bir çağrıda gönderirsiniz. Ardından, konsola yapıştırmaları için onlara bir webhook URL’si verirsiniz.
1. Adım - Kanal kimlik bilgileriyle bağlanma
POST /channels/line
cURL
curl -X POST "https://api.youraiconnector.com/v1/channels/line?apiKey=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"channel_access_token": "LONG_LIVED_CHANNEL_ACCESS_TOKEN",
"channel_secret": "CHANNEL_SECRET"
}'
JavaScript
const res = await fetch("https://api.youraiconnector.com/v1/channels/line", {
method: "POST",
headers: {
"X-API-Key": "YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({
channel_access_token: "LONG_LIVED_CHANNEL_ACCESS_TOKEN",
channel_secret: "CHANNEL_SECRET",
}),
});
const data = await res.json();
Python
res = requests.post(
"https://api.youraiconnector.com/v1/channels/line",
headers={"X-API-Key": "YOUR_API_KEY"},
json={
"channel_access_token": "LONG_LIVED_CHANNEL_ACCESS_TOKEN",
"channel_secret": "CHANNEL_SECRET",
},
)
data = res.json()
| Alan | Gerekli | Açıklama |
|---|---|---|
channel_access_token |
Evet | Resmi Hesabın uzun ömürlü Messaging API kanal erişim belirteci. Mesaj gönderip almak için kullanılır. |
channel_secret |
Evet | Gelen etkinlik imzalarını doğrulamak için kullanılan Messaging API kanal gizli anahtarı. |
channel_id |
Hayır | Sayısal kanal kimliği. Yalnızca bilgilendirme amaçlıdır. |
Yanıt
{
"success": true,
"status": "connected",
"bot_user_id": "Uxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"basic_id": "@mybusiness",
"display_name": "My Business",
"picture_url": "https://...",
"chat_mode": "bot",
"chat_mode_ok": true,
"webhook_url": "https://api.youraiconnector.com/line/webhook/..."
}
Bir sonraki adımda yapacaklarınız için iki alan önemlidir:
webhook_url- müşteri bunu LINE Developers konsolundaki LINE kanalının Webhook URL alanına yapıştırmalıdır (ve “Use webhook” seçeneğini etkinleştirmelidir). Bunu yapana kadar hiçbir gelen mesaj ulaşmaz. Bunu onlara belirgin bir şekilde gösterin.chat_mode_ok-falseolduğunda, Resmi Hesap “sohbet” modundadır ve LINE Resmi Hesap Yöneticisi’nde “bot” moduna geçirilene kadar mesaj alıp gönderemez. Katılım sürecinizi bu bayrağa göre düzenleyin ve müşteriye modu değiştirmesini söyleyin.
channel_access_tokenvechannel_secrethiçbir uç nokta tarafından döndürülmez. Onlara tekrar ihtiyacınız olursa kendi tarafınızda saklayın; aksi takdirde LINE konsolundan tekrar yapıştırın.
Burada döndürülen bot_user_id, aşağıdaki durum, doğrulama ve bağlantı kesme çağrılarında kullandığınız bağlantı tanımlayıcısıdır.
2. Adım - Webhook kurulumundan sonra yeniden doğrulama
POST /channels/line/{botUserId}/verify-webhook
Müşteri webhook URL’sini yapılandırmayı bitirip bot moduna geçtikten sonra, depolanan belirteci yeniden doğrulamak ve önbelleğe alınmış sohbet modunu yenilemek için bunu çağırın.
curl -X POST "https://api.youraiconnector.com/v1/channels/line/Uxxxxxxxx.../verify-webhook" \
-H "X-API-Key: YOUR_API_KEY"
Yanıt
{
"success": true,
"token_valid": true,
"chat_mode": "bot",
"chat_mode_ok": true,
"webhook_url": "https://api.youraiconnector.com/line/webhook/..."
}
token_valid değeri false ise, depolanan erişim belirteci artık kimlik doğrulaması yapmıyordur; müşterinin bunu konsolda yeniden oluşturmasını sağlayın ve yeni belirteçle POST /channels/line öğesini tekrar çağırın.
LINE durumunu kontrol et
GET /channels/line/{botUserId}/status
curl "https://api.youraiconnector.com/v1/channels/line/Uxxxxxxxx.../status" \
-H "X-API-Key: YOUR_API_KEY"
Yanıt
{
"success": true,
"bot_user_id": "Uxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"channel": "line",
"status": "connected",
"basic_id": "@mybusiness",
"display_name": "My Business",
"picture_url": "https://...",
"chat_mode": "bot",
"is_active": true,
"live": false
}
LINE’ın canlı bir durum akışı yoktur, bu nedenle live burada her zaman false değerindedir; değerler bağlantı (veya son doğrulama) anında yakalanan durumu yansıtır.
LINE bağlantısını kes
DELETE /channels/line/{botUserId}
curl -X DELETE "https://api.youraiconnector.com/v1/channels/line/Uxxxxxxxx..." \
-H "X-API-Key: YOUR_API_KEY"
Yanıt
{ "success": true, "status": "removed", "bot_user_id": "Uxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" }
Viber
Viber, LINE ile aynı şekilde bağlanır - botun kimlik doğrulama belirtecini (auth token) Viber Yönetici Panelinden tek bir çağrıda yapıştırırsınız - bilinmesi gereken bir farkla: bağlanmak aynı zamanda webhook’umuzu o anda botunuza KAYDEDER, bu nedenle sonrasında ayrı bir konsol adımı yoktur. Bu aynı zamanda, sadece belirtecin kendisi yanlışsa değil, girişimiz Viber’in senkron webhook kontrolüne yanıt veremezse de bir bağlantı girişiminin başarısız olabileceği anlamına gelir.
Adım 1 - Botun kimlik doğrulama belirteci ile bağlanın
POST /channels/viber
| Alan | Gerekli | Açıklama |
|---|---|---|
auth_token |
Evet | Viber Yönetici Panelinden (Bot Ayarlarım) alınan botun kimlik doğrulama belirteci. |
curl -X POST "https://api.youraiconnector.com/v1/channels/viber?apiKey=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "auth_token": "444d5555e6666f7777a8888b9999c000" }'
Yanıt
{
"success": true,
"status": "connected",
"bot_id": "botIdFromViber",
"bot_name": "My Business Bot",
"bot_avatar": "https://...",
"bot_uri": "mybusinessbot",
"subscribers_count": 0,
"webhook_url": "https://api.youraiconnector.com/v1/incoming-viber-message/...",
"event_types": ["delivered", "seen", "failed", "subscribed", "unsubscribed", "conversation_started"]
}
Kimlik doğrulama belirteci hiçbir uç nokta tarafından geri yansıtılmaz - tekrar yapıştırmanız gerekirse kendi tarafınızda saklayın. bot_id, aşağıdaki durum, doğrulama ve bağlantı kesme çağrıları tarafından kullanılan bağlantı tanımlayıcısıdır.
Viber durumunu kontrol et
GET /channels/viber/{botId}/status
Depolanan bağlantı durumunu bildirir. Botu Viber’e karşı yeniden kontrol etmek ve önbelleğe alınmış webhook kaydını yenilemek için ?live=true ekleyin - sessiz bir botun gerçekten bozuk olduğunu varsaymadan önce kullanışlıdır.
curl "https://api.youraiconnector.com/v1/channels/viber/botIdFromViber/status?live=true" \
-H "X-API-Key: YOUR_API_KEY"
Yanıt
{
"success": true,
"bot_id": "botIdFromViber",
"channel": "viber",
"status": "connected",
"bot_name": "My Business Bot",
"bot_avatar": "https://...",
"bot_uri": "mybusinessbot",
"webhook_url": "https://api.youraiconnector.com/v1/incoming-viber-message/...",
"registered_webhook": "https://api.youraiconnector.com/v1/incoming-viber-message/...",
"webhook_ok": true,
"subscribers_count": 128,
"is_active": true,
"live": true
}
webhook_ok: false, botun webhook’unun artık bizi işaret etmediği anlamına gelir - gelen mesajlar ulaşılamaz durumdadır. Bu genellikle başka bir aracın aynı botu daha sonra bağladığı anlamına gelir (Viber’in webhook kaydı son yazılanı kabul eder). Bunu aşağıdaki yeniden doğrulama çağrısı ile düzeltin, müşteriden belirtecini tekrar yapıştırmasını istemenize gerek yoktur. live, yanıt taze bir Viber kontrolü yerine son önbelleğe alınmış durum olduğunda false olur.
Webhook’u yeniden kaydet
POST /channels/viber/{botId}/verify-webhook
webhook_ok: false için onarım eylemi - halihazırda saklanan kimlik doğrulama belirtecini kullanarak bot üzerindeki webhook’umuzu yeniden kaydeder.
curl -X POST "https://api.youraiconnector.com/v1/channels/viber/botIdFromViber/verify-webhook" \
-H "X-API-Key: YOUR_API_KEY"
Yanıt
{ "success": true, "token_valid": true, "webhook_ok": true, "webhook_url": "https://api.youraiconnector.com/v1/incoming-viber-message/...", "event_types": ["delivered", "seen", "failed", "subscribed", "unsubscribed", "conversation_started"] }
token_valid: false, saklanan belirtecin artık çalışmadığı anlamına gelir - POST /channels/viber ve yeni bir belirteç ile yeniden bağlanın.
Viber bağlantısını kes
DELETE /channels/viber/{botId}
Web kancamızı Viber tarafında kayıttan düşürür (en iyi çaba ile) ve bağlantıyı kaldırır.
curl -X DELETE "https://api.youraiconnector.com/v1/channels/viber/botIdFromViber" \
-H "X-API-Key: YOUR_API_KEY"
Yanıt
{ "success": true, "status": "removed", "bot_id": "botIdFromViber", "webhook_removed": true }
TikTok
Kullanılabilirlik: Sınırlı kullanılabilirlik betası, hesap bazında etkinleştirilir. TikTok’u bağlamak, hesap bunun için etkinleştirilene kadar bir izin hatası döndürür.
TikTok İş Mesajlaşması, Meta gibi tam bir OAuth kanalıdır ancak yoklama tarafında daha basittir: Karşı tarafta oluşturulacak özel bir durum yoklama adımı yoktur, çünkü TikTok geri yönlendirme yapıp bağlantı yazıldığında bağlı hesap kendiliğinden görünür. Aşağıdaki durum uç noktası, bağlantı sırasında döngüye sokmanız gereken bir şey olarak değil, talep üzerine durumu doğrulamak (destek araçları, sağlık kontrolleri) için mevcuttur.
Adım 1 - TikTok bağlantısını başlat
POST /channels/tiktok/connect
Kimlik bilgisi gerektirmez - hesap sahibi yetkilendirmeyi tamamen kendi tarayıcısında yapar.
curl -X POST "https://api.youraiconnector.com/v1/channels/tiktok/connect?apiKey=YOUR_API_KEY"
Yanıt
{
"success": true,
"status": "pending_authorization",
"oauth_url": "https://www.tiktok.com/v2/auth/authorize?client_key=...&state=...",
"state_token": "opaque-one-time-token",
"expires_at": "2026-06-10T12:30:00.000Z"
}
Hesap sahibinin TikTok’a giriş yapıp erişimi onaylayabilmesi için oauth_url adresini tarayıcısında açın. Durum expires_at (yaklaşık 30 dakika) içinde sona erer - eğer süre aşılırsa baştan başlayın. TikTok için connect_url barındırılan sayfa kısayolu yoktur; oauth_url adresini kendiniz açmanız tek yoldur.
TikTok durumunu kontrol et
GET /channels/tiktok/{openId}/status
openId, OAuth geri araması çalıştırıldıktan sonra bilinen TikTok İş Hesabının open_id’sidir.
curl "https://api.youraiconnector.com/v1/channels/tiktok/openIdFromTikTok/status" \
-H "X-API-Key: YOUR_API_KEY"
Yanıt
{
"success": true,
"open_id": "openIdFromTikTok",
"channel": "tiktok",
"status": "connected",
"business_id": "openIdFromTikTok",
"username": "mybusiness",
"display_name": "My Business",
"avatar_url": "https://...",
"status_reason": null,
"is_active": true,
"live": false
}
TikTok’un ucuz bir canlı sağlık kontrolü yoktur, bu nedenle live burada her zaman false değerindedir - alanlar bağlantının (veya son belirteç yenilemesinin) yazdıklarını yansıtır. status_reason ayarlı status: "reauth_required", hesabın tekrar bağlantı sürecinden geçmesi gerektiği anlamına gelir; TikTok belirteçleri yıllık rotasyonla otomatik olarak yenilenir ve bu rotasyon başarısız olursa görünen durum budur.
TikTok bağlantısını kes
DELETE /channels/tiktok/{openId}
curl -X DELETE "https://api.youraiconnector.com/v1/channels/tiktok/openIdFromTikTok" \
-H "X-API-Key: YOUR_API_KEY"
Yanıt
{ "success": true, "status": "removed", "open_id": "openIdFromTikTok" }
GoHighLevel
GoHighLevel (GHL) bir mesajlaşma kanalı değil, bir CRM entegrasyonudur - onu bağlamak plandaki bir kanal yuvasını tüketmez, çünkü yeni bir kanal eklemek yerine hesabın mevcut kanallarını kullanır. Ayrıca bu sayfadaki aynı anda birden fazla bağlantıyı tutabilen tek entegrasyondur: müşterinin uygulamayı yüklediği her GHL alt hesabı (“konum”) kendi girişine sahip olur.
Adım 1 - GHL bağlantısını başlat
POST /channels/ghl/connect
| Alan | Gerekli | Açıklama |
|---|---|---|
brand |
Hayır | Hangi GHL pazar yeri listelemesi üzerinden yetkilendirme yapılacağı. Varsayılan olarak standart listelemeyi kullanır - yalnızca dağıtımınızda birden fazla pazar yeri uygulaması yapılandırılmışsa geçerlidir. |
curl -X POST "https://api.youraiconnector.com/v1/channels/ghl/connect?apiKey=YOUR_API_KEY"
Yanıt
{
"success": true,
"status": "pending_authorization",
"oauth_url": "https://marketplace.gohighlevel.com/oauth/chooselocation?client_id=...&state=...",
"state_token": "opaque-one-time-token",
"brand": "dmchamp",
"expires_at": "2026-06-10T12:30:00.000Z"
}
Hesap sahibinin bir GHL konumu seçip erişimi onaylayabilmesi için oauth_url öğesini tarayıcısında açın. Durum (state) expires_at tarihinde (yaklaşık 30 dakika sonra) sona erer.
GHL bağlantılarını listele
GET /channels/ghl/status
Diğer kanallardan farklı olarak bu, tek bir bağlantının durumu değildir; hesabın bağladığı her konumu listeler.
curl "https://api.youraiconnector.com/v1/channels/ghl/status" \
-H "X-API-Key: YOUR_API_KEY"
Yanıt
{
"success": true,
"connections": [
{
"location_id": "abc123location",
"company_id": "xyz789company",
"brand": "dmchamp",
"status": "connected",
"status_reason": null,
"scopes": ["conversations.readonly", "conversations.write", "conversations/message.write"],
"connected_at": "2026-06-01T10:00:00.000Z",
"conversation_provider_id": "provider-id-in-ghl",
"trigger_subscriptions": [
{ "id": "sub_1", "key": "InboundMessage", "workflow_id": "wf_123" }
]
}
]
}
Bir GHL konumunun bağlantısını kes
DELETE /channels/ghl/{locationId}
Buradaki bağlantıyı siler, bu da o konum için tüm eşitlemeleri ve tetikleyicileri durdurur. Bu işlem, uygulamayı GHL tarafında kaldırmaz; müşteri bunu da isterse GHL pazar yeri yüklemelerinden kendisi kaldırmalıdır.
curl -X DELETE "https://api.youraiconnector.com/v1/channels/ghl/abc123location" \
-H "X-API-Key: YOUR_API_KEY"
Yanıt
{ "success": true, "status": "disconnected", "location_id": "abc123location" }
Telefon numaraları (satın alma ve bırakma)
Mevcut bir numarayı bağlamak yerine, doğrudan WhatsApp uyumlu yeni bir numara satın alabilirsiniz. Kullanılabilir numaraları arayın, bir tane satın alın ve ardından sağlama işlemi tamamlanana kadar sorgulayın.
Not: Buradan satın alınan numaralar WhatsApp uyumludur. WhatsApp gönderici kaydı satın alma işleminden sonra arka planda çalışır, bu nedenle gönderim yapmadan önce durumun ONLINE değerine ulaşmasını beklemeniz gerekir. Krediler satın alma sırasında düşülür ve numarayı bıraktığınızda iade edilmez.
Adım 1 - Kullanılabilir numaraları ara
GET /phone-numbers/available?country_code=ISO2
cURL
curl "https://api.youraiconnector.com/v1/phone-numbers/available?country_code=US&apiKey=YOUR_API_KEY"
JavaScript
const res = await fetch(
"https://api.youraiconnector.com/v1/phone-numbers/available?country_code=US",
{ headers: { "X-API-Key": "YOUR_API_KEY" } }
);
const data = await res.json();
Python
res = requests.get(
"https://api.youraiconnector.com/v1/phone-numbers/available",
params={"country_code": "US"},
headers={"X-API-Key": "YOUR_API_KEY"},
)
data = res.json()
| Sorgu parametresi | Gerekli | Açıklama |
|---|---|---|
country_code |
Evet | İçinde arama yapılacak ISO 3166-1 alpha-2 ülke kodu (örneğin US, GB, NL). |
type |
Hayır | Tercih edilen numara sınıfı, local veya mobile. Her iki sınıf da döndürülebilir. |
Yanıt
{
"success": true,
"phone_numbers": [
{
"phone_number": "+14155551234",
"purchase_credits": 50,
"monthly_credits": 50,
"cost_usd": 1.15
}
]
}
Her sonuç tek seferlik purchase_credits ve yinelenen monthly_credits değerini gösterir. Platform tarafından sağlanan bir numara ayda en az 50 krediye mal olur ve taşıyıcının kendi aylık fiyatına göre artar; satın alma sırasında ve her yenilemede ücretlendirilir. Aramanın döndürdüğü purchase_credits / monthly_credits değerini alıntılayın; asla kendiniz bir fiyat türetmeyin. Yeni bir hesapta yapılan ilk arama bazı temel kaynakları hazırlar, bu nedenle sonraki aramalardan biraz daha yavaş olabilir.
Adım 2 - Bir numara satın alın
POST /phone-numbers
Arama sonuçlarından bir phone_number kullanın.
cURL
curl -X POST "https://api.youraiconnector.com/v1/phone-numbers" \
-H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"phone_number": "+14155551234",
"country_code": "US",
"display_name": "Support line"
}'
JavaScript
const res = await fetch("https://api.youraiconnector.com/v1/phone-numbers", {
method: "POST",
headers: {
"X-API-Key": "YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({
phone_number: "+14155551234",
country_code: "US",
display_name: "Support line",
}),
});
const data = await res.json();
Python
res = requests.post(
"https://api.youraiconnector.com/v1/phone-numbers",
headers={"X-API-Key": "YOUR_API_KEY"},
json={
"phone_number": "+14155551234",
"country_code": "US",
"display_name": "Support line",
},
)
data = res.json()
| Alan | Zorunlu | Açıklama |
|---|---|---|
phone_number |
Evet | Kullanılabilir numaralar aramasından dönen, E.164 formatındaki bir numara. |
country_code |
Evet | ISO 3166-1 alpha-2 ülke kodu (örneğin US). |
display_name |
Hayır | Kolay hatırlanabilir bir etiket. Varsayılan olarak telefon numarasıdır. |
category |
Hayır | İsteğe bağlı kategori etiketi. |
Yanıt
{
"success": true,
"phone_number": "+14155551234",
"channel": "whatsapp",
"whatsapp_status": "PURCHASED",
"outgoing_status": "PURCHASED",
"status": "PURCHASED",
"purchase_credits": 50,
"monthly_credits": 50
}
Numara PURCHASED durumunda başlar. WhatsApp kaydı daha sonra arka planda devam eder: PURCHASED -> PENDING -> ONLINE.
Satın alma işlemi, bir iş adresi eksik olduğu veya başka bir gerekli ayrıntı ayarlanmadığı için başarısız olursa, açıklayıcı bir
erroriçeren bir400alırsınız. Eksik ayrıntıyı ayarlayın ve tekrar deneyin.
Adım 3 - ONLINE durumuna gelene kadar sorgulayın
GET /phone-numbers/{phoneNumber}/status
Bu, paylaşılan telefon numarası durum uç noktasıdır; satın alınan WhatsApp numaralarının yanı sıra diğer bağlı numaralarınız için de çalışır.
cURL
curl "https://api.youraiconnector.com/v1/phone-numbers/+14155551234/status" \
-H "X-API-Key: YOUR_API_KEY"
JavaScript
const phone = encodeURIComponent("+14155551234");
const res = await fetch(
`https://api.youraiconnector.com/v1/phone-numbers/${phone}/status`,
{ headers: { "X-API-Key": "YOUR_API_KEY" } }
);
const data = await res.json();
// Poll until data.status === "ONLINE".
Python
import urllib.parse
phone = urllib.parse.quote("+14155551234")
res = requests.get(
f"https://api.youraiconnector.com/v1/phone-numbers/{phone}/status",
headers={"X-API-Key": "YOUR_API_KEY"},
)
data = res.json()
# Poll until data["status"] == "ONLINE".
Yanıt
{
"success": true,
"phone_number": "+14155551234",
"channel": "whatsapp",
"status": "ONLINE",
"status_reason": null,
"live": true
}
Adım 4 - Bir numarayı serbest bırakın
DELETE /phone-numbers/{phoneNumber}
curl -X DELETE "https://api.youraiconnector.com/v1/phone-numbers/+14155551234" \
-H "X-API-Key: YOUR_API_KEY"
Yanıt
{ "success": true, "phone_number": "+14155551234", "released": true }
Bunun ne yaptığı, numaranın kime ait olduğuna bağlıdır.
Platform üzerinden kiralanan bir numara için bu gerçek bir serbest bırakmadır: WhatsApp göndericisi kaydı silinir, numara operatöre iade edilir ve hesaptan kaldırılır; numaranın kimse tarafından yeniden satın alınamayacağı 7 günlük bir bekleme süresi uygulanır ve hiçbir kredi iadesi yapılmaz.
Hesabın kendisine ait (kendi Twilio hesabı, kendi Meta uygulaması veya WhatsApp İşletme Hesabı ya da bir Android SMS ağ geçidi) bir numara için, aynı çağrı onu yalnızca hesaptan kaldırır. Yukarı akış sağlayıcısında hiçbir şey serbest bırakılmaz ve herhangi bir soğuma süresi yazılmaz, bu nedenle numara hemen yeniden bağlanabilir. Varsa, WhatsApp gönderen kaydı korunabilir veya korunmayabilir: sökme işlemi, hesabın platform tarafından yönetilen Twilio kimlik bilgilerini kullanarak göndereni silmeye çalışır. Yönetilen kurulumdaki bir hesapta bu kimlik bilgileri geçerlidir ve gönderen silinir, bu nedenle yeniden bağlanmak, onu tekrar kaydettirmek anlamına gelir. Kendi Twilio’suna geçmiş bir hesapta ise silme işlemi kimlik doğrulaması yapamaz ve gönderen o hesapta kayıtlı kalır; bu durumda yeniden bağlanmak, mevcut göndereni tekrar eklemekten ibarettir.
Hâlihazırda sahip olduğunuz bir numarayı ekleyin (BYO)
POST /phone-numbers/byo
Yukarıdaki arama ve satın alma akışını tamamen atlar. Bunu, hesap sahibi platform üzerinden numara kiralamak yerine kendi numarasını (kendi Twilio’su, kendi Meta WhatsApp İşletme Hesabı veya bir Android SMS ağ geçidi) getirdiğinde kullanın. Bu işlem yalnızca numarayı kaydeder; herhangi bir kredi ücreti alınmaz ve burada sağlayıcı ile hiçbir şey tedarik edilmez. Numara, hesap sahibi üzerinde bir Gönderici kaydetmek için WhatsApp OAuth işlemini tamamlayana kadar (kontrol panelindeki “Kendi numaranı getir” düğmesinin başlattığı akışın aynısı) etkin kalmaz.
| Alan | Gerekli | Açıklama |
|---|---|---|
phone_number |
Evet | E.164 formatında eklenecek numara (örneğin +14155551234). |
country_code |
Evet | ISO 3166-1 alpha-2 ülke kodu (örneğin US). |
display_name |
Hayır | Kolay bir etiket. Varsayılan olarak telefon numarasıdır. |
category |
Hayır | İsteğe bağlı kategori etiketi. |
curl -X POST "https://api.youraiconnector.com/v1/phone-numbers/byo?apiKey=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"phone_number": "+14155551234",
"country_code": "US",
"display_name": "Support line"
}'
Yanıt (201 Created):
{
"success": true,
"phone_number": "+14155551234",
"channel": "whatsapp",
"type": "BYO",
"whatsapp_status": "ADDED",
"outgoing_status": "ADDED",
"is_active": false
}
Gerçek bir E.164 numarası olmayan (veya gerçek müşterilere asla mesaj gönderemeyen Meta’nın WhatsApp test numarasına benzeyen) bir phone_number, 400 döndürür. Hesapta zaten var olan bir numarayı eklemek - Meksika’nın +52 ve +521 biçimleri gibi biraz farklı yazılmış olsa bile - yinelenen bir satır oluşturmak yerine 409 döndürür.
Bir numarayı birincil olarak ayarla
POST /phone-numbers/{phoneNumber}/set-primary
Bir numarayı is_active: true, hesaptaki diğer tüm numaraları ise is_active: false durumuna atomik olarak getirir; hesap hiçbir zaman istek sırasında iki aktif numarayla veya hiç numarasız kalmaz. is_active, genel güncelleme uç noktası üzerinden kasıtlı olarak ayarlanamaz; bu özel çağrı, hangi numaranın birincil olacağını değiştirmenin tek yoludur.
curl -X POST "https://api.youraiconnector.com/v1/phone-numbers/+14155551234/set-primary" \
-H "X-API-Key: YOUR_API_KEY"
Yanıt
{
"success": true,
"phone_number": {
"id": "+14155551234",
"phone_number": "+14155551234",
"display_name": "Support line",
"channel": "whatsapp",
"is_active": true,
"whatsapp_status": "ONLINE"
}
}
Buradaki phone_number, yalnızca dize değil, tam numara nesnesidir (GET /phone-numbers öğesinin döndürdüğü şeklin aynısı). Hesapta olmayan bir phoneNumber, 404 döndürür.
Bir numaranın kaydını sil (serbest bırakmadan)
DELETE /phone-numbers/{phoneNumber}/record
Bu hesaptaki numara kaydının basit bir şekilde silinmesidir; sağlayıcı tarafında bir serbest bırakma veya kayıttan silme işlemi yapılmaz ve yukarıdaki serbest bırakma adımındaki gibi 7 günlük bir bekleme süresi uygulanmaz. Bunu, yönetilen serbest bırakma akışına girmeden BYO, WhatsApp Web, Telegram veya LINE kayıtlarını ya da eski bir girişi temizlemek için kullanın. Bir serbest bırakma işleminin aksine, hesapta olmayan bir numarayı silmek sessiz bir başarı değil, bir 404 döndürür.
curl -X DELETE "https://api.youraiconnector.com/v1/phone-numbers/+14155551234/record" \
-H "X-API-Key: YOUR_API_KEY"
Yanıt
{ "success": true, "phone_number": "+14155551234", "deleted": true }
Bir kanalı kampanyaya yönlendirme
Bir kanal bağlamak mesajları hesaba alır. Mesajları hangi Yapay Zeka Temsilcisinin yanıtlayacağına karar vermez.
Yönlendirme, kampanyalar tarafından değil, bir Yapay Zeka Temsilcisi üzerindeki Giriş Noktaları tarafından yönetilir. Her kanalın, o kanaldaki yeni ve bilinmeyen kişileri yanıtlayacak Temsilciyi belirten bir kanal varsayılan Giriş Noktası vardır:
| Ne yapmak istiyorsunuz | Çağrı |
|---|---|
| Bir kanalı, onu yanıtlaması gereken Temsilciye yönlendirin | { "channel": "instagram", "agent_id": "AGENT_ID" } gövdeli PUT /entry-points/channel-defaults |
| Giriş Noktaları kademesinin hesap için canlı olup olmadığını kontrol edin | Giriş Noktaları o hesabın yönlendirmesine karar verdiğinde { "success": true, "cutover_enabled": true } döndüren GET /entry-points/routing-status |
| Bir kanalı yanıtlayan Temsilci olmadan bırakın | DELETE /entry-points/channel-defaults?channel=instagram |
Bir kanalın bir Giriş Noktası (Entry Point) olana kadar, daha önce hiç konuşmadığınız birinden gelen ilk mesaj yine de saklanır, ancak hiçbir şey bunu almaz ve hiçbir asistan yanıt vermez. Bu, çoğu entegrasyonun gözden kaçırdığı adımdır: Instagram’ı bağlamak ve bir Temsilci oluşturmak tek başına yeterli değildir; ayrıca kanalı Temsilciye yönlendirmeniz gerekir. WhatsApp numarası başına bir Temsilci, anahtar kelime ve yorum kuralları dahil olmak üzere çağrıların tam seti Giriş Noktaları API içindedir.
POST /channels/campaign hala aşağıda belgelenen eski kanal bazlı kampanya yönlendirme haritasını yazar, ancak bu haritaya artık hiçbir hesapta gelen yönlendirme için başvurulmaz; yalnızca geri alma için tutulur. Bunun üzerine inşa etmeyin.
Bir veya daha fazla kanalı yönlendir (eski kampanya yönlendirme haritası)
POST /channels/campaign
İstek alanları
| Alan | Gerekli | Açıklama |
|---|---|---|
campaign_id |
Evet | Bu kanallardaki yeni kişileri yanıtlaması gereken kampanya. Hesaba ait olmalıdır. |
channels |
Evet | Yönlendirilecek kanallardan oluşan boş olmayan bir dizi. İzin verilenler: whatsapp, whatsapp_web, telegram, instagram, messenger, chat_widget, custom_channel, sms, email. |
Yönlendirme yuvası ve kampanyanın enabled_channels listesi tek bir atomik işlemde birlikte güncellenir, böylece asla birbirinden kopmazlar. Farklı bir kampanyaya zaten yönlendirilmiş bir kanal, basitçe buna yeniden yönlendirilir.
cURL
curl -X POST "https://api.youraiconnector.com/v1/channels/campaign?apiKey=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"campaign_id": "NBCXrhqGPSFsd6MV7pRo",
"channels": ["instagram", "messenger"]
}'
JavaScript
const res = await fetch("https://api.youraiconnector.com/v1/channels/campaign", {
method: "POST",
headers: {
"X-API-Key": "YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({
campaign_id: "NBCXrhqGPSFsd6MV7pRo",
channels: ["instagram", "messenger"],
}),
});
const data = await res.json();
Python
import requests
res = requests.post(
"https://api.youraiconnector.com/v1/channels/campaign",
headers={"X-API-Key": "YOUR_API_KEY"},
json={
"campaign_id": "NBCXrhqGPSFsd6MV7pRo",
"channels": ["instagram", "messenger"],
},
)
data = res.json()
Yanıt
{
"success": true,
"campaign_id": "NBCXrhqGPSFsd6MV7pRo",
"channels": ["instagram", "messenger"]
}
Yönlendirmenin gerçekten tetiklenmesi için neyin doğru olması gerekir
Hala eski kampanya yönlendirme haritasını okuyan bir hesapta, yönlendirme bir API çağrısı olarak başarılı olur ancak kampanyadaki üç şey gerçek bir gelen mesajın yanıtlanıp yanıtlanmayacağına karar verir. Yönlendirilen bir kanal sessiz kaldığında üçünü de kontrol edin.
| Gereksinim | Aksi takdirde ne olur |
|---|---|
type, Incoming from Unknown Contacts veya Combined değerindedir |
İstek 400 ile reddedilir. Giden ve Anahtar Kelime kampanyaları bir yönlendirme yuvası tutamaz. |
status, Live değerindedir |
Yönlendirme saklanır ancak hiçbir şeyi almaz. Bir Draft kampanyası, “Yönlendirdim ve hiçbir şey olmuyor” sorununun en yaygın nedenidir. |
ai_mode, true değerindedir |
Kişi oluşturulur ve mesaj saklanır, ancak asistan asla yanıt vermez. |
Anahtar kelime eşleştirme artık Giriş Noktalarında yer alıyor — yanıtlaması gereken Yapay Zeka Temsilcisi üzerinde keyword türünde bir Giriş Noktası oluşturun.
Kanal başına bir kampanya
Her kanal tam olarak bir eski yönlendirme yuvasına sahiptir. Aynı kanala ikinci bir kampanya yönlendirmek, yuvayı sessizce yeniden işaretler ve 200 döndürür — çakışma hatası yoktur. Önceki kampanya zaten sahip olduğu kişileri işlemeye devam eder; sadece yenilerini almayı durdurur.
Bir kanalın yönlendirmesini temizle
DELETE /channels/campaign/{channel}
Tek bir kanalın yönlendirmesini, o an hangi kampanyaya işaret ettiğine bakılmaksızın kaldırır ve kanalı o kampanyanın enabled_channels öğesinden çıkarır. Kanal üzerindeki yeni bilinmeyen kişiler artık hiçbir kampanya tarafından alınmaz. Kampanyada halihazırda bulunan kişiler ise daha önceki gibi devam eder.
curl -X DELETE "https://api.youraiconnector.com/v1/channels/campaign/instagram?apiKey=YOUR_API_KEY"
Yanıt
{
"success": true,
"channel": "instagram",
"cleared": true,
"campaign_id": "NBCXrhqGPSFsd6MV7pRo"
}
İşlem eşdeğerdir (idempotent): daha önce hiç yönlendirilmemiş bir kanalın temizlenmesi de 200, cleared: false ve campaign_id: null ile birlikte döner. Bu uç nokta, planda gelen kampanyalar özelliğinin etkin olmasını gerektirir; aksi takdirde 403 alırsınız.
Kendi Meta uygulamanızı kullanın (Instagram + Messenger)
Varsayılan olarak Instagram + Messenger bağlantısı platformun Meta uygulaması üzerinden çalışır, bu nedenle hesap sahibi Facebook onay ekranında bu uygulamanın adını görür. Onay ekranında sizin markanızın görünmesini isterseniz, kendi Meta uygulamanızı kaydedebilir ve tüm akışı bu uygulama üzerinden yönlendirebilirsiniz. Yapılandırıldıktan sonra bu, hesabınız için geçerli olur; yukarıdaki bağlantı çağrılarında markalama dışında hiçbir şey değişmez.
Bu yalnızca Instagram + Messenger için geçerlidir. WhatsApp, WhatsApp Web, Telegram ve LINE bağlantıları özel bir Meta uygulamasından etkilenmez.
Uygulamanızın öncelikle nelere ihtiyacı var
Bu kısım zaman alan ve tamamen Meta tarafında gerçekleşen bölümdür:
- Bir uygulama: İşletme türünde, Messenger ve Instagram ürünleri eklenmiş.
- Gelişmiş Erişim (Meta Uygulama İncelemesi aracılığıyla):
pages_show_list,pages_messaging,pages_manage_metadata,pages_read_engagement,instagram_basic,instagram_manage_messagesiçin. Gelişmiş Erişim olmadan, yalnızca uygulamanızda bir role sahip kişiler bağlantıyı tamamlayabilir; müşterilerinizin bağlantıları başarısız olur. Uygulama İncelemesi genellikle birkaç hafta sürer ve İşletme Doğrulaması gerektirir. - İşletme için Facebook Girişi yapılandırması: Uygulamanızın içinde oluşturulmuş ve aynı izinleri veren. Sayısal yapılandırma kimliği uygulama bazlıdır, bu nedenle kendinizinkini oluşturmalısınız.
Uygulamanızda gerekli izinlerden herhangi biri eksikse, bağlantı sırasında neyin eksik olduğunu belirten net bir hata ile ( /status anketinde byo_app_missing_permissions olarak görünür) bağlantı başarısız olur; çalışıyor gibi görünüp ilk mesajda hata vermesinden daha iyidir.
Adım 1 - Uygulamanızı kaydedin
PUT /account-config/meta-app
| Alan | Gerekli | Açıklama |
|---|---|---|
app_id |
Evet | Meta Uygulama Kimliğiniz (Ayarlar → Temel). |
app_secret |
Evet | Meta Uygulama Gizli Anahtarınız. Saklanmadan önce Meta nezdinde doğrulanır, ardından şifrelenir. Hiçbir uç nokta tarafından geri döndürülmez. |
config_id |
Evet | Uygulamanızdaki İşletme için Facebook Girişi yapılandırmasının sayısal kimliği. |
Facebook Giriş akışı için üçü de gereklidir. Aşağıda açıklanan yalnızca Instagram Giriş token-push yolunu çalıştırıyorsanız, bunları tamamen dışarıda bırakabilirsiniz.
curl -X PUT "https://api.youraiconnector.com/v1/account-config/meta-app?apiKey=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"app_id": "1234567890123456",
"app_secret": "your-app-secret",
"config_id": "9876543210987654"
}'
Yanıt
{
"success": true,
"app_id": "1234567890123456",
"config_id": "9876543210987654",
"verify_token": "1f4c…a9",
"webhook_urls": {
"instagram": "https://api.youraiconnector.com/v1/incoming-instagram-message/byo/YOUR_ACCOUNT_ID",
"messenger": "https://api.youraiconnector.com/v1/incoming-messenger-message/byo/YOUR_ACCOUNT_ID"
}
}
Adım 2 - Uygulamanızı bizimle konuşacak şekilde yapılandırın
Meta uygulamanızın kontrol panelinde:
- Web kancaları (Webhooks) - hem Instagram hem de Messenger ürünleri için Geri Arama URL’sini (Callback URL) yanıttaki eşleşen
webhook_urlsdeğeriyle, Doğrulama belirtecini (Verify token) iseverify_tokenile ayarlayın.messages,messaging_postbacksvecommentsalanlarına abone olun. - Geçerli OAuth Yönlendirme URI’leri - onay akışının geri dönebilmesi için
https://api.youraiconnector.com/v1/auth-meta-callback-handlerekleyin.
GET /account-config/meta-app her zaman aynı kurulum materyalini döndürür; DELETE /account-config/meta-app uygulamayı kaldırır (gelecekteki bağlantılar platform uygulamasına geri döner; ayrıca uygulamanızdaki web kancası aboneliğini de kaldırın).
3. Adım - Her zamanki gibi bağlanın
Başka hiçbir şey değişmez. POST /channels/meta/connect (ve barındırılan connect_url sayfası) hesabınız için otomatik olarak uygulamanızı kullanır; yanıtın uses_byo_meta_app: true kısmı, onay ekranının hangi uygulamayı göstereceğini doğrular. Mesaj gönderme, sayfa seçimi ve bağlantı kesme işlemleri aynı şekilde çalışır.
Kendi Instagram Giriş uygulamanızı getirin (token gönderimi)
Yukarıdaki bölüm, hesabın bir Facebook Sayfası aracılığıyla bağlandığı Facebook Girişi akışını kapsamaktadır. Meta ayrıca Instagram Girişi ile Instagram API (Instagram için İşletme Girişi) seçeneğini de sunar: hesap sahibi doğrudan Instagram üzerinde kimlik doğrulaması yapar, herhangi bir Facebook hesabı veya Sayfası gerekmez.
Platformunuz halihazırda bu ürüne sahip kendi Meta uygulamasını çalıştırıyorsa, bizim tarafımızda herhangi bir OAuth akışına ihtiyacınız yoktur. Müşterileriniz sizin uygulamanızı yetkilendirir ve siz de hesap başına tamamlanmış kimlik bilgilerini bize gönderirsiniz:
- Instagram uygulamanızın kimlik bilgilerini bir kez kaydedersiniz (böylece webhook’larınızı doğrulayabiliriz).
- Hesap başına, Instagram profesyonel hesap kimliğini + uygulamanızın elde ettiği uzun ömürlü Instagram kullanıcı token’ını gönderirsiniz.
- Uygulamanızın Instagram mesajlaşma webhook’unu bize yönlendirirsiniz. Hiç göndermediğiniz hesaplara ait etkinlikler onaylanır ancak göz ardı edilir.
- Token yaşam döngüsü size aittir: token’ları kendi sisteminizde yenileyin ve her yenilenen token’ı aynı çağrıyla bize gönderin. Gönderilen bir token’ı asla biz yenilemeyiz.
Uygulamanızın öncelikle nelere ihtiyacı var
- Meta uygulamanıza eklenmiş Instagram ürünü (“Instagram girişi ile API kurulumu”). Bu ürünün, Facebook Uygulama Kimliği/Gizli Anahtarı’ndan ayrı, kendi Uygulama Kimliği ve Uygulama Gizli Anahtarı çifti vardır; bunları ürünün kurulum panelinde bulabilirsiniz.
instagram_business_basicveinstagram_business_manage_messagesiçin Gelişmiş Erişim (Meta Uygulama İncelemesi aracılığıyla) (yorum otomasyonları kullanıyorsanızinstagram_business_manage_commentsekleyin). Bu olmadan, yalnızca uygulamanızda rolü olan kişiler uygulamayı yetkilendirebilir.
Adım 1 - Instagram uygulama kimlik bilgilerinizi kaydedin
Yukarıdakiyle aynı uç nokta — Instagram çiftini PUT /account-config/meta-app adresine gönderin. Facebook alanları bu yol için gerekli değildir: Yalnızca Instagram Girişi çalıştırıyorsanız çifti tek başına, her ikisini de çalıştırıyorsanız Facebook alanlarıyla birlikte gönderin. Bir kaydetme işlemi her zaman tüm ayarı tanımlar, bu nedenle hangi seti dışarıda bırakırsanız o kaldırılır.
| Alan | Zorunlu | Açıklama |
|---|---|---|
instagram_app_id |
Birlikte | Instagram ürününün kendi sayısal Uygulama Kimliği (Facebook Uygulama Kimliği değil). |
instagram_app_secret |
Birlikte | Instagram ürününün kendi Uygulama Gizli Anahtarı. Dinlenme halindeyken şifrelenir, asla geri döndürülmez. |
curl -X PUT "https://api.youraiconnector.com/v1/account-config/meta-app?apiKey=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"instagram_app_id": "1122334455667788",
"instagram_app_secret": "your-instagram-app-secret"
}'
Yanıt — Instagram Giriş webhook URL’sini taşır (instagram ve messenger URL’leri yalnızca Facebook alanları da saklandığında görünür):
{
"success": true,
"instagram_app_id": "1122334455667788",
"verify_token": "1f4c…a9",
"webhook_urls": {
"instagram_login": "https://api.youraiconnector.com/v1/incoming-instagram-login-message/byo/YOUR_ACCOUNT_ID"
}
}
Uygulamanızın Instagram ürününe ait Webhooks panelinde, Geri Arama URL’sini (Callback URL) webhook_urls.instagram_login, Doğrulama token’ını (Verify token) verify_token olarak ayarlayın ve messages ile comments alanlarına abone olun.
Adım 2 - Hesap başına bir token gönderin
PUT /channels/instagram-login/token
Diğer tüm rotalar gibi sub_account_id ile çalışır, bu nedenle bir ajans anahtarı tüm filosunu sağlayabilir.
| Alan | Zorunlu | Açıklama |
|---|---|---|
ig_user_id |
Evet | Instagram profesyonel hesap kimliği — GET https://graph.instagram.com/v21.0/me?fields=user_id,username içindeki user_id alanı. Bu, Instagram webhook’larının entry.id olarak taşıdığı kimlikle aynıdır. ⚠️ Bu, /me içindeki id alanı değildir — o alan uygulama kapsamlıdır ve her Meta uygulamasına göre değişir. Uygulama kapsamlı kimliği göndermek, hatayı belirten bir 400 döndürür. |
access_token |
Evet | Uygulamanızın o hesap için elde ettiği uzun ömürlü Instagram kullanıcı token’ı. Saklanmadan önce Instagram’a karşı canlı olarak doğrulanır: token çalışmalı ve ig_user_id’e ait olmalıdır. |
expires_at |
Hayır | Token’ın ISO-8601 formatında son kullanma tarihi. Alternatif olarak expires_in (saniye) gönderin. Varsayılan olarak 60 gündür. |
username |
Hayır | Hesabın @kullanıcıadı; bunu zaten Instagram’dan okuyoruz. |
curl -X PUT "https://api.youraiconnector.com/v1/channels/instagram-login/token?apiKey=YOUR_AGENCY_KEY&sub_account_id=CLIENT_ID" \
-H "Content-Type: application/json" \
-d '{
"ig_user_id": "17841400000000000",
"access_token": "IGAAR…",
"expires_at": "2026-11-01T00:00:00Z"
}'
Yanıt
{
"success": true,
"ig_user_id": "17841400000000000",
"username": "acme.studio",
"expires_at": "2026-11-01T00:00:00.000Z",
"webhook_url": "https://api.youraiconnector.com/v1/incoming-instagram-login-message/byo/YOUR_ACCOUNT_ID"
}
Gönderim işleminin bir parçası olarak, uygulamanızı o hesabın webhook’larına abone yaparız (subscribed_apps, gönderilen token ile), böylece mesajlar sizin tarafınızdan ekstra bir çağrıya gerek kalmadan akmaya başlar.
Yenileme - yenilenen belirteci aynı ig_user_id ile aynı uç noktaya gönderin; depolanan belirteci ve son kullanma tarihini yerinde günceller.
Çakışmalar - bir Instagram hesabı asla iki bağlantıda aynı anda aktif olamaz. Hesap başka bir yerde veya bu hesapta Facebook Sayfası akışı üzerinden zaten bağlıysa, gönderim işlemi önce hangi bağlantının kesilmesi gerektiğini belirten bir 409 döndürür. Facebook akışı bağlantısı asla otomatik olarak değiştirilmez, çünkü Messenger’a da hizmet veriyor olabilir.
Adım 3 - Bir istemci ayrıldığında bağlantıyı kesin
DELETE /channels/instagram-login/token (aynı kimlik doğrulama ve sub_account_id) web kancalarının aboneliğini en iyi çabayla iptal eder ve depolanan kimlik bilgisini kaldırır. Belirteç zaten geçersiz olsa bile her zaman başarılı olur — ve kimlik bilgisi kaldırıldığında, o hesabın web kancası olayları yoksayılır.
Güvenilir bir sarmalayıcı (wrapper) oluşturmak için ipuçları
- Nazikçe yoklayın. Birkaç saniyede bir yeterlidir. Terminal durumuna (
connected/ONLINEveya bir hata durumu) ulaştığınızda durun ve döngüye makul bir genel zaman aşımı koyun (tarayıcı/QR adımlarının süresi dolar, herexpires_at’ye bakın). - Yoldaki telefon numaralarını URL ile kodlayın. Baştaki
+,%2Bolarak gönderilmelidir. Uç noktalar çıplak rakamları da kurtarır, ancak kodlama güvenli varsayılandır. - Asla geri sır beklemeyin. Erişim belirteçleri, kanal sırları ve sayfa belirteçleri kabul edilir veya saklanır ancak hiçbir yanıtta geri döndürülmez.
- Kimlik doğrulama kapısını yönetin. Bir
403, API erişiminin planda olmadığı veya bağladığınız kanalın hesabın planına dahil olmadığı anlamına gelir. Bkz. API Erişimi. - Hız sınırına dikkat edin. Kimliği doğrulanmış istekler dakikada 300 ile sınırlandırılmıştır; bir
429, geri çekilip tekrar denemeniz gerektiği anlamına gelir. Bkz. Kimlik Doğrulama.
Sonraki adımlar
- Kimlik Doğrulama - kabul edilen dört kimlik doğrulama biçimi ve hata formatı.
- API Erişimi - API anahtarınızı oluşturma ve yönetme.