Доступ к моделям
Запрет и разрешение моделей
https://gptunnel.ru/api/v1/access/setModelAccess Разрешает или запрещает конкретные модели сотрудникам (вкладка «Настройки доступа» → «Основные модели» в интерфейсе) — каждому логину свой список моделей. Запрос принимает массив пар { login, models } (до 25 логинов). Каждый элемент обрабатывается независимо: ошибка по одному не отменяет обработку остальных. При повторе логина берётся первое вхождение.
Значения и модели
Каждая запись в models — это пара { model, permission }:
Поля модели (models[])
| Параметр | Тип | Описание |
|---|---|---|
model* | string | Id модели из GET /v1/models (например, gpt-4o). Неизвестный id → ошибка model_not_found по логину |
permission* | string | Разрешение на модель: allow | forbid | default |
Значение permission:
Значения permission
| Параметр | Тип | Описание |
|---|---|---|
allow | string | Разрешить модель сотруднику |
forbid | string | Запретить модель сотруднику |
default | string | Сбросить к значению по умолчанию (снять персональное разрешение/запрет) |
Кто может менять
Запрос выполняется от имени роли создателя API-ключа. Менять доступ к моделям можно у сотрудников с ролью равной или ниже своей (кроме своего аккаунта):
- ключ должен принадлежать роли owner или admin (иначе весь запрос вернёт
403); - действовать можно над сотрудником с равной или более низкой ролью; сотрудника с более высокой ролью или свой собственный аккаунт изменить нельзя (по такому логину —
forbidden).
Headers
| Параметр | Тип | Описание |
|---|---|---|
Authorization* | string | API ключ |
Параметры запроса
| Параметр | Тип | Описание |
|---|---|---|
items* | object[] | Массив пар «логин + модели» (от 1 до 25). Каждый элемент: { login, models } |
items[].login* | string | Логин сотрудника |
items[].models* | object[] | Список пар { model, permission } (от 1 до 100) |
В ответе: updated — скольким логинам применён доступ к моделям, failed — сколько с ошибкой, failedLogins — перечень логинов с ошибкой (причина и пояснение по каждому). Для причины model_not_found в элемент добавляется unknownModels — список неизвестных id моделей этого логина (ни одна его модель не применена).
Причины ошибок в failedLogins:
Причины ошибок
| Параметр | Тип | Описание |
|---|---|---|
not_found | string | Сотрудника с таким логином нет в организации |
forbidden | string | Роль цели выше вашей, либо это ваш собственный аккаунт |
model_not_found | string | В списке этого логина есть неизвестный id модели. Все неизвестные id — в поле unknownModels; ни одна модель логина не применена |
error | string | Непредвиденная ошибка при обработке этого сотрудника |
Пример запроса
curl --request POST \ --url https://gptunnel.ru/api/v1/access/setModelAccess \ --header 'Authorization: YOUR_API_KEY' \ --header 'Content-Type: application/json' \ --data '{ "items": [ { "login": "ivanov", "models": [ { "model": "gpt-4o", "permission": "forbid" }, { "model": "gpt-4o-mini", "permission": "allow" } ] }, { "login": "petrov", "models": [{ "model": "gpt-4o", "permission": "default" }] } ]}'import axios from 'axios'
const response = await axios({ method: 'POST', url: 'https://gptunnel.ru/api/v1/access/setModelAccess', headers: { Authorization: 'YOUR_API_KEY', }, data: { items: [ { login: 'ivanov', models: [ { model: 'gpt-4o', permission: 'forbid' }, { model: 'gpt-4o-mini', permission: 'allow' }, ], }, { login: 'petrov', models: [{ model: 'gpt-4o', permission: 'default' }] }, ], },})
console.log(response.data)import requests
response = requests.post( 'https://gptunnel.ru/api/v1/access/setModelAccess', headers={'Authorization': 'YOUR_API_KEY'}, json={ 'items': [ { 'login': 'ivanov', 'models': [ {'model': 'gpt-4o', 'permission': 'forbid'}, {'model': 'gpt-4o-mini', 'permission': 'allow'}, ], }, {'login': 'petrov', 'models': [{'model': 'gpt-4o', 'permission': 'default'}]}, ], },)
print(response.json())Пример ответа
{ "code": 0, "updated": 1, "failed": 1, "failedLogins": [ { "login": "petrov", "reason": "model_not_found", "message": "Unknown model id(s) — see unknownModels. None of this login's models were applied. Use ids returned by GET /v1/models.", "unknownModels": ["gpt-4o-typo"] } ]}{ "code": 3, "message": "Invalid input, check schema issues.", "details": []}{ "error": { "message": "Unauthorized", "type": "unauthorized_request_error", "param": null, "code": null }}{ "code": 7, "message": "Not allowed to perform this action for the organization."}{ "code": 13, "message": "Employee management is not available from a personal account. Use a business organization API key."}{ "code": 1, "message": "Internal server error.", "trace_id": "66a346f64dcb57627c03d596"}