SIP Caller offre una REST API che permette ai clienti di SIP Caller di eseguire diverse operazioni sul proprio account SIP Caller da programmi esterni. In questo modo, è possibile sviluppare molte integrazioni personalizzate utili tra SIP Caller e altri sistemi.
Per utilizzare la REST API, un cliente SIP Caller deve prima creare una API Key, come spiegato in questa sezione, per ottenere un API_KEY_TOKEN che verrà utilizzato negli esempi seguenti per autenticare le chiamate alla REST API di SIP Caller da un programma esterno.
Il valore ACCOUNT_ID del cliente SIP Caller, che verrà utilizzato negli esempi seguenti, può essere ottenuto dalla Console Web, come mostrato di seguito:
Il valore CAMPAIGN_ID di SIP Caller, che verrà utilizzato negli esempi seguenti, può anch'esso essere ottenuto dalla Console Web, come mostrato di seguito:

Il seguente esempio mostra come elencare le campagne:
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'
La richiesta permette di specificare filtri, ordinamento e intervallo:
Il seguente esempio mostra come creare una nuova campagna:
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'
Il corpo della richiesta accetta i seguenti campi:
numberProvisioning – Valori possibili: Dynamic, StaticnumberSelection – Valori possibili: Fifo, LifonumberPriority – Valori possibili: RetryPending, NotContactedringTimeout e di ciascun elemento di retryIntervals, il campo unit può essere uno dei seguenti: Seconds, Minutes, Hours, DayscallHandling, il campo $t può essere uno dei seguenti: Callflow, AiAgentanswerTypeDetector, il campo $t può essere uno dei seguenti: Disabled, Standard, AmdAgentunknownAnswerTreatment – Valori possibili: Human, VoicemailmessageForVoicemail, il campo $t può essere uno dei seguenti: Never, OnFirstDetection, OnLastAttempt, OnEveryAttemptIl seguente esempio mostra come modificare una campagna esistente, identificata da CAMPAIGN_ID. Il corpo della richiesta accetta gli stessi campi utilizzati per la creazione di una campagna, ma deve anche includere il campo id con l'ID della campagna:
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'
Il seguente esempio mostra come duplicare una campagna già esistente:
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"]}'
Il parametro query-string newCampaignName è opzionale, e se non fornito, la nuova campagna verrà denominata come la campagna originale con un numero incrementale come suffisso. Anche il parametro query-string includeNumbers è opzionale, e se non fornito, la nuova campagna includerà tutti i numeri. Se includeNumbers è impostato su true, allora il parametro query-string numbersFilter può essere utilizzato per specificare quali numeri della campagna originale devono essere inclusi nella nuova campagna. Lo stato può includere uno qualsiasi dei seguenti valori:
Il seguente esempio mostra come cambiare lo stato di una campagna:
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'
Il corpo della richiesta deve essere il nuovo stato tra virgolette. I valori possibili sono i seguenti:
Puoi usare due diversi endpoint API per eliminare le campagne, a seconda che tu voglia eliminarne una o più:
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'
Nota che possono essere eliminate solo le campagne nei seguenti stati:
Il seguente esempio mostra come elencare i numeri di una campagna:
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'
La richiesta permette di specificare filtri, ordinamento e intervallo:
Il seguente esempio mostra come aggiungere un nuovo numero a una campagna dinamica già attiva:
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'
Il seguente esempio mostra come aggiungere un nuovo numero a una campagna dinamica già attiva, includendo i valori delle variabili che possono essere utilizzati dal flusso di chiamata della campagna:
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"]'
Il parametro query-string varNames è opzionale, e se non fornito, SIP Caller assegnerà automaticamente i nomi delle variabili.
Il seguente esempio mostra come caricare un file CSV (valori separati da virgola) con più numeri in una campagna dinamica già attiva.
Innanzitutto, deve essere preparato un file CSV che contenga i nuovi numeri da aggiungere alla campagna. Ecco un esempio di file CSV con 5 numeri e i relativi valori delle variabili:
5550001,John,199
5550002,Mary,299
5550003,Susan,149
5550004,James,300
5550005,Walter,42
In secondo luogo, il file CSV preparato può essere caricato su SIP Caller con il seguente comando:
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'
Il seguente esempio mostra come eliminare i numeri di una campagna, specificando l'ID restituito quando si ottiene l'elenco:
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'
I dati inviati permettono di specificare più ID di numeri. Questi ID NON sono i numeri. Dovrai prima elencare i numeri della campagna, per ottenere l'ID di ciascun record, e poi eliminarli.
Possono essere eliminati solo i numeri nei seguenti stati:
Il seguente esempio mostra come ottenere i dettagli delle chiamate di una campagna:
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'
La richiesta permette di specificare filtri, ordinamento e intervallo:
Il seguente esempio mostra come ottenere i dettagli dei numeri di una campagna:
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'
La richiesta permette di specificare filtri, ordinamento e intervallo: