O SIP Caller oferece uma API REST que permite aos clientes do SIP Caller realizar diferentes operações na sua conta SIP Caller a partir de programas externos. Dessa forma, muitas integrações personalizadas úteis podem ser desenvolvidas entre o SIP Caller e outros sistemas.
Para usar a API REST, um cliente do SIP Caller deve primeiro criar uma Chave de API, conforme explicado nesta seção, para obter um API_KEY_TOKEN que será usado nos exemplos a seguir para autenticar chamadas à API REST do SIP Caller a partir de um programa externo.
O valor ACCOUNT_ID do cliente SIP Caller, que será usado nos exemplos a seguir, pode ser obtido no Console Web, conforme mostrado abaixo:
O valor CAMPAIGN_ID do SIP Caller, que será usado nos exemplos a seguir, também pode ser obtido no Console Web, conforme mostrado abaixo:

O exemplo a seguir mostra como listar campanhas:
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'
A solicitação permite especificar filtros, ordenação e intervalo:
O exemplo a seguir mostra como criar uma nova campanha:
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'
O corpo da solicitação aceita os seguintes campos:
numberProvisioning – Valores possíveis: Dynamic, StaticnumberSelection – Valores possíveis: Fifo, LifonumberPriority – Valores possíveis: RetryPending, NotContactedringTimeout e de cada item de retryIntervals, o campo unit pode ser um dos seguintes: Seconds, Minutes, Hours, DayscallHandling, o campo $t pode ser um dos seguintes: Callflow, AiAgentanswerTypeDetector, o campo $t pode ser um dos seguintes: Disabled, Standard, AmdAgentunknownAnswerTreatment – Valores possíveis: Human, VoicemailmessageForVoicemail, o campo $t pode ser um dos seguintes: Never, OnFirstDetection, OnLastAttempt, OnEveryAttemptO exemplo a seguir mostra como editar uma campanha existente, identificada pelo CAMPAIGN_ID. O corpo da solicitação aceita os mesmos campos usados ao criar uma campanha, mas também deve incluir o campo id com o ID da campanha:
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'
O exemplo a seguir mostra como duplicar uma campanha já existente:
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"]}'
O parâmetro de query-string newCampaignName é opcional, e se não for fornecido, a nova campanha será nomeada como a campanha original com um número incremental como sufixo. O parâmetro de query-string includeNumbers também é opcional, e se não for fornecido, a nova campanha incluirá todos os números. Se includeNumbers for definido como true, então o parâmetro de query-string numbersFilter pode ser usado para especificar quais números da campanha original devem ser incluídos na nova campanha. O status pode incluir qualquer um dos seguintes valores:
O exemplo a seguir mostra como alterar o estado de uma campanha:
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'
O corpo da solicitação deve ser o novo estado entre aspas. Os valores possíveis são os seguintes:
Você pode usar dois endpoints de API diferentes para excluir campanhas, dependendo se deseja excluir uma ou várias campanhas:
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'
Observe que somente campanhas nos seguintes estados podem ser excluídas:
O exemplo a seguir mostra como listar os números de uma campanha:
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'
A solicitação permite especificar filtros, ordenação e intervalo:
O exemplo a seguir mostra como adicionar um novo número a uma campanha dinâmica que já está ativa:
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'
O exemplo a seguir mostra como adicionar um novo número a uma campanha dinâmica que já está ativa, incluindo valores de variáveis que podem ser usados pelo fluxo de chamada da campanha:
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"]'
O parâmetro de query-string varNames é opcional, e se não for fornecido, o SIP Caller atribuirá automaticamente os nomes das variáveis.
O exemplo a seguir mostra como enviar um arquivo CSV (valores separados por vírgula) com vários números para uma campanha dinâmica que já está ativa.
Primeiro, é necessário preparar um arquivo CSV contendo os novos números a serem adicionados à campanha. Aqui está um exemplo de um arquivo CSV com 5 números e seus respectivos valores de variáveis:
5550001,John,199
5550002,Mary,299
5550003,Susan,149
5550004,James,300
5550005,Walter,42
Em seguida, o arquivo CSV preparado pode ser enviado ao SIP Caller com o seguinte 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'
O exemplo a seguir mostra como excluir números de uma campanha, especificando o ID retornado ao obter a lista:
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'
Os dados enviados permitem especificar vários IDs de números. Esses IDs NÃO são os números. Você precisará primeiro listar os números da campanha, para obter o ID de cada registro, e depois excluí-los.
Somente números nos seguintes status podem ser excluídos:
O exemplo a seguir mostra como obter os detalhes de chamadas de uma campanha:
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'
A solicitação permite especificar filtros, ordenação e intervalo:
O exemplo a seguir mostra como obter os detalhes de números de uma campanha:
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'
A solicitação permite especificar filtros, ordenação e intervalo: