версия от 2023-07-26
Группа методов позволяет получать информацию о вызовах, а также запускать обратный звонок.
Адрес: https://restapi.plusofon.ru
GET
api/v1/call
Метод позволяет получить статистику вызовов.
Query
date_from
date / YYYY-MM-DD hh:mm:ss
⁎ дата и время начала
date_to
date / YYYY-MM-DD hh:mm:ss
⁎ дата и время окончания
number_a
string
А-номер (номер, с которого звонили) (по умолчанию — все)
number_b
string
Б-номер (номер, на который звонили) (по умолчанию — все)
call_type
string
статус вызова (по умолчанию — все)
success
— успешные вызовы
failed
— пропущенные вызовы
sip_id
string
SIP-аккаунт (по умолчанию — все)
direction
string
направление вызова
all
— все вызовы
internal
— входящие вызовы
external
— исходящие вызовы
columns
array
массив отображаемых полей i
page
integer
номер выводимой страницы (для пагинации)
curl -X GET \
-G "https://restapi.plusofon.ru/api/v1/call?date_from=2022-08-01+00%3A00%3A00&date_to=2022-09-15+00%3A00%3A00&number_a=79832674113&number_b=79391113240&call_type=success&sip_id=123&direction=all&columns[]=cost&page=2" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Client: 10553" \
-H "Authorization: Bearer {token}"
const url = new URL(
"https://restapi.plusofon.ru/api/v1/call"
);
let params = {
"date_from": "2022-08-01 00:00:00",
"date_to": "2022-09-15 00:00:00",
"number_a": "79832674113",
"number_b": "79391113240",
"call_type": "success",
"sip_id": "123",
"direction": "all",
"columns[]": "cost",
"page": "2",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
let headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Client": "10553",
"Authorization": "Bearer {token}",
};
fetch(url, {
method: "GET",
headers: headers,
})
.then(response => response.json())
.then(json => console.log(json));
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://restapi.plusofon.ru/api/v1/call',
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Client' => '10553',
'Authorization' => 'Bearer {token}',
],
'query' => [
'date_from'=> '2022-08-01 00:00:00',
'date_to'=> '2022-09-15 00:00:00',
'number_a'=> '79832674113',
'number_b'=> '79391113240',
'call_type'=> 'success',
'sip_id'=> '123',
'direction'=> 'all',
'columns[]'=> 'cost',
'page'=> '2',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://restapi.plusofon.ru/api/v1/call'
params = {
'date_from': '2022-08-01 00:00:00',
'date_to': '2022-09-15 00:00:00',
'number_a': '79832674113',
'number_b': '79391113240',
'call_type': 'success',
'sip_id': '123',
'direction': 'all',
'columns[]': 'cost',
'page': '2',
}
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Client': '10553',
'Authorization': 'Bearer {token}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
В ответе возвращается массив data
:
connect_time
дата и время начала вызова
number_a
А-номер
number_b
Б-номер
cld
Б-номер (конечный)
direction
направление вызова
internal
— входящие вызовы
external
— исходящие вызовы
cost
стоимость вызова (в рублях)
duration
продолжительность вызова (в секундах)
account
SIP-аккаунт, на котором произошёл вызов
record
URL-адрес записи вызова
{
"current_page": 1,
"data": [
{
"connect_time": "2022-07-01 14:48:01",
"number_a": "211",
"number_b": "74872717020",
"cld": "74872717020",
"direction": "internal",
"cost": 2.08,
"duration": 100,
"account": "21201585143152",
"record": "https:\/\/rec.plusofon.ru\/6fb9497c67a21d57c3\/4bd51b6240e4143c572.mp3"
},
{
"connect_time": "2022-07-01 14:46:24",
"number_a": "248",
"number_b": "79585776630",
"cld": "79585776630",
"direction": "internal",
"cost": 1.5,
"duration": 40,
"account": "21201587964905",
"record": "https:\/\/rec.plusofon.ru\/6fb9442b74cac21d57c3\/fa7424b7c3d14457f1a72.mp3"
},
{
"connect_time": "2022-07-01 14:46:07",
"number_a": "211",
"number_b": "74994031090",
"cld": "74994031090",
"direction": "internal",
"cost": 0.62,
"duration": 49,
"account": "21201585143152",
"record": "https:\/\/rec.plusofon.ru\/6fb94974cac21d57c3\/5dd8b64ca452373278.mp3"
},
{
"connect_time": "2022-07-01 14:45:39",
"number_a": "21201585140385",
"number_b": "79917085159",
"cld": "79917085159",
"direction": "internal",
"cost": 1.5,
"duration": 5,
"account": "21201585140385",
"record": "https:\/\/rec.plusofon.ru\/6fbcac21d57c3\/951124cc6c48ec86a.mp3"
}
],
"first_page_url": "http:\/\/localhost\/api\/v1\/call?page=1",
"from": 1,
"next_page_url": null,
"path": "http:\/\/localhost\/api\/v1\/call",
"per_page": 20,
"prev_page_url": null,
"to": 4,
"success": true
}
GET
api/v1/call/columns
Метод позволяет получить доступные поля для отображения статистики вызовов.
Не имеет параметров.
curl -X GET \
-G "https://restapi.plusofon.ru/api/v1/call/columns" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Client: 10553" \
-H "Authorization: Bearer {token}"
const url = new URL(
"https://restapi.plusofon.ru/api/v1/call/columns"
);
let headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Client": "10553",
"Authorization": "Bearer {token}",
};
fetch(url, {
method: "GET",
headers: headers,
})
.then(response => response.json())
.then(json => console.log(json));
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://restapi.plusofon.ru/api/v1/call/columns',
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Client' => '10553',
'Authorization' => 'Bearer {token}',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://restapi.plusofon.ru/api/v1/call/columns'
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Client': '10553',
'Authorization': 'Bearer {token}'
}
response = requests.request('GET', url, headers=headers)
response.json()
В ответе возвращается массив call_columns
:
column
код поля
title
название поля
{
"call_columns": [
{
"column": "connect_time",
"title": "Дата и время"
},
{
"column": "number_a",
"title": "Номер А"
},
{
"column": "number_b",
"title": "Номер Б"
},
{
"column": "cld",
"title": "Конечный абонент"
},
{
"column": "direction",
"title": "Направление"
},
{
"column": "cost",
"title": "Стоимость"
},
{
"column": "duration",
"title": "Продолжительность"
},
{
"column": "account",
"title": "Аккаунт"
},
{
"column": "record",
"title": "Запись"
}
],
"success": true
}
POST
api/v1/call/dumps
Метод позволяет заказать выгрузку статистики вызовов, которая затем выполнится в очереди.
Body
date_from
date / YYYY-MM-DD hh:mm:ss
⁎ дата и время начала
date_to
date / YYYY-MM-DD hh:mm:ss
⁎ дата и время окончания
number_a
string
А-номер (номер, с которого звонили) (по умолчанию — все)
number_b
string
Б-номер (номер, на который звонили) (по умолчанию — все)
call_type
string
статус вызова
success
— успешные вызовы
failed
— пропущенные вызовы
sip_id
string
SIP-аккаунт (по умолчанию — все)
direction
string
направление вызова
all
— все вызовы
internal
— входящие вызовы
external
— исходящие вызовы
format
stringcsv
— файл CSVcolumns
arrayi
curl -X POST \
"https://restapi.plusofon.ru/api/v1/call/dumps" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Client: 10553" \
-H "Authorization: Bearer {token}" \
-d '{"date_from":"2022-08-01","date_to":"2022-09-15","number_a":"79832674113","number_b":"79391113240","call_type":"success","sip_id":123,"direction":"all","format":"csv","columns":["cost"]}'
const url = new URL(
"https://restapi.plusofon.ru/api/v1/call/dumps"
);
let headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Client": "10553",
"Authorization": "Bearer {token}",
};
let body = {
"date_from": "2022-08-01",
"date_to": "2022-09-15",
"number_a": "79832674113",
"number_b": "79391113240",
"call_type": "success",
"sip_id": 123,
"direction": "all",
"format": "csv",
"columns": [
"cost"
]
}
fetch(url, {
method: "POST",
headers: headers,
body: body
})
.then(response => response.json())
.then(json => console.log(json));
$client = new \GuzzleHttp\Client();
$response = $client->post(
'https://restapi.plusofon.ru/api/v1/call/dumps',
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Client' => '10553',
'Authorization' => 'Bearer {token}',
],
'json' => [
'date_from' => '2022-08-01',
'date_to' => '2022-09-15',
'number_a' => '79832674113',
'number_b' => '79391113240',
'call_type' => 'success',
'sip_id' => 123,
'direction' => 'all',
'format' => 'csv',
'columns' => [
'cost',
],
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://restapi.plusofon.ru/api/v1/call/dumps'
payload = {
"date_from": "2022-08-01",
"date_to": "2022-09-15",
"number_a": "79832674113",
"number_b": "79391113240",
"call_type": "success",
"sip_id": 123,
"direction": "all",
"format": "csv",
"columns": [
"cost"
]
}
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Client': '10553',
'Authorization': 'Bearer {token}'
}
response = requests.request('POST', url, headers=headers, json=payload)
response.json()
В ответе может возвращаться:
success
признак успешно выполненного запроса
message
сообщение об ошибке
Выгрузка успешно заказана:
{
"success": true
}
GET
api/v1/call/dumps
Метод позволяет получить список всех заказанных выгрузок статистики вызовов.
Query
page
integer
номер выводимой страницы (для пагинации)
limit
integer
количество результатов на одной странице
curl -X GET \
-G "https://restapi.plusofon.ru/api/v1/call/dumps?page=1" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Client: 10553" \
-H "Authorization: Bearer {token}"
const url = new URL(
"https://restapi.plusofon.ru/api/v1/call/dumps"
);
let params = {
"page": "1",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
let headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Client": "10553",
"Authorization": "Bearer {token}",
};
fetch(url, {
method: "GET",
headers: headers,
})
.then(response => response.json())
.then(json => console.log(json));
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://restapi.plusofon.ru/api/v1/call/dumps',
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Client' => '10553',
'Authorization' => 'Bearer {token}',
],
'query' => [
'page'=> '1',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://restapi.plusofon.ru/api/v1/call/dumps'
params = {
'page': '1',
}
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Client': '10553',
'Authorization': 'Bearer {token}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
В ответе возвращается массив data
:
id
ИД выгрузки
created_at
дата создания выгрузки
dates
период выгрузки
ready
признак завершённости создания выгрузки
<{
"current_page": 1,
"data": [
{
"id": 1,
"created_at": "2022-08-18 12:03:06",
"dates": "2021-01-01 - 2022-01-01",
"ready": true
},
{
"id": 2,
"created_at": "2022-08-18 12:09:44",
"dates": "2022-01-01 - 2022-08-18",
"ready": false
}
],
"first_page_url": "http:\/\/localhost\/api\/v1\/call\/dumps?page=1",
"from": 1,
"last_page": 1,
"last_page_url": "http:\/\/localhost\/api\/v1\/call\/dumps?page=1",
"next_page_url": null,
"path": "http:\/\/localhost\/api\/v1\/call\/dumps",
"per_page": 15,
"prev_page_url": null,
"to": 2,
"total": 2,
"success": true
}>
GET
api/v1/call/dumps/{dump_id}
Метод позволяет получить файл выгрузки статистики вызовов.
Path
dump_id
stringi
curl -X GET \
-G "https://restapi.plusofon.ru/api/v1/call/dumps/43" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Client: 10553" \
-H "Authorization: Bearer {token}"
const url = new URL(
"https://restapi.plusofon.ru/api/v1/call/dumps/43"
);
let headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Client": "10553",
"Authorization": "Bearer {token}",
};
fetch(url, {
method: "GET",
headers: headers,
})
.then(response => response.json())
.then(json => console.log(json));
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://restapi.plusofon.ru/api/v1/call/dumps/43',
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Client' => '10553',
'Authorization' => 'Bearer {token}',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://restapi.plusofon.ru/api/v1/call/dumps/43'
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Client': '10553',
'Authorization': 'Bearer {token}'
}
response = requests.request('GET', url, headers=headers)
response.json()
В ответе может возвращаться:
success
признак успешно выполненного запроса
message
сообщение об ошибке
Файл получен:
null
GET
api/v1/call/{call_id}/record
Метод позволяет получить адрес записи вызова.
Path
call_id
stringcurl -X GET \
-G "https://restapi.plusofon.ru/api/v1/call/41ac2fac-38eb-11ed-a307-4b5e8cda9bbe/record" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Client: 10553" \
-H "Authorization: Bearer {token}"
const url = new URL(
"https://restapi.plusofon.ru/api/v1/call/41ac2fac-38eb-11ed-a307-4b5e8cda9bbe/record"
);
let headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Client": "10553",
"Authorization": "Bearer {token}",
};
fetch(url, {
method: "GET",
headers: headers,
})
.then(response => response.json())
.then(json => console.log(json));
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://restapi.plusofon.ru/api/v1/call/41ac2fac-38eb-11ed-a307-4b5e8cda9bbe/record',
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Client' => '10553',
'Authorization' => 'Bearer {token}',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://restapi.plusofon.ru/api/v1/call/41ac2fac-38eb-11ed-a307-4b5e8cda9bbe/record'
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Client': '10553',
'Authorization': 'Bearer {token}'
}
response = requests.request('GET', url, headers=headers)
response.json()
В ответе может возвращаться:
record
URL-адрес записи вызова
success
признак успешно выполненного запроса
message
сообщение об ошибке
code
код ошибки
{
"record": "https:\/\/rec.plusofon.ru\/aa715d3c0f602ed4480f\/24df6db78c1026d7dc3880dc.mp3",
"success": true
}
GET
api/v1/call/{bridge_id}/answer
Метод позволяет получить данные хука мониторинга для события "answer"
(ответ на входящий вызов).
Path
bridge_id
stringQuery
page
integercurl -X GET \
-G "https://restapi.plusofon.ru/api/v1/call/55d23e6c-0822-11ed-9f9a-4b5e8cda9bbe/answer?page=1" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Client: 10553" \
-H "Authorization: Bearer {token}"
const url = new URL(
"https://restapi.plusofon.ru/api/v1/call/55d23e6c-0822-11ed-9f9a-4b5e8cda9bbe/answer"
);
let params = {
"page": "1",
};
Object.keys(params)
.forEach(key => url.searchParams.append(key, params[key]));
let headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Client": "10553",
"Authorization": "Bearer {token}",
};
fetch(url, {
method: "GET",
headers: headers,
})
.then(response => response.json())
.then(json => console.log(json));
$client = new \GuzzleHttp\Client();
$response = $client->get(
'https://restapi.plusofon.ru/api/v1/call/55d23e6c-0822-11ed-9f9a-4b5e8cda9bbe/answer',
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Client' => '10553',
'Authorization' => 'Bearer {token}',
],
'query' => [
'page'=> '1',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://restapi.plusofon.ru/api/v1/call/55d23e6c-0822-11ed-9f9a-4b5e8cda9bbe/answer'
params = {
'page': '1',
}
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Client': '10553',
'Authorization': 'Bearer {token}'
}
response = requests.request('GET', url, headers=headers, params=params)
response.json()
В ответе возвращается массив data
:
connect_time
дата и время начала вызова
number_a
А-номер
number_b
Б-номер
cld
Б-номер (конечный)
direction
направление вызова
internal
— входящие вызовы
external
— исходящие вызовы
cost
стоимость вызова
duration
продолжительность вызова (в секундах)
account
SIP-аккаунт, на котором произошёл вызов
record
URL-адрес записи вызова
{
"current_page": 1,
"data": [
{
"connect_time": "2022-07-01 14:48:01",
"number_a": "211",
"number_b": "74872717020",
"cld": "74872717020",
"direction": "internal",
"cost": 2.08,
"duration": 100,
"account": "21201585143152",
"record": "https:\/\/rec.plusofon.ru\/6fb9497cb74cac21d57c3\/4bd5158abb6240e4143c572.mp3"
},
{
"connect_time": "2022-07-01 14:46:24",
"number_a": "248",
"number_b": "79585776630",
"cld": "79585776630",
"direction": "internal",
"cost": 1.5,
"duration": 40,
"account": "21201587964905",
"record": "https:\/\/rec.plusofon.ru\/6fb9497c67a38dc21d57c3\/fa7427c3d14457f1a72.mp3"
},
{
"connect_time": "2022-07-01 14:46:07",
"number_a": "211",
"number_b": "74994031090",
"cld": "74994031090",
"direction": "internal",
"cost": 0.62,
"duration": 49,
"account": "21201585143152",
"record": "https:\/\/rec.plusofon.ru\/6fb9497c67a38d3c843\/5dd8b64ca45279fe5b3278.mp3"
},
{
"connect_time": "2022-07-01 14:45:39",
"number_a": "21201585140385",
"number_b": "79917085159",
"cld": "79917085159",
"direction": "internal",
"cost": 1.5,
"duration": 5,
"account": "21201585140385",
"record": "https:\/\/rec.plusofon.ru\/6fb9497c67a3ac21d57c3\/951124cc6c48c28ec86a.mp3"
}
],
"first_page_url": "http:\/\/localhost\/api\/v1\/call?page=1",
"from": 1,
"next_page_url": null,
"path": "http:\/\/localhost\/api\/v1\/call",
"per_page": 20,
"prev_page_url": null,
"to": 4,
"success": true
}
POST
api/v1/call/callback
Метод позволяет совершить обратный звонок через интегрированную CRM-систему.
Body
number
string
⁎ целевой номер
line_number
string
номер, установленный в качестве АОНа
host
string
⁎ адрес CRM, с которой настроена интеграция
curl -X POST \
"https://restapi.plusofon.ru/api/v1/call/callback" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Client: 10553" \
-H "Authorization: Bearer {token}" \
-d '{"number":"quaerat","line_number":"quidem","host":"qui"}'
const url = new URL(
"https://restapi.plusofon.ru/api/v1/call/callback"
);
let headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Client": "10553",
"Authorization": "Bearer {token}",
};
let body = {
"number": "quaerat",
"line_number": "quidem",
"host": "qui"
}
fetch(url, {
method: "POST",
headers: headers,
body: body
})
.then(response => response.json())
.then(json => console.log(json));
$client = new \GuzzleHttp\Client();
$response = $client->post(
'https://restapi.plusofon.ru/api/v1/call/callback',
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Client' => '10553',
'Authorization' => 'Bearer {token}',
],
'json' => [
'number' => 'quaerat',
'line_number' => 'quidem',
'host' => 'qui',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://restapi.plusofon.ru/api/v1/call/callback'
payload = {
"number": "quaerat",
"line_number": "quidem",
"host": "qui"
}
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Client': '10553',
'Authorization': 'Bearer {token}'
}
response = requests.request('POST', url, headers=headers, json=payload)
response.json()
В ответе может возвращаться:
success
признак успешно выполненного запроса
message
сообщение об ошибке
{
"success": true
}
POST
api/v1/call/quickcall
Метод позволяет инициировать исходящий вызов:
1. После отправки запроса начинается дозвон одновременно на все SIP-аккаунты, у которых в АОНе установлен номер, указанный в параметре "line_number"
.
2. После соединения с SIP-аккаунтом начинается дозвон на номер, указанный в параметре "number"
.
Body
number
string
⁎ целевой номер
line_number
string
⁎ номер, установленный в качестве АОНа
sip_id
string
ИД SIP-аккаунта, с которого происходит обратный звонок i
curl -X POST \
"https://restapi.plusofon.ru/api/v1/call/quickcall" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-H "Client: 10553" \
-H "Authorization: Bearer {token}" \
-d '{"number":"79993332210","line_number":"74951332210","sip_id":"51326"}'
const url = new URL(
"https://restapi.plusofon.ru/api/v1/call/quickcall"
);
let headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Client": "10553",
"Authorization": "Bearer {token}",
};
let body = {
"number": "79993332210",
"line_number": "74951332210",
"sip_id": "51326"
}
fetch(url, {
method: "POST",
headers: headers,
body: body
})
.then(response => response.json())
.then(json => console.log(json));
$client = new \GuzzleHttp\Client();
$response = $client->post(
'https://restapi.plusofon.ru/api/v1/call/quickcall',
[
'headers' => [
'Content-Type' => 'application/json',
'Accept' => 'application/json',
'Client' => '10553',
'Authorization' => 'Bearer {token}',
],
'json' => [
'number' => '79993332210',
'line_number' => '74951332210',
'sip_id' => '51326',
],
]
);
$body = $response->getBody();
print_r(json_decode((string) $body));
import requests
import json
url = 'https://restapi.plusofon.ru/api/v1/call/quickcall'
payload = {
"number": "79993332210",
"line_number": "74951332210",
"sip_id": "51326"
}
headers = {
'Content-Type': 'application/json',
'Accept': 'application/json',
'Client': '10553',
'Authorization': 'Bearer {token}'
}
response = requests.request('POST', url, headers=headers, json=payload)
response.json()
В ответе может возвращаться:
success
признак успешно выполненного запроса
message
сообщение об ошибке
{
"success": true
}