88API88API
AI-приложенияAPIПомощь и поддержка

Модуль управления каналами

Описание функции

Префикс интерфейса унифицирован как http(s)://<your-domain>

В производственных средах следует использовать HTTPS, чтобы гарантировать токены аутентификации. HTTP рекомендуется только для сред разработки.

Полная система управления каналами поставщиков услуг AI. Поддерживает такие функции, как добавление, удаление, изменение каналов, пакетную обработку, проверку соединения, запрос баланса, управление тегами и т. д. Содержит расширенные функции, такие как синхронизация возможностей модели и репликация каналов.

🔐 Аутентификация администратора

Получить список каналов

  • Имя интерфейса: получить список каналов.
  • Метод HTTP: GET
  • Путь: /api/channel/
  • Требования аутентификации: Администратор.
  • Введение в функцию: получение информации о списке всех каналов в системе в пейджинговом режиме, поддержка фильтрации по типу, статусу и режиму метки.

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

const response = await fetch('/api/channel/?p=1&page_size=20&id_sort=false&tag_mode=false&type=1&status=enabled', {
  method: 'GET',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer your_admin_token',
    'New-Api-User': 'your_user_id'
  }
});
const data = await response.json();

✅ Пример успешного ответа:

{
  "success": true,
  "message": "",
  "data": {
    "items": [
      {
        "id": 1,
        "name": "OpenAIканал",
        "type": 1,
        "status": 1,
        "priority": 10,
        "weight": 100,
        "models": "gpt-3.5-turbo,gpt-4",
        "group": "default",
        "response_time": 1500,
        "test_time": 1640995200
      }
    ],
    "total": 50,
    "type_counts": {
      "1": 20,
      "2": 15,
      "all": 35
    }
  }
}

❗ Пример реакции на ошибку:

{
  "success": false,
  "message": "Не удалось получить список каналов."
}

🧾 Описание поля:

  • p (номер): номер страницы, по умолчанию — 1.
  • p (номер): количество на странице, по умолчанию — 20.
  • p (логическое значение): сортировать ли по идентификатору, по умолчанию используется сортировка по приоритету.
  • p (логическое значение): включать ли режим тегов.
  • p (число): фильтрация типа канала.
  • p (строка): фильтрация статуса, необязательные значения: «включено», «отключено», «все».

Поиск каналов

  • Имя интерфейса: Канал поиска.
  • Метод HTTP: GET
  • Путь: p
  • Требования аутентификации: Администратор.
  • Введение в функцию: поиск каналов по ключевым словам, группам, моделям и другим условиям.

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

const response = await fetch('/api/channel/search?keyword=openai&group=default&model=gpt-4&id_sort=false&tag_mode=false&p=1&page_size=20&type=1&status=enabled', {
  method: 'GET',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer your_admin_token',
    'New-Api-User': 'your_user_id'
  }
});
const data = await response.json();

✅ Пример успешного ответа:

{
  "success": true,
  "message": "",
  "data": {
    "items": [
      {
        "id": 1,
        "name": "OpenAIофициальные каналы",
        "type": 1,
        "status": 1,
        "models": "gpt-3.5-turbo,gpt-4",
        "group": "default"
      }
    ],
    "total": 1,
    "type_counts": {
      "1": 1,
      "all": 1
    }
  }
}

❗ Пример реакции на ошибку:

{    "success": false,    "message": "Поиск канала не удался"  }

🧾 Описание поля:

  • keyword (строка): ключевое слово поиска, может соответствовать названию канала.
  • keyword (строка): группировка условий фильтра.
  • keyword (строка): условия фильтра модели.
  • Остальные параметры такие же, как и интерфейс получения списка каналов.

Возможности модели канала запроса

  • Имя интерфейса: возможности модели канала запроса.
  • Метод HTTP: GET
  • Путь: keyword
  • Требования аутентификации: Администратор.
  • Введение в функцию: получите список моделей, поддерживаемых всеми каналами в системе.

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

const response = await fetch('/api/channel/models', {
  method: 'GET',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer your_admin_token',
    'New-Api-User': 'your_user_id'
  }
});
const data = await response.json();

✅ Пример успешного ответа:

{
  "success": true,
  "message": "",
  "data": [
    {
      "id": "gpt-3.5-turbo",
      "name": "GPT-3.5 Turbo"
    },
    {
      "id": "gpt-4",
      "name": "GPT-4"
    },
    {
      "id": "claude-3-sonnet",
      "name": "Claude 3 Sonnet"
    }
  ]
}

❗ Пример реакции на ошибку:

{
  "success": false,
  "message": "Не удалось получить список моделей."
}

🧾 Описание поля:

data (массив): список информации о модели.

  • data (строка): идентификатор модели.
  • data (строка): отображаемое название модели.

Возможности модели с поддержкой запросов

  • Имя интерфейса: возможности модели с поддержкой запросов.
  • Метод HTTP: GET
  • Путь: data
  • Требования аутентификации: Администратор.
  • Введение в функцию: получите список моделей, которые в настоящее время поддерживаются включенными каналами.

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

const response = await fetch('/api/channel/models_enabled', {
  method: 'GET',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer your_admin_token',
    'New-Api-User': 'your_user_id'
  }
});
const data = await response.json();

✅ Пример успешного ответа:

{
  "success": true,
  "message": "",
  "data": [
    "gpt-3.5-turbo",
    "gpt-4",
    "claude-3-sonnet"
  ]
}

❗ Пример реакции на ошибку:

{
  "success": false,
  "message": "Не удалось получить активную модель."
}

🧾 Описание поля:

data (массив): список включенных идентификаторов моделей.

Получить один канал

  • Имя интерфейса: получить один канал.
  • Метод HTTP: GET
  • Путь: data
  • Требования аутентификации: Администратор.
  • Введение в функцию: получение подробной информации об указанном канале, за исключением конфиденциальной ключевой информации.

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

const response = await fetch('/api/channel/123', {
  method: 'GET',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer your_admin_token',
    'New-Api-User': 'your_user_id'
  }
});
const data = await response.json();

✅ Пример успешного ответа:

{
  "success": true,
  "message": "",
  "data": {
    "id": 123,
    "name": "OpenAIканал",
    "type": 1,
    "status": 1,
    "priority": 10,
    "weight": 100,
    "models": "gpt-3.5-turbo,gpt-4",
    "group": "default",
    "base_url": "https://api.openai.com",
    "model_mapping": "{}",
    "channel_info": {
      "is_multi_key": false,
      "multi_key_mode": "random"
    }
  }
}

❗ Пример реакции на ошибку:

{
  "success": false,
  "message": "Канал не существует"
}

🧾 Описание поля:

  • id (числовой): идентификатор канала, передаваемый через URL-адрес.
  • Возвращает полную информацию о канале, но не включает ключевое поле.

Подключение канала пакетного тестирования

  • Имя интерфейса: подключение канала пакетного тестирования.
  • Метод HTTP: GET
  • Путь: id
  • Требования аутентификации: Администратор.
  • Введение в функцию: Пакетное тестирование подключения и времени отклика всех или определенных каналов.

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

const response = await fetch('/api/channel/test?model=gpt-3.5-turbo', {
  method: 'GET',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer your_admin_token',
    'New-Api-User': 'your_user_id'
  }
});
const data = await response.json();

✅ Пример успешного ответа:

{
  "success": true,
  "message": "Пакетное тестирование завершено",
  "data": {
    "total": 10,
    "success": 8,
    "failed": 2,
    "results": [
      {
        "channel_id": 1,
        "channel_name": "OpenAIканал",
        "success": true,
        "time": 1.25,
        "message": ""
      },
      {
        "channel_id": 2,
        "channel_name": "Claudeканал",
        "success": false,
        "time": 0,
        "message": "Тайм-аут соединения"
      }
    ]
  }
}

❗ Пример реакции на ошибку:

{
  "success": false,
  "message": "Пакетное тестирование не удалось"
}

🧾 Описание поля:

  • model (строка): необязательно, укажите тестовую модель
  • model (массив): список результатов теста.
    • model (логическое значение): прошел ли тест успешно.
    • model (число): время ответа (секунды)

Одноканальный тест

  • Имя интерфейса: одноканальный тест.
  • Метод HTTP: GET
  • Путь: model
  • Требования аутентификации: Администратор.
  • Введение в функцию: проверка возможности подключения указанных каналов и поддержка определенных тестовых моделей.

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

const response = await fetch('/api/channel/test/123?model=gpt-4', {
  method: 'GET',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer your_admin_token',
    'New-Api-User': 'your_user_id'
  }
});
const data = await response.json();

✅ Пример успешного ответа:

{
  "success": true,
  "message": "",
  "time": 1.25
}

❗ Пример реакции на ошибку:

{
  "success": false,
  "message": "APIНеверный ключ",
  "time": 0.5
}

🧾 Описание поля:

  • id (числовой): идентификатор канала, передаваемый через URL-адрес.
  • id (строка): необязательно, указывает имя тестируемой модели.
  • id (число): время ответа (секунды)

Обновление баланса в пакетном режиме

  • Имя интерфейса: пакетное обновление баланса.
  • Метод HTTP: GET
  • Путь: id
  • Требования аутентификации: Администратор.
  • Введение в функцию: пакетное обновление информации о балансе всех включенных каналов.

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

const response = await fetch('/api/channel/update_balance', {
  method: 'GET',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer your_admin_token',
    'New-Api-User': 'your_user_id'
  }
});
const data = await response.json();

✅ Пример успешного ответа:

{
  "success": true,
  "message": "Пакетное обновление баланса завершено"
}

❗ Пример реакции на ошибку:

{
  "success": false,
  "message": "Не удалось выполнить пакетное обновление баланса."
}

🧾 Описание поля:

Без параметров запроса система автоматически обновит баланс всех включенных каналов.

Единое обновление баланса

  • Имя интерфейса: обновить баланс указанного канала.
  • Метод HTTP: GET
  • Путь: /api/channel/update_balance/:id
  • Требования аутентификации: Администратор.
  • Введение в функцию: обновление информации о балансе указанного канала. Многоключевые каналы не поддерживают запрос баланса.

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

const response = await fetch('/api/channel/update_balance/123', {
  method: 'GET',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer your_admin_token',
    'New-Api-User': 'your_user_id'
  }
});
const data = await response.json();

✅ Пример успешного ответа:

{
  "success": true,
  "message": "",
  "balance": 25.50
}

❗ Пример реакции на ошибку:

{
  "success": false,
  "message": "Многоключевые каналы не поддерживают запросы баланса"
}

🧾 Описание поля:

  • id (числовой): идентификатор канала, передаваемый через URL-адрес.
  • id (число): обновлен баланс канала.

Добавить новый канал

  • Имя интерфейса: Новый канал.
  • Метод HTTP: POST
  • Путь: id
  • Требования аутентификации: Администратор.
  • Введение в функцию: создание новых каналов обслуживания ИИ, поддерживающих одиночный, пакетный и многоключевой режимы.

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

const response = await fetch('/api/channel/', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer your_admin_token',
    'New-Api-User': 'your_user_id'
  },
  body: JSON.stringify({
    mode: "single",
    channel: {
      name: "OpenAIканал",
      type: 1,
      key: "`<YOUR_API_KEY>`",
      base_url: "https://api.openai.com",
      models: "gpt-3.5-turbo,gpt-4,claude-3-sonnet",
      groups: ["default"],
      priority: 10,
      weight: 100
    }
  })
});
const data = await response.json();

✅ Пример успешного ответа:

{
  "success": true,
  "message": ""
}

❗ Пример реакции на ошибку:

{
  "success": false,
  "message": "Неподдерживаемый режим добавления"
}

🧾 Описание поля:

  • mode (строка): добавить режим, необязательные значения: «single», «batch», «multi_to_single».
  • mode (строка): многоклавишный режим, требуется, если режим «multi_to_single».
  • mode (объект): информация о конфигурации канала.
    • mode (строка): имя канала.
    • mode (номер): тип канала.
    • mode (строка): ключ API.
    • mode (строка): базовый URL-адрес.
    • mode (строка): список поддерживаемых моделей, разделенных запятыми, необязательно.
    • mode (массив): список доступных группировок.
    • mode (число): приоритет
    • mode (число): вес

Обновить канал

  • Имя интерфейса: канал обновления.
  • Метод HTTP: PUT
  • Путь: mode
  • Требования аутентификации: Администратор.
  • Введение в функцию: обновление информации о конфигурации существующих каналов.

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

const response = await fetch('/api/channel/', {
  method: 'PUT',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer your_admin_token',
    'New-Api-User': 'your_user_id'
  },
  body: JSON.stringify({
    id: 123,
    name: "обновленоOpenAIканал",
    status: 1,
    priority: 15,
    weight: 120
  })
});
const data = await response.json();

✅ Пример успешного ответа:

{
  "success": true,
  "message": ""
}

❗ Пример реакции на ошибку:

{
  "success": false,
  "message": "Канал не существует"
}

🧾 Описание поля:

  • id (номер): идентификатор канала, обязателен.
  • Остальные поля такие же, как в новом интерфейсе канала, и являются необязательными.

Удалить отключенные каналы

  • Имя интерфейса: удалить отключенный канал.
  • Метод HTTP: УДАЛИТЬ
  • Путь: id
  • Требования аутентификации: Администратор.
  • Введение в функцию: пакетное удаление всех отключенных каналов.

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

const response = await fetch('/api/channel/disabled', {
  method: 'DELETE',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer your_admin_token',
    'New-Api-User': 'your_user_id'
  }
});
const data = await response.json();

✅ Пример успешного ответа:

{
  "success": true,
  "message": "",
  "data": 5
}

❗ Пример реакции на ошибку:

{
  "success": false,
  "message": "Удаление не удалось"
}

🧾 Описание поля:

  • Нет параметров запроса
  • data (число): количество удаленных каналов.

Пакетное отключение каналов тегов

  • Имя интерфейса: пакетное отключение каналов тегов.
  • Метод HTTP: POST
  • Путь: data
  • Требования аутентификации: Администратор.
  • Введение в функцию: пакетное отключение каналов на основе тегов.

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

const response = await fetch('/api/channel/tag/disabled', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer your_admin_token',
    'New-Api-User': 'your_user_id'
  },
  body: JSON.stringify({
    tag: "test-tag"
  })
});
const data = await response.json();

✅ Пример успешного ответа:

{
  "success": true,
  "message": ""
}

❗ Пример реакции на ошибку:

{
  "success": false,
  "message": "Ошибка параметра"
}

🧾 Описание поля:

tag (строка): тег канала, который необходимо отключить, обязателен.

Пакетное включение каналов тегов

  • Имя интерфейса: пакетное включение каналов тегов.
  • Метод HTTP: POST
  • Путь: tag
  • Требования аутентификации: Администратор.
  • Введение в функцию: пакетное включение каналов на основе меток.

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

const response = await fetch('/api/channel/tag/enabled', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer your_admin_token',
    'New-Api-User': 'your_user_id'
  },
  body: JSON.stringify({
    tag: "production-tag"
  })
});
const data = await response.json();

✅ Пример успешного ответа:

{
  "success": true,
  "message": ""
}

❗ Пример реакции на ошибку:

{
  "success": false,
  "message": "Ошибка параметра"
}

🧾 Описание поля:

tag (строка): тег канала, который необходимо включить, обязателен.

Редактировать теги канала

  • Имя интерфейса: изменить названия каналов.
  • Метод HTTP: PUT
  • Путь: tag
  • Требования аутентификации: Администратор.
  • Введение в функцию: пакетное редактирование атрибутов канала указанных тегов.

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

const response = await fetch('/api/channel/tag', {
  method: 'PUT',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer your_admin_token',
    'New-Api-User': 'your_user_id'
  },
  body: JSON.stringify({
    tag: "old-tag",
    new_tag: "new-tag",
    priority: 20,
    weight: 150,
    models: "gpt-3.5-turbo,gpt-4,claude-3-sonnet",
    groups: "default,vip"
  })
});
const data = await response.json();

✅ Пример успешного ответа:

{
  "success": true,
  "message": ""
}

❗ Пример реакции на ошибку:

{
  "success": false,
  "message": "tagне может быть пустым"
}

🧾 Описание поля:

  • tag (строка): имя тега для редактирования, обязательно.
  • tag (строка): новое имя тега, необязательно.
  • tag (число): новый приоритет, необязательно.
  • tag (номер): новый вес, опционально.
  • tag (строка): конфигурация сопоставления модели, необязательно.
  • tag (строка): список поддерживаемых моделей, разделенных запятыми, необязательно.
  • tag (строка): список доступных групп, разделенных запятыми, необязательно.

Удалить канал

  • Имя интерфейса: удалить канал.
  • Метод HTTP: УДАЛИТЬ
  • Путь: tag
  • Требования аутентификации: Администратор.
  • Введение в функцию: жесткое удаление указанного канала, кэш канала будет обновлен после удаления.

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

const response = await fetch('/api/channel/123', {
  method: 'DELETE',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer your_admin_token',
    'New-Api-User': 'your_user_id'
  }
});
const data = await response.json();

✅ Пример успешного ответа:

{
  "success": true,
  "message": ""
}

❗ Пример реакции на ошибку:

{
  "success": false,
  "message": "Канал не существует"
}

🧾 Описание поля:

id (числовой): идентификатор канала, передаваемый через URL-адрес.

Удаление каналов пакетно

  • Имя интерфейса: удалять каналы пакетно.
  • Метод HTTP: POST
  • Путь: id
  • Требования аутентификации: Администратор.
  • Введение в функцию: пакетное удаление каналов на основе списка идентификаторов.

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

const response = await fetch('/api/channel/batch', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer your_admin_token',
    'New-Api-User': 'your_user_id'
  },
  body: JSON.stringify({
    ids: [1, 2, 3, 4, 5]
  })
});
const data = await response.json();

✅ Пример успешного ответа:

{
  "success": true,
  "message": "",
  "data": 5
}

❗ Пример реакции на ошибку:

{
  "success": false,
  "message": "Ошибка параметра"
}

🧾 Описание поля:

  • ids (массив): список идентификаторов каналов, которые необходимо удалить, обязателен и не может быть пустым.
  • ids (число): количество успешно удаленных каналов.

Восстановить таблицу возможностей канала

  • Имя интерфейса: восстановить таблицу возможностей канала.
  • Метод HTTP: POST
  • Путь: ids
  • Требования аутентификации: Администратор.
  • Введение в функцию: восстановление данных таблицы возможностей каналов и восстановление взаимосвязей между каналами и моделями.

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

const response = await fetch('/api/channel/fix', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer your_admin_token',
    'New-Api-User': 'your_user_id'
  }
});
const data = await response.json();

✅ Пример успешного ответа:

{
  "success": true,
  "message": "",
  "data": {
    "success": 45,
    "fails": 2
  }
}

❗ Пример реакции на ошибку:

{
  "success": false,
  "message": "Не удалось восстановить таблицу способностей."
}

🧾 Описание поля:

  • Нет параметров запроса
  • data.success (число): количество успешно отремонтированных каналов.
  • data.success (число): количество каналов, которые не удалось восстановить.

Извлечение одноканальной модели

  • Имя интерфейса: получение одноканальной модели.
  • Метод HTTP: GET
  • Путь: data.success
  • Требования аутентификации: Администратор.
  • Введение в функцию: получите список доступных моделей из восходящего API указанного канала.

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

const response = await fetch('/api/channel/fetch_models/123', {
  method: 'GET',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer your_admin_token',
    'New-Api-User': 'your_user_id'
  }
});
const data = await response.json();

✅ Пример успешного ответа:

{
  "success": true,
  "message": "",
  "data": [
    "gpt-3.5-turbo",
    "gpt-4",
    "gpt-4-turbo-preview"
  ]
}

❗ Пример реакции на ошибку:

{
  "success": false,
  "message": "Не удалось проанализировать ответ: invalid character 'H' looking for beginning of value"
}

🧾 Описание поля:

  • id (числовой): идентификатор канала, передаваемый через URL-адрес.
  • id (массив): список идентификаторов моделей, полученных из восходящего потока.

Извлечь все модели каналов

  • Имя интерфейса: извлечь все модели каналов.
  • Метод HTTP: POST
  • Путь: id
  • Требования аутентификации: Администратор.
  • Введение в функцию: получите список моделей из вышестоящего API с помощью предоставленной информации о конфигурации, которая используется для предварительного просмотра при создании нового канала.

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

const response = await fetch('/api/channel/fetch_models', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer your_admin_token',
    'New-Api-User': 'your_user_id'
  },
  body: JSON.stringify({
    base_url: "https://api.openai.com",
    type: 1,
    key: "`<YOUR_API_KEY>`"
  })
});
const data = await response.json();

✅ Пример успешного ответа:

{
  "success": true,
  "data": [
    "gpt-3.5-turbo",
    "gpt-4",
    "text-davinci-003"
  ]
}

❗ Пример реакции на ошибку:

{
  "success": false,
  "message": "Failed to fetch models"
}

🧾 Описание поля:

  • base_url (строка): базовый URL-адрес, необязательный, URL-адрес по умолчанию используется, если он пуст.
  • base_url (номер): обязательный тип канала.
  • base_url (строка): требуется ключ API.
  • base_url (массив): получен список моделей.

Устанавливайте метки каналов пакетно

  • Имя интерфейса: групповая установка меток каналов.
  • Метод HTTP: POST
  • Путь: base_url
  • Требования аутентификации: Администратор.
  • Введение в функцию: пакетная установка меток для указанного списка каналов.

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

const response = await fetch('/api/channel/batch/tag', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer your_admin_token',
    'New-Api-User': 'your_user_id'
  },
  body: JSON.stringify({
    ids: [1, 2, 3],
    tag: "production"
  })
});
const data = await response.json();

✅ Пример успешного ответа:

{
  "success": true,
  "message": "",
  "data": 3
}

❗ Пример реакции на ошибку:

{
  "success": false,
  "message": "Ошибка параметра"
}

🧾 Описание поля:

  • ids (массив): список идентификаторов каналов, для которых нужно установить метки, обязателен и не может быть пустым.
  • ids (строка): имя метки, которую нужно установить. Передайте значение null, чтобы очистить метку.
  • ids (число): количество каналов с успешно установленными метками.

Получить модель по тегу

  • Имя интерфейса: получите модель на основе метки.
  • Метод HTTP: GET
  • Путь: ids
  • Требования аутентификации: Администратор.
  • Введение в функцию: получите список моделей с наибольшим количеством моделей во всех каналах под указанным ярлыком.

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

const response = await fetch('/api/channel/tag/models?tag=production', {
  method: 'GET',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer your_admin_token',
    'New-Api-User': 'your_user_id'
  }
});
const data = await response.json();

✅ Пример успешного ответа:

{
  "success": true,
  "message": "",
  "data": "gpt-3.5-turbo,gpt-4,claude-3-sonnet"
}

❗ Пример реакции на ошибку:

{
  "success": false,
  "message": "tagне может быть пустым"
}

🧾 Описание поля:

  • tag (строка): имя тега, обязательно.
  • tag (строка): список моделей каналов с наибольшим количеством моделей под этим тегом, разделенных запятыми.

Копировать канал

  • Имя интерфейса: Копировать канал.
  • Метод HTTP: POST
  • Путь: tag
  • Требования аутентификации: Администратор.
  • Введение в функцию: копирование существующих каналов для создания новых каналов, поддержка пользовательских суффиксов и параметров сброса баланса.

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

const response = await fetch('/api/channel/copy/123?suffix=_резервное копирование&reset_balance=true', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer your_admin_token',
    'New-Api-User': 'your_user_id'
  }
});
const data = await response.json();

✅ Пример успешного ответа:

{
  "success": true,
  "message": "",
  "data": {
    "id": 124
  }
}

❗ Пример реакции на ошибку:

{
  "success": false,
  "message": "invalid id"
}

🧾 Описание поля:

  • id (числовой): идентификатор канала для копирования, передаваемый по URL-адресу.
  • id (строка): необязательно, к исходному имени добавляется суффикс, по умолчанию «_copy».
  • id (логическое значение): необязательно, следует ли сбросить баланс и использованную квоту до 0, по умолчанию — true.
  • id (числовой): идентификатор нового созданного канала.