Skip to content

Click2CallAddBlacklistPhone

POST click2call/blacklist

Adds a number to the do-not-call list of the brand. Once listed, no manager can dial it: the check runs in Click2CallStartCall before the provider is contacted, so a blocked number costs neither a call nor a cent.

source is what makes the list auditable later: a regulator complaint and a customer asking not to be called look the same in a list of numbers, but they are very different when someone asks why a number is blocked.

Access Control

Allowed roles: admin, leader, manager. The entry belongs to the brand of the caller.

Request

POST https://{broker_domain}/click2call/blacklist
{
  "phone": "+380 95 000 00 00",
  "source": "CUSTOMER_REQUEST",
  "reason": "Customer asked not to be contacted"
}
{
  "command": "Click2CallAddBlacklistPhone",
  "extID": "1",
  "data": {
    "phone": "+380 95 000 00 00",
    "source": "CUSTOMER_REQUEST",
    "reason": "Customer asked not to be contacted"
  }
}
const res = await platform.Click2CallAddBlacklistPhone({
  phone: "+380 95 000 00 00",
  source: "CUSTOMER_REQUEST",
  reason: "Customer asked not to be contacted"
});

Request Data

Field Type Required Description
phone string Yes Number in any human format; stored as digits only
source enum No Where the block came from: MANUAL, IMPORT, REGULATOR, CUSTOMER_REQUEST, SYSTEM. Default MANUAL
reason string No Free-form explanation, up to 512 characters
expiresAt string No YYYY-MM-DD HH:mm:ss. Empty means the block never expires

Behavior

  • The number is stored as digits without separators, exactly as it is normalized at dial time — otherwise +38 095 … and 38095… would be two different entries and only one of them would block.
  • Country and dial code are resolved from the number, so the list can be reported on by destination.
  • Blacklisting an already listed number updates the existing entry instead of creating a second one.
  • expiresAt exists for temporary blocks — "do not call for a month" is a real request, and a permanent entry would quietly lose a lead forever.

Response Data

The entry is returned flat. created: false means an existing entry was updated, restored: true that a previously removed entry came back.

{
  "id": 31,
  "brand": "default",
  "phone": "380950000000",
  "countryCode": "380",
  "countryIso": "UA",
  "source": "CUSTOMER_REQUEST",
  "reason": "Customer asked not to be contacted",
  "expiresAt": null,
  "createdAt": "2026-08-24 13:44:02",
  "created": true,
  "restored": false
}

Errors

Code Error Description
400 VALIDATION_ERROR Number is too short to be a phone number
500 INTERNAL_ERROR Storage error