API transmisji
Transmisja to jedna wysyłka wychodząca: odbiorcy, wiadomość otwierająca, jeden kanał i harmonogram. Opcjonalnie określa również agenta AI, który obsługuje otrzymane odpowiedzi. API transmisji pozwala tworzyć, wyceniać, uruchamiać i monitorować te wysyłki z poziomu własnego kodu, zamiast korzystać z pulpitu nawigacyjnego. Informacje o samym produkcie znajdują się w przewodniku po transmisjach.
- Podstawowy adres URL —
https://api.youraiconnector.com/v1 - Uwierzytelnianie — Twój klucz API (zobacz Uwierzytelnianie)
- Błędy i stronicowanie — zobacz Błędy i stronicowanie
Wszystkie poniższe przykłady pokazują formularz zapytania ?apiKey= w cURL oraz nagłówek X-API-Key w JavaScript i Pythonie — oba działają w każdym punkcie końcowym.
W eksploratorze API. Każdy punkt końcowy na tej stronie znajduje się w opublikowanej specyfikacji OpenAPI, dzięki czemu możesz przeglądać jego dokładne pola i uruchamiać zapytania na żywo w eksploratorze API.
Jak skonstruowana jest wysyłka
Wysłanie transmisji składa się z czterech wywołań, a nie jednego:
- Utwórz transmisję z jej odbiorcami, kanałem i harmonogramem — zaczyna się jako
Draft. - Ustaw wiadomość otwierającą. W przypadku WhatsApp Business oznacza to przesłanie szablonu do zatwierdzenia (lub wybranie takiego, który został już zatwierdzony). Na każdym innym kanale jest to zwykły tekst.
- Oszacuj koszt, jeśli chcesz sprawdzić cenę przed wydaniem jakichkolwiek środków (opcjonalnie).
- Uruchom ją. Uruchomienie przeprowadza pełną kontrolę — odbiorców, wiadomości, zatwierdzenia szablonu, połączonego nadawcy — i albo rozpoczyna wysyłkę, albo informuje dokładnie, czego brakuje.
Nic nie zostanie wysłane, dopóki nie wywołasz uruchomienia.
Obiekt transmisji
{
"id": "bcd123abc456",
"name": "June promo",
"status": "Draft",
"channel": "whatsapp",
"agent_id": "agt_789",
"list_id": "lst_456",
"list_name": "Newsletter subscribers",
"total_contacts": 240,
"send_to_new_list_members": false,
"whats_app_template": {
"body": "Hi {{first_name}}, our June offer is live.",
"status": "approved",
"sid": "HX0123...",
"language": "en",
"category": "marketing",
"variables": ["first_name"]
},
"execution_date": 1781000000000,
"drip_mode": true,
"time_critical": false,
"total_contacts_sent": 0,
"credits_used": 0,
"created_at": 1780900000000,
"last_modified_at": 1780900000000
}
Znaczniki czasu są zwracane jako milisekundy epoki (execution_date, created_at, last_modified_at, …), a każde odniesienie do kontaktu jest zwracane jako ciąg ścieżki, np. contacts/uid_whatsapp_15551234567.
Pola, które ustawiasz
| Pole | Opis |
|---|---|
name |
Nazwa transmisji w pulpicie nawigacyjnym. |
channel |
Jeden kanał, przez który wysyłana jest ta transmisja: whatsapp, whatsapp_web, sms, instagram, messenger, facebook, telegram, instagram_private, line, viber, imessage, email, chat_widget, custom_channel. Transmisja ma dokładnie jeden kanał — aby wysłać to samo gdzie indziej, zduplikuj ją na inny kanał. tiktok i skool służą wyłącznie do odpowiedzi i nigdy nie mogą być użyte do transmisji. |
agent_id |
Agent AI, który odpowiada na wiadomości. Pozostaw jako null, a odpowiedzi trafią do skrzynki odbiorczej Twojego zespołu. |
list_id |
Lista kontaktów, do których ma zostać wysłana wiadomość. W ten sposób ustawiasz odbiorców z poziomu API — zobacz Kontakty, aby dowiedzieć się, jak tworzyć i wypełniać listy. |
list_name |
Nazwa wyświetlana obok transmisji. Kosmetyczna. |
send_to_new_list_members |
true utrzymuje transmisję w stanie aktywnym, dzięki czemu każdy, kto zostanie dodany do listy później, również otrzyma wiadomość otwierającą. |
whats_app_template |
Wiadomość otwierająca. W WhatsApp Business jest to zatwierdzony szablon; na każdym innym kanale jego body jest używane jako zwykły tekst otwierający. Ustawiaj to przez punkty końcowe szablonów, a nie ręcznie. |
opener_media |
Jeden obraz lub wideo wysyłane z wiadomością otwierającą. Zawsze wysyłaj cały obiekt (lub null, aby go usunąć) — zapisywanie poszczególnych kluczy wewnątrz niego jest odrzucane. Nieobsługiwane w SMS. |
execution_date |
Kiedy wysłać. Wyślij znacznik czasu ISO 8601 lub milisekundy epoki. Przyszła data zaplanuje wysyłkę; pomiń ją (lub użyj daty z przeszłości), aby wysłać natychmiast po uruchomieniu. |
drip_mode |
true rozkłada wysyłkę na partie w czasie, zamiast wysyłać wszystko naraz. |
time_critical |
true rezygnuje z automatycznego rozkładania, które włącza się powyżej 50 kontaktów — dla rozgrzanej grupy odbiorców, która potrzebuje wiadomości teraz. Nie znosi to dziennego limitu wysyłek danego kanału. |
batch_size |
Ile kontaktów na partię podczas wysyłki stopniowej. |
follow_up_config |
Łańcuch działań następczych dla kontaktów, które nigdy nie odpowiedzą. |
Wszystko, co wyślesz jako user_id, id, status lub source_campaign_id, jest ignorowane przy tworzeniu i usuwane przy aktualizacji — status zmienia się tylko poprzez poniższe punkty końcowe uruchamiania, wstrzymywania i wznawiania.
Pola utrzymywane przez platformę
status, total_contacts_sent, unique_contacts_replied, overall_reply_rate, credits_used, paused_reason, completion_summary, liczniki partii oraz contacts (poszczególne kontakty dołączone z pulpitu nawigacyjnego, odczytywane jako ciągi ścieżek). Odczytuj je, nie zapisuj.
Statusy
| Status | Znaczenie |
|---|---|
Draft |
W trakcie tworzenia. Nic nie jest zaplanowane. |
Pending Approval |
Uruchomiono, ale szablon WhatsApp wciąż oczekuje na decyzję. Wysyłka rozpocznie się automatycznie po zatwierdzeniu szablonu — nie musisz uruchamiać jej ponownie. |
Scheduled |
Uruchomiono z przyszłą execution_date. |
Sending |
Aktywnie wysyłane (transmisja przygotowana dla nowych członków listy pozostaje w tym stanie, oczekując na nich). |
Paused |
Wstrzymane — przez Ciebie lub automatycznie przez kontrolę bezpieczeństwa. |
Sent |
Zakończono. |
Failed |
Zakończono, przy czym ponad połowa wysyłek nie powiodła się. |
Utwórz transmisję
POST /broadcasts — tworzy Draft.
cURL
curl -X POST "https://api.youraiconnector.com/v1/broadcasts?apiKey=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "June promo",
"channel": "whatsapp",
"list_id": "lst_456",
"agent_id": "agt_789",
"drip_mode": true,
"execution_date": "2026-06-15T09:00:00.000Z"
}'
JavaScript
const res = await fetch("https://api.youraiconnector.com/v1/broadcasts", {
method: "POST",
headers: { "X-API-Key": "YOUR_API_KEY", "Content-Type": "application/json" },
body: JSON.stringify({
name: "June promo",
channel: "whatsapp",
list_id: "lst_456",
agent_id: "agt_789",
drip_mode: true,
execution_date: "2026-06-15T09:00:00.000Z",
}),
});
const { broadcast_id } = await res.json();
Python
import requests
res = requests.post(
"https://api.youraiconnector.com/v1/broadcasts",
headers={"X-API-Key": "YOUR_API_KEY"},
json={
"name": "June promo",
"channel": "whatsapp",
"list_id": "lst_456",
"agent_id": "agt_789",
"drip_mode": True,
"execution_date": "2026-06-15T09:00:00.000Z",
},
)
print(res.json()["broadcast_id"])
Odpowiedź (201)
{ "success": true, "broadcast_id": "bcd123abc456" }
Wyświetl listę transmisji
GET /broadcasts — każda transmisja na koncie, od najnowszej. |
Parametry zapytania
| Parametr | Wymagany | Opis |
|---|---|---|
status |
Nie | Zwraca tylko transmisje o określonym statusie, np. Sending. Pisownia musi być dokładnie zgodna z tabelą statusów. |
curl "https://api.youraiconnector.com/v1/broadcasts?apiKey=YOUR_API_KEY&status=Sending"
const res = await fetch("https://api.youraiconnector.com/v1/broadcasts?status=Sending", {
headers: { "X-API-Key": "YOUR_API_KEY" },
});
const { broadcasts } = await res.json();
res = requests.get(
"https://api.youraiconnector.com/v1/broadcasts",
headers={"X-API-Key": "YOUR_API_KEY"},
params={"status": "Sending"},
)
broadcasts = res.json()["broadcasts"]
Odpowiedź (200)
{ "success": true, "broadcasts": [{ "id": "bcd123abc456", "name": "June promo", "status": "Sending", "...": "..." }] }
Pobierz transmisję
GET /broadcasts/{broadcastId} — zwraca { "success": true, "broadcast": { ... } }. Użyj tego, aby odpytywać trwającą wysyłkę: total_contacts_sent, unique_contacts_replied, overall_reply_rate oraz credits_used aktualizują się w trakcie jej trwania. |
curl "https://api.youraiconnector.com/v1/broadcasts/bcd123abc456?apiKey=YOUR_API_KEY"
Transmisja, która nie istnieje na Twoim koncie, zwraca 404.
Zaktualizuj transmisję
PUT /broadcasts/{broadcastId} — wyślij tylko te pola, które chcesz zmienić. Możesz również odwołać się do pojedynczego klucza wewnątrz zagnieżdżonego obiektu za pomocą ścieżki kropkowej, np. "whats_app_template.body".
curl -X PUT "https://api.youraiconnector.com/v1/broadcasts/bcd123abc456?apiKey=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "name": "June promo (v2)", "execution_date": "2026-06-16T09:00:00.000Z" }'
await fetch("https://api.youraiconnector.com/v1/broadcasts/bcd123abc456", {
method: "PUT",
headers: { "X-API-Key": "YOUR_API_KEY", "Content-Type": "application/json" },
body: JSON.stringify({ name: "June promo (v2)", execution_date: "2026-06-16T09:00:00.000Z" }),
});
Puste ciało żądania zwraca 400. Warto znać dwie zasady:
opener_mediadziała na zasadzie wszystko albo nic. Wyślij kompletny obiekt lubnull, aby usunąć załącznik. Ścieżka kropkowa do niego (opener_media.name) zostanie odrzucona z błędem400, ponieważ częściowo zaktualizowany załącznik opisywałby plik, którego nie ma.- Statusu nie można edytować. Użyj uruchomienia, wstrzymania i wznowienia.
Wiadomość otwierająca
Każda transmisja zawiera swój element otwierający w whats_app_template. To, co to oznacza, zależy od kanału:
- WhatsApp Business — musi to być szablon zatwierdzony przez WhatsApp. Użyj jednego z dwóch poniższych punktów końcowych.
- Każdy inny kanał (WhatsApp Web, SMS, Instagram, Messenger, Telegram, …) — pole
bodytego samego elementu to po prostu tekst, który zostanie wysłany. Przesłanie go przez poniższy punkt końcowy zapisuje go i oznacza jako gotowy, bez udziału WhatsApp.
Prześlij szablon do zatwierdzenia
POST /broadcasts/{broadcastId}/template
| Pole | Wymagane | Opis |
|---|---|---|
body |
Tak | Treść wiadomości, do 1024 znaków. Użyj symboli zastępczych {{variable}} do personalizacji. |
name |
Nie | Nazwa szablonu. Domyślnie przyjmuje nazwę transmisji. |
language |
Nie | Kod języka. Domyślnie en. |
category |
Nie | marketing (domyślnie), utility, authentication lub authentication-international. Od tego zależy cena wysyłki, więc podawaj prawdziwe dane. |
variables |
Nie | Nazwy symboli zastępczych w kolejności ich występowania. Pomiń to, a zostaną odczytane z treści — co zazwyczaj jest pożądane, ponieważ wysyłka uzupełnia je dla każdego kontaktu. |
curl -X POST "https://api.youraiconnector.com/v1/broadcasts/bcd123abc456/template?apiKey=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"body": "Hi {{first_name}}, our June offer is live until Friday.",
"language": "en",
"category": "marketing"
}'
Odpowiedź (200)
{ "success": true, "broadcast_id": "bcd123abc456", "template_status": "pending", "template_sid": "HX0123..." }
template_status to odpowiedź WhatsApp: pending podczas sprawdzania, approved gdy jest gotowy do użycia, rejected jeśli został odrzucony. W przypadku kanału innego niż WhatsApp, odpowiedź wraca natychmiast jako approved z template_sid: null — nie ma nic do sprawdzania.
Co może Cię powstrzymać:
- Przesłanie szablonu, gdy poprzedni jest w trakcie sprawdzania, zwróci
400. Najpierw poczekaj na decyzję. - Edycja zatwierdzonego szablonu sprawia, że poprzednia wersja pozostaje aktywna do momentu zatwierdzenia nowej, dzięki czemu trwająca transmisja nigdy nie traci swojego elementu otwierającego.
- W przypadku numeru WhatsApp połączonego bezpośrednio przez Meta, transmisji z załączonym obrazem lub wideo nie można przesłać (
400) — załączniki są obsługiwane w zarządzanym kanale WhatsApp Business oraz w WhatsApp Web.
Użyj szablonu, który został już zatwierdzony
POST /broadcasts/{broadcastId}/template/select — kopiuje zatwierdzony już szablon z Twojej biblioteki szablonów do transmisji, więc nie trzeba na nic czekać.
| Pole | Wymagane | Opis |
|---|---|---|
template_id |
Tak | Identyfikator zatwierdzonego szablonu na Twoim koncie. |
curl -X POST "https://api.youraiconnector.com/v1/broadcasts/bcd123abc456/template/select?apiKey=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "template_id": "tpl_abc123" }'
Odpowiedź (200)
{
"success": true,
"broadcast_id": "bcd123abc456",
"template_status": "approved",
"template_sid": "HX0123...",
"body": "Hi {{first_name}}, our June offer is live until Friday.",
"name": "june_promo",
"language": "en",
"variables": ["first_name"],
"category": "marketing"
}
Zatwierdzenie jest weryfikowane po naszej stronie na podstawie rekordu w bibliotece — przesyłasz tylko identyfikator. Otrzymasz 400, jeśli transmisja nie jest szkicem WhatsApp, jeśli szablon nie jest zatwierdzony, jeśli jest to szablon uzupełniający, a nie otwierający, lub jeśli transmisja zawiera załącznik (szablony z biblioteki są tylko tekstowe). Identyfikator szablonu, którego nie ma na Twoim koncie, zwróci 404.
Oszacuj koszt
POST /broadcasts/{broadcastId}/estimate-cost — wycenia wysyłkę przed jej zatwierdzeniem. Dostępne dla transmisji whatsapp i sms; każdy inny kanał zwróci 400. Transmisja wymaga list_id, ponieważ szacunek uwzględnia grupę odbiorców.
curl -X POST "https://api.youraiconnector.com/v1/broadcasts/bcd123abc456/estimate-cost?apiKey=YOUR_API_KEY"
Odpowiedź WhatsApp (200) — kredyty, z podziałem na kraj docelowy:
{
"success": true,
"channel": "whatsapp",
"billing_mode": "credits",
"data": {
"countries": [
{ "countryCode": "31", "name": "Netherlands", "iso": "NL", "flag": "🇳🇱", "contactCount": 180, "costPerContact": 1.2, "subtotal": 216 },
{ "countryCode": "1", "name": "United States", "iso": "US", "flag": "🇺🇸", "contactCount": 60, "costPerContact": 0.9, "subtotal": 54 }
],
"totalContacts": 240,
"totalTemplateCost": 270,
"templateCategory": "marketing",
"billing_mode": "credits",
"service_messages_billable_soon": false
}
}
Odpowiedź SMS (200) — dolary amerykańskie, na podstawie aktualnych cen Twilio dla Twojego własnego konta Twilio:
{
"success": true,
"channel": "sms",
"billing_mode": "twilio_direct",
"data": {
"totalContacts": 240,
"messageLength": 118,
"segmentsPerMessage": 1,
"totalSegments": 240,
"estimatedCostUsd": 1.788,
"priceUnit": "USD",
"billedByTwilio": true,
"billing_mode": "twilio_direct",
"service_messages_billable_soon": false
}
}
Przeczytaj billing_mode, zanim wyświetlisz numer. Informuje on, kto jest obciążany kosztami:
billing_mode |
Kto płaci | Co oznaczają te liczby |
|---|---|---|
credits |
Twoje konto Your AI Connector | totalTemplateCost oraz liczby dla poszczególnych krajów to kredyty. |
twilio_direct |
Twoje własne konto Twilio | estimatedCostUsd to kwota, którą obciąży Cię Twilio. |
meta_waba_direct |
Twoje własne konto WhatsApp Business, rozliczane przez Meta | Każda liczba kredytów wraca jako null — celowo, aby nigdy nie pomylić jej z „darmową”. Liczby krajów i kontaktów pozostają dokładne. |
SMS bez podłączonych danych uwierzytelniających Twilio nadal zwraca liczbę segmentów, z estimatedCostUsd: 0 — nie ma żadnych cen do sprawdzenia.
Uruchom transmisję
POST /broadcasts/{broadcastId}/launch
Uruchomienie najpierw sprawdza wszystko, a dopiero potem kontynuuje transmisję. Nie ma możliwości częściowego uruchomienia: albo się rozpocznie, albo nic się nie zmieni i otrzymasz komunikat o błędzie z wyjaśnieniem przyczyny.
cURL
curl -X POST "https://api.youraiconnector.com/v1/broadcasts/bcd123abc456/launch?apiKey=YOUR_API_KEY"
JavaScript
const res = await fetch("https://api.youraiconnector.com/v1/broadcasts/bcd123abc456/launch", {
method: "POST",
headers: { "X-API-Key": "YOUR_API_KEY" },
});
const data = await res.json();
if (!data.success) console.error(data.error);
Python
res = requests.post(
"https://api.youraiconnector.com/v1/broadcasts/bcd123abc456/launch",
headers={"X-API-Key": "YOUR_API_KEY"},
)
print(res.json())
Odpowiedź (200)
{ "success": true, "broadcast_id": "bcd123abc456", "status": "Scheduled" }
status to miejsce, w którym wylądowała transmisja:
Scheduled—execution_datejest w przyszłości.Sending— rozpoczęła się teraz.Pending Approval— szablon WhatsApp jest nadal w trakcie weryfikacji. Wyśle się automatycznie, gdy tylko szablon zostanie zatwierdzony; nie wywołuj ponownie uruchomienia.
Uruchomić można tylko transmisję Draft (lub Pending Approval, której szablon został w międzyczasie zatwierdzony) — każda inna zwróci 400.
Dlaczego uruchomienie zostało odrzucone
Każdy z tych przypadków zwraca 400 wraz z komunikatem error napisanym prostym językiem:
| Problem | Co naprawić |
|---|---|
| Brak odbiorców | Ustaw list_id (lub dołącz kontakty) przed uruchomieniem. |
| Brak wiadomości powitalnej | Ustaw wiadomość powitalną — zobacz Wiadomość powitalna. |
| Załącznik w wiadomości SMS | SMS nie może zawierać obrazu ani wideo. Usuń załącznik lub przenieś transmisję do WhatsApp. |
| Załącznik nie pasuje do zatwierdzonego szablonu | W WhatsApp multimedia znajdują się wewnątrz zatwierdzonego szablonu, więc zmiana załącznika po fakcie oznacza konieczność ponownego przesłania szablonu. |
| Szablon odrzucony | Przepisz wiadomość i prześlij ją ponownie. |
| Szablon nigdy nie został przesłany | Najpierw prześlij go (lub wybierz zatwierdzony). |
| Szablon zatwierdzony, ale brak go na Twoim koncie WhatsApp | Zazwyczaj dotyczy to szablonu zatwierdzonego przed zakończeniem łączenia numeru. Prześlij go ponownie. |
| Brak połączonego nadawcy dla kanału | Najpierw połącz kanał — zobacz Kanały. |
| Kanał tylko do odpowiedzi | TikTok i Skool nie pozwalają firmie na rozpoczynanie konwersacji, więc nie można na nich prowadzić transmisji. |
| Już uzbrojona | Transmisja ma już zaplanowaną wysyłkę. Wstrzymaj ją przed ponownym uruchomieniem. |
| Wciąż oczekuje na zatwierdzenie | Wyśle się automatycznie, gdy szablon zostanie zatwierdzony. |
| Konto WhatsApp Business zablokowane przez Meta | Meta wstrzymała konwersacje inicjowane przez firmę na Twoim koncie WhatsApp Business — zazwyczaj jest to problem z metodą płatności. Napraw to w Meta Business Manager. |
| Rozpoczęto z klasycznej kampanii | Uruchom ją z edytora kampanii. Zobacz klasyczne kampanie w Transmisjach. |
Wstrzymywanie i wznawianie
POST /broadcasts/{broadcastId}/pause zatrzymuje transmisję Sending lub Scheduled i usuwa wszystko, co znajduje się w kolejce.
curl -X POST "https://api.youraiconnector.com/v1/broadcasts/bcd123abc456/pause?apiKey=YOUR_API_KEY"
Wstrzymanie transmisji Pending Approval powoduje jej powrót do stanu Draft — nic nie zostało jeszcze zaplanowane, więc nie ma czego wznawiać. Każdy inny status zwraca 400.
POST /broadcasts/{broadcastId}/resume restartuje transmisję Paused:
curl -X POST "https://api.youraiconnector.com/v1/broadcasts/bcd123abc456/resume?apiKey=YOUR_API_KEY"
Odpowiedź (200)
{ "success": true, "broadcast_id": "bcd123abc456" }
Wznawia ją do stanu Sending lub z powrotem do Scheduled, jeśli jej execution_date wciąż przypada w przyszłości. Wznowić można tylko transmisję Paused.
Kontynuuj wysyłkę po wstrzymaniu z powodu niskiego zaangażowania
POST /broadcasts/{broadcastId}/override-engagement-guard
Podczas gdy transmisja jest wysyłana w partiach, mierzymy, ile osób odpowiedziało na każdą z nich, zanim rozpoczniemy kolejną. Jeśli prawie nikt nie odpowiada, transmisja wstrzymuje się automatycznie — wysyłka, która jest kontynuowana w ciszy, to najszybszy sposób na przefiltrowanie lub zablokowanie numeru. Służy do tego przycisk Kontynuuj mimo wszystko w panelu nawigacyjnym.
Ponieważ wskaźnik odpowiedzi, który spowodował wstrzymanie, nie może się zmienić, gdy transmisja jest zatrzymana, zwykłe wznowienie spowodowałoby ponowne wstrzymanie przy następnym sprawdzeniu. Ten punkt końcowy to decyzja o kontynuowaniu mimo wszystko: rejestruje on obejście dla tej konkretnej transmisji i znosi wstrzymanie w tym samym wywołaniu, jeśli transmisja została wstrzymana z powodu niskiego zaangażowania.
curl -X POST "https://api.youraiconnector.com/v1/broadcasts/bcd123abc456/override-engagement-guard?apiKey=YOUR_API_KEY"
Odpowiedź (200)
{ "success": true, "broadcast_id": "bcd123abc456", "status": "Sending", "resumed": true }
resumed: true— transmisja została wstrzymana z powodu niskiego zaangażowania i jest teraz ponownie uruchomiona;statusto stan, do którego została wznowiona.resumed: false— nic nie zostało zniesione, obejście jest po prostu rejestrowane do przyszłych kontroli. Otrzymasz to, jeśli transmisja nigdy nie została wstrzymana lub została wstrzymana z innego powodu (wstrzymałeś ją ręcznie, osiągnięto limit wysyłki lub zbyt wiele wysyłek zakończyło się błędem). Takie wstrzymania nie są tutaj znoszone — wznów ją samodzielnie po usunięciu przyczyny.
Obejście dotyczy tylko tej transmisji. Nie jest to ustawienie konta i można je bezpiecznie wywołać dwukrotnie.
Duplikuj transmisję
POST /broadcasts/{broadcastId}/duplicate — kopiuje odbiorców, wiadomość i ustawienia do nowej Draft. Wszystko, co dotyczy poprzedniego uruchomienia (liczniki, partie, harmonogram, statystyki odpowiedzi), zaczyna się od nowa.
| Pole | Wymagane | Opis |
|---|---|---|
to_channel |
Nie | Utwórz kopię na innym kanale. W ten sposób wysyłasz to samo na dwóch kanałach — transmisja zawsze ma tylko jeden. |
curl -X POST "https://api.youraiconnector.com/v1/broadcasts/bcd123abc456/duplicate?apiKey=YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "to_channel": "sms" }'
Odpowiedź (201)
{ "success": true, "broadcast_id": "bcd999new111", "source_broadcast_id": "bcd123abc456" }
Kopia nigdy nie dziedziczy aktywnego zatwierdzenia WhatsApp: w kopii WhatsApp szablon wymaga Twojego potwierdzenia, a w kopii na inny kanał jest usuwany, a tekst staje się zwykłym otwieraczem. Kopiowanie do SMS usuwa również wszelkie załączniki, ponieważ SMS nie może ich wysyłać.
Usuń transmisję
DELETE /broadcasts/{broadcastId}
curl -X DELETE "https://api.youraiconnector.com/v1/broadcasts/bcd123abc456?apiKey=YOUR_API_KEY"
Transmisja Sending lub Scheduled została odrzucona z błędem 400 — najpierw ją wstrzymaj.
Transmisje odzwierciedlające kampanię klasyczną
Kampanie klasyczne, które wysyłają wiadomości, pojawiają się również w Transmisjach, a API zwraca je wraz z natywnymi transmisjami (posiadają one source_campaign_id). Zachowują się one nieco inaczej, ponieważ to kampania pozostaje nadrzędna:
- Edycja grupy odbiorców, wiadomości lub harmonogramu działa i jest zapisywana w kampanii.
- Kanał, agent odpowiedzi, załącznik oraz wszystkie liczniki uruchomień są tutaj tylko do odczytu — otrzymasz
400, jeśli spróbujesz je zmienić. Zmień je w kampanii. - Uruchomienie zwraca
400, kierując do edytora kampanii. - Wstrzymanie i wznowienie działają i mają wpływ na kampanię.
- Usunięcie zwraca
400— zamiast tego usuń kampanię, a jej wpis w Transmisjach zniknie wraz z nią. - Duplikowanie tworzy niezależną transmisję natywną, co jest zalecanym sposobem przenoszenia sprawdzonych kampanii.
Błędy
Nieudane żądania zwracają {"success": false, "error": "<message>"} z następującymi statusami:
| Status | Znaczenie |
|---|---|
400 |
Coś jest nie tak z żądaniem lub stanem transmisji — brakujące pole, nieprawidłowy załącznik lub próba uruchomienia/wstrzymania/wznowienia/usunięcia, która jest niedozwolona w bieżącym statusie transmisji. Komunikat error wskazuje przyczynę. |
401 |
Brakujący lub nieprawidłowy klucz API. |
403 |
Twój plan nie obejmuje dostępu do API. |
404 |
Brak takiej transmisji na Twoim koncie (lub w przypadku wyboru szablonu, brak takiego szablonu). |
429 |
Ograniczenie częstotliwości zapytań (rate limit). Odczekaj i spróbuj ponownie. |
500 |
Wystąpił błąd po naszej stronie. Spróbuj ponownie po krótkiej chwili. |
Następne kroki
- Przewodnik po transmisjach — produkt stojący za tymi punktami końcowymi, w tym informacje o tempie wysyłki i zachowaniach związanych z bezpieczeństwem
- API kontaktów — budowanie listy, do której wysyłana jest transmisja
- API szablonów — zarządzanie zatwierdzonymi szablonami WhatsApp, które możesz wybrać
- API webhooków — subskrybuj
Broadcast StartediBroadcast Completedzamiast odpytywać API