👥 API: Клиенты
Управление профилями клиентов, атрибутами и историей изменений
user_id или anonymous_id создает отдельный профиль.
Базовые понятия
Идентификаторы клиентов
| Тип ID | Описание | Пример |
|---|---|---|
user_id |
Внешний ID из вашей системы (email, номер клиента, UUID) | "user_12345", "customer@example.com" |
anonymous_id |
ID неавторизованного пользователя (cookie, device ID) | "abc-123-def" |
id (Instant) |
Внутренний числовой ID в системе InstantBase | 10042 |
Атрибуты клиентов
Атрибуты — это любая информация о клиенте: email, телефон, имя, город, подписка и т.д. Они могут быть:
- Системные — предустановленные атрибуты (email, телефон)
- Пользовательские — любые атрибуты, которые вы передаете
Эндпоинты для работы с клиентами
1. Получение списка клиентов
GET /api/customers — получение списка клиентов с пагинацией, поиском и сортировкой.
Параметры запроса
| Параметр | Описание | По умолчанию |
|---|---|---|
page |
Номер страницы | 1 |
limit |
Количество записей на странице | 20 |
search |
Поиск по ID или UID | — |
sort_column |
Поле для сортировки | last_seen |
sort_direction |
Направление сортировки (asc или desc) |
desc |
Допустимые поля для сортировки
id— внутренний IDuid— внешний IDfirst_seen— дата первого входаlast_seen— дата последней активностиcountry— странаregion— регионcity— городip— последний IPevents_count— количество событий- Любые пользовательские атрибуты
Пример запроса
curl -X GET "https://api.instantbase.online/api/customers?page=1&limit=20&sort_column=last_seen&sort_direction=desc" \
-H "Cookie: session_id=ваша_сессия"
Пример ответа
{
"data": [
{
"id": 10042,
"external_account_id": "user_12345",
"first_seen": "2026-03-01 10:23:00",
"last_seen_at": "2026-03-19 14:32:00",
"events_count": 156,
"ip": "192.168.1.1",
"country": "Россия",
"region": "Москва",
"city": "Москва",
"attributes": {
"email": "user@example.com",
"name": "Иван Петров",
"phone": "+79001234567",
"subscription_plan": "premium"
},
"email": "user@example.com"
}
],
"pagination": {
"page": 1,
"limit": 20,
"total": 156,
"pages": 8
},
"sort": {
"column": "last_seen",
"direction": "desc"
}
}
2. Получение метрик клиентов
GET /api/customers/metrics?from=...&to=... — агрегированные метрики по клиентам за период.
Параметры запроса
| Параметр | Описание | По умолчанию |
|---|---|---|
from |
Начальная дата (YYYY-MM-DD) | -30 дней |
to |
Конечная дата (YYYY-MM-DD) | сегодня |
Пример ответа
{
"success": true,
"total_customers": 1250,
"new_customers": 234,
"activation_rate": 67.5,
"avg_activity": 12.3,
"total_change": 5.2,
"new_change": 8.1,
"activation_change": -2.3,
"avg_change": 1.5,
"period": {
"from": "2026-03-01",
"to": "2026-03-19"
}
}
| Поле | Описание |
|---|---|
total_customers |
Всего уникальных клиентов за период |
new_customers |
Новые клиенты (первое событие в периоде) |
activation_rate |
Процент новых клиентов, совершивших целевое действие |
avg_activity |
Среднее количество событий на клиента |
3. Получение доступных атрибутов
GET /api/customers/attributes — список всех атрибутов, которые можно отображать в таблице клиентов.
Пример ответа
{
"success": true,
"attributes": [
{
"id": 1,
"name": "email",
"value_type": "string",
"display_name": "Email",
"category": "Контакты",
"format": null,
"visible_in_customers": true
},
{
"id": 2,
"name": "phone",
"value_type": "string",
"display_name": "Телефон",
"category": "Контакты",
"format": null,
"visible_in_customers": true
},
{
"id": 3,
"name": "subscription_plan",
"value_type": "string",
"display_name": "Тариф",
"category": "Подписка",
"format": null,
"visible_in_customers": true
}
]
}
4. История изменений атрибута
GET /api/customers/attribute-history?account_id=...&attribute_id=... — просмотр истории изменений конкретного атрибута клиента.
Параметры запроса
| Параметр | Описание |
|---|---|
account_id |
ID клиента в системе InstantBase |
attribute_id |
ID атрибута |
Пример ответа
{
"success": true,
"account_id": 10042,
"account_name": "user_12345",
"attribute": {
"id": 3,
"name": "subscription_plan",
"display_name": "Тариф",
"value_type": "string"
},
"history": [
{
"created_at": "2026-03-19 10:23:00",
"value": "premium",
"is_current": true,
"source_version": "1.2.0"
},
{
"created_at": "2026-03-01 14:30:00",
"value": "basic",
"is_current": false,
"source_version": "1.1.0"
}
]
}
5. География пользователей
GET /api/geography?from=...&to=...&level=... — распределение пользователей по странам, регионам и городам.
Параметры запроса
| Параметр | Описание | По умолчанию |
|---|---|---|
from |
Начальная дата | -30 дней |
to |
Конечная дата | сегодня |
level |
Уровень детализации: country, region, city |
country |
Пример ответа
[
{
"name": "Россия",
"country_code": "RU",
"users_count": 1250,
"events_count": 15420
},
{
"name": "США",
"country_code": "US",
"users_count": 450,
"events_count": 5230
}
]
Работа с атрибутами
Добавление атрибутов через события
Атрибуты передаются в поле attributes при отправке события:
{
"event": "signup",
"user_id": "user_123",
"attributes": {
"email": "user@example.com",
"name": "Иван Петров",
"phone": "+79001234567",
"birth_date": "1990-01-01",
"city": "Москва",
"subscription_plan": "premium",
"preferred_language": "ru"
}
}
Типы данных атрибутов
InstantBase автоматически определяет тип данных атрибута:
| Тип данных | Описание | Пример |
|---|---|---|
string |
Текстовое значение | "Иван Петров" |
integer |
Целое число | 25 |
float |
Число с плавающей точкой | 3.14 |
boolean |
Логическое значение | true |
date |
Дата (автоматически распознается) | "1990-01-01" |
json |
Сложные структуры | {"key": "value"} |
Обновление атрибутов
При отправке события с теми же именами атрибутов их значения обновляются. История изменений сохраняется.
// Первое событие
{
"event": "user_updated",
"user_id": "user_123",
"attributes": {
"subscription_plan": "basic"
}
}
// Через месяц апгрейд
{
"event": "user_updated",
"user_id": "user_123",
"attributes": {
"subscription_plan": "premium"
}
}
Системные атрибуты
Некоторые атрибуты имеют специальное значение и обрабатываются особым образом:
| Атрибут | Описание | Применение |
|---|---|---|
email |
Email пользователя | Используется для уведомлений, отображается в интерфейсе |
phone |
Телефон пользователя | Для уведомлений и верификации |
name |
Имя пользователя | Отображается в интерфейсе |
Метаданные атрибутов
Метаданные позволяют настроить отображение и поведение атрибутов:
| Метаданные | Описание | Пример |
|---|---|---|
attribute_display_name |
Отображаемое имя атрибута | "Тариф" |
attribute_category |
Категория для группировки | "Подписка" |
attribute_color |
Цвет для виджетов | "#FF5733" |
attribute_format |
Формат отображения | currency, percent, date |
attribute_visible_in_customers |
Показывать ли атрибут в таблице клиентов | true |
Пример передачи метаданных атрибута
{
"event": "user_updated",
"user_id": "user_123",
"attributes": {
"subscription_plan": "premium",
"_metadata": {
"subscription_plan": {
"attribute_display_name": "Тариф",
"attribute_category": "Подписка",
"attribute_format": "string"
}
}
}
}
Фильтрация и поиск
Поиск по клиентам
Параметр search позволяет искать:
- По числовому ID:
?search=10042 - По внешнему UID:
?search=user_123
Сортировка по пользовательским атрибутам
Можно сортировать по любому атрибуту, указав его имя в sort_column:
GET /api/customers?sort_column=email&sort_direction=asc
Геоданные
Информация о местоположении пользователей определяется автоматически по IP-адресу. Доступны следующие уровни детализации:
| Уровень | Описание |
|---|---|
country |
Страна (по умолчанию, если пользователи распределены) |
region |
Регион/область (автоматически, если >80% из одной страны) |
city |
Город (автоматически, если >80% из одного региона) |
Примеры использования
Создание профиля при регистрации
{
"event": "signup",
"user_id": "user_12345",
"attributes": {
"email": "user@example.com",
"name": "Иван Петров",
"phone": "+79001234567",
"referral_source": "google_ads"
}
}
Обновление профиля
{
"event": "profile_updated",
"user_id": "user_12345",
"attributes": {
"name": "Иван Иванов",
"city": "Санкт-Петербург"
}
}
Получение клиентов с определенным атрибутом
Для фильтрации по атрибутам используйте поиск или загрузите всех клиентов и фильтруйте на стороне клиента.
Коды ошибок
| Код | Описание | Решение |
|---|---|---|
| 400 | Invalid date format | Проверьте формат дат (YYYY-MM-DD) |
| 400 | Application not found | Проверьте переданный app_id |
| 401 | Unauthorized | Требуется авторизация через сессию |
| 404 | Customer not found | Клиент с указанным ID не найден |
| 500 | Internal server error | Повторите запрос позже |
Рекомендации
- Передавайте атрибуты при каждом событии — даже если они не меняются, это гарантирует актуальность данных
- Используйте единый формат данных — например, всегда передавайте телефон в формате
+79001234567 - Не создавайте слишком много атрибутов — фокусируйтесь на действительно важных для бизнеса
- Настраивайте метаданные атрибутов — это улучшает отображение в интерфейсе
- Проверяйте историю изменений — это помогает отлаживать проблемы
Что дальше?
Нужна помощь с профилями клиентов?
Напишите нам, и мы поможем настроить атрибуты