SIP Caller propose une API REST qui permet aux clients de SIP Caller d’effectuer différentes opérations sur leur compte SIP Caller depuis des programmes externes. Ainsi, de nombreuses intégrations personnalisées utiles peuvent être développées entre SIP Caller et d’autres systèmes.
Pour utiliser l’API REST, un client SIP Caller doit d’abord créer une Clé API, comme expliqué dans cette section, afin d’obtenir un API_KEY_TOKEN qui sera utilisé dans les exemples suivants pour authentifier les appels à l’API REST de SIP Caller depuis un programme externe.
La valeur ACCOUNT_ID du client SIP Caller, qui sera utilisée dans les exemples suivants, peut être obtenue depuis la Console Web, comme indiqué ci-dessous :
La valeur CAMPAIGN_ID de SIP Caller, qui sera utilisée dans les exemples suivants, peut également être obtenue depuis la Console Web, comme indiqué ci-dessous :

L’exemple suivant montre comment lister les campagnes :
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 requête permet de spécifier des filtres, un tri et une plage :
L’exemple suivant montre comment créer une nouvelle campagne :
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'
Le corps de la requête accepte les champs suivants :
numberProvisioning – Valeurs possibles : Dynamic, StaticnumberSelection – Valeurs possibles : Fifo, LifonumberPriority – Valeurs possibles : RetryPending, NotContactedringTimeout et dans chaque élément de retryIntervals, le champ unit peut être l’une des valeurs suivantes : Seconds, Minutes, Hours, DayscallHandling, le champ $t peut être l’une des valeurs suivantes : Callflow, AiAgentanswerTypeDetector, le champ $t peut être l’une des valeurs suivantes : Disabled, Standard, AmdAgentunknownAnswerTreatment – Valeurs possibles : Human, VoicemailmessageForVoicemail, le champ $t peut être l’une des valeurs suivantes : Never, OnFirstDetection, OnLastAttempt, OnEveryAttemptL’exemple suivant montre comment modifier une campagne existante, identifiée par CAMPAIGN_ID. Le corps de la requête accepte les mêmes champs que lors de la création d’une campagne, mais doit également inclure le champ id avec l’ID de la campagne :
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'
L’exemple suivant montre comment dupliquer une campagne existante :
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"]}'
Le paramètre de chaîne de requête newCampaignName est facultatif, et s’il n’est pas fourni, la nouvelle campagne sera nommée comme la campagne d’origine avec un numéro incrémental en suffixe. Le paramètre de chaîne de requête includeNumbers est également facultatif, et s’il n’est pas fourni, la nouvelle campagne inclura tous les numéros. Si includeNumbers est défini sur true, alors le paramètre de chaîne de requête numbersFilter peut être utilisé pour spécifier quels numéros de la campagne d’origine doivent être inclus dans la nouvelle campagne. Le statut peut inclure l’une des valeurs suivantes :
L’exemple suivant montre comment changer l’état d’une campagne :
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'
Le corps de la requête doit être le nouvel état entre guillemets. Les valeurs possibles sont les suivantes :
Vous pouvez utiliser deux points de terminaison API différents pour supprimer des campagnes, selon que vous souhaitez supprimer une ou plusieurs campagnes :
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'
Veuillez noter que seules les campagnes dans les états suivants peuvent être supprimées :
L’exemple suivant montre comment lister les numéros de campagne :
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 requête permet de spécifier des filtres, un tri et une plage :
L’exemple suivant montre comment ajouter un nouveau numéro à une campagne dynamique déjà active :
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'
L’exemple suivant montre comment ajouter un nouveau numéro à une campagne dynamique déjà active, en incluant des valeurs de variables qui peuvent être utilisées par le flux d’appel de la campagne :
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"]'
Le paramètre de chaîne de requête varNames est facultatif, et s’il n’est pas fourni, SIP Caller assignera automatiquement les noms de variables.
L’exemple suivant montre comment téléverser un fichier CSV (valeurs séparées par des virgules) contenant plusieurs numéros vers une campagne dynamique déjà active.
Tout d’abord, un fichier CSV doit être préparé contenant les nouveaux numéros à ajouter à la campagne. Voici un exemple de fichier CSV avec 5 numéros et leurs valeurs de variables correspondantes :
5550001,John,199
5550002,Mary,299
5550003,Susan,149
5550004,James,300
5550005,Walter,42
Ensuite, le fichier CSV préparé peut être téléversé vers SIP Caller avec la commande suivante :
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'
L’exemple suivant montre comment supprimer des numéros de campagne, en spécifiant l’ID renvoyé lors de la récupération de la liste :
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'
Les données envoyées permettent de spécifier plusieurs ID de numéros. Ces ID ne sont PAS les numéros. Vous devrez d’abord lister les numéros de la campagne, pour obtenir l’ID de chaque enregistrement, puis les supprimer.
Seuls les numéros dans les états suivants peuvent être supprimés :
L’exemple suivant montre comment obtenir les détails d’appel d’une campagne :
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 requête permet de spécifier des filtres, un tri et une plage :
L’exemple suivant montre comment obtenir les détails de numéro d’une campagne :
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 requête permet de spécifier des filtres, un tri et une plage :