Документация по API интеграции

API uCaller - позволяет осуществлять запросы на наши сервера для инициализации различных методов, например для запроса на осуществление авторизации. Использовать наше API может каждый клиент uCaller, прошедший регистрацию.

1.0 Определение понятий

2.1 Сервис - необходим для работы с нашим API. Сервис создается самостоятельно в Личном кабинете в разделе Мои сервисы. Сервис позволяет просматривать детальную статистику авторизаций и проивзодить тонкие настройки для работы с API. Каждый сервис имеет уникальный идентификатор (ID сервиса) и специальный, случайно сгенерированный, секретный ключ.

2.2 Авторизация - Мы называем авторизацией все инициализируемые звонки вашим клиентам с помощью API метода initCall.

2.3 ID сервиса/виджета - Специальный и уникальный идентификатор, который закреплен за каждым сервисом/виджетом. Выдается автоматически при создании нового сервиса/виджета в Личном кабинете uCaller.

2.4 Секретный ключ - Специальный, уникальный и случайно сгенерированный набор 32 символов. Позволяет обращаться к нашему API. В случае, если секретный ключ скомпрометирован, вы можете в любое время сгенерировать новый секретный ключ в настройках сервиса/виджета в Личном кабинете.

2.5 Идемпотентность - специально сгенерированный клиентом уникальный идентификатор, например UUID, который передается (опционально) вместе с запросом на инициализацию авторизации в методе initCall. Идемпотетность предотвращает повторное списание средств с баланса клиента. В случае переданного ключа идемпотентности, наше API, при повторном обращении к нему с тем же ключом идемпотентности в методе initCall, вернет тот же самый результат, что был получен при первом обращении, без повторной инициализации авторизации и списания средств.

2.6 Клиент - пользователь сервиса uCaller, прошедший регистрацию.

2.7 Метод API - специальная функция API, предусмотренная uCaller, которая выполняет определенную работу. Например метод initCall инициализирует авторизацию.

2.8 Публичный ключ виджета - Автоматически и случайно сгенерированный ключ, который позволяет инициировать добавление вашего виджета на странице вашего приложения. `Публичный` озанчает, что его увидят все посетители и пользователи вашего приложения.

2.0 Что требуется для работы с API?

Для работы с API требуется пройти регистрацию, после чего необходимо войти в личный кабинет. Затем перейти на вкладку Мои сервисы, после чего создать новый сервис, или перейти к управлению над уже ранее созданным.

Для работы с API вам потребуется ID сервиса и Секретный ключ сервиса.
Это все, что вам потребуется для начала работы.


3.1 Метод initCall

Данный метод позволяет инициализировать авторизацию для пользователя вашего приложения.

URL обращения для инициализации метода: https://api.ucaller.ru/v1.0/initCall
Способ передачи параметров: GET
* - обязательные параметры, остальные опционально

Параметр Значение Описание
service_id * Цифровое значение ID вами созданного сервиса, более подробное описание в Определение понятий -> 2.3
key * Строка, 32 символа Секретный ключ вашего сервиса, более подробное описание в Определение понятий -> 2.4
phone * Цифровое значение
Без + с кодом страны
Номер телефона вашего пользователя, которому будет совершен звонок с авторизацией
code Цифровое значение
4 цифры
На эти 4 цифры будет заканчиваться исходящий от нас звонок к вашему пользователю.
Если `code` не передан, он будет автоматически сгенерирован нами
client Набор символов
До 64 символов
Можете передать информацию о вашем пользователе, например его никнейм, E-mail и так далее. В статистике сервиса сможете найти ту или иную авторизацию по этому параметру.
unique Набор символов
До 64 символов
Для активации идемпотентности запроса. Рекомендуем использовать V4 UUID.
Более подробное описание в Определение понятий -> 2.5


	$service_id = 1692;
	$secret_key = "rjE9LoomXNr5SXaAU0OUSjeG69rsEMNV";
	$client_phone = 79991234567;
	$code = 7777;

	$request = file_get_contents('https://api.ucaller.ru/v1.0/initCall?service_id='.$service_id.'&key='.$secret_key.'&phone='.$client_phone.'&code='.$code);
	$request = json_decode($request, true);

	if($request['status'] == true) { // Подробнее о том, какой ответ мы возврашаем в случае успеха, мы описываем ниже
		/*
		Авторизация успешно инициализирована
		Мы совершаем звонок на номер +79991234567
		Последние четыре цифры номера, с которого мы совершаем звонок, заканчиваются на 7777
		*/
	}
	
