Проекты
Список проектов
GET /api/projects
Возвращает список проектов текущего пользователя. Включает собственные проекты и расшаренные.
curl -X GET "https://ai.pixeltools.ru/api/projects" \
-H "Authorization: Bearer YOUR_API_TOKEN"
Ответ
{
"data": [
{
"id": 1,
"user_id": 1,
"name": "My Project",
"brand": "MyBrand",
"domain": "example.com",
"activities": "Продажа товаров",
"is_paused": false,
"created_at": "2026-01-01T12:00:00Z"
}
]
}
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
id | integer | ID проекта. Используется во всех последующих запросах как {project}. |
user_id | integer | ID владельца проекта |
name | string | Название проекта |
brand | string | Бренд проекта |
domain | string | Домен проекта |
activities | string | Вид деятельности |
is_paused | boolean | Проект на паузе |
created_at | datetime | Дата создания |
Доступные нейросети
GET /api/neurals
Возвращает список доступных нейросетей (ИИ-систем). ID нейросетей используются в параметре neurals[] для фильтрации данных.
curl -X GET "https://ai.pixeltools.ru/api/neurals" \
-H "Authorization: Bearer YOUR_API_TOKEN"
Ответ
{
"data": [
{ "id": 1, "system_name": "openai", "display_name": "ChatGPT", "model_url": "https://chatgpt.com" },
{ "id": 2, "system_name": "gemini", "display_name": "Gemini", "model_url": "https://gemini.google.com" },
{ "id": 3, "system_name": "perplexity", "display_name": "Perplexity", "model_url": "https://perplexity.ai" },
{ "id": 4, "system_name": "claude", "display_name": "Claude", "model_url": "https://claude.ai" }
]
}
Группы запросов проекта
GET /api/projects/{project}/groups
Возвращает список групп запросов (промптов) проекта.
Используйте ID групп из этого ответа для параметра groups[] в эндпоинтах данных.
curl -X GET "https://ai.pixeltools.ru/api/projects/1/groups" \
-H "Authorization: Bearer YOUR_API_TOKEN"
Ответ
{
"data": [
{ "id": 5, "name": "Репутационные запросы", "is_favourite": true, "prompts_count": 12 },
{ "id": 8, "name": "Информационные запросы", "is_favourite": false, "prompts_count": 25 },
{ "id": 12, "name": "Сравнительные запросы", "is_favourite": false, "prompts_count": 8 },
{ "id": 15, "name": "Транзакционные запросы", "is_favourite": true, "prompts_count": 6 }
]
}
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
id | integer | ID группы. Используется в параметре groups[] для фильтрации данных. |
name | string | Название группы |
is_favourite | boolean | Группа отмечена как избранная |
prompts_count | integer | Количество запросов в группе |
Доступные фильтры проекта
GET /api/projects/{project}/filters
Возвращает все доступные значения фильтров для проекта в одном запросе: нейросети, группы, даты обновлений и допустимые значения перечислимых фильтров. Используйте этот эндпоинт перед запросами к данным, чтобы узнать какие ID и значения передавать.
curl -X GET "https://ai.pixeltools.ru/api/projects/1/filters" \
-H "Authorization: Bearer YOUR_API_TOKEN"
Ответ
{
"neurals": [
{ "id": 1, "system_name": "openai", "display_name": "ChatGPT" },
{ "id": 2, "system_name": "gemini", "display_name": "Gemini" },
{ "id": 3, "system_name": "perplexity", "display_name": "Perplexity" }
],
"groups": [
{ "id": 5, "name": "Репутационные запросы", "is_favourite": true, "prompts_count": 12 },
{ "id": 8, "name": "Информационные запросы", "is_favourite": false, "prompts_count": 25 },
{ "id": 12, "name": "Сравнительные запросы", "is_favourite": false, "prompts_count": 8 }
],
"update_dates": ["2026-03-05", "2026-03-12", "2026-03-19", "2026-03-26"],
"first_update_date": "2026-03-05T10:00:00.000000Z",
"last_update_date": "2026-03-26T10:00:00.000000Z",
"prompts_count": 45,
"enums": {
"mention": [
{ "value": "has", "label": "Упомянут" },
{ "value": "not", "label": "Не упомянут" },
{ "value": "has_source", "label": "Есть в источниках" }
],
"tone": [
{ "value": "positive", "label": "Положительная" },
{ "value": "neutral", "label": "Нейтральная" },
{ "value": "negative", "label": "Негативная" }
],
"visibility": [
{ "value": "up", "label": "Выросла" },
{ "value": "down", "label": "Упала" }
],
"competitor_type": [
{ "value": "brand", "label": "Бренд" },
{ "value": "competitor", "label": "Конкурент" }
],
"metrics": [
{ "value": "visibility", "label": "Видимость" },
{ "value": "mentions", "label": "Упоминания" },
{ "value": "share_of_voice", "label": "Доля голоса" }
],
"metrics_action": [
{ "value": "up", "label": "Рост" },
{ "value": "down", "label": "Падение" },
{ "value": "zero", "label": "Без изменений" }
]
}
}
Поля ответа
| Поле | Тип | Описание |
|---|---|---|
neurals | array | Нейросети, подключённые к проекту. Используйте id в параметре neurals[]. |
groups | array | Группы запросов проекта. Используйте id в параметре groups[]. |
update_dates | array<string> | Даты завершённых обновлений (формат YYYY-MM-DD). Используйте для параметра dates[]. |
first_update_date | string|null | Дата первого обновления (ISO 8601). null если обновлений ещё не было. |
last_update_date | string|null | Дата последнего обновления (ISO 8601). |
prompts_count | integer | Общее количество запросов в проекте. |
enums | object | Допустимые значения перечислимых фильтров с русскими подписями. Содержит: mention, tone, visibility, competitor_type, metrics, metrics_action. |
Соответствие enums и параметров эндпоинтов
| Enum | Параметр | Эндпоинты |
|---|---|---|
mention | mention | answers |
tone | tone | answers |
visibility | visibility | answers, sources |
competitor_type | type | competitors |
metrics | metrics | competitors |
metrics_action | metricsAction | competitors |
Примеры использования каждого фильтра
Ниже показано, как применять каждый параметр фильтрации в запросах к API. Значения берутся из ответа /filters.
neurals[] — фильтр по нейросетям
Оставить данные только по ChatGPT (id=1) и Perplexity (id=3):
curl -X GET "https://ai.pixeltools.ru/api/projects/1/answers?neurals[]=1&neurals[]=3" \
-H "Authorization: Bearer YOUR_API_TOKEN"
groups[] — фильтр по группам запросов
Данные только по группе «Репутационные запросы» (id=5):
curl -X GET "https://ai.pixeltools.ru/api/projects/1/answers?groups[]=5" \
-H "Authorization: Bearer YOUR_API_TOKEN"
dates[] — фильтр по диапазону дат
Данные за март 2026 (используйте даты из update_dates):
curl -X GET "https://ai.pixeltools.ru/api/projects/1/summary?dates[]=2026-03-01&dates[]=2026-03-31" \
-H "Authorization: Bearer YOUR_API_TOKEN"
mention — фильтр по упоминаниям бренда
Только запросы, где бренд упомянут:
curl -X GET "https://ai.pixeltools.ru/api/projects/1/answers?mention=has" \
-H "Authorization: Bearer YOUR_API_TOKEN"
Только запросы, где бренд не упомянут:
curl -X GET "https://ai.pixeltools.ru/api/projects/1/answers?mention=not" \
-H "Authorization: Bearer YOUR_API_TOKEN"
tone — фильтр по тональности
Только запросы с негативной тональностью:
curl -X GET "https://ai.pixeltools.ru/api/projects/1/answers?tone=negative" \
-H "Authorization: Bearer YOUR_API_TOKEN"
visibility — фильтр по динамике видимости
Только запросы, где видимость выросла:
curl -X GET "https://ai.pixeltools.ru/api/projects/1/answers?visibility=up" \
-H "Authorization: Bearer YOUR_API_TOKEN"
type — фильтр по типу конкурента
Только бренды (без конкурентов):
curl -X GET "https://ai.pixeltools.ru/api/projects/1/competitors?type=brand" \
-H "Authorization: Bearer YOUR_API_TOKEN"
metrics + metricsAction — фильтр конкурентов по метрике и динамике
Конкуренты с растущей долей голоса:
curl -X GET "https://ai.pixeltools.ru/api/projects/1/competitors?metrics=share_of_voice&metricsAction=up" \
-H "Authorization: Bearer YOUR_API_TOKEN"
prompt — поиск по тексту запроса
Найти запросы, содержащие слово «отзывы»:
curl -X GET "https://ai.pixeltools.ru/api/projects/1/answers?prompt=%D0%BE%D1%82%D0%B7%D1%8B%D0%B2%D1%8B" \
-H "Authorization: Bearer YOUR_API_TOKEN"
search — поиск по имени конкурента
Найти конкурента по названию:
curl -X GET "https://ai.pixeltools.ru/api/projects/1/competitors?search=Yandex" \
-H "Authorization: Bearer YOUR_API_TOKEN"
Комбинирование нескольких фильтров
Все фильтры можно комбинировать в одном запросе. Например, репутационные запросы + только ChatGPT + за март + только упомянутые:
curl -X GET "https://ai.pixeltools.ru/api/projects/1/answers?\
groups[]=5&\
neurals[]=1&\
dates[]=2026-03-01&dates[]=2026-03-31&\
mention=has" \
-H "Authorization: Bearer YOUR_API_TOKEN"
Фильтрация по группам запросов
Запросы (промпты) в проекте можно организовать в группы — например, «репутационные запросы», «сравнительные запросы», «информационные запросы» и т.д. Группы создаются в интерфейсе проекта на вкладке «Запросы».
Все основные эндпоинты выгрузки данных (answers, competitors, sources, summary)
принимают параметр groups[], который фильтрует данные только по запросам из указанных групп.
Это позволяет строить отчёты в разрезе конкретной тематики запросов.
Получить список групп и их ID можно через эндпоинт GET /api/projects/{project}/groups.
Формат параметра
# Фильтр по одной группе (ID = 5)
?groups[]=5
# Фильтр по нескольким группам (ID = 5 и 12)
?groups[]=5&groups[]=12
Когда groups[] не передан или пустой — данные возвращаются по всем запросам проекта (без фильтрации по группам).
Пример: данные по ответам только для группы «Репутационные запросы»
curl -X GET "https://ai.pixeltools.ru/api/projects/1/answers?groups[]=5" \
-H "Authorization: Bearer YOUR_API_TOKEN"
Пример: конкуренты по двум группам «Сравнительные» + «Информационные»
curl -X GET "https://ai.pixeltools.ru/api/projects/1/competitors?groups[]=12&groups[]=8" \
-H "Authorization: Bearer YOUR_API_TOKEN"
При указании нескольких групп данные фильтруются по запросам, которые входят хотя бы в одну из указанных групп (логическое ИЛИ).
Сводка
GET /api/projects/{project}/summary
Возвращает сводные данные по проекту: кривую видимости бренда, тональность, видимость по группам.
Параметры запроса (query)
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
dates[] | array | весь период | Диапазон дат: dates[]=2026-03-01&dates[]=2026-03-31 |
neurals[] | array<int> | все нейросети проекта | ID нейросетей для фильтрации |
groups[] | array<int> | все запросы | ID групп запросов. Фильтрует данные только по промптам из указанных групп. |
curl -X GET "https://ai.pixeltools.ru/api/projects/1/summary?groups[]=5&neurals[]=1&neurals[]=3" \
-H "Authorization: Bearer YOUR_API_TOKEN"
Ответ
{
"project": { "id": 1, "name": "My Project", "brand": "MyBrand", "domain": "example.com", ... },
"filters": {
"dates": ["2026-03-01", "2026-03-31"],
"neurals": [1, 3],
"groups": [5]
},
"events": [ ... ],
"updateDates": ["2026-03-05", "2026-03-12", "2026-03-19", "2026-03-26"],
"firstUpdateDate": "2026-03-05T10:00:00.000000Z",
"lastUpdateDate": "2026-03-26T10:00:00.000000Z",
"data": {
"visibility_curve": [ ... ],
"tone_chart": { ... },
"group_visibility_chart": { ... },
"visibility": { ... }
}
}
Поля data
| Поле | Описание |
|---|---|
visibility_curve | Кривая видимости бренда по датам обновлений (серии по нейросетям + общая) |
tone_chart | Диаграмма тональности: positive / neutral / negative |
group_visibility_chart | Видимость в разрезе групп запросов |
visibility | Текущая видимость и динамика |
Конкуренты
GET /api/projects/{project}/competitors
Возвращает данные по конкурентам: таблицу видимости, графики, радарные диаграммы, долю голоса (share of voice).
Параметры запроса (query)
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
dates[] | array | весь период | Диапазон дат |
neurals[] | array<int> | все нейросети проекта | ID нейросетей |
groups[] | array<int> | все запросы | ID групп запросов. Фильтрует конкурентов только по промптам из указанных групп. |
type | string | — | Тип конкурента: brand, competitor или пусто (все) |
search | string | — | Поиск по имени конкурента |
metrics | string | — | Метрика: visibility, mentions, share_of_voice |
metricsAction | string | — | Фильтр динамики: up (рост), down (падение), zero (без изменений) |
competitors_count | integer | — | Ограничить количество конкурентов в ответе |
Пример: конкуренты по группе «Сравнительные запросы»
curl -X GET "https://ai.pixeltools.ru/api/projects/1/competitors?groups[]=12" \
-H "Authorization: Bearer YOUR_API_TOKEN"
Ответ
{
"project": { ... },
"filters": {
"dates": ["2026-03-01", "2026-03-31"],
"neurals": [1, 2, 3],
"groups": [12],
"type": null,
"search": null,
"metrics": null,
"metricsAction": null,
"competitors_count": null
},
"types": {
"brand": "Бренд",
"competitor": "Конкурент"
},
"data": {
"updateDates": ["2026-03-05", "2026-03-12"],
"firstUpdateDate": "2026-03-05",
"lastUpdateDate": "2026-03-12",
"tableData": [
{
"id": 101,
"competitor": "Конкурент А",
"type": "competitor",
"visibility": { "first": 45.5, "last": 52.3, "delta": 6.8 },
"mentions": { "first": 12, "last": 15, "delta": 3 },
"share_of_voice": { "first": 18.2, "last": 21.0, "delta": 2.8 },
"members": [ ... ]
}
],
"excludedTableData": [ ... ],
"chartData": {
"visibility": [ ... ],
"mentions": [ ... ],
"share_of_voice": [ ... ]
},
"radarChartData": {
"visibility": [ ... ],
"mentions": [ ... ],
"share_of_voice": [ ... ]
}
}
}
Ответы
GET /api/projects/{project}/answers
Возвращает анализ ответов нейросетей по проекту: таблицу видимости (позиции, упоминания, тональность) и историю по датам обновлений.
Параметры запроса (query)
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
dates[] | array | весь период | Диапазон дат |
neurals[] | array<int> | все нейросети проекта | ID нейросетей |
groups[] | array<int> | все запросы | ID групп запросов. Возвращает данные только по промптам из указанных групп. |
prompt | string | — | Поиск по тексту запроса (LIKE) |
mention | string | — | Фильтр упоминаний: has (упомянут), not (не упомянут), has_source (есть в источниках) |
tone | string | — | Фильтр тональности: positive, neutral, negative |
visibility | string | — | Фильтр динамики видимости: up (выросла), down (упала) |
sortField | string | — | Поле сортировки (например frequency_sort) |
sortOrder | string | — | Направление сортировки: asc или desc |
Пример: ответы по группе «Репутационные запросы» с фильтром по упоминаниям
curl -X GET "https://ai.pixeltools.ru/api/projects/1/answers?groups[]=5&mention=has" \
-H "Authorization: Bearer YOUR_API_TOKEN"
Ответ
{
"project": { ... },
"filters": {
"dates": ["2026-03-01", "2026-03-31"],
"neurals": [1, 2, 3],
"groups": [5],
"prompt": "",
"mention": "has",
"tone": null,
"visibility": null,
"sortField": null,
"sortOrder": null
},
"data": {
"visibility": {
"tableData": {
"rows": [
{
"id": 101,
"value": "отзывы о MyBrand",
"groups": ["Репутационные запросы"],
"groups_raw": [{ "id": 5, "value": "Репутационные запросы" }],
"visibility": 75.0,
"dynamic": "up",
"frequency": 1200,
"relevant_query": "отзывы mybrand",
"neurals": {
"1": { "mention": 1, "mention_position": 2, "tone": "positive", "comment": "..." },
"3": { "mention": 1, "mention_position": 1, "tone": "neutral", "comment": "..." }
}
}
],
"has_more": true,
"next_cursor": "eyJ..."
},
"chartData": { ... }
},
"history": {
"tableData": { ... },
"chartData": { ... }
}
}
}
Поля строки таблицы visibility.tableData.rows[]
| Поле | Тип | Описание |
|---|---|---|
id | integer | ID промпта |
value | string | Текст запроса |
groups | array<string> | Названия групп, в которые входит запрос |
groups_raw | array | Группы с ID — массив {id, value} |
visibility | float|null | Видимость (%) для последнего обновления |
dynamic | string|null | Динамика: up, down, not_changed |
frequency | integer|null | Частотность запроса (Wordstat) |
relevant_query | string|null | Релевантный запрос для Wordstat |
Пагинация: ответы возвращаются по 50 записей. Для получения следующей страницы передавайте cursor из next_cursor. Поле chartData возвращается только на первой странице.
Источники
GET /api/projects/{project}/sources
Возвращает данные по источникам: какие страницы ИИ-системы используют при генерации ответов.
Параметры запроса (query)
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
dates[] | array | весь период | Диапазон дат |
neurals[] | array<int> | нейросети с источниками | ID нейросетей (используются только нейросети, поддерживающие источники) |
groups[] | array<int> | все запросы | ID групп запросов. Фильтрует источники только по промптам из указанных групп. |
prompt_search | string | — | Поиск по тексту запроса |
mention_filter | string | — | Фильтр упоминаний |
urls_count | integer | 100000 | Максимальное количество URL в ответе |
min_frequency | integer | — | Минимальная частотность запроса |
visibility | string | — | Фильтр динамики: up, down |
Пример: источники по группе «Информационные запросы»
curl -X GET "https://ai.pixeltools.ru/api/projects/1/sources?groups[]=8" \
-H "Authorization: Bearer YOUR_API_TOKEN"
Ответ
{
"project": { ... },
"filters": {
"dates": ["2026-03-01", "2026-03-31"],
"neurals": [1, 3],
"groups": [8],
"urls_count": 100000,
"prompt_search": null,
"mention_filter": null,
"min_frequency": null,
"visibility": null
},
"data": {
"visibility": {
"tableData": { ... },
"chartData": { ... }
},
"sources": {
"tableData": { ... }
},
"history": {
"tableData": { ... }
}
}
}
Разделы data
| Раздел | Описание |
|---|---|
visibility | Видимость сайта проекта в источниках: таблица + график по датам |
sources | Список источников (URL или доменов) с количеством упоминаний |
history | История изменений по датам |
Сценарий: отчёт в разрезе группы запросов
Допустим, в проекте есть группы запросов: «Репутационные запросы» (id=5), «Сравнительные запросы» (id=12),
«Информационные запросы» (id=8). Чтобы построить отдельный отчёт по каждой группе,
выполните запросы к нужным эндпоинтам с параметром groups[].
Шаг 1. Получить список проектов
curl -X GET "https://ai.pixeltools.ru/api/projects" \
-H "Authorization: Bearer YOUR_API_TOKEN"
# Из ответа берём id проекта, например id = 1
Шаг 2. Получить список групп проекта
curl -X GET "https://ai.pixeltools.ru/api/projects/1/groups" \
-H "Authorization: Bearer YOUR_API_TOKEN"
# Ответ:
# { "data": [
# { "id": 5, "name": "Репутационные запросы", "is_favourite": true, "prompts_count": 12 },
# { "id": 8, "name": "Информационные запросы", "is_favourite": false, "prompts_count": 25 },
# { "id": 12, "name": "Сравнительные запросы", "is_favourite": false, "prompts_count": 8 }
# ]}
Шаг 3. Запросить данные по каждой группе
Репутационные запросы (id=5)
# Сводка
curl -X GET "https://ai.pixeltools.ru/api/projects/1/summary?groups[]=5" \
-H "Authorization: Bearer YOUR_API_TOKEN"
# Ответы (видимость + история)
curl -X GET "https://ai.pixeltools.ru/api/projects/1/answers?groups[]=5" \
-H "Authorization: Bearer YOUR_API_TOKEN"
# Конкуренты
curl -X GET "https://ai.pixeltools.ru/api/projects/1/competitors?groups[]=5" \
-H "Authorization: Bearer YOUR_API_TOKEN"
# Источники
curl -X GET "https://ai.pixeltools.ru/api/projects/1/sources?groups[]=5" \
-H "Authorization: Bearer YOUR_API_TOKEN"
Сравнительные запросы (id=12)
curl -X GET "https://ai.pixeltools.ru/api/projects/1/answers?groups[]=12" \
-H "Authorization: Bearer YOUR_API_TOKEN"
curl -X GET "https://ai.pixeltools.ru/api/projects/1/competitors?groups[]=12" \
-H "Authorization: Bearer YOUR_API_TOKEN"
curl -X GET "https://ai.pixeltools.ru/api/projects/1/sources?groups[]=12" \
-H "Authorization: Bearer YOUR_API_TOKEN"
Шаг 4. Комбинирование фильтров
Параметр groups[] можно комбинировать с другими фильтрами:
# Репутационные запросы + только ChatGPT (neural id=1) + за март 2026
curl -X GET "https://ai.pixeltools.ru/api/projects/1/answers?\
groups[]=5&\
neurals[]=1&\
dates[]=2026-03-01&dates[]=2026-03-31" \
-H "Authorization: Bearer YOUR_API_TOKEN"
# Сравнительные запросы + только упомянутые + позитивная тональность
curl -X GET "https://ai.pixeltools.ru/api/projects/1/answers?\
groups[]=12&\
mention=has&\
tone=positive" \
-H "Authorization: Bearer YOUR_API_TOKEN"
# Конкуренты по репутационным запросам, только растущие
curl -X GET "https://ai.pixeltools.ru/api/projects/1/competitors?\
groups[]=5&\
metricsAction=up" \
-H "Authorization: Bearer YOUR_API_TOKEN"
Все параметры фильтрации
Сводная таблица параметров, поддерживаемых каждым эндпоинтом.
| Параметр | summary | competitors | answers | sources | Описание |
|---|---|---|---|---|---|
dates[] |
✓ | ✓ | ✓ | ✓ | Диапазон дат [start, end] |
neurals[] |
✓ | ✓ | ✓ | ✓ | ID нейросетей |
groups[] |
✓ | ✓ | ✓ | ✓ | ID групп запросов |
prompt |
✓ | Поиск по тексту запроса | |||
prompt_search |
✓ | Поиск по тексту запроса (источники) | |||
mention |
✓ | has / not / has_source |
|||
mention_filter |
✓ | Фильтр упоминаний для источников | |||
tone |
✓ | positive / neutral / negative |
|||
visibility |
✓ | ✓ | up / down |
||
type |
✓ | brand / competitor |
|||
search |
✓ | Поиск по имени конкурента | |||
metrics |
✓ | visibility / mentions / share_of_voice |
|||
metricsAction |
✓ | up / down / zero |
|||
competitors_count |
✓ | Лимит количества конкурентов | |||
urls_count |
✓ | Лимит URL | |||
min_frequency |
✓ | Минимальная частотность | |||
sortField |
✓ | Поле сортировки | |||
sortOrder |
✓ | asc / desc |
Возможные ошибки
401 Unauthorized
{
"message": "Invalid API token"
}
Неверный или отсутствующий API-токен.
403 Forbidden
Нет доступа к проекту. Убедитесь, что проект принадлежит вам или расшарен для вас.
404 Not Found
Проект не найден.
422 Validation Error
Ошибка валидации параметров запроса.
{
"message": "The given data was invalid.",
"errors": { ... }
}