# VisitorCounter. Счётчики посетителей

> Источник: https://wiki.virtualpos.ru/hc/api/visitorcounter  
> Обновлено: 2026-09-26

Метод принимает данные с внешних счётчиков посетителей: количество вошедших и вышедших людей по точке продаж на определённый момент времени. Эти данные используются в отчётах, например для расчёта конверсии. Получить данные обратно через API нельзя.

> **Примечание:**
> Как получить ключ, как формируются запросы и какие бывают ответы и ошибки — в статье [Общие сведения](https://wiki.virtualpos.ru/hc/api/overview). Здесь описаны только особенности метода `visitorCounter`.

## Методы

| Метод | Адрес | Что делает |
| --- | --- | --- |
| Добавить данные | `/api/visitorCounter/update` | Записывает показания счётчика, при повторном вызове меняет их |
| Получить данные | `/api/visitorCounter` | Не реализован: всегда возвращает ошибку `not implemented` |

Загруженные данные можно посмотреть в панели управления.

## Добавление данных

```
GET https://[компания].myvirtualpos.ru/api/visitorCounter/update?apikey=MySecret&warehouse_id=6&date=2026-09-01%2012:00:00&count_in=12&count_out=11
```

> **Важно:**
> **Все параметры передаются только в адресной строке (GET).** Параметры `warehouse_id` и `date` обязательны: если их нет, сервер вернёт страницу ошибки HTTP 400 вместо ответа в формате API. При отправке параметров в теле POST-запроса они не читаются, и результат тот же. Пробел в дате кодируйте как `%20`.

### Параметры

- **warehouse_id** — Число. Ид точки продаж, к которой относятся показания. Обязателен. Точка продаж должна существовать
- **date** — Строка. Дата и время показаний в формате `гггг-мм-дд чч:мм:сс`. Обязателен. Только дата без времени не принимается
- **count_in** — Целое число. Сколько человек вошло. По умолчанию `0`
- **count_out** — Целое число. Сколько человек вышло. По умолчанию `0`
- **format** — `json` (по умолчанию) или `xml`

Запись определяется парой «точка продаж + дата и время». Если такая запись уже есть, она обновляется, иначе создаётся новая.

> **Важно:**
> **Показания заменяются целиком.** При повторной отправке для той же точки и времени обе величины заменяются на переданные, а не переданная — на `0`. Например, если сначала передать `count_in=12&count_out=11`, а затем только `count_in=20`, то `count_out` станет `0`. Всегда передавайте обе величины.

### Ответ

```json
{"success":1,"id":"1","is_new":true}
```

- **success** — `1` — показания сохранены
- **id** — Ид записи. При создании приходит строкой, при изменении — числом
- **is_new** — `true` — запись создана, `false` — обновлена существующая. В XML для `false` приходит пустой элемент

## Пример запроса

| Задача | Запрос |
| --- | --- |
| Передать показания за 12:00 | `/api/visitorCounter/update?apikey=MySecret&warehouse_id=6&date=2026-09-01%2012:00:00&count_in=12&count_out=11` |
| Ответ в XML | `/api/visitorCounter/update?apikey=MySecret&format=xml&warehouse_id=6&date=2026-09-01%2012:00:00&count_in=1&count_out=1` |

## Ошибки

Ошибка авторизации и общие ошибки описаны в статье [Общие сведения](https://wiki.virtualpos.ru/hc/api/overview). Ошибки приходят с кодом HTTP 200 и `success` равным `0`:

| Сообщение | Причина | Что делать |
| --- | --- | --- |
| Error validating data | Точка продаж не существует, дата не в формате `гггг-мм-дд чч:мм:сс`, `count_in` или `count_out` не целые числа | Проверьте значения параметров |
| Error saving data | Ошибка сохранения | Повторите запрос; если ошибка повторяется, обратитесь в поддержку |
| not implemented | Вызван метод получения данных | Метод не реализован |

Если не переданы `warehouse_id` или `date`, сервер вернёт страницу с ошибкой HTTP 400.

## Связанные разделы

- [Общие сведения](https://wiki.virtualpos.ru/hc/api/overview) — Ключ доступа, вызов методов, форматы ответов и ошибки
- [Warehouse. Точки продаж](https://wiki.virtualpos.ru/hc/api/warehouse) — Справочник точек продаж