Пример нашего ответа в формате JSON:


	{
		"status": true, // true в случае успеха, false в случае неудачи
		"ucaller_id": 103000, // уникальный ID в системе uCaller, который позволит проверять статус и инициализировать метод initRepeat
		"phone": 79991234567, // номер телефона, куда мы совершили звонок
		"code": 7777, // код, который будет последними цифрами в номере телефона
		"client": "nickname", // идентификатор пользователя переданный клиентом
		"unique_request_id": "f32d7ab0-2695-44ee-a20c-a34262a06b90", // появляется только если вами был передан параметр `unique`
		"exists": true // появляется при переданном параметре `unique`, если такой запрос уже был инициализирован ранее
	}
	

3.2 Метод initRepeat

В случае, если ваш пользователь не получает звонок инициализированный методом initCall, вы можете два раза и совершенно бесплатно инициализировать повторную авторизацию по uCaller ID, который вы получаете в ответе метода initCall. Повторную авторизацию можно запросить только в течение пяти минут с момента выполнения основной авторизации методом initCall.
Все данные, например `code` или `phone`, совпадают с теми же, которые были переданы в первом запросе initCall.

URL обращения для инициализации метода: https://api.ucaller.ru/v1.0/initRepeat
Способ передачи параметров: GET
* - обязательные параметры, остальные опционально

Параметр Значение Описание
service_id * Цифровое значение ID вами созданного сервиса, более подробное описание в Определение понятий -> 2.3
key * Строка, 32 символа Секретный ключ вашего сервиса, более подробное описание в Определение понятий -> 2.4
uid * Цифровое значение uCaller ID переданный нами в запросе initCall


	$service_id = 1692;
	$secret_key = "rjE9LoomXNr5SXaAU0OUSjeG69rsEMNV";
	$ucaller_id = 103000;

	$request = file_get_contents('https://api.ucaller.ru/v1.0/initRepeat?service_id='.$service_id.'&key='.$secret_key.'&uid='.$ucaller_id);
	$request = json_decode($request, true);

	if($request['status'] == true) { // Подробнее о том, какой ответ мы возврашаем в случае успеха, мы описываем ниже
		/*
		Повторная бесплатная авторизация успешно инициализирована
		*/
	}
	
Пример нашего ответа в формате JSON:
Ответ будет точно таким же, который был при первой инициализации метода initCall, за исключением одного параметра.


	{
  	"status": true,
  	"ucaller_id": 103000,
  	"phone": 79991234567,
  	"code": 7777,
  	"client": "nickname",
  	"unique_request_id": "f32d7ab0-2695-44ee-a20c-a34262a06b90",
  	"exists": true
  	"free_repeated": true // показывает, что осуществлена повторная авторизация
	}
	

3.3 Метод getInfo

Этот метод возвращает развернутую информацию по уже осуществленному uCaller ID.

URL обращения для инициализации метода: https://api.ucaller.ru/v1.0/getInfo
Способ передачи параметров: GET
* - обязательные параметры, остальные опционально

Параметр Значение Описание
service_id * Цифровое значение ID вами созданного сервиса, более подробное описание в Определение понятий -> 2.3
key * Строка, 32 символа Секретный ключ вашего сервиса, более подробное описание в Определение понятий -> 2.4
uid * Цифровое значение uCaller ID переданный нами в запросе initCall


	$service_id = 1692;
	$secret_key = "rjE9LoomXNr5SXaAU0OUSjeG69rsEMNV";
	$ucaller_id = 103000;

	$request = file_get_contents('https://api.ucaller.ru/v1.0/getInfo?service_id='.$service_id.'&key='.$secret_key.'&uid='.$ucaller_id);
	$request = json_decode($request, true);

	if($request['status'] == true) { // Подробнее о том, какой ответ мы возврашаем в случае успеха, мы описываем ниже
		/*
		Получили информацию по uCaller ID
		*/
	}
	
Пример нашего ответа в формате JSON:

	{
	  	"status": true, // true в случае успеха, false в случае неудачи
		"ucaller_id": 103000, // запрошенный uCaller ID
		"init_time": 1556617525, // время, когда была инициализирована авторизация
		"is_repeated": false, // является ли этот uCaller ID повтором (initRepeat), если да, будет добавлен first_ucaller_id с первым uCaller ID этой цепочки
		"repeatable": false, // возможно ли инициализировать бесплатные повторы (initRepeat)
		"repeated_ucaller_ids": [103001, 103002], // цепочка  uCaller ID инициализированных повторов (initRepeat)
		"unique": "f32d7ab0-2695-44ee-a20c-a34262a06b90", // ключ идемпотентности (если был передан)
		"client": "nickname", // идентификатор пользователя переданный клиентом (если был передан)
		"phone": 79991234567, // номер телефона пользователя, куда мы совершали звонок
		"code": 7777, // код авторизации
		"country_code": "RU", // ISO код страны пользователя
		"country_image": "https://static.ucaller.ru/flag/ru.svg", // изображение флага страны пользователя
		"phone_info": [ // информация по телефону, информация может отличаться от примера
			{
            "operator": "МТС",  // Оператор связи
            "region": "Республика Татарстан",   // регион субъеккта Российской федерации
            "mnp": "Мегафон"   // Если у номера был сменен оператор - MNP покажет нового оператора
		    }
		],
		"cost": 0.1 // сколько стоила эта авторизация клиенту
	}
	

3.4 Метод getBalance

Этот метод возвращает информацию по остаточному балансу.

URL обращения для инициализации метода: https://api.ucaller.ru/v1.0/getBalance
Способ передачи параметров: GET
* - обязательные параметры, остальные опционально

Параметр Значение Описание
service_id * Цифровое значение ID вами созданного сервиса, более подробное описание в Определение понятий -> 2.3
key * Строка, 32 символа Секретный ключ вашего сервиса, более подробное описание в Определение понятий -> 2.4


	$service_id = 1692;
	$secret_key = "rjE9LoomXNr5SXaAU0OUSjeG69rsEMNV";

	$request = file_get_contents('https://api.ucaller.ru/v1.0/getBalance?service_id='.$service_id.'&key='.$secret_key);
	$request = json_decode($request, true);

	if($request['status'] == true) { // Подробнее о том, какой ответ мы возврашаем в случае успеха, мы описываем ниже
		/*
		Информация по балансу получена успешно
		*/
	}
	
Пример нашего ответа в формате JSON:

	{
	    "status": true, // true в случае успеха, false в случае неудачи
	    "rub_balance": 84.6, // Остаточный баланс на рублевом счете аккаунта
	    "bonus_balance": 0, // Остаточный бонусный баланс
	    "tariff": "startup", // Кодовое значение вашего тарифного плана
	    "tariff_name": "Старт-ап" // Название тарифного плана
	}
	

3.5 Метод getService

Этот метод возвращает информацию по сервису.

URL обращения для инициализации метода: https://api.ucaller.ru/v1.0/getService
Способ передачи параметров: GET
* - обязательные параметры, остальные опционально

Параметр Значение Описание
service_id * Цифровое значение ID вами созданного сервиса, более подробное описание в Определение понятий -> 2.3
key * Строка, 32 символа Секретный ключ вашего сервиса, более подробное описание в Определение понятий -> 2.4


	$service_id = 1692;
	$secret_key = "rjE9LoomXNr5SXaAU0OUSjeG69rsEMNV";

	$request = file_get_contents('https://api.ucaller.ru/v1.0/getService?service_id='.$service_id.'&key='.$secret_key);
	$request = json_decode($request, true);

	if($request['status'] == true) { // Подробнее о том, какой ответ мы возврашаем в случае успеха, мы описываем ниже
		/*
		Информация по сервису получена успешно
		*/
	}
	
Пример нашего ответа в формате JSON:

	{
	    "status": true, // true в случае успеха, false в случае неудачи
	    "service_status": 1692, // ID сервиса
	    "name": "ВКонтакте", // Название сервиса
	    "creation_time": 1556064401, // Время создания сервиса в unix формате
	    "last_request": 1556707453, // Время последнего не кэшированного обращения к API сервиса в unix формате
	    "owner": "[email protected]", // E-mail адрес владельца сервиса
	    "use_direction": "ВКонтакте приложение", // Информация о том, где будет использоваться сервис
	    "now_test": true, // Состояние тестового режима на текущий момент
	    "test_info": {
	        "test_requests": 89, // Оставшееся количество бесплатных тестовых обращений
	        "verified_phone": 37253058686 // Верифицированный номер телефона для тестовых обращений
	    }
	}
	


4.0 Описание uCaller Widget


Специально созданный нами виджет, который позволяет просто и без особых усилий подключить верификацию мобильного номера телефона в требуемом месте вашего приложения, на данный момент виджет умеет:

  • Проверка номера телефона с ручным вводом номера телефона пользователем (пример в GIF выше)
  • Повторный запрос звонка на введенный пользователем номер телефона, если первый не пришел
  • Вы автоматически указываете пользователю номер телефона, который нужено будет подтвердить
    Пользователь не сможет изменить его, будет виден весь номер, например 79991234567
  • Вы автоматически указываете пользователю номер телефона, который нужено будет подтвердить
    Пользователь не сможет изменить его, будет видно только 4 последних цифры *******4567
Внимание! Мы списываем средства с баланса только за авторизации виджета, которые вы проверите методом Widget API verifyResponse.
Например ваш пользователь перешел на страницу вашего сайта - "Регистрация", у вас там установлен наш виджет. Пользователь может ввести свой номер, и даже подтвердить его, за это мы не списываем с вас деньги. Деньги будут списаны только после того, как вы проверите полученное от нас уникальное значение, которое будет добавлено в вашу регистрационную форму под значением `ucaller-response`. Это значение вы должны будете отправить запросом в наше uCaller Widget API, методом verifyResponse, а мы вернем вам всю необходимую вам информацию, например номер телефона пользователя, IP и прочие значения, что будет означать, что верификация номера телефона этим пользователем пройдена успешно (на этом этапе средства с вашего баланса будут списаны).

4.1 Начало работы с uCaller Widget

Для начала работы с uCaller Widget требуется пройти регистрацию, после чего необходимо войти в личный кабинет. Затем перейти на вкладку Мои виджеты, после чего создать новый виджет, или перейти к управлению над уже ранее созданным.

Для работы с виджетом вам потребуется Публичный ключ виджета и Секретный ключ виджета.

1. Добавьте следующий скрипт до закрывающего тега </head> вашего сайта


	<script src="https://widget.ucaller.ru/widget.min.js"></script>

2. В место, где требуется выводить виджет, вставьте следующий код


	<div data-ucaller="публичный ключ" data-hash='<?php echo $hash; ?>'></div>
Для успешной инициализации виджета, требуется собрать $hash, который обеспечит безопасность передаваемых значений, сделаем это до этого HTML кода, на примере PHP реализации:


	$secret_key = "Tmm5ZXM11vPmJp1OiuaY7gatAT5ggOl1"; // Секретный ключ вашего виджета
	$public_key = "mnM3717euMAGCphIeikXtsmeet6oTK97"; // Публичный ключ вашего виджета
	$phone_number = ""; // Если требуется указать номер телефона по-умолчанию (открытый или закрытый)

	$hash = hash("sha256", $public_key.$phone_number.$secret_key);
	
Теперь наш виджет будет инициализирован и готов к работе.
Разберем, какие атрибуты может принимать HTML код из второго пункта:

АтрибутОписание
data-ucallerОбязательный атрибут, содержащий в себе публичный ключ виджета
data-hashОбязательный атрибут, собирается методом конкатенации в хэш sha-256
публичный ключ + номер телефона или идентификатор по-умолчанию (если есть) + секретный ключ, пример реализации на языке PHP смотрите выше
data-phoneНомер телефона по-умолчанию, пользователь не сможет изменить его
Формат номера 79991234567, номер будет виден пользователю в открытую
data-phone-idИдентификатор номера пользователя формата 4367a01f726e4b81, который можно получить через методы initCall и verifyResponse
В таком случае не передается data-phone, и номер будет скрыт, пример +*******4567

Если вы не хотите указывать номер телефона по-умолчанию, то атрибуты data-phone и data-phone-id добавлять не нужно.
Если data-phone или data-phone-id заполнены, то при формировании подписи между публичным и секретным ключами, используется либо значение из data-phone, либо из data-phone-id.

Если вы передаете нам и data-phone и data-phone-id, то приоритет будет у data-phone, и именно его мы будем ожидать в подписи data-hash.

Если вам необходимо, чтобы пользователь сам ввел свой номер телефона, то передавать data-phone и data-phone-id не нужно, подпись будет фомироваться только используя значения публичный ключ + секретный ключ.

4.2 Различные примеры реализации виджета на странице

Первый пример инициализирует виджет с ручным вводом номера телефона пользователем.



	<?php
		$widget_id = 998; // Идентификатор виджета, требуется для обращения к Widget API
		$secret_key = "Tmm5ZXM11vPmJp1OiuaY7gatAT5ggOl1"; // Секретный ключ виджета
		$public_key = "mnM3717euMAGCphIeikXtsmeet6oTK97"; // Публичный ключ виджета
		$hash = hash("sha256", $public_key.$secret_key);

		if($_POST["register"]) {
			if($_POST["ucaller-response"]) { // После успешной верификации номера телефона в виджете, мы автоматически добавляем поле в вашу форму с именем `ucaller-response`
				// Описание взаимодействия с Widget API описано в пункте 5.1
				// Здесь мы проверяем, действительно ли пользователь прошел верификацию номера телефона
				$response = file_get_contents("https://api.ucaller.ru/v1.0/verifyResponse?service_id=".$widget_id."&key=".$secret_key."&response=".$_POST["ucaller-response"]);
				$response = json_decode($response, true);
				if($response["status"]) {
					// Все верно! Этот пользователь проходил верификацию номера
					$phone_number = $response["phone"]; // Может получить номер телефона пользователя
					$phone_id = $response["phone"]; // Может получить идентификатор номера телефона
					// Регистрируем пользователя!
					echo "Вы успешно зарегистрированы!";
				}
				else echo "Нет, вы передали неверные значения, попробуйте повторить попытку верификации номера в виджете";
			}
			else echo "Вам необходимо пройти проверку номера телефона";
		}
	?>

	<html>
		<head>
			<title>Регистрация на сайте</title>
			<script src="https://widget.ucaller.ru/widget.min.js"></script>
		</head>
		<body >
			<form method="post">
			    Ваше имя:
			    <input type="text" name="some-input" />
			    Подтвердите номер телефона:
			    <div data-hash='<?php echo $hash; ?>' data-ucaller="<?php echo $public_key; ?>"></div>
			    Нажмите на кнопку:
			    <input type="submit" name="register" value="Регистрация" />
			</form>
		</body>
	</html>


Второй пример инициализирует виджет с видимым номером телефона, заданным по-умолчанию без возможности его сменить.



	<?php
		$widget_id = 998; // Идентификатор виджета, требуется для обращения к Widget API
		$secret_key = "Tmm5ZXM11vPmJp1OiuaY7gatAT5ggOl1"; // Секретный ключ виджета
        $public_key = "mnM3717euMAGCphIeikXtsmeet6oTK97"; // Публичный ключ виджета
        $phone_number = "79991234567"; // Номер телефона без + в международном формате
        $hash = hash("sha256", $public_key.$phone_number.$secret_key);

		if($_POST["register"]) {
			if($_POST["ucaller-response"]) { // После успешной верификации номера телефона в виджете, мы автоматически добавляем поле в вашу форму с именем `ucaller-response`
				// Описание взаимодействия с Widget API описано в пункте 5.1
				// Здесь мы проверяем, действительно ли пользователь прошел верификацию номера телефона
				$response = file_get_contents("https://api.ucaller.ru/v1.0/verifyResponse?service_id=".$widget_id."&key=".$secret_key."&response=".$_POST["ucaller-response"]);
				$response = json_decode($response, true);
				if($response["status"]) {
					// Все верно! Этот пользователь проходил верификацию номера
					$phone_number = $response["phone"]; // Может получить номер телефона пользователя
					$phone_id = $response["phone"]; // Может получить идентификатор номера телефона
					// Регистрируем пользователя!
					echo "Вы успешно зарегистрированы!";
				}
				else echo "Нет, вы передали неверные значения, попробуйте повторить попытку верификации номера в виджете";
			}
			else echo "Вам необходимо пройти проверку номера телефона";
		}
	?>

	<html>
		<head>
			<title>Регистрация на сайте</title>
			<script src="https://widget.ucaller.ru/widget.min.js"></script>
		</head>
		<body >
			<form method="post">
			    Ваше имя:
			    <input type="text" name="some-input" />
			    Подтвердите номер телефона:
			    <div data-hash='<?php echo $hash; ?>' data-phone='<?php echo $phone_number; ?>' data-ucaller="<?php echo $public_key; ?>"></div>
			    Нажмите на кнопку:
			    <input type="submit" name="register" value="Регистрация" />
			</form>
		</body>
	</html>
	


Третий пример инициализирует виджет со скрытым номером телефона, заданным по-умолчанию без возможности его сменить.



		<?php
			$widget_id = 998; // Идентификатор виджета, требуется для обращения к Widget API
			$secret_key = "Tmm5ZXM11vPmJp1OiuaY7gatAT5ggOl1"; // Секретный ключ виджета
	        $public_key = "mnM3717euMAGCphIeikXtsmeet6oTK97"; // Публичный ключ виджета
	        $phone_number_id = "a35b95745de1e289"; // ID номера телефона
	        $hash = hash("sha256", $public_key.$phone_number_id.$secret_key);

			if($_POST["register"]) {
				if($_POST["ucaller-response"]) { // После успешной верификации номера телефона в виджете, мы автоматически добавляем поле в вашу форму с именем `ucaller-response`
					// Описание взаимодействия с Widget API описано в пункте 5.1
					// Здесь мы проверяем, действительно ли пользователь прошел верификацию номера телефона
					$response = file_get_contents("https://api.ucaller.ru/v1.0/verifyResponse?service_id=".$widget_id."&key=".$secret_key."&response=".$_POST["ucaller-response"]);
					$response = json_decode($response, true);
					if($response["status"]) {
						// Все верно! Этот пользователь проходил верификацию номера
						$phone_number = $response["phone"]; // Может получить номер телефона пользователя
						$phone_id = $response["phone"]; // Может получить идентификатор номера телефона
						// Регистрируем пользователя!
						echo "Вы успешно зарегистрированы!";
					}
					else echo "Нет, вы передали неверные значения, попробуйте повторить попытку верификации номера в виджете";
				}
				else echo "Вам необходимо пройти проверку номера телефона";
			}
		?>

		<html>
			<head>
				<title>Регистрация на сайте</title>
				<script src="https://widget.ucaller.ru/widget.min.js"></script>
			</head>
			<body >
				<form method="post">
				    Ваше имя:
				    <input type="text" name="some-input" />
				    Подтвердите номер телефона:
				    <div data-hash='<?php echo $hash; ?>' data-phone-id='<?php echo $phone_number_id; ?>' data-ucaller="<?php echo $public_key; ?>"></div>
				    Нажмите на кнопку:
				    <input type="submit" name="register" value="Регистрация" />
				</form>
			</body>
		</html>
		


5.1 Проверка авторизации verifyResponse

Данный метод позволяет проверить возвращенное нами после успешной авторизации значение ucaller-response.
После пройденной авторизации, в вашу форму автоматически добавится поле с именем ucaller-response, которое вы должны проверить используя этот метод.

URL обращения для инициализации метода: https://api.ucaller.ru/v1.0/verifyResponse
Способ передачи параметров: GET
* - обязательные параметры, остальные опционально

Параметр Значение Описание
service_id * Цифровое значение ID вами созданного виджета, более подробное описание в Определение понятий -> 2.3
key * Строка, 32 символа Секретный ключ вашего виджета, более подробное описание в Определение понятий -> 2.4
response * Набор символов Это значение будет добавлено в вашу форму после успешной авторизации номера телефона в виджете

Один ucaller-response можно проверить только один раз.
После успешной проверки ucaller-response, с вашего баланса будут списаны средства в соответствии с вашим тарифом.


	// Примеры запросов указаны в 4.2 Различные примеры реализации виджета на странице
Пример нашего ответа в формате JSON:


	{
		"status": true, // true в случае успеха, false в случае неудачи
	    "service_id": 998,  // id вашего виджета
	    "call_init": 1557950216, // время, когда верификация номера была начата
	    "phone": 37253058686, // номер телефона пользователя
	    "phone_id": "8beff3c368652947", // идентификатор номера
	    "ip": "127.0.0.1", // IP с которого была осуществлена авторизация
	    "ucaller_id": 103493, // уникальный ID в системе uCaller, который позволит проверять статус и инициализировать метод initRepeat
	    "success_time": 1557950220 // время, когда верификация номера была завершена успешно
	}
	


6.0 Список возможных ошибок

Код ошибкиОписание
0Ваш IP адрес заблокирован
1Не переданы какие-либо требуемые GET параметры
2Неверная комбинация GET параметров `service_id` и `key`
3Возникла ошибка при инициализации авторизации (неверный номер телефона или тех. работы)
4Работа вашего сервиса отключена в настройках
5[Тестовый режим] Вы не прошли верификацию номера телефона в личном кабинете
6[Тестовый режим] Баланс бесплатных суточных тестовых авторизаций исчерпан
7[Тестовый режим] Переданный GET параметр `phone` не разрешен (на него не пройдена верификация)
8Проверьте максимально допустимую длину передаваемых значений
9Авторизация для этой страны запрещена настройками географии работы в личном кабинете
10Этот uCaller id не существует или у вас нет к нему доступа
11Авторизация не может быть бесплатно повторена, время истекло
12Авторизация не может быть бесплатно повторена, лимит исчерпан
13Ошибочная попытка бесплатной инициализации повторной авторизации
14[Widget] Неверный формат переданного `ucaller-response`
15[Widget] Такого ответа `ucaller-response` не существует
16[Widget] Виджет отключен в настройках
17[Widget] Ключи виджета нельзя использовать для API Classic
1000Этот метод API временно недоступен
1001Ваш аккаунт заблокирован
1002Недостаточно средств на балансе аккаунта
1003С этого IP запрещено обращаться к API этого сервиса
1004Сервис заархивирован


7.0 Ограничение обращений к API

Наш сервис позволяет обращаться ко всем методам API не более 10 раз в секунду, после чего IP будет заблокирован на 30 секунд.
Если в течение 10 минут вы снова превысите количество обращений к нашему API, то каждое последующее нарушение увеличивает срок блокировки в геометрической последовательности.