curl -X POST 'https://api.spellit.ai/api/item-set' \
-H 'API-Access-Key: your_api_key' \
-H 'Content-Type: application/json' \
-d '{"name":"Название звонка","project_id":123,"processing_parameters":{"COMPANY":"Название компании","extra_processing_data":{"crm_data":{"call_date":"YYYY-MM-DD","crm_data_2":"600","crm_data_3":123}}}}'import requests
url = 'https://api.spellit.ai/api/item-set'
headers = {
'API-Access-Key': 'your_api_key',
'Content-Type': 'application/json'
}
data = {
"name": "Название звонка",
"project_id": 123,
"processing_parameters": {
"COMPANY": "Название компании",
"extra_processing_data": {
"crm_data": {
"call_date": "YYYY-MM-DD",
"crm_data_2": 600,
"crm_data_3": 123
}
}
}
}
response = requests.post(url, headers=headers, json=data)
print(response.json())const options = {
method: 'POST',
headers: {'API-Access-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
project_id: 123,
'processing_parameters.COMPANY': '<string>',
'processing_parameters.extra_processing_data': {},
'processing_parameters.extra_processing_data.crm_data': {},
'processing_parameters.extra_processing_data.crm_data.call_date': '<string>',
'processing_parameters.extra_processing_data_crm_data.crm_data_2': '<string>'
})
};
fetch('https://api.spellit.ai/api/item-set', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.spellit.ai/api/item-set",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>',
'project_id' => 123,
'processing_parameters.COMPANY' => '<string>',
'processing_parameters.extra_processing_data' => [
],
'processing_parameters.extra_processing_data.crm_data' => [
],
'processing_parameters.extra_processing_data.crm_data.call_date' => '<string>',
'processing_parameters.extra_processing_data_crm_data.crm_data_2' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"API-Access-Key: <api-key>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.spellit.ai/api/item-set"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"project_id\": 123,\n \"processing_parameters.COMPANY\": \"<string>\",\n \"processing_parameters.extra_processing_data\": {},\n \"processing_parameters.extra_processing_data.crm_data\": {},\n \"processing_parameters.extra_processing_data.crm_data.call_date\": \"<string>\",\n \"processing_parameters.extra_processing_data_crm_data.crm_data_2\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("API-Access-Key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.spellit.ai/api/item-set")
.header("API-Access-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"project_id\": 123,\n \"processing_parameters.COMPANY\": \"<string>\",\n \"processing_parameters.extra_processing_data\": {},\n \"processing_parameters.extra_processing_data.crm_data\": {},\n \"processing_parameters.extra_processing_data.crm_data.call_date\": \"<string>\",\n \"processing_parameters.extra_processing_data_crm_data.crm_data_2\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.spellit.ai/api/item-set")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["API-Access-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"project_id\": 123,\n \"processing_parameters.COMPANY\": \"<string>\",\n \"processing_parameters.extra_processing_data\": {},\n \"processing_parameters.extra_processing_data.crm_data\": {},\n \"processing_parameters.extra_processing_data.crm_data.call_date\": \"<string>\",\n \"processing_parameters.extra_processing_data_crm_data.crm_data_2\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"id": 123,
"name": "name_a0d142",
"permitted_types": null,
"date_creation": null,
"date_last_update": null,
"id_project": 123,
"status": "added",
"status_project": null,
"id_base_user": 1,
"id_item_set_processing_metadata": null,
"processing_outputs": null
}{
"detail": "id_project is required"
}{
"detail": "Invalid auth"
}{
"detail": "Invalid input data"
}Создание Item Set
Создание Item Set, связанного с ранее созданным проектом
curl -X POST 'https://api.spellit.ai/api/item-set' \
-H 'API-Access-Key: your_api_key' \
-H 'Content-Type: application/json' \
-d '{"name":"Название звонка","project_id":123,"processing_parameters":{"COMPANY":"Название компании","extra_processing_data":{"crm_data":{"call_date":"YYYY-MM-DD","crm_data_2":"600","crm_data_3":123}}}}'import requests
url = 'https://api.spellit.ai/api/item-set'
headers = {
'API-Access-Key': 'your_api_key',
'Content-Type': 'application/json'
}
data = {
"name": "Название звонка",
"project_id": 123,
"processing_parameters": {
"COMPANY": "Название компании",
"extra_processing_data": {
"crm_data": {
"call_date": "YYYY-MM-DD",
"crm_data_2": 600,
"crm_data_3": 123
}
}
}
}
response = requests.post(url, headers=headers, json=data)
print(response.json())const options = {
method: 'POST',
headers: {'API-Access-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
name: '<string>',
project_id: 123,
'processing_parameters.COMPANY': '<string>',
'processing_parameters.extra_processing_data': {},
'processing_parameters.extra_processing_data.crm_data': {},
'processing_parameters.extra_processing_data.crm_data.call_date': '<string>',
'processing_parameters.extra_processing_data_crm_data.crm_data_2': '<string>'
})
};
fetch('https://api.spellit.ai/api/item-set', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.spellit.ai/api/item-set",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'name' => '<string>',
'project_id' => 123,
'processing_parameters.COMPANY' => '<string>',
'processing_parameters.extra_processing_data' => [
],
'processing_parameters.extra_processing_data.crm_data' => [
],
'processing_parameters.extra_processing_data.crm_data.call_date' => '<string>',
'processing_parameters.extra_processing_data_crm_data.crm_data_2' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"API-Access-Key: <api-key>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.spellit.ai/api/item-set"
payload := strings.NewReader("{\n \"name\": \"<string>\",\n \"project_id\": 123,\n \"processing_parameters.COMPANY\": \"<string>\",\n \"processing_parameters.extra_processing_data\": {},\n \"processing_parameters.extra_processing_data.crm_data\": {},\n \"processing_parameters.extra_processing_data.crm_data.call_date\": \"<string>\",\n \"processing_parameters.extra_processing_data_crm_data.crm_data_2\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("API-Access-Key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.spellit.ai/api/item-set")
.header("API-Access-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"name\": \"<string>\",\n \"project_id\": 123,\n \"processing_parameters.COMPANY\": \"<string>\",\n \"processing_parameters.extra_processing_data\": {},\n \"processing_parameters.extra_processing_data.crm_data\": {},\n \"processing_parameters.extra_processing_data.crm_data.call_date\": \"<string>\",\n \"processing_parameters.extra_processing_data_crm_data.crm_data_2\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.spellit.ai/api/item-set")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["API-Access-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"name\": \"<string>\",\n \"project_id\": 123,\n \"processing_parameters.COMPANY\": \"<string>\",\n \"processing_parameters.extra_processing_data\": {},\n \"processing_parameters.extra_processing_data.crm_data\": {},\n \"processing_parameters.extra_processing_data.crm_data.call_date\": \"<string>\",\n \"processing_parameters.extra_processing_data_crm_data.crm_data_2\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"id": 123,
"name": "name_a0d142",
"permitted_types": null,
"date_creation": null,
"date_last_update": null,
"id_project": 123,
"status": "added",
"status_project": null,
"id_base_user": 1,
"id_item_set_processing_metadata": null,
"processing_outputs": null
}{
"detail": "id_project is required"
}{
"detail": "Invalid auth"
}{
"detail": "Invalid input data"
}project_id из предыдущего шага.id созданного item_set.Authorizations
API-ключ для доступа к эндпоинтам
Body
Структура запроса для создания набора элементов (Item Set), связанного с проектом.
Название набора элементов. Используется для идентификации внутри проекта.
ID проекта, к которому относится этот Item Set. За ID проекта обращайтесь к команде Spellit.
Название компании, от имени которой производится обработка.
Дополнительные данные, необходимые для бизнес-логики обработки.
crm_data — это набор метаданных из CRM или других источников, который передается вместе с каждым звонком для построения детализированной аналитики. Эти данные позволяют фильтровать отчеты и получать различные срезы аналитики по вашим звонкам.
Как это работает
- Настройка проекта — при создании проекта определяется структура полей crm_data
- Отправка данных — при каждом создании item-set поля заполняются данными по конкретному звонку
- Аналитика — на основе переданных метаданных строятся отчеты и фильтры
Стандартные поля Вот эти поля, как правило, используют наши клиенты:
"crm_data": {
"call_date": "Дата звонка",
"crm_data_2": "Длительность (СЕК)",
"crm_data_3": "ID звонка",
"crm_data_4": "Телефон",
"crm_data_5": "Источник",
"crm_data_6": "Время звонка",
"crm_data_7": "Тип звонка",
"crm_data_8": "Номер недели",
"crm_data_9": "ID контакта",
"crm_data_10": "ФИО контакта",
"crm_data_11": "Тип контакта",
"crm_data_12": "Дата создания сделки",
"crm_data_13": "ID сделки",
"crm_data_14": "Название сделки",
"crm_data_15": "Воронка сделки",
"crm_data_16": "Бюджет сделки",
"crm_data_17": "Этап сделки",
"crm_data_18": "Ссылка на сделку",
"crm_data_19": "ID менеджера",
"crm_data_20": "ФИО менеджера",
"crm_data_21": "резерв_1",
"crm_data_22": "резерв_2",
"crm_data_23": "резерв_3",
"crm_data_24": "резерв_4",
"crm_data_25": "резерв_5"
}
⚠️ Важно: Дата звонка всегда должна отправляться с ключом call_date
Кастомизация полей Вы не ограничены стандартным набором полей. SpellitAI поддерживает:
- Любое количество полей — технических ограничений нет
- Любые названия полей — используйте удобные для вас ключи
- Специфичные для бизнеса поля — добавляйте данные, важные именно для вашей аналитики
Резервные поля Если стандартного набора недостаточно, используйте резервные поля (crm_data_21 - crm_data_25) или обратитесь к команде SpellitAI для создания индивидуальной структуры.
Формат данных
| Тип данных | Формат | Примеры |
|---|---|---|
| Числовые значения | Без кавычек | 1060, 1966074090 |
| Текстовые данные | В кавычках | "CallGear", "Входящий" |
| Даты | В кавычках | "2025-08-19" |
| Время | В кавычках | "08:26:20" |
| Телефоны | В кавычках | "+79157778899" |
Пример
✅ Правильно:
"crm_data": {
"call_date": "2025-08-19",
"crm_data_2": 1060,
"crm_data_3": 1966074090,
"crm_data_4": "+79157778899",
"crm_data_5": "CallGear",
"crm_data_6": "08:26:20"
}
Начало работы
-
Определите структуру полей Выберите и утвердите список полей, которые будете отправлять. Это критически важно для корректной работы аналитики.
-
Отправьте тестовый звонок Передайте первый тестовый звонок с частью полей, чтобы убедиться в правильности интеграции.
-
Получите поддержку По вопросам интеграции обращайтесь к команде SpellitAI — процесс интеграции простой и не займет много времени!
Значение из CRM-поля 'Дата звонка'.
Значение из CRM-поля 'Длительность (СЕК)'.
Response
Успешное создание Item Set
Используем ID созданного item_set для загрузки в него файла и работой с этим файлом в дальнейшем