REST API v1

API Документация

Внешнее API позволяет AI-ассистентам, скриптам и любым сервисам создавать задачи напрямую — они мгновенно появляются в трекере и приходят уведомлением в Telegram.

Получить API ключ

1
Напиши /start в Telegram-боте — получишь auth key для входа на сайт
2
Войди на сайт и в левом меню нажми API ключ — там твой ngsapi-... ключ
3
Или получи ключ командой /apikey прямо в боте

Создать задачу

POST /api/external/tasks

Headers

HeaderЗначение
Content-Typeapplication/json
x-api-keyТвой API ключ (ngsapi-...)

Body (JSON)

ПолеТипОбязательноОписание
titlestringНазвание задачи
descriptionstringПодробное описание
deadlinestring ISO 8601"2025-12-31T18:00:00.000Z"
prioritystring"high" / "medium" / "low"
send_to_botbooleanОтправить уведомление в Telegram (default: true)

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

bash / curl
curl -X POST https://ngservicebot.ru/api/external/tasks \
  -H "Content-Type: application/json" \
  -H "x-api-key: ngsapi-ВАШ_КЛЮЧ" \
  -d '{
    "title": "Подготовить презентацию",
    "description": "Слайды для встречи с командой в пятницу",
    "deadline": "2025-05-02T10:00:00.000Z",
    "priority": "high",
    "send_to_bot": true
  }'

Ответ

json
{
  "success": true,
  "task": {
    "id": 42,
    "title": "Подготовить презентацию",
    "priority": "high",
    "deadline": "2025-05-02T10:00:00.000Z",
    "status": "pending",
    "url": "https://ngservicebot.ru/user/123456789/tasks/42"
  }
}

Список задач

GET /api/external/tasks?status=pending

Query params

ПараметрЗначение
statuspending / done / cancelled — default: pending

Ответ

json
{
  "tasks": [
    {
      "id": 101,
      "title": "Проверить логи",
      "deadline": "2025-05-09T12:00:00Z",
      "folder_name": "NGS TASKS",
      "status": "pending"
    },
    {
      "id": 102,
      "title": "Написать пост",
      "deadline": "2025-05-09T15:00:00Z",
      "folder_name": null,
      "status": "pending"
    }
  ]
}

Использование с Claude AI

Добавь системный промпт чтобы Claude мог управлять задачами и группировать их по папкам.

System Prompt

У тебя есть доступ к NGS Tasks Tracker API для управления задачами пользователя.

Endpoints:
- GET https://ngservicebot.ru/api/external/tasks?status=pending
- POST https://ngservicebot.ru/api/external/tasks
API Key: ngsapi-ВАШ_КЛЮЧ

Логика работы с задачами на сегодня:
Когда пользователь говорит "Сделай все задачи на сегодня":
1. Получи список всех активных задач (GET).
2. Отфильтруй те, чей deadline соответствует сегодняшнему числу.
3. Сгруппируй их по полю folder_name. Если папки нет, используй группу "Без папки".
4. Выдай пользователю список задач по папкам, например:
   NGS TASKS:
   - Подготовить отчет
   Без папки:
   - Купить кофе
5. Обязательно спроси: "С какой папки (или задачи) начнём?"
6. После ответа пользователя приступай к выполнению конкретных задач.

Формат дедлайна при создании: ISO 8601 (например "2025-12-31T18:00:00.000Z")

Python SDK (Anthropic)

Пример интеграции с официальным Python SDK и function calling.

python
import anthropic
import requests

client = anthropic.Anthropic(api_key="sk-ant-...")

NGS_API_KEY = "ngsapi-ВАШ_КЛЮЧ"
NGS_API_URL = "https://ngservicebot.ru/api/external/tasks"

tools = [{
    "name": "create_task",
    "description": "Создать задачу в NGS Tasks Tracker. Задача придёт в Telegram.",
    "input_schema": {
        "type": "object",
        "properties": {
            "title":       {"type": "string", "description": "Название задачи"},
            "description": {"type": "string", "description": "Подробное описание"},
            "deadline":    {"type": "string", "description": "ISO 8601, напр. 2025-12-31T18:00:00.000Z"},
            "priority":    {"type": "string", "enum": ["high", "medium", "low"]},
        },
        "required": ["title"]
    }
}]

def create_task(**kwargs):
    res = requests.post(
        NGS_API_URL,
        headers={"Content-Type": "application/json", "x-api-key": NGS_API_KEY},
        json={**kwargs, "send_to_bot": True}
    )
    return res.json()

response = client.messages.create(
    model="claude-opus-4-5",
    max_tokens=1024,
    tools=tools,
    messages=[{"role": "user", "content": "Напомни завтра в 10 утра проверить почту"}]
)

for block in response.content:
    if block.type == "tool_use" and block.name == "create_task":
        result = create_task(**block.input)
        print(f"Задача создана: {result}")

Коды ответов

200
Успешно выполнено
400
Ошибка валидации — не передан title или неверный формат
401
Неверный или отсутствующий x-api-key
404
Задача не найдена
500
Внутренняя ошибка сервера

Автоматические напоминания

Если задача создана с deadline, бот автоматически отправит уведомления в Telegram:

📅
За 24 часа до дедлайна — предупреждение
За 1 час до дедлайна — срочное напоминание
🚨
После просрочки — уведомление о пропуске дедлайна

Формат даты (deadline)

iso 8601
# UTC
"2025-12-31T18:00:00.000Z"

# Московское время (+03:00)
"2025-12-31T21:00:00.000+03:00"