Разработка и API 12 мин чтения

Справочник эндпоинтов

Полный перечень всех REST API эндпоинтов: URL, параметры, примеры запросов и ответов

Полный справочник эндпоинтов REST API. Все запросы требуют заголовок Authorization: Bearer taipy_ваш_ключ.

Базовый URL: https://ваш-домен/api/v1/ext/. Все примеры curl используют сокращённую запись.

Аккаунт

GET /account/

Текущий тариф, остаток квот и лимиты сущностей.

curl -H "Authorization: Bearer taipy_КЛЮЧ" \
     https://ваш-домен/api/v1/ext/account/

Ответ:

{{
  "plan": {{"name": "ProMax", "tier": "PROMAX"}},
  "subscription": {{
    "is_active": true,
    "is_trial": false,
    "active_until": "2026-12-31T23:59:59+05:00",
    "activated_at": "2026-01-01T00:00:00+05:00"
  }},
  "quota": {{
    "posts": {{"used": 45, "limit": 100, "remaining": 55}},
    "images": {{"used": 30, "limit": 50, "remaining": 20}},
    "previews": {{"used": 5, "limit": 10, "remaining": 5}}
  }},
  "limits": {{
    "max_projects": 5,
    "max_campaigns": 10,
    "max_channels": 20
  }}
}}

Значение null в поле limit или remaining означает безлимит.

Проекты

GET /projects/

Список активных проектов пользователя.

curl -H "Authorization: Bearer taipy_КЛЮЧ" \
     https://ваш-домен/api/v1/ext/projects/

Ответ:

{{
  "projects": [
    {{
      "id": 1,
      "name": "IT Медиа",
      "description": "Технологический портал",
      "is_active": true,
      "created_at": "2026-01-15T10:00:00+05:00",
      "campaigns_count": 3,
      "channels_count": 2
    }}
  ]
}}

GET /projects/{id}/

Детали проекта с описанием ниши и целевой аудитории.

curl -H "Authorization: Bearer taipy_КЛЮЧ" \
     https://ваш-домен/api/v1/ext/projects/1/

Дополнительные поля: niche_description, target_audience.

GET /projects/{id}/channels/

Подключённые каналы публикации проекта.

{{
  "channels": [
    {{"id": 5, "name": "Техноблог Telegram", "platform": "TELEGRAM", "is_active": true}},
    {{"id": 8, "name": "VK Группа", "platform": "VK", "is_active": true}}
  ]
}}
Секретные данные (токены ботов, access-ключи) никогда не возвращаются через API.

Кампании

GET /campaigns/

Список кампаний пользователя с возможностью фильтрации.

Query-параметры:

  • project_id - фильтр по проекту (опционально)
  • status - статусы через запятую: DRAFT, ACTIVE, FROZEN, COMPLETED (по умолч: ACTIVE,FROZEN)
curl -H "Authorization: Bearer taipy_КЛЮЧ" \
     "https://ваш-домен/api/v1/ext/campaigns/?project_id=1&status=ACTIVE"

Ответ:

{{
  "campaigns": [
    {{
      "id": 42,
      "name": "Техноблог",
      "project_id": 1,
      "project_name": "IT Медиа",
      "status": "ACTIVE",
      "campaign_type": "DYNAMIC",
      "approval_mode": "MANUAL",
      "post_length_format": "MEDIUM",
      "generate_images": true,
      "start_date": "2026-01-15",
      "end_date": null,
      "created_at": "2026-01-15T10:00:00+05:00"
    }}
  ]
}}

GET /campaigns/{id}/

Подробная информация о кампании: настройки, каналы, расписание и статистика задач.

curl -H "Authorization: Bearer taipy_КЛЮЧ" \
     https://ваш-домен/api/v1/ext/campaigns/42/

Ответ (дополнительные поля):

{{
  "id": 42,
  "name": "Техноблог",
  "project_id": 1,
  "project_name": "IT Медиа",
  "status": "ACTIVE",
  "campaign_type": "DYNAMIC",
  "approval_mode": "MANUAL",
  "post_length_format": "MEDIUM",
  "generate_images": true,
  "start_date": "2026-01-15",
  "end_date": null,
  "created_at": "2026-01-15T10:00:00+05:00",
  "channels": [
    {{"id": 5, "name": "Telegram", "platform": "TELEGRAM", "is_active": true}}
  ],
  "schedules": [
    {{"id": 10, "schedule_type": "DAILY", "time": "10:00"}}
  ],
  "stats": {{
    "total": 150,
    "published": 120,
    "waiting_approval": 5,
    "scheduled": 10,
    "failed": 2
  }}
}}

GET /campaigns/{id}/schedules/

Расписание публикаций кампании.

{{
  "schedules": [
    {{"id": 10, "schedule_type": "DAILY", "time": "10:00"}},
    {{"id": 11, "schedule_type": "WEEKLY", "time": "14:00", "day_of_week": 1, "day_of_week_display": "Вторник"}},
    {{"id": 12, "schedule_type": "EVERY_N_DAYS", "time": "09:00", "interval_days": 3, "anchor_date": "2026-01-15"}}
  ]
}}

Посты

GET /campaigns/{id}/posts/

Список постов кампании с фильтрацией, сортировкой и пагинацией.

Query-параметры:

  • status - статусы через запятую (по умолч: все кроме CANCELED). Допустимые: SCHEDULED, GENERATING, WAITING_APPROVAL, APPROVED, PUBLISHING, PUBLISHED, PARTIALLY_PUBLISHED, READY, CANCELED, FAILED
  • sort - publish_at, -publish_at, created_at, -created_at (по умолч: -publish_at)
  • since - ISO 8601 дата-время, возвращает только обновлённые после этого момента
  • limit - от 1 до 100 (по умолч: 20)
  • offset - смещение (по умолч: 0)
curl -H "Authorization: Bearer taipy_КЛЮЧ" \
     "https://ваш-домен/api/v1/ext/campaigns/42/posts/?status=PUBLISHED,APPROVED&sort=-created_at&limit=10"

Ответ:

{{
  "campaign_id": 42,
  "campaign_name": "Техноблог",
  "total": 120,
  "limit": 10,
  "offset": 0,
  "posts": [
    {{
      "task_id": 789,
      "campaign_id": 42,
      "campaign_name": "Техноблог",
      "text": "Текст поста...",
      "status": "PUBLISHED",
      "post_type": "IMAGE",
      "published_at": "2026-04-05T14:00:00+05:00",
      "created_at": "2026-04-05T11:00:00+05:00",
      "updated_at": "2026-04-05T14:05:00+05:00",
      "media": {{ ... }}
    }}
  ]
}}

GET /campaigns/{id}/posts/latest

Последний опубликованный пост кампании. Удобно для виджетов и однопостовых интеграций.

curl -H "Authorization: Bearer taipy_КЛЮЧ" \
     https://ваш-домен/api/v1/ext/campaigns/42/posts/latest

GET /posts/{id}/

Полная информация о посте: текст, все версии, медиа, записи публикации по каналам и метрики вовлечённости.

curl -H "Authorization: Bearer taipy_КЛЮЧ" \
     https://ваш-домен/api/v1/ext/posts/789/

Ответ:

