readЧтение данных
Просмотр существующих записей без изменений.
GLINGO ДЛЯ РАЗРАБОТЧИКОВ
Время, деньги, проекты и аналитика — в ваших инструментах. Понятный API для интеграций и MCP для AI-ассистентов.
Базовый адрес API
https://app.glingo.ru/api01
Получите первую страницу записей времени. Вместо заполнителя подставьте свой API-ключ.
curl "https://app.glingo.ru/api/time?page=1&page_size=50" \
-H "x-api-key: <glk_...>"{
"ok": true,
"data": {
"entries": [],
"totalCount": 0
}
}Создайте API-ключ в настройках → API и MCP. Каждый ключ привязан к одному пространству и использует права своего владельца. Передавайте его с каждым запросом.
x-api-key: <glk_...>
Content-Type: application/jsonХраните ключ на сервере. Не размещайте его в коде браузера или публичных репозиториях. Если ключ больше не нужен, отзовите его в настройках.
Управление API-ключамиНабор прав ключа определяет доступные операции. Роль в пространстве по-прежнему ограничивает доступные записи и отчёты.
readПросмотр существующих записей без изменений.
fullЧтение, создание, изменение и удаление записей.
reports:readВходит в новые ключи read и full. Старые ключи без reports:read нужно пересоздать для аналитики. Отчёты по команде, активности и должникам доступны владельцу и администратору.
02
Примеры запросов и ответов сокращены. Полный контракт доступен в схеме OpenAPI.
Схема OpenAPIPUT-запросы следуют контракту обновления конкретного метода. Перед частичным обновлением проверьте обязательные поля в схеме.
/api/timeПолучить список записей времени + stats + chart_by_day + chart_by_hour.Право: read
Параметры
page, page_size, accrual_from, accrual_to, created_from, created_to, counteragent_id, project_id, sort_by, sort_dir
curl -X GET "https://app.glingo.ru/api/time?page=1&page_size=50" \
-H "x-api-key: <api_key>"{
"ok": true,
"data": {
"entries": [{ "id": "uuid", "description": "Консультация" }],
"totalCount": 42
}
}/api/timeСоздать запись времени.Право: full
Параметры
body: description, accrual_date, duration_minutes_total, cost, currency, counteragent_id?, project_id?
curl -X POST "https://app.glingo.ru/api/time" \
-H "x-api-key: <api_key>" \
-H "Content-Type: application/json" \
-d '{
"description": "Работа по проекту",
"accrual_date": "2026-03-19",
"duration_minutes_total": 90,
"cost": 3500,
"currency": "RUB"
}'{
"ok": true,
"data": { "entry": { "id": "uuid" } }
}/api/time/:idОбновить запись времени.Право: full
Параметры
path: id, body: description, accrual_date, duration_minutes_total, cost, currency, counteragent_id?, project_id?
curl -X PUT "https://app.glingo.ru/api/time/<id>" \
-H "x-api-key: <api_key>" \
-H "Content-Type: application/json" \
-d '{ "description": "Обновленное описание" }'{
"ok": true,
"data": { "entry": { "id": "uuid" } }
}/api/time/:idУдалить запись времени.Право: full
Параметры
path: id
curl -X DELETE "https://app.glingo.ru/api/time/<id>" \
-H "x-api-key: <api_key>"{
"ok": true,
"data": { "id": "uuid" }
}/api/moneyПолучить список поступлений + totals + chart_by_day.Право: read
Параметры
page, page_size, search, inflow_from, inflow_to, counteragent_id, project_id, include_totals, totals_only, sort_by, sort_dir
curl -X GET "https://app.glingo.ru/api/money?page=1&page_size=50" \
-H "x-api-key: <api_key>"{
"ok": true,
"data": {
"inflows": [{ "id": "uuid", "amount": 5000 }],
"totalCount": 12
}
}/api/moneyСоздать поступление.Право: full
Параметры
body: inflow_date, amount, currency, comment?, counteragent_id?, project_id?
curl -X POST "https://app.glingo.ru/api/money" \
-H "x-api-key: <api_key>" \
-H "Content-Type: application/json" \
-d '{
"inflow_date": "2026-03-20",
"amount": 15000,
"currency": "RUB",
"comment": "Оплата этапа #2"
}'{
"ok": true,
"data": { "inflow": { "id": "uuid", "amount": 15000 } }
}/api/money/:idОбновить поступление.Право: full
Параметры
path: id, body: inflow_date, amount, currency, comment?, counteragent_id?, project_id?
{
"ok": true,
"data": { "inflow": { "id": "uuid" } }
}/api/money/:idУдалить поступление.Право: full
Параметры
path: id
{
"ok": true,
"data": { "id": "uuid" }
}/api/projectsПолучить список проектов и финансовые агрегаты.Право: read
Параметры
page, page_size, search, for_select, include_totals, totals_only, accrual_from, accrual_to, sort_by, sort_dir
{
"ok": true,
"data": { "projects": [{ "id": "uuid", "name": "Лендинг" }], "totalCount": 4 }
}/api/projectsСоздать проект.Право: full
Параметры
body: name, counteragent_id?
{
"ok": true,
"data": { "project": { "id": "uuid" } }
}/api/projects/:idОбновить проект.Право: full
Параметры
path: id, body: name, counteragent_id?
{
"ok": true,
"data": { "project": { "id": "uuid" } }
}/api/projects/:idУдалить проект.Право: full
Параметры
path: id
{
"ok": true,
"data": { "id": "uuid" }
}/api/counteragentsПолучить список клиентов и агрегаты.Право: read
Параметры
page, page_size, search, for_select, include_totals, totals_only, accrual_from, accrual_to, sort_by, sort_dir
{
"ok": true,
"data": { "counteragents": [{ "id": "uuid", "name": "ООО Ромашка" }], "totalCount": 7 }
}/api/counteragentsСоздать клиента.Право: full
Параметры
body: name
{
"ok": true,
"data": { "counteragent": { "id": "uuid" } }
}/api/counteragents/:idОбновить клиента.Право: full
Параметры
path: id, body: name
{
"ok": true,
"data": { "counteragent": { "id": "uuid" } }
}/api/counteragents/:idУдалить клиента.Право: full
Параметры
path: id
{
"ok": true,
"data": { "id": "uuid" }
}/api/calendarПолучить срез календаря на месяц.Право: read
Параметры
month=YYYY-MM-01
{
"ok": true,
"data": {
"month": "2026-03-01",
"rows": [{ "accrual_date": "2026-03-10", "total_cost": "5000.00" }]
}
}/api/me/accessПолучить текущий контекст доступа и workspace.Право: read
Параметры
-
{
"ok": true,
"data": {
"workspace": { "id": "uuid", "slug": "ivanochek", "role": "owner" }
}
}/api/reports/teamВремя, начислено, получено и долг участников. full возвращает таблицу и сводку; summary — сводку без строк; table — только строки и период. Фильтры ID — через запятую. Ниже сокращённый пример ответа.Право: reports:read
Параметры
accrual_from, accrual_to, project_id, counteragent_id, user_id, view=full|summary|table, sort_key=worked|earned|received|debt, sort_dir=asc|desc
curl "https://app.glingo.ru/api/reports/team?view=table" -H "x-api-key: <api_key>"{
"ok": true,
"data": {
"can_manage_team": true,
"period": {
"accrual_from": null,
"accrual_to": null
},
"rows": []
}
}/api/reports/activityСводка активности, сравнение периодов, участники, проекты, клиенты и лента событий. Пагинация относится только к ленте. Фильтры ID — через запятую. Ниже сокращённый пример ответа.Право: reports:read
Параметры
date_from, date_to, project_id, counteragent_id, user_id, feed_limit (1–100, default 30), feed_offset (default 0)
curl "https://app.glingo.ru/api/reports/activity" -H "x-api-key: <api_key>"{
"ok": true,
"data": {
"can_manage_team": true,
"feed": [],
"feed_pagination": {
"offset": 0,
"limit": 30,
"total": 0,
"has_more": false
}
}
}/api/reports/debtorsДолги по клиентам или проектам, риски и сравнение с предыдущим периодом. Фильтры ID — через запятую. Ниже сокращённый пример ответа.Право: reports:read
Параметры
accrual_from, accrual_to, project_id, counteragent_id, user_id, view=counteragents|projects, sort_key=name|client|debt|earned|received|last_paid|age|projects_count, sort_dir=asc|desc, overdue_only=1
curl "https://app.glingo.ru/api/reports/debtors" -H "x-api-key: <api_key>"{
"ok": true,
"data": {
"can_manage_team": true,
"view": "counteragents",
"rows": [],
"comparison": null
}
}/api/reports/debtors/reconciliationНачисления и оплаты одной сущности до accrual_to включительно, с накопительным долгом. Ответ JSON можно использовать для выгрузки CSV. Фильтры ID — через запятую. Ниже сокращённый пример ответа.Право: reports:read
Параметры
entity_id (required UUID), view=counteragents|projects, accrual_to
curl "https://app.glingo.ru/api/reports/debtors/reconciliation?entity_id=00000000-0000-4000-8000-000000000001" -H "x-api-key: <api_key>"{
"ok": true,
"data": {
"view": "counteragents",
"entity_id": "00000000-0000-4000-8000-000000000001",
"entity_name": "Acme",
"period": {
"accrual_to": null
},
"rows": [],
"totals": {
"worked_minutes_total": 0,
"earned_total": 0,
"received_total": 0,
"debt_total": 0
}
}
}/api/timesheet-matrixМинуты по дням с итогами по проектам, клиентам или команде. По умолчанию текущий месяц UTC. Фильтры ID — через запятую. Ниже сокращённый пример ответа.Право: reports:read
Параметры
accrual_from, accrual_to, project_id, counteragent_id, user_id, view=project|counteragent|team
curl "https://app.glingo.ru/api/timesheet-matrix?accrual_from=2026-09-01&accrual_to=2026-09-01" -H "x-api-key: <api_key>"{
"ok": true,
"data": {
"view": "project",
"can_manage_team": true,
"unique_counteragents_count": 0,
"period": {
"accrual_from": "2026-09-01",
"accrual_to": "2026-09-01",
"days": [
"2026-09-01"
]
},
"rows": [],
"holidays": []
}
}/api/moneysheet-matrixНачислено или получено по дням и сущностям. По умолчанию earned и текущий месяц UTC. Фильтры ID — через запятую. Ниже сокращённый пример ответа.Право: reports:read
Параметры
accrual_from, accrual_to, project_id, counteragent_id, user_id, view=project|counteragent|team, metric=earned|received
curl "https://app.glingo.ru/api/moneysheet-matrix?accrual_from=2026-09-01&accrual_to=2026-09-01" -H "x-api-key: <api_key>"{
"ok": true,
"data": {
"view": "project",
"can_manage_team": true,
"unique_counteragents_count": 0,
"period": {
"accrual_from": "2026-09-01",
"accrual_to": "2026-09-01",
"days": [
"2026-09-01"
]
},
"rows": [],
"holidays": []
}
}/api/dashboard/overviewKPI времени и денег, динамика, должники, риски и последние записи в пределах доступных данных. Фильтры ID — через запятую. Ниже сокращённый пример ответа.Право: reports:read
Параметры
date_from, date_to, project_id, counteragent_id, user_id
curl "https://app.glingo.ru/api/dashboard/overview" -H "x-api-key: <api_key>"{
"ok": true,
"data": {
"can_manage_team": true,
"workspace_currency": "RUB",
"period": {
"from": null,
"to": null,
"previous_from": null,
"previous_to": null
}
}
}03
Подключите совместимого AI-ассистента к пространству через удалённый MCP. Настройка подключения и управление доступом находятся в настройках GlinGo.
https://app.glingo.ru/api/mcpОблачным клиентам нужен публичный HTTPS-адрес. OAuth должен быть включён на целевом стенде; API-ключи работают с клиентами, поддерживающими собственные заголовки.
Настроить MCPОтветы используют единый формат. Проверяйте ok при обработке HTTP-ответа.
{
"ok": false,
"error": {
"code": "unauthorized",
"message": "Unauthorized"
}
}| HTTP | code | Описание |
|---|---|---|
| 401 | unauthorized | Ключ отсутствует или недействителен. |
| 403 | forbidden | Недостаточно прав ключа или роли. |
| 400 | invalid_param | Некорректный параметр пути или запроса. |
| 400 | invalid_body | Некорректный JSON или тело запроса. |
| 400 | validation_error | Не пройдена проверка бизнес-правил. |
| 404 | not_found | Запись не найдена в пространстве. |
| 429 | rate_limited | Превышен лимит запросов. |
| 500 | api_error | Внутренняя ошибка API. |
Общий лимит API по умолчанию — 2000 запросов за 10 секунд на идентификатор клиента (IP + auth subject). Ответ 429 содержит заголовок Retry-After.
Для чтения учитывайте Retry-After или увеличивайте паузу между попытками с небольшим случайным смещением при 429/5xx. Перед повтором 400/401/403/404 исправьте запрос или права.
Если результат записи неизвестен, проверьте, выполнилась ли она, прежде чем повторять запрос: повтор может создать дубликат.