SIP Caller oferuje REST API, które pozwala klientom SIP Caller wykonywać różne operacje na swoim koncie SIP Caller z zewnętrznych programów. W ten sposób można opracować wiele przydatnych, niestandardowych integracji między SIP Caller a innymi systemami.
Aby korzystać z REST API, klient SIP Caller musi najpierw utworzyć Klucz API, zgodnie z opisem w tej sekcji, aby uzyskać wartość API_KEY_TOKEN, która będzie używana w poniższych przykładach do uwierzytelniania wywołań do REST API SIP Caller z programu zewnętrznego.
Wartość ACCOUNT_ID klienta SIP Caller, która będzie używana w poniższych przykładach, można uzyskać z Konsoli Webowej, jak pokazano poniżej:
Wartość CAMPAIGN_ID kampanii SIP Caller, która będzie używana w poniższych przykładach, można również uzyskać z Konsoli Webowej, jak pokazano poniżej:

Poniższy przykład pokazuje, jak wyświetlić listę kampanii:
curl -i \ --header 'Authorization: Bearer API_KEY_TOKEN' \ --get \ --data-urlencode 'filter={"state":"Active"}' \ --data-urlencode 'sort=["name","DESC"]' \ --data-urlencode 'range=[0,99]' \ 'https://api.sipcaller.com/v1/accounts/ACCOUNT_ID/campaigns'
Żądanie pozwala określić filtry, sortowanie i zakres:
Poniższy przykład pokazuje, jak utworzyć nową kampanię:
curl -i \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer API_KEY_TOKEN' \ --request POST \ --data-raw '{ "name":"My first campaign", "phoneSystemId":"0199817e-52e0-7079-9585-99a655c2acb3", "extensionId":"93e5cdfc-6e42-4995-8263-9388a9047c29", "tagIds":[], "state":"Draft", "isArchived":false, "numberProvisioning":"Dynamic", "numberSelection":"Fifo", "numberPriority":"RetryPending", "dialer":{ "mode":"Predictive", "intensity":0 }, "callPrefix":"", "ringTimeout":{ "value":30, "unit":"Seconds" }, "maxAttempts":3, "retryIntervals":[ { "value":1, "unit":"Hours" } ], "startDate":"2026-07-27", "endDate":null, "workingTimes":{ "monday":[ { "start":"09:00", "end":"18:00" } ], "tuesday":[ { "start":"09:00", "end":"18:00" } ], "wednesday":[ { "start":"09:00", "end":"18:00" } ], "thursday":[ { "start":"09:00", "end":"18:00" } ], "friday":[ { "start":"09:00", "end":"18:00" } ], "saturday":[ ], "sunday":[ ] }, "timeZoneId":"America/Argentina/Buenos_Aires", "callHandling":{ "$t":"Callflow", "answerTypeDetector":{ "$t":"AmdAgent", "amdAgentId":"019f9cef-4a91-7c97-b7cd-edbb06a5038d", "unknownAnswerTreatment":"Human", "messageForVoicemail":{ "$t":"OnFirstDetection", "callflowId":"019f81ba-a149-731a-a6cb-b47146c5f90d", "isCallRetryEnabled":true } }, "callflowId":"019f9cd5-e8cd-716b-a9a6-37c9db2f97a2", "ttsVoiceId":"azu-en-US-AlloyTurboMultilingualNeural" }, "blackListIds":[ ], "webhookEndpointId":"019af0c3-62d6-70f2-84a1-5ab5671721bb" }' \ 'https://api.sipcaller.com/v1/accounts/ACCOUNT_ID/campaigns'
Treść żądania akceptuje następujące pola:
numberProvisioning – Możliwe wartości: Dynamic, StaticnumberSelection – Możliwe wartości: Fifo, LifonumberPriority – Możliwe wartości: RetryPending, NotContactedringTimeout oraz każdego elementu retryIntervals, pole unit może przyjmować jedną z wartości: Seconds, Minutes, Hours, DayscallHandling, pole $t może przyjmować jedną z wartości: Callflow, AiAgentanswerTypeDetector, pole $t może przyjmować jedną z wartości: Disabled, Standard, AmdAgentunknownAnswerTreatment – Możliwe wartości: Human, VoicemailmessageForVoicemail, pole $t może przyjmować jedną z wartości: Never, OnFirstDetection, OnLastAttempt, OnEveryAttemptPoniższy przykład pokazuje, jak edytować istniejącą kampanię, identyfikowaną przez CAMPAIGN_ID. Treść żądania akceptuje te same pola co przy tworzeniu kampanii, ale musi również zawierać pole id z ID kampanii:
curl -i \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer API_KEY_TOKEN' \ --request PUT \ --data-raw '{ "id":"CAMPAIGN_ID", "name":"My first campaign", "phoneSystemId":"0199817e-52e0-7079-9585-99a655c2acb3", "extensionId":"93e5cdfc-6e42-4995-8263-9388a9047c29", "tagIds":[], "state":"Draft", "isArchived":false, "numberProvisioning":"Dynamic", "numberSelection":"Fifo", "numberPriority":"RetryPending", "dialer":{ "mode":"Predictive", "intensity":0 }, "callPrefix":"", "ringTimeout":{ "value":30, "unit":"Seconds" }, "maxAttempts":3, "retryIntervals":[ { "value":1, "unit":"Hours" } ], "startDate":"2026-07-27", "endDate":null, "workingTimes":{ "monday":[ { "start":"09:00", "end":"18:00" } ], "tuesday":[ { "start":"09:00", "end":"18:00" } ], "wednesday":[ { "start":"09:00", "end":"18:00" } ], "thursday":[ { "start":"09:00", "end":"18:00" } ], "friday":[ { "start":"09:00", "end":"18:00" } ], "saturday":[ ], "sunday":[ ] }, "timeZoneId":"America/Argentina/Buenos_Aires", "callHandling":{ "$t":"Callflow", "answerTypeDetector":{ "$t":"AmdAgent", "amdAgentId":"019f9cef-4a91-7c97-b7cd-edbb06a5038d", "unknownAnswerTreatment":"Human", "messageForVoicemail":{ "$t":"OnFirstDetection", "callflowId":"019f81ba-a149-731a-a6cb-b47146c5f90d", "isCallRetryEnabled":true } }, "callflowId":"019f9cd5-e8cd-716b-a9a6-37c9db2f97a2", "ttsVoiceId":"azu-en-US-AlloyTurboMultilingualNeural" }, "blackListIds":[ ], "webhookEndpointId":"019af0c3-62d6-70f2-84a1-5ab5671721bb" }' \ 'https://api.sipcaller.com/v1/accounts/ACCOUNT_ID/campaigns/CAMPAIGN_ID'
Poniższy przykład pokazuje, jak zduplikować już istniejącą kampanię:
curl -i \ --header 'Authorization: Bearer API_KEY_TOKEN' \ --request POST \ 'https://api.sipcaller.com/v1/accounts/ACCOUNT_ID/campaigns/CAMPAIGN_ID/duplicate?includeNumbers=true&newCampaignName=NewCampaignName&numbersFilter={"status":["NotContacted","Failure"]}'
Parametr zapytania newCampaignName jest opcjonalny, a jeśli nie zostanie podany, nowa kampania otrzyma nazwę oryginalnej kampanii z przyrostowym numerem jako sufiksem. Parametr zapytania includeNumbers jest również opcjonalny, a jeśli nie zostanie podany, nowa kampania będzie zawierać wszystkie numery. Jeśli includeNumbers jest ustawiony na true, parametr zapytania numbersFilter może być użyty, aby określić, które numery z oryginalnej kampanii powinny zostać uwzględnione w nowej kampanii. Status może zawierać dowolną z następujących wartości:
Poniższy przykład pokazuje, jak zmienić stan kampanii:
curl -i \ --header 'Authorization: Bearer API_KEY_TOKEN' \ --request PUT \ --data-raw '"Active"' \ 'https://api.sipcaller.com/v1/accounts/ACCOUNT_ID/campaigns/CAMPAIGN_ID/state'
Treść żądania musi być nowym stanem w cudzysłowie. Możliwe wartości to:
Możesz użyć dwóch różnych endpointów API do usuwania kampanii, w zależności od tego, czy chcesz usunąć jedną, czy wiele kampanii:
curl -i \ --header 'Authorization: Bearer API_KEY_TOKEN' \ --request DELETE \ 'https://api.sipcaller.com/v1/accounts/ACCOUNT_ID/campaigns/CAMPAIGN_ID'
curl -i \ --header 'Authorization: Bearer API_KEY_TOKEN' \ --request DELETE \ --data-raw '["CAMPAIGN_ID_1","CAMPAIGN_ID_2"]' \ 'https://api.sipcaller.com/v1/accounts/ACCOUNT_ID/campaigns'
Pamiętaj, że usunąć można tylko kampanie w następujących stanach:
Poniższy przykład pokazuje, jak wyświetlić listę numerów kampanii:
curl -i \ --header 'Authorization: Bearer API_KEY_TOKEN' \ --get \ --data-urlencode 'filter={"number":"123456789"}' \ --data-urlencode 'sort=["number","DESC"]' \ --data-urlencode 'range=[0,19]' \ 'https://api.sipcaller.com/v1/accounts/ACCOUNT_ID/campaigns/CAMPAIGN_ID/numbers'
Żądanie pozwala określić filtry, sortowanie i zakres:
Poniższy przykład pokazuje, jak dodać nowy numer do już aktywnej kampanii dynamicznej:
curl -i \ --header 'Authorization: Bearer API_KEY_TOKEN' \ --request POST \ --data-raw '[{"number": "+18005551234"},{"number": "+18005551235"}]' \ 'https://api.sipcaller.com/v1/accounts/ACCOUNT_ID/campaigns/CAMPAIGN_ID/numbers'
Poniższy przykład pokazuje, jak dodać nowy numer do już aktywnej kampanii dynamicznej, wraz z wartościami zmiennych, które mogą być użyte przez przepływ połączenia kampanii:
curl -i \ --globoff \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer API_KEY_TOKEN' \ --request POST \ --data-raw '[{"number": "+18005551234", "varValues": ["John", "199"]},{"number": "+18005551235", "varValues": ["Jane", "449"]}]' \ 'https://api.sipcaller.com/v1/accounts/ACCOUNT_ID/campaigns/CAMPAIGN_ID/numbers?varNames=["Name","Amount"]'
Parametr zapytania varNames jest opcjonalny, a jeśli nie zostanie podany, SIP Caller automatycznie przypisze nazwy zmiennych.
Poniższy przykład pokazuje, jak przesłać plik CSV (wartości oddzielone przecinkami) z wieloma numerami do już aktywnej kampanii dynamicznej.
Najpierw trzeba przygotować plik CSV zawierający nowe numery do dodania do kampanii. Oto przykład pliku CSV z 5 numerami i odpowiadającymi im wartościami zmiennych:
5550001,John,199
5550002,Mary,299
5550003,Susan,149
5550004,James,300
5550005,Walter,42
Następnie przygotowany plik CSV można przesłać do SIP Caller za pomocą następującego polecenia:
curl -i \ --header 'Authorization: Bearer API_KEY_TOKEN' \ --form "file=@campaign-numbers.csv" \ 'https://api.sipcaller.com/v1/accounts/ACCOUNT_ID/campaigns/CAMPAIGN_ID/numbers/upload?firstRowIsHeader=false&varCount=2'
Poniższy przykład pokazuje, jak usunąć numery kampanii, podając ID zwrócone przy pobieraniu listy:
curl -i \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer API_KEY_TOKEN' \ --request DELETE \ --data-raw '[NUMBER_ID_1,NUMBER_ID_2,NUMBER_ID_3]' \ 'https://api.sipcaller.com/v1/accounts/ACCOUNT_ID/campaigns/CAMPAIGN_ID/numbers'
Wysyłane dane pozwalają określić wiele identyfikatorów numerów. Te identyfikatory NIE są numerami. Musisz najpierw wyświetlić listę numerów kampanii, aby uzyskać ID każdego rekordu, a następnie je usunąć.
Usunąć można tylko numery w następujących stanach:
Poniższy przykład pokazuje, jak pobrać szczegóły połączeń kampanii:
curl -i \ --header 'Authorization: Bearer API_KEY_TOKEN' \ --get \ --data-urlencode 'filter={"number":"+18005551000"}' \ --data-urlencode 'sort=["number","ASC"]' \ --data-urlencode 'range=[0,99]' \ 'https://api.sipcaller.com/v1/accounts/ACCOUNT_ID/campaigns/CAMPAIGN_ID/reports/callDetails'
Żądanie pozwala określić filtry, sortowanie i zakres:
Poniższy przykład pokazuje, jak pobrać szczegóły numeru kampanii:
curl -i \ --header 'Authorization: Bearer API_KEY_TOKEN' \ --get \ --data-urlencode 'filter={"number":"+18005551000"}' \ --data-urlencode 'sort=["number","ASC"]' \ --data-urlencode 'range=[0,99]' \ 'https://api.sipcaller.com/v1/accounts/ACCOUNT_ID/campaigns/CAMPAIGN_ID/reports/numberDetails'
Żądanie pozwala określić filtry, sortowanie i zakres: