cURL
curl --request GET \
--url https://api.spellit.ai/api/output/formulas/project/{project_id}/item-set/{item_set_id} \
--header 'API-Access-Key: <api-key>'import requests
url = "https://api.spellit.ai/api/output/formulas/project/{project_id}/item-set/{item_set_id}"
headers = {"API-Access-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'API-Access-Key': '<api-key>'}};
fetch('https://api.spellit.ai/api/output/formulas/project/{project_id}/item-set/{item_set_id}', 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/output/formulas/project/{project_id}/item-set/{item_set_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"API-Access-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.spellit.ai/api/output/formulas/project/{project_id}/item-set/{item_set_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("API-Access-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.spellit.ai/api/output/formulas/project/{project_id}/item-set/{item_set_id}")
.header("API-Access-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.spellit.ai/api/output/formulas/project/{project_id}/item-set/{item_set_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["API-Access-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body[
{
"id": 1,
"id_formula": 5,
"id_project_item_set_output": 123,
"id_item_set": 456,
"result": 4.5,
"error": null,
"created_at": "2025-11-17T10:00:00Z",
"updated_at": "2025-11-17T10:00:00Z",
"formula": {
"name": "total_score",
"text": "AVG(score_i WHERE score_i != '')",
"is_default": true
}
},
{
"id": 2,
"id_formula": 6,
"id_project_item_set_output": 123,
"id_item_set": 456,
"result": null,
"error": "Division by zero",
"created_at": "2025-11-17T10:00:01Z",
"updated_at": "2025-11-17T10:00:01Z",
"formula": {
"name": "average_rating",
"text": "SUM(rating) / COUNT(rating)",
"is_default": false
}
},
{
"id": 3,
"id_formula": 7,
"id_project_item_set_output": 123,
"id_item_set": 456,
"result": 8.234567,
"error": null,
"created_at": "2025-11-17T10:00:02Z",
"updated_at": "2025-11-17T10:00:02Z",
"formula": {
"name": "max_value",
"text": "MAX(value_i)",
"is_default": false
}
}
]Запросы
Получение результатов формул для item_set
Получение всех результатов вычислений формул для конкретного item_set в рамках проекта
GET
/
output
/
formulas
/
project
/
{project_id}
/
item-set
/
{item_set_id}
cURL
curl --request GET \
--url https://api.spellit.ai/api/output/formulas/project/{project_id}/item-set/{item_set_id} \
--header 'API-Access-Key: <api-key>'import requests
url = "https://api.spellit.ai/api/output/formulas/project/{project_id}/item-set/{item_set_id}"
headers = {"API-Access-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'API-Access-Key': '<api-key>'}};
fetch('https://api.spellit.ai/api/output/formulas/project/{project_id}/item-set/{item_set_id}', 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/output/formulas/project/{project_id}/item-set/{item_set_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"API-Access-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.spellit.ai/api/output/formulas/project/{project_id}/item-set/{item_set_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("API-Access-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.spellit.ai/api/output/formulas/project/{project_id}/item-set/{item_set_id}")
.header("API-Access-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.spellit.ai/api/output/formulas/project/{project_id}/item-set/{item_set_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["API-Access-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body[
{
"id": 1,
"id_formula": 5,
"id_project_item_set_output": 123,
"id_item_set": 456,
"result": 4.5,
"error": null,
"created_at": "2025-11-17T10:00:00Z",
"updated_at": "2025-11-17T10:00:00Z",
"formula": {
"name": "total_score",
"text": "AVG(score_i WHERE score_i != '')",
"is_default": true
}
},
{
"id": 2,
"id_formula": 6,
"id_project_item_set_output": 123,
"id_item_set": 456,
"result": null,
"error": "Division by zero",
"created_at": "2025-11-17T10:00:01Z",
"updated_at": "2025-11-17T10:00:01Z",
"formula": {
"name": "average_rating",
"text": "SUM(rating) / COUNT(rating)",
"is_default": false
}
},
{
"id": 3,
"id_formula": 7,
"id_project_item_set_output": 123,
"id_item_set": 456,
"result": 8.234567,
"error": null,
"created_at": "2025-11-17T10:00:02Z",
"updated_at": "2025-11-17T10:00:02Z",
"formula": {
"name": "max_value",
"text": "MAX(value_i)",
"is_default": false
}
}
]Возвращает массив результатов всех формул для указанного item_set в рамках проекта.
Параметры URL
project_id(int, path, обязательный) - ID проекта (для валидации принадлежности item_set)item_set_id(int, path, обязательный) - ID item set, для которого нужны результаты
Headers
API-Access-Key: {token}
Описание полей ответа
Возвращается массив объектов с результатами формул:id(integer) - Уникальный идентификатор записиid_formula(integer) - ID формулы из таблицыobject.project_formulaid_project_item_set_output(integer) - ID project item set processing outputid_item_set(integer) - ID item setresult(float, nullable) - Результат вычисления (null если была ошибка)error(string, nullable) - Текст ошибки (null если вычисление успешно)created_at(datetime, ISO 8601) - Дата и время создания записиupdated_at(datetime, ISO 8601) - Дата и время последнего обновленияformula(object) - Объект с информацией о формуле:name(string) - Название формулыtext(string) - Текст формулыis_default(boolean) - Флаг, указывающий является ли формула формулой по умолчанию
Пример ответа
[
{
"id": 1,
"id_formula": 123,
"id_project_item_set_output": 456,
"id_item_set": 448,
"result": 85.5,
"error": null,
"created_at": "2024-01-01T00:00:00",
"updated_at": "2024-01-01T00:00:00",
"formula": {
"name": "total_score",
"text": "AVG(score_i WHERE score_i != '')",
"is_default": true
}
}
]
Примечания
- Если вычисление успешно:
resultсодержит число,error = null - Если произошла ошибка:
result = null,errorсодержит описание ошибки - Каждая формула = отдельная запись в массиве
Логика работы
Когда создаются записи
Записи в таблицеoutput.formula_output создаются автоматически при записи в отчет:
- Заполнение отчета Google Sheets
- Вычисление формул
- Сохранение результатов - для каждой формулы создается отдельная запись:
- Если вычисление успешно:
result= число,error= null - Если произошла ошибка:
result= null,error= текст ошибки
- Если вычисление успешно:
Структура данных
Принцип: Одна запись = один результат одной формулы для одного item_set Item Set 456 + 3 формулы = 3 записи в таблице| id | id_formula | id_item_set | result | error |
|---|---|---|---|---|
| 1 | 5 | 456 | 4.5 | null |
| 2 | 6 | 456 | null | ”Division by zero” |
| 3 | 7 | 456 | 8.2 | null |
Коды ошибок
| HTTP Код | Описание | Рекомендуемое действие |
|---|---|---|
| 200 | Успешно | Обработать результаты |
| 401 | Не авторизован | Обновить/получить новый JWT токен |
| 404 | Item set не найден | Проверить корректность project_id и item_set_id |
| 422 | Ошибка валидации | Проверить формат параметров (должны быть integer) |
| 500 | Ошибка сервера | Повторить запрос или обратиться в поддержку |
Authorizations
ApiKeyAuthBearerAuth
API-ключ для доступа к эндпоинтам
Path Parameters
ID проекта (для валидации принадлежности item_set)
ID item set, для которого нужны результаты
Response
Успешный ответ - возвращает массив результатов всех формул для указанного item_set
Уникальный идентификатор записи
ID формулы из таблицы object.project_formula
ID project item set processing output
ID item set
Дата и время создания записи
Дата и время последнего обновления
Объект с информацией о формуле
Show child attributes
Show child attributes
Результат вычисления (null если была ошибка)
Текст ошибки (null если вычисление успешно)
⌘I