{{
  "task_id": 789,
  "campaign_id": 42,
  "campaign_name": "Техноблог",
  "text": "Текст поста...",
  "status": "PUBLISHED",
  "post_type": "IMAGE",
  "generate_at": "2026-04-05T08:00:00+05:00",
  "published_at": "2026-04-05T14:00:00+05:00",
  "created_at": "2026-04-05T07:00:00+05:00",
  "updated_at": "2026-04-05T14:05:00+05:00",
  "media": {{ ... }},
  "versions": [
    {{
      "version_number": 1,
      "text_content": "Первоначальный текст...",
      "source": "INITIAL",
      "is_active": false,
      "created_at": "2026-04-05T08:30:00+05:00"
    }},
    {{
      "version_number": 2,
      "text_content": "Исправленный текст...",
      "source": "MANUAL_EDIT",
      "is_active": true,
      "created_at": "2026-04-05T09:00:00+05:00"
    }}
  ],
  "publish_records": [
    {{
      "channel_name": "Техноблог Telegram",
      "platform": "TELEGRAM",
      "status": "PUBLISHED",
      "published_at": "2026-04-05T14:05:00+05:00",
      "platform_message_id": "123456"
    }}
  ],
  "engagement": {{
    "VIEWS": {{"value": 1500, "delta": 200, "updated_at": "2026-04-06T12:00:00+05:00"}},
    "LIKES": {{"value": 45, "delta": 5, "updated_at": "2026-04-06T12:00:00+05:00"}},
    "COMMENTS": {{"value": 12, "delta": 2, "updated_at": "2026-04-06T12:00:00+05:00"}}
  }}
}}

POST /posts/{id}/approve

Одобрить пост в статусе WAITING_APPROVAL. Переводит в статус APPROVED и он будет опубликован по расписанию.

curl -X POST -H "Authorization: Bearer taipy_КЛЮЧ" \
     https://ваш-домен/api/v1/ext/posts/789/approve

Ответ:

{{
  "task_id": 789,
  "status": "APPROVED",
  "result": "approved_now",
  "message": "Принято на публикацию"
}}

Операция идемпотентна - повторный вызов вернёт already_approved. Если пост уже опубликован или в неподходящем статусе, API вернёт 409 Conflict.

POST /posts/{id}/reject

Отменить публикацию поста. Работает из статусов: WAITING_APPROVAL, APPROVED, SCHEDULED.

curl -X POST -H "Authorization: Bearer taipy_КЛЮЧ" \
     https://ваш-домен/api/v1/ext/posts/789/reject

Ответ:

{{
  "task_id": 789,
  "status": "CANCELED",
  "result": "rejected_now",
  "message": "Публикация отменена"
}}

Аналитика

GET /campaigns/{id}/engagement/

Агрегированные метрики вовлечённости по всем опубликованным постам кампании.

Query-параметры:

  • since - ISO 8601, фильтр по дате публикации постов (опционально)
curl -H "Authorization: Bearer taipy_КЛЮЧ" \
     https://ваш-домен/api/v1/ext/campaigns/42/engagement/

Ответ:

{{
  "campaign_id": 42,
  "posts_count": 50,
  "aggregated": {{
    "VIEWS": {{"total": 75000, "total_delta": 5200}},
    "LIKES": {{"total": 1850, "total_delta": 120}},
    "COMMENTS": {{"total": 340, "total_delta": 25}},
    "REPOSTS": {{"total": 95, "total_delta": 8}}
  }}
}}

GET /posts/{id}/engagement/

Текущие метрики вовлечённости для конкретного поста.

{{
  "task_id": 789,
  "metrics": [
    {{
      "metric_type": "VIEWS",
      "platform": "TELEGRAM",
      "value": 1500,
      "previous_value": 1300,
      "delta": 200,
      "updated_at": "2026-04-06T12:00:00+05:00"
    }}
  ]
}}

GET /posts/{id}/engagement/history/

Временной ряд метрик для графиков и аналитики.

Query-параметры:

  • metric_type - обязательный: VIEWS, LIKES, COMMENTS, REPOSTS, REACTIONS
  • limit - от 1 до 200 (по умолч: 50)
curl -H "Authorization: Bearer taipy_КЛЮЧ" \
     "https://ваш-домен/api/v1/ext/posts/789/engagement/history/?metric_type=VIEWS&limit=30"

Ответ:

{{
  "task_id": 789,
  "metric_type": "VIEWS",
  "datapoints": [
    {{"value": 1500, "collected_at": "2026-04-06T12:00:00+05:00"}},
    {{"value": 1300, "collected_at": "2026-04-06T06:00:00+05:00"}},
    {{"value": 1100, "collected_at": "2026-04-05T18:00:00+05:00"}}
  ]
}}