
Black lists and contact lists can now be fully managed through the SIP Caller REST API. You can create, edit, and delete them, and add or remove their numbers, directly from your own systems.
Until now, both were only available from the Web Console under Settings. In August, the Create and Update Campaign endpoints let you automate the whole campaign lifecycle, but the lists those campaigns depend on still had to be maintained by hand. This release fills that gap.
Black lists hold the numbers that should never be called, such as customers who opted out, or numbers flagged by your compliance team. Any campaign can reference one or more black lists.
The new endpoints let you:
For example, adding a number to a black list the moment a customer asks not to be contacted again takes a single request:
curl -i \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer API_KEY_TOKEN' \
--request POST \
--data-raw '[{"number":"+18005551234","description":"Does not want to be called"}]' \
'https://api.sipcaller.com/v1/accounts/ACCOUNT_ID/blackLists/BLACK_LIST_ID/numbers'Contact lists are reusable lists of numbers to call. Each number can carry its own variable values, such as a customer name, a due balance, or an appointment date, which you can use to play personalized prompts on every call. Contact lists require the Professional or Enterprise Edition.
The same set of operations is available for contact lists:
varNames)Here is how to add a number along with its customer name and due balance:
curl -i \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer API_KEY_TOKEN' \
--request POST \
--data-raw '[{"number":"+18005551239","varValues":["Peter Jackson","$367.75"]}]' \
'https://api.sipcaller.com/v1/accounts/ACCOUNT_ID/contactLists/CONTACT_LIST_ID/numbers?varNames=["Customer Name","Due Balance"]'The values in varValues follow the same order as the variable names given in varNames.
A contact list is only useful once its numbers reach a campaign. A new endpoint does the same thing as the Add numbers from an existing contact list option in the console: it copies every number in a contact list, along with its variable values, into a campaign in a single request.
curl -i \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer API_KEY_TOKEN' \
--request POST \
--data-raw '{"contactListId":"CONTACT_LIST_ID"}' \
'https://api.sipcaller.com/v1/accounts/ACCOUNT_ID/campaigns/CAMPAIGN_ID/numbers/copyFromContactList'The response tells you how many numbers the contact list had, how many were added to the campaign, and how many were skipped as duplicates:
{
"totalNumbers": 2000,
"numbersAdded": 2000,
"numbersSkipped": 0
}This endpoint follows the same rules as the other methods to add numbers through the API:
Draft state. Dynamic campaigns can also keep receiving them once they're Active or Paused.Draft campaign, the same number with the same variable values is only added once. The same number with different variable values is added, since it's assumed to carry a different message.Active or Paused dynamic campaign, duplicates are allowed. These campaigns are often long-running, so a repeated number is treated as a new call, for example to reach the same customer again.No more exporting a list only to re-upload it as a CSV file. Maintain your contact list once, and load it into as many campaigns as you need.
| Operation | Black Lists | Contact Lists |
|---|---|---|
| List | GET /blackLists | GET /contactLists |
| Create | POST /blackLists | POST /contactLists |
| Edit | PUT /blackLists/{id} | PUT /contactLists/{id} |
| Delete | DELETE /blackLists | DELETE /contactLists |
| List numbers | GET /blackLists/{id}/numbers | GET /contactLists/{id}/numbers |
| Add numbers | POST /blackLists/{id}/numbers | POST /contactLists/{id}/numbers |
| Delete numbers | DELETE /blackLists/{id}/numbers | DELETE /contactLists/{id}/numbers |
| Add to a campaign | — | POST /campaigns/{id}/numbers/copyFromContactList |
All paths are relative to https://api.sipcaller.com/v1/accounts/ACCOUNT_ID.
Edit requests must include a lastUpdatedAt field containing the updatedAt value returned the last time you retrieved, created, or edited the list. This prevents one process from silently overwriting changes made by another, for example when a team member renames a list in the console while an integration is updating it.
With these endpoints, the lists behind your campaigns can stay in sync with the systems where your data actually lives:
A collections team runs a nightly job that:
blackListIds.copyFromContactList.Every step, from the lists to the calls, now runs through the API, with no manual step in the console.
The API documentation now covers all the new Black List and Contact List endpoints, including adding numbers from a contact list to a campaign, with full request and response examples for each one.
👉 Log in to your SIP Caller console and try the new API methods.
👉 Need help integrating? Contact our team and we'll be happy to assist you.

This release brings three meaningful improvements to SIP Caller. The list of campaigns in the Dashboard, Campaigns menu, and Reports menu now shows a detailed status icon explaining exactly why an active campaign isn't making calls. Campaigns can now also be assigned a Priority (High, Normal, or Low), so your most important campaigns get access to calling capacity first. And thanks to internal architectural improvements, campaigns now start making calls within 5 seconds of activation, down from up to 30 seconds previously.

OpenAI and Grok are now available as AI Providers in SIP Caller, joining our existing support for Microsoft Azure AI and Google Gemini AI. Both new providers can power AI Conversational Agents and AI-Based Voicemail Detection across your outbound campaigns. With four AI providers to choose from, you can align SIP Caller with the AI provider agreements your company already relies on elsewhere, or simply pick the best option available on the market for your use case.

Two new REST API methods just landed in SIP Caller: the ability to create and update campaigns directly from your own systems. Combined with our existing endpoints to duplicate campaigns, change their state (activate, pause, resume, or cancel), and add numbers to dynamic campaigns, these new methods complete full campaign lifecycle management through the API.