curl --request DELETE \
--url https://api.tungo.kz/v1/workspaces/{ws}/api-keys/{id} \
--cookie tungo.session_token=import requests
url = "https://api.tungo.kz/v1/workspaces/{ws}/api-keys/{id}"
headers = {"cookie": "tungo.session_token="}
response = requests.delete(url, headers=headers)
print(response.text)const options = {method: 'DELETE', headers: {cookie: 'tungo.session_token='}};
fetch('https://api.tungo.kz/v1/workspaces/{ws}/api-keys/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"id": "key_01h455vb4pex5vsknk084sn02q",
"name": "Интеграция с CRM",
"prefix": "tg_ab12cd34ef56",
"workspace_id": "ws_01h455vb4pex5vsknk084sn02q",
"created_by": "<string>",
"company_ids": [
"<string>"
],
"all_companies": true,
"allowed_ips": [
"203.0.113.10",
"198.51.100.0/24"
],
"permissions": [
"company.read"
],
"status": "active",
"expires_at": "2026-10-05T09:30:00.000Z",
"monthly_cap_tiyn": 123,
"write_max_amount_per_document_tiyn": 123,
"write_max_amount_per_day_tiyn": 123,
"write_kinds": [
"<string>"
],
"created_at": "2026-10-05T09:30:00.000Z",
"last_used_at": "2026-10-05T09:30:00.000Z",
"last_used_ip": "203.0.113.10",
"revoked_at": "2026-10-05T09:30:00.000Z",
"disabled_at": "2026-10-05T09:30:00.000Z",
"previous_secret_valid_until": "2026-10-05T09:30:00.000Z"
}{
"type": "error",
"error": {
"type": "payment_required_error",
"message": "Баланс доп. использования закончился — пополнить его или включить автопополнение могут владелец и админ workspace.",
"code": "balance_exhausted",
"permission": "proposals.approve",
"resets_at": "2026-11-01T19:00:00.000Z",
"allowed_methods": [
"email_otp"
],
"role": "<string>",
"permissions": [
"<string>"
],
"fields": [
{
"path": "bin",
"code": "invalid_format",
"message": "БИН/ИИН — 12 цифр"
}
]
},
"request_id": "req_4f9c2a7e1b3d4c5a8e6f7a9b0c1d2e3f"
}{
"type": "error",
"error": {
"type": "payment_required_error",
"message": "Баланс доп. использования закончился — пополнить его или включить автопополнение могут владелец и админ workspace.",
"code": "balance_exhausted",
"permission": "proposals.approve",
"resets_at": "2026-11-01T19:00:00.000Z",
"allowed_methods": [
"email_otp"
],
"role": "<string>",
"permissions": [
"<string>"
],
"fields": [
{
"path": "bin",
"code": "invalid_format",
"message": "БИН/ИИН — 12 цифр"
}
]
},
"request_id": "req_4f9c2a7e1b3d4c5a8e6f7a9b0c1d2e3f"
}{
"type": "error",
"error": {
"type": "payment_required_error",
"message": "Баланс доп. использования закончился — пополнить его или включить автопополнение могут владелец и админ workspace.",
"code": "balance_exhausted",
"permission": "proposals.approve",
"resets_at": "2026-11-01T19:00:00.000Z",
"allowed_methods": [
"email_otp"
],
"role": "<string>",
"permissions": [
"<string>"
],
"fields": [
{
"path": "bin",
"code": "invalid_format",
"message": "БИН/ИИН — 12 цифр"
}
]
},
"request_id": "req_4f9c2a7e1b3d4c5a8e6f7a9b0c1d2e3f"
}Отозвать ключ (сразу и навсегда)
Вместе с ключом выключаются сценарии автоматизаций, сохранённые этим ключом (их id — в журнале api_key.revoked).
Доступ: Владелец или админ workspace.
Только по сессии кабинета, не по ключу API.
curl --request DELETE \
--url https://api.tungo.kz/v1/workspaces/{ws}/api-keys/{id} \
--cookie tungo.session_token=import requests
url = "https://api.tungo.kz/v1/workspaces/{ws}/api-keys/{id}"
headers = {"cookie": "tungo.session_token="}
response = requests.delete(url, headers=headers)
print(response.text)const options = {method: 'DELETE', headers: {cookie: 'tungo.session_token='}};
fetch('https://api.tungo.kz/v1/workspaces/{ws}/api-keys/{id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"id": "key_01h455vb4pex5vsknk084sn02q",
"name": "Интеграция с CRM",
"prefix": "tg_ab12cd34ef56",
"workspace_id": "ws_01h455vb4pex5vsknk084sn02q",
"created_by": "<string>",
"company_ids": [
"<string>"
],
"all_companies": true,
"allowed_ips": [
"203.0.113.10",
"198.51.100.0/24"
],
"permissions": [
"company.read"
],
"status": "active",
"expires_at": "2026-10-05T09:30:00.000Z",
"monthly_cap_tiyn": 123,
"write_max_amount_per_document_tiyn": 123,
"write_max_amount_per_day_tiyn": 123,
"write_kinds": [
"<string>"
],
"created_at": "2026-10-05T09:30:00.000Z",
"last_used_at": "2026-10-05T09:30:00.000Z",
"last_used_ip": "203.0.113.10",
"revoked_at": "2026-10-05T09:30:00.000Z",
"disabled_at": "2026-10-05T09:30:00.000Z",
"previous_secret_valid_until": "2026-10-05T09:30:00.000Z"
}{
"type": "error",
"error": {
"type": "payment_required_error",
"message": "Баланс доп. использования закончился — пополнить его или включить автопополнение могут владелец и админ workspace.",
"code": "balance_exhausted",
"permission": "proposals.approve",
"resets_at": "2026-11-01T19:00:00.000Z",
"allowed_methods": [
"email_otp"
],
"role": "<string>",
"permissions": [
"<string>"
],
"fields": [
{
"path": "bin",
"code": "invalid_format",
"message": "БИН/ИИН — 12 цифр"
}
]
},
"request_id": "req_4f9c2a7e1b3d4c5a8e6f7a9b0c1d2e3f"
}{
"type": "error",
"error": {
"type": "payment_required_error",
"message": "Баланс доп. использования закончился — пополнить его или включить автопополнение могут владелец и админ workspace.",
"code": "balance_exhausted",
"permission": "proposals.approve",
"resets_at": "2026-11-01T19:00:00.000Z",
"allowed_methods": [
"email_otp"
],
"role": "<string>",
"permissions": [
"<string>"
],
"fields": [
{
"path": "bin",
"code": "invalid_format",
"message": "БИН/ИИН — 12 цифр"
}
]
},
"request_id": "req_4f9c2a7e1b3d4c5a8e6f7a9b0c1d2e3f"
}{
"type": "error",
"error": {
"type": "payment_required_error",
"message": "Баланс доп. использования закончился — пополнить его или включить автопополнение могут владелец и админ workspace.",
"code": "balance_exhausted",
"permission": "proposals.approve",
"resets_at": "2026-11-01T19:00:00.000Z",
"allowed_methods": [
"email_otp"
],
"role": "<string>",
"permissions": [
"<string>"
],
"fields": [
{
"path": "bin",
"code": "invalid_format",
"message": "БИН/ИИН — 12 цифр"
}
]
},
"request_id": "req_4f9c2a7e1b3d4c5a8e6f7a9b0c1d2e3f"
}Авторизации
Сессия кабинета: cookie ставит вход через /v1/auth/* (Better Auth), браузер шлёт её сам — фронтенду кабинета ничего добавлять не нужно (fetch с credentials: 'include'). За HTTPS имя cookie — __Secure-tungo.session_token. Сессия кончилась — 401 authentication_error: отправить на вход.
Параметры пути
id организации (workspace), ws_… — из GET /v1/workspaces
id ключа (key_…)
Ответ
Отозванный ключ (status: revoked)
Ключ API организации — без секрета.
id ключа (key_…) — для адресов …/api-keys/{id}
"key_01h455vb4pex5vsknk084sn02q"
Название ключа для людей
"Интеграция с CRM"
Открытая часть ключа для показа — узнать ключ среди других; сам ключ (tg_…_секрет) целиком не хранится
"tg_ab12cd34ef56"
Организация ключа (ws_…)
"ws_01h455vb4pex5vsknk084sn02q"
Кто выпустил (usr_…). Ключ действует от его имени и не шире его прав: создатель перестал быть владельцем или админом — ключ не работает
Компании, к которым ключ даёт доступ (co_…); пусто у ключа на все компании (all_companies)
Ключ на все компании организации, в том числе будущие: те, где создатель ключа состоит сейчас, и в каждой — не шире его текущей роли
С каких IP и подсетей CIDR ключ работает; с другого адреса — 403 ip_not_allowed. null — с любых
["203.0.113.10", "198.51.100.0/24"]
Права ключа: company.read — читать данные компаний (есть всегда); chat.use — работать с ИИ-бухгалтером; proposals.create — готовить документы для 1С; proposals.approve — одобрять запись в 1С; automations.read — видеть автоматизации; automations.manage — менять и запускать автоматизации; webhooks.manage — вебхуки всей организации
company.read, chat.use, proposals.create, proposals.approve, automations.manage, automations.read, webhooks.manage Состояние: active — действует; disabled — выключен (disabled_at), не работает, можно включить; expired — истёк срок (expires_at), не работает; revoked — отозван (revoked_at), не работает. Неактивные показывать серыми
active, disabled, expired, revoked Когда ключ перестаёт действовать, ISO 8601 UTC (срок есть у каждого ключа)
"2026-10-05T09:30:00.000Z"
Месячный потолок расхода ИИ по ключу в тиынах (1 ₸ = 100 тиын; показывать значение / 100 ₸), календарный месяц по Алматы; null — без потолка ключа
Предел записи в 1С по ключу: потолок суммы одного документа, который ключ одобряет (approve, approve-batch), в тиынах (1 ₸ = 100 тиын). Документ дороже или без известной суммы ключ не запишет (403, error.code key_write_limit) — его запишет человек. null — без предела
Предел записи в 1С по ключу: сумма всех документов, одобренных ключом за день по Алматы, в тиынах. Документ с неизвестным исходом записи (1С не ответила) тоже считается. null — без предела
Предел записи в 1С по ключу: какие виды документов ключ может одобрять (как kinds правила автоодобрения: sale, purchase, bank_receipt, bank_payment, counterparty, contract, inventory_writeoff, cash_order_in, cash_order_out, advance_report, revert). null — любые. Без всех трёх пределов ключ с proposals.approve пишет в 1С без ограничений — тогда в ответе предупреждение write_unlimited
Когда выпущен, ISO 8601 UTC
"2026-10-05T09:30:00.000Z"
Когда ключом пользовались последний раз, ISO 8601 UTC (точность — около минуты); null — ещё ни разу
"2026-10-05T09:30:00.000Z"
С какого IP-адреса был последний запрос; null — ещё ни разу
"203.0.113.10"
Когда отозван, ISO 8601 UTC; null — не отозван
"2026-10-05T09:30:00.000Z"
Когда выключен, ISO 8601 UTC; null — не выключен
"2026-10-05T09:30:00.000Z"
После смены секрета (roll): до какого времени ещё действует прежний, ISO 8601 UTC; null — прежнего нет
"2026-10-05T09:30:00.000Z"