Агентный цикл над 1С компании. Записи в 1С здесь нет: документы попадают в очередь предложений. Отказы: 402 — ИИ компании не подключён (не оплачено подключение); 409 — идёт предыдущий ход или разговор закрыт (error.code = dialog_closed); 410 — разговор не найден или истёк, начните новый; 429 — кончился лимит тарифа; 503 — сервис модели не настроен. Повтор с тем же Idempotency-Key: ход закончен — его итог JSON (ChatTurnResult, Idempotent-Replayed: true), ход ещё идёт — 409 idempotency_in_progress с error.dialog_id, error.turn_no и error.events_url для переподключения (Last-Event-ID).
Idempotency-Key: повтор с тем же ключом и тем же телом отдаёт прежний ответ (статус и тело) с заголовком Idempotent-Replayed: true и ничего не делает второй раз; тот же ключ с другим адресом или телом — 422 (error.code = idempotency_key_reused); первый запрос с этим ключом ещё идёт — 409 (error.code = idempotency_in_progress). Запоминается только удачный ответ (2xx): после отказа повтор с тем же ключом выполнится заново. Ключ живёт сутки (настройка idempotency.keys), область — организация и тот, кто прислал (ключ API или человек).
Сессия кабинета: cookie ставит вход через /v1/auth/* (Better Auth), браузер шлёт её сам — фронтенду кабинета ничего добавлять не нужно (fetch с credentials: 'include'). За HTTPS имя cookie — __Secure-tungo.session_token. Сессия кончилась — 401 authentication_error: отправить на вход.
Вопрос по предложению (кнопка «Ответить в чате» у карточки или в ленте): ход начнётся с этим предложением в контексте — ИИ увидит его номер, статус, блокеры и предупреждения. Нет такого предложения в компании — 404
Файлы к вопросу. До 5 файлов, каждый до 10 МБ, все вместе до 14 МБ (до кодирования в base64). Картинка — до 5 МБ, PDF — до 100 страниц. Форматы (по расширению имени): .pdf, .jpg, .jpeg, .png, .webp, .docx, .xlsx, .xls, .csv, .txt. Содержимое должно совпадать с расширением; иначе, как и при превышении пределов, — 400 с текстом причины
Режим хода: auto (по умолчанию) — ИИ сам решает, ответить или подготовить документ; ask — только ответ и разбор, без документов; document — подготовить документ
Усилие ИИ на этот вопрос: low < medium < high < xhigh < max — глубже думает, дольше и дороже (больше расход лимита). Не прислано или null — усилие выбирает Tungo. Только на тарифе с выбором усилия (max_effort тарифа в GET /v1/plans не null): иначе 402 effort_not_in_plan. Выше max_effort тарифа — опускается до него. Ответ на уточняющий вопрос продолжает ход с прежним усилием. Ключу API тариф не нужен: усилие — как прислано
false — ответ одним JSON (ChatTurnResult), когда ход закончится; по умолчанию — поток SSE
Ответ
Ход потоком SSE — события ChatEvent (text, progress, thinking, status, tool, proposal, citation, question, choice, error, batch, done). С stream: false или Accept: application/json — один JSON ChatTurnResult, когда ход закончится. Заголовки: X-Dialog-Id — id разговора, X-Turn-No — номер хода. Обрыв соединения ход не останавливает.
Option 1
Option 2
Option 3
Option 4
Option 5
Option 6
Option 7
Option 8
Option 9
Option 10
Option 11
Option 12
Option 13
Одно событие потока: id: <номер>, event: <type>, data: <JSON этого вида>. Ещё бывает event: ping с пустым data — пульс, его пропускайте. Переподключение — GET …/chat/{id}/events с Last-Event-ID.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"Tungo","description":"Документация Tungo: как подключить 1С, работать с ИИ-бухгалтером, оплатить тариф и решить частые проблемы.","colors":{"primary":"#1b1b1b","light":"#ffffff","dark":"#1b1b1b"},"logo":{"light":"https://mintcdn.com/tungo-ai/Rh5Iy_fOmTN2xA57/logo/light.svg?fit=max\u0026auto=format\u0026n=Rh5Iy_fOmTN2xA57\u0026q=85\u0026s=01cf341ba8b8a958a335b86c62038dd6","dark":"https://mintcdn.com/tungo-ai/Rh5Iy_fOmTN2xA57/logo/dark.svg?fit=max\u0026auto=format\u0026n=Rh5Iy_fOmTN2xA57\u0026q=85\u0026s=814bff13a11c1f85fdda2b0f8b775437","href":"https://tungo.kz"},"favicon":"https://mintcdn.com/tungo-ai/Rh5Iy_fOmTN2xA57/favicon.svg?fit=max\u0026auto=format\u0026n=Rh5Iy_fOmTN2xA57\u0026q=85\u0026s=5882f628ee88d422c4e923042fd4b97d","api":{"playground":{"display":"simple"},"examples":{"languages":["curl","python","javascript"]}},"appearance":{"default":"system","strict":false},"navbar":{"links":[{"href":"https://tungo.kz","label":"Сайт"}],"primary":{"type":"button","label":"Открыть Tungo","href":"https://app.tungo.kz"}},"footer":{"links":[{"header":"Tungo","items":[{"label":"Сайт","href":"https://tungo.kz"},{"label":"Кабинет","href":"https://app.tungo.kz"}]}]},"fonts":{"family":"Onest"},"icons":{"library":"lucide"},"styling":{"latex":false},"navigation":{"languages":[{"language":"ru","href":""}]}},"deployment":{"deploymentMetadataValue":{"subdomain":"tungo-ai","hasAudioNarration":false,"actualSubdomain":"tungo-ai","customDomains":[],"gitSource":{"type":"github","owner":"tungoai","repo":"tungo-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":"","_id":"6af4da0a867599c9fc581007"},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6af4ee123d2d188ca8ce1361","clientVersion":"0.0.4111","searchFilterCounts":[{"language":"ru","tag":"API","count":121},{"language":"ru","tag":"API анықтамалығы","count":121},{"language":"ru","tag":"Вебхуки","count":36},{"language":"ru","tag":"Автоматизации","count":29},{"language":"ru","tag":"Платформа","count":26},{"language":"ru","tag":"Подключение 1С","count":16},{"language":"ru","tag":"Аккаунт и команда","count":16},{"language":"ru","tag":"Тарифы и оплата","count":16},{"language":"ru","tag":"1С қосу","count":16},{"language":"ru","tag":"Аккаунт және команда","count":16}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":true},"customCss":[{"filePath":"style.css","content":":root{--tg-r-element: 10px;--tg-r-container: 12px;--tg-muted: #f1f1f1;--tg-border: rgb(0 0 0 / 8%);--tg-text-2: #474747}.tg-home{color:#000}.tg-home a{text-decoration:none}.tg-hero{background:var(--tg-muted);padding:72px 24px 64px;text-align:center}.tg-eyebrow{margin:0 0 20px;font-size:13px;letter-spacing:0.14em;text-transform:uppercase;color:var(--tg-text-2)}.tg-hero-title{margin:0 auto 36px;max-width:640px;font-size:clamp(32px, 5vw, 52px);line-height:1.08;font-weight:600;letter-spacing:-0.02em;text-wrap:balance}.tg-chips{display:grid;grid-template-columns:repeat(3, minmax(0, 1fr));gap:12px;max-width:920px;margin:0 auto}.tg-chip{display:flex;flex-direction:column;gap:2px;padding:14px 18px;background:#fff;border-radius:var(--tg-r-container);color:#000;transition:box-shadow 0.2s, transform 0.2s}.tg-chip:hover{box-shadow:0 4px 6px rgb(0 0 0 / 6%), 0 12px 24px rgb(0 0 0 / 8%);transform:translateY(-1px)}.tg-chip span{font-weight:500;font-size:15px}.tg-chip small{font-size:13px;color:var(--tg-text-2)}.tg-hero-note{margin:28px 0 0;font-size:15px;color:var(--tg-text-2)}.tg-hero-note a{color:#000;text-decoration:underline;text-underline-offset:3px}.tg-section{max-width:1200px;margin:0 auto;padding:56px 24px 0}.tg-section:last-child{padding-bottom:96px}.tg-h2{margin:0 0 6px;font-size:28px;font-weight:600;letter-spacing:-0.01em}.tg-lead{margin:0 0 20px;color:var(--tg-text-2)}.tg-rows{border-top:1px solid var(--tg-border)}.tg-row{display:grid;grid-template-columns:minmax(0, 1.4fr) minmax(0, 1fr);gap:24px;align-items:center;padding:18px 8px;border-bottom:1px solid var(--tg-border);color:#000}.tg-row:hover{background:var(--tg-muted)}.tg-row span{font-size:16px}.tg-row b{font-weight:500;font-size:15px}.tg-row b::after{content:\" →\";color:var(--tg-text-2)}@media (max-width: 760px){.tg-hero{padding:48px 16px 40px}.tg-chips{grid-template-columns:1fr}.tg-section{padding:40px 16px 0}.tg-row{grid-template-columns:1fr;gap:4px}}html.dark .tg-home{color:#fff}html.dark .tg-hero{background:#1b1b1d}html.dark .tg-eyebrow,html.dark .tg-chip small,html.dark .tg-hero-note,html.dark .tg-lead,html.dark .tg-row b::after{color:#a8a8a8}html.dark .tg-chip{background:#2a2a2d;color:#fff}html.dark .tg-chip:hover{box-shadow:0 4px 6px rgb(0 0 0 / 30%), 0 12px 24px rgb(0 0 0 / 35%)}html.dark .tg-hero-note a,html.dark .tg-row{color:#fff}html.dark .tg-rows,html.dark .tg-row{border-color:rgb(255 255 255 / 10%)}html.dark .tg-row:hover{background:#1b1b1d}#localization-select-trigger{display:none}"}],"page":{"pagePath":"api-reference/ии-бухгалтер:-чат/сообщение-ии-бухгалтеру-ход-потоком-sse","slug":"/api-reference/ии-бухгалтер:-чат/сообщение-ии-бухгалтеру-ход-потоком-sse","pageMetadata":{"title":"Сообщение ИИ-бухгалтеру (ход потоком SSE)","description":"Агентный цикл над 1С компании. Записи в 1С здесь нет: документы попадают в очередь предложений. Отказы: 402 — ИИ компании не подключён (не оплачено подключение); 409 — идёт предыдущий ход или разговор закрыт (error.code = dialog_closed); 410 — разговор не найден или истёк, начните новый; 429 — кончился лимит тарифа; 503 — сервис модели не настроен. Повтор с тем же Idempotency-Key: ход закончен — его итог JSON (ChatTurnResult, Idempotent-Replayed: true), ход ещё идёт — 409 idempotency_in_progress с error.dialog_id, error.turn_no и error.events_url для переподключения (Last-Event-ID).\n\nIdempotency-Key: повтор с тем же ключом и тем же телом отдаёт прежний ответ (статус и тело) с заголовком Idempotent-Replayed: true и ничего не делает второй раз; тот же ключ с другим адресом или телом — 422 (error.code = idempotency_key_reused); первый запрос с этим ключом ещё идёт — 409 (error.code = idempotency_in_progress). Запоминается только удачный ответ (2xx): после отказа повтор с тем же ключом выполнится заново. Ключ живёт сутки (настройка idempotency.keys), область — организация и тот, кто прислал (ключ API или человек).\n\nДоступ: chat.use.\n\nДоступно по ключу API.","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json post /v1/companies/{co}/chat","href":"/api-reference/ии-бухгалтер:-чат/сообщение-ии-бухгалтеру-ход-потоком-sse","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.p, {\n children: \"Агентный цикл над 1С компании. Записи в 1С здесь нет: документы попадают в очередь предложений. Отказы: 402 — ИИ компании не подключён (не оплачено подключение); 409 — идёт предыдущий ход или разговор закрыт (error.code = dialog_closed); 410 — разговор не найден или истёк, начните новый; 429 — кончился лимит тарифа; 503 — сервис модели не настроен. Повтор с тем же Idempotency-Key: ход закончен — его итог JSON (ChatTurnResult, Idempotent-Replayed: true), ход ещё идёт — 409 idempotency_in_progress с error.dialog_id, error.turn_no и error.events_url для переподключения (Last-Event-ID).\"\n }), \"\\n\", _jsx(_components.p, {\n children: \"Idempotency-Key: повтор с тем же ключом и тем же телом отдаёт прежний ответ (статус и тело) с заголовком Idempotent-Replayed: true и ничего не делает второй раз; тот же ключ с другим адресом или телом — 422 (error.code = idempotency_key_reused); первый запрос с этим ключом ещё идёт — 409 (error.code = idempotency_in_progress). Запоминается только удачный ответ (2xx): после отказа повтор с тем же ключом выполнится заново. Ключ живёт сутки (настройка idempotency.keys), область — организация и тот, кто прислал (ключ API или человек).\"\n }), \"\\n\", _jsx(_components.p, {\n children: \"Доступ: chat.use.\"\n }), \"\\n\", _jsx(_components.p, {\n children: \"Доступно по ключу API.\"\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Сообщение ИИ-бухгалтеру (ход потоком SSE)","description":"Агентный цикл над 1С компании. Записи в 1С здесь нет: документы попадают в очередь предложений. Отказы: 402 — ИИ компании не подключён (не оплачено подключение); 409 — идёт предыдущий ход или разговор закрыт (error.code = dialog_closed); 410 — разговор не найден или истёк, начните новый; 429 — кончился лимит тарифа; 503 — сервис модели не настроен. Повтор с тем же Idempotency-Key: ход закончен — его итог JSON (ChatTurnResult, Idempotent-Replayed: true), ход ещё идёт — 409 idempotency_in_progress с error.dialog_id, error.turn_no и error.events_url для переподключения (Last-Event-ID).\n\nIdempotency-Key: повтор с тем же ключом и тем же телом отдаёт прежний ответ (статус и тело) с заголовком Idempotent-Replayed: true и ничего не делает второй раз; тот же ключ с другим адресом или телом — 422 (error.code = idempotency_key_reused); первый запрос с этим ключом ещё идёт — 409 (error.code = idempotency_in_progress). Запоминается только удачный ответ (2xx): после отказа повтор с тем же ключом выполнится заново. Ключ живёт сутки (настройка idempotency.keys), область — организация и тот, кто прислал (ключ API или человек).\n\nДоступ: chat.use.\n\nДоступно по ключу API.","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json post /v1/companies/{co}/chat","href":"/api-reference/ии-бухгалтер:-чат/сообщение-ии-бухгалтеру-ход-потоком-sse","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"tags":["ИИ-бухгалтер: чат"],"summary":"Сообщение ИИ-бухгалтеру (ход потоком SSE)","description":"Агентный цикл над 1С компании. Записи в 1С здесь нет: документы попадают в очередь предложений. Отказы: 402 — ИИ компании не подключён (не оплачено подключение); 409 — идёт предыдущий ход или разговор закрыт (error.code = dialog_closed); 410 — разговор не найден или истёк, начните новый; 429 — кончился лимит тарифа; 503 — сервис модели не настроен. Повтор с тем же Idempotency-Key: ход закончен — его итог JSON (ChatTurnResult, Idempotent-Replayed: true), ход ещё идёт — 409 idempotency_in_progress с error.dialog_id, error.turn_no и error.events_url для переподключения (Last-Event-ID).\n\nIdempotency-Key: повтор с тем же ключом и тем же телом отдаёт прежний ответ (статус и тело) с заголовком Idempotent-Replayed: true и ничего не делает второй раз; тот же ключ с другим адресом или телом — 422 (error.code = idempotency_key_reused); первый запрос с этим ключом ещё идёт — 409 (error.code = idempotency_in_progress). Запоминается только удачный ответ (2xx): после отказа повтор с тем же ключом выполнится заново. Ключ живёт сутки (настройка idempotency.keys), область — организация и тот, кто прислал (ключ API или человек).\n\nДоступ: chat.use.\n\nДоступно по ключу API.","security":["9457915c-d16e-460c-9cb4-4876a5afd6f2","83b136c9-8942-4d1d-a135-6984372ffca9","87ddddea-52e9-4fb3-a64d-828e9d20832a"],"x-api-key-access":true,"x-permission":"chat.use","parameters":["84d59d68-4d3a-43d4-b126-cdf08bf4fadd","fbd444e6-7e90-40bc-bf0d-06effc32cb4d"],"requestBody":"336ba754-a6db-4c3a-b8a7-a962ffb47bcc","responses":{"200":"7ada4ab5-6e2b-48b3-b757-c3a93c67d0e1","400":"accd3a61-3d61-4ea2-a1cf-8bf2d649f8b7","401":"7db3a44f-fda0-42a5-a283-e7d43081b926","402":"f81af3e4-4a65-48d4-9a80-92bfcc0532fb","403":"36b10de0-1bba-4892-87a9-041d8ff9ca51","404":"bac7cfa9-9d6a-4e37-8bdc-76b4f1a31481","409":"16ab431b-d338-47ec-9270-4d19ff4d297c","410":"eeb995e2-d64b-47e9-91b6-382205f906c0","413":"e34a4898-e25b-420a-a517-a653398faa51","422":"95b68e55-12a0-4b4a-ab38-9dcbc4232c1b","429":"0bf96aca-4c13-4fe0-810d-9e9678656dbc","503":"07309174-e160-4174-85b7-673f9a2180ed"},"operationId":"createCompanyChat","method":"post","type":"path","servers":["c389c850-4818-4663-a4a8-1bad0282721d"],"path":"/v1/companies/{co}/chat","baseUrlOptions":["https://api.tungo.kz"],"title":"Сообщение ИИ-бухгалтеру (ход потоком SSE)","codeSamples":[],"requestExampleLanguages":["bash","python","javascript"],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"84d59d68-4d3a-43d4-b126-cdf08bf4fadd":{"schema":{"type":"string","description":"id компании, co_… — из GET /v1/companies","isRequired":true,"uniqueKey":"","typeLabel":"string"},"required":true,"description":"id компании, co_… — из GET /v1/companies","name":"co","in":"path"},"fbd444e6-7e90-40bc-bf0d-06effc32cb4d":{"schema":{"type":"string","maxLength":255,"description":"Ключ повтора (например, UUID): повтор с тем же ключом и тем же телом не выполняет действие второй раз, а отдаёт прежний ответ","isRequired":false,"uniqueKey":"","typeLabel":"string"},"required":false,"description":"Ключ повтора (например, UUID): повтор с тем же ключом и тем же телом не выполняет действие второй раз, а отдаёт прежний ответ","name":"Idempotency-Key","in":"header"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","maxLength":4000,"description":"Вопрос человека, до 4000 знаков; можно не писать, если приложены файлы","example":"Сколько мы должны поставщикам на конец июня?","uniqueKey":"message","typeLabel":"string"},"dialog_id":{"oneOf":[{"type":"string","pattern":"^[A-Za-z0-9_-]{1,64}$","description":"Продолжить разговор с этим id. Без него — новый разговор, его id придёт в заголовке X-Dialog-Id","uniqueKey":"dialog_id.oneOf.0","typeLabel":"string"},{"type":"null","pattern":"^[A-Za-z0-9_-]{1,64}$","description":"Продолжить разговор с этим id. Без него — новый разговор, его id придёт в заголовке X-Dialog-Id","uniqueKey":"dialog_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"dialog_id","typeLabel":"string | null"},"proposal_id":{"oneOf":[{"type":"string","pattern":"^P-\\d{1,12}$","description":"Вопрос по предложению (кнопка «Ответить в чате» у карточки или в ленте): ход начнётся с этим предложением в контексте — ИИ увидит его номер, статус, блокеры и предупреждения. Нет такого предложения в компании — 404","example":"P-000123","uniqueKey":"proposal_id.oneOf.0","typeLabel":"string"},{"type":"null","pattern":"^P-\\d{1,12}$","description":"Вопрос по предложению (кнопка «Ответить в чате» у карточки или в ленте): ход начнётся с этим предложением в контексте — ИИ увидит его номер, статус, блокеры и предупреждения. Нет такого предложения в компании — 404","example":"P-000123","uniqueKey":"proposal_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"proposal_id","typeLabel":"string | null"},"new_dialog":{"type":"boolean","description":"true — начать новый разговор именно с этим dialog_id (клиент задаёт id сам); id уже занят — 409","uniqueKey":"new_dialog","typeLabel":"boolean"},"turn":{"oneOf":[{"type":"integer","minimum":0,"description":"Номер последнего хода, который видел клиент (заголовок X-Turn-No): если сервер этот ход потерял (перезапуск) — 410, начните новый разговор","uniqueKey":"turn.oneOf.0","typeLabel":"integer"},{"type":"null","minimum":0,"description":"Номер последнего хода, который видел клиент (заголовок X-Turn-No): если сервер этот ход потерял (перезапуск) — 410, начните новый разговор","uniqueKey":"turn.oneOf.1","typeLabel":"null"}],"uniqueKey":"turn","typeLabel":"integer | null"},"capabilities":{"type":"array","items":{"type":"string","uniqueKey":"capabilities.items.[INDEX]","typeLabel":"string"},"description":"Что умеет клиент: [\"choice\"] — показывать уточняющие вопросы с вариантами (событие choice). Без него ИИ спрашивает обычным текстом","example":["choice"],"uniqueKey":"capabilities","typeLabel":"string[]"},"attachments":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Имя файла с расширением — по нему определяется тип","example":"договор.pdf","isRequired":true,"uniqueKey":"attachments.items.[INDEX].name","typeLabel":"string"},"data":{"type":"string","description":"Содержимое файла в base64 (можно с префиксом data:…;base64,)","isRequired":true,"uniqueKey":"attachments.items.[INDEX].data","typeLabel":"string"},"media_type":{"type":"string","description":"MIME-тип; не обязателен: тип файла определяется по расширению и содержимому","example":"application/pdf","uniqueKey":"attachments.items.[INDEX].media_type","typeLabel":"string"}},"required":["name","data"],"description":"Файл к вопросу: PDF, скан, Excel, Word, выписка","uniqueKey":"attachments.items.[INDEX]","typeLabel":"object"},"maxItems":5,"description":"Файлы к вопросу. До 5 файлов, каждый до 10 МБ, все вместе до 14 МБ (до кодирования в base64). Картинка — до 5 МБ, PDF — до 100 страниц. Форматы (по расширению имени): .pdf, .jpg, .jpeg, .png, .webp, .docx, .xlsx, .xls, .csv, .txt. Содержимое должно совпадать с расширением; иначе, как и при превышении пределов, — 400 с текстом причины","uniqueKey":"attachments","typeLabel":"object[]"},"mode":{"type":"string","enum":["auto","ask","document"],"description":"Режим хода: auto (по умолчанию) — ИИ сам решает, ответить или подготовить документ; ask — только ответ и разбор, без документов; document — подготовить документ","uniqueKey":"mode","typeLabel":"enum\u003cstring>"},"effort":{"oneOf":[{"type":"string","enum":["low","medium","high","xhigh","max",null],"description":"Усилие ИИ на этот вопрос: low \u003c medium \u003c high \u003c xhigh \u003c max — глубже думает, дольше и дороже (больше расход лимита). Не прислано или null — усилие выбирает Tungo. Только на тарифе с выбором усилия (max_effort тарифа в GET /v1/plans не null): иначе 402 effort_not_in_plan. Выше max_effort тарифа — опускается до него. Ответ на уточняющий вопрос продолжает ход с прежним усилием. Ключу API тариф не нужен: усилие — как прислано","example":"high","uniqueKey":"effort.oneOf.0","typeLabel":"enum\u003cstring>"},{"type":"null","enum":["low","medium","high","xhigh","max",null],"description":"Усилие ИИ на этот вопрос: low \u003c medium \u003c high \u003c xhigh \u003c max — глубже думает, дольше и дороже (больше расход лимита). Не прислано или null — усилие выбирает Tungo. Только на тарифе с выбором усилия (max_effort тарифа в GET /v1/plans не null): иначе 402 effort_not_in_plan. Выше max_effort тарифа — опускается до него. Ответ на уточняющий вопрос продолжает ход с прежним усилием. Ключу API тариф не нужен: усилие — как прислано","example":"high","uniqueKey":"effort.oneOf.1","typeLabel":"null"}],"uniqueKey":"effort","typeLabel":"enum\u003cstring> | null"},"stream":{"type":"boolean","description":"false — ответ одним JSON (ChatTurnResult), когда ход закончится; по умолчанию — поток SSE","uniqueKey":"stream","typeLabel":"boolean"}},"description":"Вопрос ИИ-бухгалтеру","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"message":"Сколько мы должны поставщикам на конец июня?","dialog_id":"\u003cstring>","proposal_id":"P-000123","new_dialog":true,"turn":1,"capabilities":["choice"],"attachments":[{"name":"договор.pdf","data":"\u003cstring>","media_type":"application/pdf"}],"effort":"high","stream":true}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"7ada4ab5-6e2b-48b3-b757-c3a93c67d0e1":{"description":"Ход потоком SSE — события ChatEvent (text, progress, thinking, status, tool, proposal, citation, question, choice, error, batch, done). С stream: false или Accept: application/json — один JSON ChatTurnResult, когда ход закончится. Заголовки: X-Dialog-Id — id разговора, X-Turn-No — номер хода. Обрыв соединения ход не останавливает.","headers":{"x-request-id":{"description":"Номер запроса (тот же, что request_id в теле ошибки) — назвать в обращении в поддержку. Его всегда создаёт сервер: присланный клиентом x-request-id номером не становится","schema":{"type":"string","example":"req_3f2a9c0d1e4b4c5d8e7f6a5b4c3d2e1f"}},"x-ratelimit-limit":{"description":"Только при входе по ключу API: сколько запросов можно в текущем окне — самый тесный предел из ключа и организации","schema":{"type":"integer"}},"x-ratelimit-remaining":{"description":"Только при входе по ключу API: сколько запросов осталось по этому пределу в текущем окне","schema":{"type":"integer"}},"x-ratelimit-reset":{"description":"Только при входе по ключу API: секунд до нового окна этого предела","schema":{"type":"integer"}},"Idempotent-Replayed":{"description":"true — это сохранённый ответ на повтор с тем же Idempotency-Key: действие второй раз не выполнялось. Нет заголовка — запрос выполнен сейчас","schema":{"type":"string","enum":["true"]}},"X-Dialog-Id":{"description":"Номер разговора (UUID) — для следующих сообщений, …/events и …/stop; в потоке SSE он же приходит событием start","schema":{"type":"string"}},"X-Turn-No":{"description":"Номер хода в разговоре: ?turn= у …/events, чтобы переподключиться именно к этому ходу","schema":{"type":"integer"}}},"content":{"text/event-stream":{"schema":{"oneOf":[{"type":"object","description":"Одно событие потока: `id: \u003cномер>`, `event: \u003ctype>`, `data: \u003cJSON этого вида>`. Ещё бывает `event: ping` с пустым data — пульс, его пропускайте. Переподключение — GET …/chat/{id}/events с Last-Event-ID.","required":["type","delta"],"properties":{"type":{"type":"string","enum":["text"],"description":"Вид события: text","isRequired":true,"uniqueKey":"oneOf.0.type","typeLabel":"enum\u003cstring>"},"delta":{"type":"string","description":"Новый кусок текста (Markdown)","isRequired":true,"uniqueKey":"oneOf.0.delta","typeLabel":"string"},"step":{"type":"number","description":"Номер витка цикла ИИ","uniqueKey":"oneOf.0.step","typeLabel":"number"}},"uniqueKey":"oneOf.0","typeLabel":"object"},{"type":"object","description":"Одно событие потока: `id: \u003cномер>`, `event: \u003ctype>`, `data: \u003cJSON этого вида>`. Ещё бывает `event: ping` с пустым data — пульс, его пропускайте. Переподключение — GET …/chat/{id}/events с Last-Event-ID.","required":["type","step","text"],"properties":{"type":{"type":"string","enum":["progress"],"description":"Вид события: progress","isRequired":true,"uniqueKey":"oneOf.1.type","typeLabel":"enum\u003cstring>"},"step":{"type":"number","description":"Номер витка, чей текст убрать из ответа","isRequired":true,"uniqueKey":"oneOf.1.step","typeLabel":"number"},"text":{"type":"string","description":"Тот же текст целиком — показать как шаг прогресса","isRequired":true,"uniqueKey":"oneOf.1.text","typeLabel":"string"}},"uniqueKey":"oneOf.1","typeLabel":"object"},{"type":"object","description":"Одно событие потока: `id: \u003cномер>`, `event: \u003ctype>`, `data: \u003cJSON этого вида>`. Ещё бывает `event: ping` с пустым data — пульс, его пропускайте. Переподключение — GET …/chat/{id}/events с Last-Event-ID.","required":["type","delta"],"properties":{"type":{"type":"string","enum":["thinking"],"description":"Вид события: thinking","isRequired":true,"uniqueKey":"oneOf.2.type","typeLabel":"enum\u003cstring>"},"delta":{"type":"string","description":"Новый кусок размышления","isRequired":true,"uniqueKey":"oneOf.2.delta","typeLabel":"string"}},"uniqueKey":"oneOf.2","typeLabel":"object"},{"type":"object","description":"Одно событие потока: `id: \u003cномер>`, `event: \u003ctype>`, `data: \u003cJSON этого вида>`. Ещё бывает `event: ping` с пустым data — пульс, его пропускайте. Переподключение — GET …/chat/{id}/events с Last-Event-ID.","required":["type","text"],"properties":{"type":{"type":"string","enum":["status"],"description":"Вид события: status","isRequired":true,"uniqueKey":"oneOf.3.type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"Что происходит — показать серой строкой","isRequired":true,"uniqueKey":"oneOf.3.text","typeLabel":"string"},"code":{"type":"string","enum":["compacting","escalating","elsewhere"],"description":"Что происходит:\n- `compacting` — сервер сжимает историю длинного разговора\n- `escalating` — ответ перепроверяется более сильной моделью — ход займёт дольше\n- `elsewhere` — ответ готовится на другом сервере Tungo — он появится целиком, когда будет готов (событие done со stop_reason elsewhere)","uniqueKey":"oneOf.3.code","typeLabel":"enum\u003cstring>"}},"uniqueKey":"oneOf.3","typeLabel":"object"},{"type":"object","description":"Одно событие потока: `id: \u003cномер>`, `event: \u003ctype>`, `data: \u003cJSON этого вида>`. Ещё бывает `event: ping` с пустым data — пульс, его пропускайте. Переподключение — GET …/chat/{id}/events с Last-Event-ID.","required":["type","name","status"],"properties":{"type":{"type":"string","enum":["tool"],"description":"Вид события: tool","isRequired":true,"uniqueKey":"oneOf.4.type","typeLabel":"enum\u003cstring>"},"name":{"type":"string","description":"Имя инструмента (машинное) — ключ, чтобы связать started и done","isRequired":true,"uniqueKey":"oneOf.4.name","typeLabel":"string"},"status":{"type":"string","enum":["started","done","error"],"description":"started — идёт (крутилка); done — готово; error — не получилось","isRequired":true,"uniqueKey":"oneOf.4.status","typeLabel":"enum\u003cstring>"},"title":{"type":"string","description":"Название шага по-русски для показа: «Ищу контрагента»","uniqueKey":"oneOf.4.title","typeLabel":"string"},"detail":{"type":"string","description":"Подробности шага или текст ошибки","uniqueKey":"oneOf.4.detail","typeLabel":"string"}},"uniqueKey":"oneOf.4","typeLabel":"object"},{"type":"object","description":"Одно событие потока: `id: \u003cномер>`, `event: \u003ctype>`, `data: \u003cJSON этого вида>`. Ещё бывает `event: ping` с пустым data — пульс, его пропускайте. Переподключение — GET …/chat/{id}/events с Last-Event-ID.","required":["type","proposal_id","card"],"properties":{"type":{"type":"string","enum":["proposal"],"description":"Вид события: proposal","isRequired":true,"uniqueKey":"oneOf.5.type","typeLabel":"enum\u003cstring>"},"proposal_id":{"type":"string","description":"Номер предложения (P-000123): карточка — GET …/proposals/{id}","example":"P-000123","isRequired":true,"uniqueKey":"oneOf.5.proposal_id","typeLabel":"string"},"card":{"type":"object","description":"Полная карточка предложения: шапка, строки, проводки, блокеры, кнопки и история","required":["source","intent","header","lines","postings","warnings","blockers","actions","history","summary","id","kind","kind_title","status","status_title","created_at","level","level_title","title","total","vat","line_count","warning_count","blocker_count","approval","dialog_id","href"],"properties":{"id":{"type":"string","description":"Номер предложения внутри компании (P-000123): по нему открывают карточку GET …/proposals/{id} и одобряют POST …/proposals/{id}/approve","example":"P-000123","isRequired":true,"uniqueKey":"oneOf.5.card.id","typeLabel":"string"},"kind":{"type":"string","enum":["sale","purchase","bank_receipt","bank_payment","counterparty","contract","revert","inventory_writeoff","cash_order_in","cash_order_out","advance_report"],"description":"Что ИИ предлагает записать в 1С (подпись по-русски — в kind_title):\n- sale — реализация товаров и услуг (продажа покупателю);\n- purchase — поступление товаров и услуг (покупка у поставщика);\n- bank_receipt — входящее платёжное поручение (деньги пришли на счёт);\n- bank_payment — исходящее платёжное поручение (оплата со счёта);\n- counterparty — новый контрагент (карточка справочника, не документ);\n- contract — новый договор с контрагентом (карточка справочника);\n- revert — отмена ранее записанного документа (распровести и пометить на удаление);\n- inventory_writeoff — списание товаров;\n- cash_order_in — приходный кассовый ордер (наличные в кассу);\n- cash_order_out — расходный кассовый ордер (наличные из кассы);\n- advance_report — авансовый отчёт подотчётного лица.","isRequired":true,"uniqueKey":"oneOf.5.card.kind","typeLabel":"enum\u003cstring>"},"kind_title":{"type":"string","description":"Вид документа по-русски для показа","example":"Реализация товаров и услуг","isRequired":true,"uniqueKey":"oneOf.5.card.kind_title","typeLabel":"string"},"status":{"type":"string","enum":["previewed","approved","rejected","committed","posted","verified","mismatch","failed"],"description":"Где предложение в жизненном цикле (подпись по-русски — в status_title рядом):\n- previewed — ждёт решения бухгалтера: показать кнопки «Записать» и «Отклонить»;\n- approved — одобрено, но запись в 1С не закончена (1С не ответила): «Записать» ещё раз безопасно — второй документ не создастся;\n- rejected — отклонено, в 1С ничего не записано; конечное;\n- committed — записано в 1С черновиком, без проведения (проводок нет);\n- posted — записано и проведено, проводки ещё не сверены;\n- verified — проведено, фактические проводки 1С совпали с ожидаемыми; конечное, всё хорошо;\n- mismatch — проведено, но проводки расходятся с ожидаемыми: показать предупреждение, причины — в result.mismatches;\n- failed — записать не удалось: причина — в последней записи history.","isRequired":true,"uniqueKey":"oneOf.5.card.status","typeLabel":"enum\u003cstring>"},"status_title":{"type":"string","description":"Статус по-русски для показа (бейдж)","example":"Ждёт решения","isRequired":true,"uniqueKey":"oneOf.5.card.status_title","typeLabel":"string"},"created_at":{"type":"string","format":"date-time","description":"Когда ИИ подготовил предложение, ISO 8601 UTC","example":"2026-07-10T09:15:00.000Z","isRequired":true,"uniqueKey":"oneOf.5.card.created_at","typeLabel":"string\u003cdate-time>"},"level":{"type":"string","enum":["L0","L1","L2","L3","L4","HUMAN_ONLY","FORBIDDEN"],"description":"Уровень самостоятельности ИИ для этого вида операции по политике компании (подпись — в level_title):\n- L0 — только чтение; L1 — ИИ предлагает, одобряет человек (обычный случай);\n- L2 — ИИ сам записывает черновик; L3 — ИИ проводит сам, с возможностью отмены; L4 — ИИ проводит сам;\n- HUMAN_ONLY — только человек и только по одному: пачкой не одобряется (исход policy_blocked);\n- FORBIDDEN — запрещено политикой: одобрить нельзя (403, error.code = policy_blocked).","isRequired":true,"uniqueKey":"oneOf.5.card.level","typeLabel":"enum\u003cstring>"},"level_title":{"type":"string","description":"Уровень самостоятельности по-русски для показа","example":"Предложение, одобряет человек","isRequired":true,"uniqueKey":"oneOf.5.card.level_title","typeLabel":"string"},"title":{"type":"string","description":"Заголовок строки очереди: вид документа, дата и контрагент","example":"Реализация товаров и услуг от 2026-07-10 · ТОО «Пример»","isRequired":true,"uniqueKey":"oneOf.5.card.title","typeLabel":"string"},"total":{"type":"object","properties":{"amount":{"type":"number","description":"Тенге десятичным числом, до тиына: 1234.5 = 1 234,50 ₸. Для показа и графиков; считать деньги — по amount_tiyn","example":1234.5,"isRequired":true,"uniqueKey":"oneOf.5.card.total.amount","typeLabel":"number"},"amount_tiyn":{"type":"integer","description":"То же целым числом тиынов (1 ₸ = 100 тиын): 1234.5 ₸ = 123450. Складывать и сравнивать суммы — по этому полю","example":123450,"isRequired":true,"uniqueKey":"oneOf.5.card.total.amount_tiyn","typeLabel":"integer"},"formatted":{"type":"string","description":"Готовая строка для человека — показывать как есть: «1 234,50 ₸»","example":"1 234,50 ₸","isRequired":true,"uniqueKey":"oneOf.5.card.total.formatted","typeLabel":"string"}},"required":["amount","amount_tiyn","formatted"],"description":"Сумма документа (как в 1С: с НДС или без — см. header.prices_include_vat в карточке)","isRequired":true,"uniqueKey":"oneOf.5.card.total","typeLabel":"object"},"vat":{"type":"object","description":"НДС по строкам документа (налог на добавленную стоимость); 0 — без НДС","required":["amount","amount_tiyn","formatted"],"properties":{"amount":{"type":"number","description":"Тенге десятичным числом, до тиына: 1234.5 = 1 234,50 ₸. Для показа и графиков; считать деньги — по amount_tiyn","example":1234.5,"isRequired":true,"uniqueKey":"oneOf.5.card.vat.amount","typeLabel":"number"},"amount_tiyn":{"type":"integer","description":"То же целым числом тиынов (1 ₸ = 100 тиын): 1234.5 ₸ = 123450. Складывать и сравнивать суммы — по этому полю","example":123450,"isRequired":true,"uniqueKey":"oneOf.5.card.vat.amount_tiyn","typeLabel":"integer"},"formatted":{"type":"string","description":"Готовая строка для человека — показывать как есть: «1 234,50 ₸»","example":"1 234,50 ₸","isRequired":true,"uniqueKey":"oneOf.5.card.vat.formatted","typeLabel":"string"}},"isRequired":true,"uniqueKey":"oneOf.5.card.vat","typeLabel":"object"},"line_count":{"type":"integer","description":"Сколько строк товаров и услуг в документе; 0 у платёжек и справочников","isRequired":true,"uniqueKey":"oneOf.5.card.line_count","typeLabel":"integer"},"warning_count":{"type":"integer","description":"Сколько предупреждений: показать жёлтый значок, одобрению не мешают","isRequired":true,"uniqueKey":"oneOf.5.card.warning_count","typeLabel":"integer"},"blocker_count":{"type":"integer","description":"Сколько блокеров: больше 0 — одобрить нельзя, нужен ответ человека в чате","isRequired":true,"uniqueKey":"oneOf.5.card.blocker_count","typeLabel":"integer"},"approval":{"type":"object","properties":{"allowed":{"type":"boolean","description":"Можно ли сейчас нажать «Записать»: false — кнопку выключить и показать reason рядом. Сервер всё равно проверит заново","isRequired":true,"uniqueKey":"oneOf.5.card.approval.allowed","typeLabel":"boolean"},"requires_right":{"type":"string","enum":["proposals.approve"],"description":"Какое право нужно, чтобы одобрять (всегда proposals.approve)","isRequired":true,"uniqueKey":"oneOf.5.card.approval.requires_right","typeLabel":"enum\u003cstring>"},"blocked_by_blockers":{"type":"boolean","description":"true — есть блокеры (blockers): пока они есть, одобрение невозможно. Предупреждения (warnings) одобрению не мешают","isRequired":true,"uniqueKey":"oneOf.5.card.approval.blocked_by_blockers","typeLabel":"boolean"},"reason":{"type":"string","description":"Почему одобрить нельзя — показать рядом с выключенной кнопкой. Есть только при allowed = false","uniqueKey":"oneOf.5.card.approval.reason","typeLabel":"string"}},"required":["allowed","requires_right","blocked_by_blockers"],"description":"Можно ли текущему пользователю одобрить предложение — то же правило, что применит ручка одобрения","isRequired":true,"uniqueKey":"oneOf.5.card.approval","typeLabel":"object"},"dialog_id":{"oneOf":[{"type":"string","description":"Разговор чата, в котором ИИ подготовил предложение: «Открыть разговор» — GET …/chat/{dialog_id} (если он ваш). null — не из чата (пачка, автоматизация, MCP)","isRequired":true,"uniqueKey":"oneOf.5.card.dialog_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"Разговор чата, в котором ИИ подготовил предложение: «Открыть разговор» — GET …/chat/{dialog_id} (если он ваш). null — не из чата (пачка, автоматизация, MCP)","isRequired":true,"uniqueKey":"oneOf.5.card.dialog_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"oneOf.5.card.dialog_id","typeLabel":"string | null"},"href":{"type":"string","description":"Адрес карточки в API: GET по нему отдаёт ProposalCard","example":"/v1/companies/co_01jx0000000000000000000000/proposals/P-000123","isRequired":true,"uniqueKey":"oneOf.5.card.href","typeLabel":"string"},"source":{"type":"object","properties":{"channel":{"type":"string","enum":["mcp","pipeline","cli","web","api"],"description":"Откуда пришло: web — чат в приложении; api — по ключу API; mcp — из ИИ-клиента через MCP; pipeline — пачка (выписка, ЭСФ, автоматизация); cli — служебная командная строка","isRequired":true,"uniqueKey":"oneOf.5.card.source.channel","typeLabel":"enum\u003cstring>"},"note":{"type":"string","description":"Уточнение источника; у пачек — метка «batch:\u003cномер задания>»","uniqueKey":"oneOf.5.card.source.note","typeLabel":"string"}},"required":["channel"],"description":"Откуда пришло предложение","isRequired":true,"uniqueKey":"oneOf.5.card.source","typeLabel":"object"},"intent":{"type":"object","additionalProperties":{"oneOf":[{}],"uniqueKey":"oneOf.5.card.intent.additionalProperties","typeLabel":"any"},"description":"Намерение ИИ в предметных терминах (ключи snake_case) — для аудита и отладки; интерфейсу показывать не нужно","isRequired":true,"uniqueKey":"oneOf.5.card.intent","typeLabel":"object"},"header":{"type":"object","properties":{"document_title":{"type":"string","description":"Вид документа по-русски (заголовок карточки)","example":"Реализация товаров и услуг","isRequired":true,"uniqueKey":"oneOf.5.card.header.document_title","typeLabel":"string"},"entity_set":{"type":"string","description":"Набор OData 1С, куда ляжет запись (Document_… — документ, Catalog_… — справочник); для отладки","example":"Document_РеализацияТоваровУслуг","isRequired":true,"uniqueKey":"oneOf.5.card.header.entity_set","typeLabel":"string"},"date":{"type":"string","description":"Дата документа ГГГГ-ММ-ДД — календарная дата, без часового пояса: показывать как есть, не переводить","example":"2026-07-10","isRequired":true,"uniqueKey":"oneOf.5.card.header.date","typeLabel":"string"},"total":{"type":"object","description":"Сумма документа, как её хранит 1С","required":["amount","amount_tiyn","formatted"],"properties":{"amount":{"type":"number","description":"Тенге десятичным числом, до тиына: 1234.5 = 1 234,50 ₸. Для показа и графиков; считать деньги — по amount_tiyn","example":1234.5,"isRequired":true,"uniqueKey":"oneOf.5.card.header.total.amount","typeLabel":"number"},"amount_tiyn":{"type":"integer","description":"То же целым числом тиынов (1 ₸ = 100 тиын): 1234.5 ₸ = 123450. Складывать и сравнивать суммы — по этому полю","example":123450,"isRequired":true,"uniqueKey":"oneOf.5.card.header.total.amount_tiyn","typeLabel":"integer"},"formatted":{"type":"string","description":"Готовая строка для человека — показывать как есть: «1 234,50 ₸»","example":"1 234,50 ₸","isRequired":true,"uniqueKey":"oneOf.5.card.header.total.formatted","typeLabel":"string"}},"isRequired":true,"uniqueKey":"oneOf.5.card.header.total","typeLabel":"object"},"vat":{"type":"object","description":"НДС по строкам документа","required":["amount","amount_tiyn","formatted"],"properties":{"amount":{"type":"number","description":"Тенге десятичным числом, до тиына: 1234.5 = 1 234,50 ₸. Для показа и графиков; считать деньги — по amount_tiyn","example":1234.5,"isRequired":true,"uniqueKey":"oneOf.5.card.header.vat.amount","typeLabel":"number"},"amount_tiyn":{"type":"integer","description":"То же целым числом тиынов (1 ₸ = 100 тиын): 1234.5 ₸ = 123450. Складывать и сравнивать суммы — по этому полю","example":123450,"isRequired":true,"uniqueKey":"oneOf.5.card.header.vat.amount_tiyn","typeLabel":"integer"},"formatted":{"type":"string","description":"Готовая строка для человека — показывать как есть: «1 234,50 ₸»","example":"1 234,50 ₸","isRequired":true,"uniqueKey":"oneOf.5.card.header.vat.formatted","typeLabel":"string"}},"isRequired":true,"uniqueKey":"oneOf.5.card.header.vat","typeLabel":"object"},"net":{"type":"object","description":"Сумма без НДС: total − vat, когда цены включают НДС; иначе равна total","required":["amount","amount_tiyn","formatted"],"properties":{"amount":{"type":"number","description":"Тенге десятичным числом, до тиына: 1234.5 = 1 234,50 ₸. Для показа и графиков; считать деньги — по amount_tiyn","example":1234.5,"isRequired":true,"uniqueKey":"oneOf.5.card.header.net.amount","typeLabel":"number"},"amount_tiyn":{"type":"integer","description":"То же целым числом тиынов (1 ₸ = 100 тиын): 1234.5 ₸ = 123450. Складывать и сравнивать суммы — по этому полю","example":123450,"isRequired":true,"uniqueKey":"oneOf.5.card.header.net.amount_tiyn","typeLabel":"integer"},"formatted":{"type":"string","description":"Готовая строка для человека — показывать как есть: «1 234,50 ₸»","example":"1 234,50 ₸","isRequired":true,"uniqueKey":"oneOf.5.card.header.net.formatted","typeLabel":"string"}},"isRequired":true,"uniqueKey":"oneOf.5.card.header.net","typeLabel":"object"},"accounts":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string","description":"Имя реквизита 1С без _Key (СчетУчетаБУ, СчетУчетаНДС…) — для отладки, людям показывать title","example":"СчетУчетаБУ","isRequired":true,"uniqueKey":"oneOf.5.card.header.accounts.items.[INDEX].field","typeLabel":"string"},"title":{"type":"string","description":"Название реквизита по-русски для показа","example":"Счёт учёта (БУ)","isRequired":true,"uniqueKey":"oneOf.5.card.header.accounts.items.[INDEX].title","typeLabel":"string"},"code":{"type":"string","description":"Код счёта по плану счетов 1С («1330», «6010»); «?» — ссылка на счёт есть, а код не прочитан (счёт удалён или 1С недоступна)","example":"1330","isRequired":true,"uniqueKey":"oneOf.5.card.header.accounts.items.[INDEX].code","typeLabel":"string"},"ref":{"type":"string","description":"Ref_Key счёта в 1С (GUID). Показывать не нужно — это ссылка для перехода в 1С и для отладки","example":"00000000-0000-0000-0000-000000000000","isRequired":true,"uniqueKey":"oneOf.5.card.header.accounts.items.[INDEX].ref","typeLabel":"string"}},"required":["field","title","code","ref"],"description":"Счёт бухгалтерского учёта, который документ подставит в реквизит 1С (БУ — бухгалтерский учёт, НУ — налоговый учёт)","uniqueKey":"oneOf.5.card.header.accounts.items.[INDEX]","typeLabel":"object"},"description":"Счета из шапки документа: расчёты с контрагентом, авансы, банковский счёт","isRequired":true,"uniqueKey":"oneOf.5.card.header.accounts","typeLabel":"object[]"},"organization":{"type":"object","description":"Своя организация (от чьего имени документ); нет — 1С не ответила","required":["ref","name"],"properties":{"ref":{"type":"string","description":"Ref_Key контрагента или организации в 1С (GUID). Показывать не нужно — это ссылка для перехода в 1С и для отладки","example":"00000000-0000-0000-0000-000000000000","isRequired":true,"uniqueKey":"oneOf.5.card.header.organization.ref","typeLabel":"string"},"name":{"type":"string","description":"Название для показа. Не нашёлся в 1С — «Контрагент не найден в 1С»","example":"ТОО «Пример»","isRequired":true,"uniqueKey":"oneOf.5.card.header.organization.name","typeLabel":"string"},"bin":{"type":"string","description":"БИН/ИИН — 12 цифр (БИН у юрлица, ИИН у ИП и физлица). Нет — в 1С не заполнен","example":"000000000000","uniqueKey":"oneOf.5.card.header.organization.bin","typeLabel":"string"}},"uniqueKey":"oneOf.5.card.header.organization","typeLabel":"object"},"counterparty":{"type":"object","description":"Контрагент документа, если есть","required":["ref","name"],"properties":{"ref":{"type":"string","description":"Ref_Key контрагента или организации в 1С (GUID). Показывать не нужно — это ссылка для перехода в 1С и для отладки","example":"00000000-0000-0000-0000-000000000000","isRequired":true,"uniqueKey":"oneOf.5.card.header.counterparty.ref","typeLabel":"string"},"name":{"type":"string","description":"Название для показа. Не нашёлся в 1С — «Контрагент не найден в 1С»","example":"ТОО «Пример»","isRequired":true,"uniqueKey":"oneOf.5.card.header.counterparty.name","typeLabel":"string"},"bin":{"type":"string","description":"БИН/ИИН — 12 цифр (БИН у юрлица, ИИН у ИП и физлица). Нет — в 1С не заполнен","example":"000000000000","uniqueKey":"oneOf.5.card.header.counterparty.bin","typeLabel":"string"}},"uniqueKey":"oneOf.5.card.header.counterparty","typeLabel":"object"},"contract":{"type":"object","properties":{"ref":{"type":"string","description":"Ref_Key договора в 1С (GUID). Показывать не нужно — это ссылка для перехода в 1С и для отладки","example":"00000000-0000-0000-0000-000000000000","isRequired":true,"uniqueKey":"oneOf.5.card.header.contract.ref","typeLabel":"string"},"name":{"type":"string","description":"Название договора; не нашёлся в 1С — «Договор не найден в 1С»","isRequired":true,"uniqueKey":"oneOf.5.card.header.contract.name","typeLabel":"string"},"number":{"type":"string","description":"Номер договора, если заполнен в 1С","uniqueKey":"oneOf.5.card.header.contract.number","typeLabel":"string"},"date":{"type":"string","description":"Дата договора как записана в 1С (обычно ГГГГ-ММ-ДД)","uniqueKey":"oneOf.5.card.header.contract.date","typeLabel":"string"},"kind":{"type":"string","description":"Вид договора из 1С: СПокупателем, СПоставщиком, Прочее…","uniqueKey":"oneOf.5.card.header.contract.kind","typeLabel":"string"}},"required":["ref","name"],"description":"Договор контрагента, по которому идёт документ","uniqueKey":"oneOf.5.card.header.contract","typeLabel":"object"},"prices_include_vat":{"type":"boolean","description":"Включают ли суммы строк НДС (реквизит СуммаВключаетНДС); нет — у документа такого реквизита нет","uniqueKey":"oneOf.5.card.header.prices_include_vat","typeLabel":"boolean"},"comment":{"type":"string","description":"Комментарий документа в 1С (там же метка [AI P-…], по которой документ находится в 1С)","uniqueKey":"oneOf.5.card.header.comment","typeLabel":"string"},"payment_purpose":{"type":"string","description":"Назначение платежа — у банковских документов","uniqueKey":"oneOf.5.card.header.payment_purpose","typeLabel":"string"}},"required":["document_title","entity_set","date","total","vat","net","accounts"],"description":"Шапка документа: дата, стороны, итоги, счета","isRequired":true,"uniqueKey":"oneOf.5.card.header","typeLabel":"object"},"lines":{"type":"array","items":{"type":"object","properties":{"no":{"type":"integer","description":"Номер строки в карточке, с 1 (товары, затем услуги)","isRequired":true,"uniqueKey":"oneOf.5.card.lines.items.[INDEX].no","typeLabel":"integer"},"section":{"type":"string","enum":["goods","services"],"description":"goods — табличная часть «Товары»; services — «Услуги»","isRequired":true,"uniqueKey":"oneOf.5.card.lines.items.[INDEX].section","typeLabel":"enum\u003cstring>"},"item":{"type":"object","properties":{"ref":{"type":"string","description":"Ref_Key номенклатуры в 1С; пустая строка — номенклатура не указана","isRequired":true,"uniqueKey":"oneOf.5.card.lines.items.[INDEX].item.ref","typeLabel":"string"},"name":{"type":"string","description":"Название товара или услуги; не нашлась в 1С — «Номенклатура не найдена в 1С»","isRequired":true,"uniqueKey":"oneOf.5.card.lines.items.[INDEX].item.name","typeLabel":"string"}},"required":["ref","name"],"description":"Номенклатура строки (товар или услуга из справочника 1С)","isRequired":true,"uniqueKey":"oneOf.5.card.lines.items.[INDEX].item","typeLabel":"object"},"quantity":{"type":"number","description":"Количество (может быть дробным)","example":2,"isRequired":true,"uniqueKey":"oneOf.5.card.lines.items.[INDEX].quantity","typeLabel":"number"},"price":{"type":"object","description":"Цена за единицу","required":["amount","amount_tiyn","formatted"],"properties":{"amount":{"type":"number","description":"Тенге десятичным числом, до тиына: 1234.5 = 1 234,50 ₸. Для показа и графиков; считать деньги — по amount_tiyn","example":1234.5,"isRequired":true,"uniqueKey":"oneOf.5.card.lines.items.[INDEX].price.amount","typeLabel":"number"},"amount_tiyn":{"type":"integer","description":"То же целым числом тиынов (1 ₸ = 100 тиын): 1234.5 ₸ = 123450. Складывать и сравнивать суммы — по этому полю","example":123450,"isRequired":true,"uniqueKey":"oneOf.5.card.lines.items.[INDEX].price.amount_tiyn","typeLabel":"integer"},"formatted":{"type":"string","description":"Готовая строка для человека — показывать как есть: «1 234,50 ₸»","example":"1 234,50 ₸","isRequired":true,"uniqueKey":"oneOf.5.card.lines.items.[INDEX].price.formatted","typeLabel":"string"}},"isRequired":true,"uniqueKey":"oneOf.5.card.lines.items.[INDEX].price","typeLabel":"object"},"sum":{"type":"object","description":"Сумма строки, как её хранит 1С (с НДС или без — см. header.prices_include_vat)","required":["amount","amount_tiyn","formatted"],"properties":{"amount":{"type":"number","description":"Тенге десятичным числом, до тиына: 1234.5 = 1 234,50 ₸. Для показа и графиков; считать деньги — по amount_tiyn","example":1234.5,"isRequired":true,"uniqueKey":"oneOf.5.card.lines.items.[INDEX].sum.amount","typeLabel":"number"},"amount_tiyn":{"type":"integer","description":"То же целым числом тиынов (1 ₸ = 100 тиын): 1234.5 ₸ = 123450. Складывать и сравнивать суммы — по этому полю","example":123450,"isRequired":true,"uniqueKey":"oneOf.5.card.lines.items.[INDEX].sum.amount_tiyn","typeLabel":"integer"},"formatted":{"type":"string","description":"Готовая строка для человека — показывать как есть: «1 234,50 ₸»","example":"1 234,50 ₸","isRequired":true,"uniqueKey":"oneOf.5.card.lines.items.[INDEX].sum.formatted","typeLabel":"string"}},"isRequired":true,"uniqueKey":"oneOf.5.card.lines.items.[INDEX].sum","typeLabel":"object"},"vat_rate_title":{"type":"string","description":"Ставка НДС для показа: «12%», «Без НДС», «Ставка не определена»","isRequired":true,"uniqueKey":"oneOf.5.card.lines.items.[INDEX].vat_rate_title","typeLabel":"string"},"vat":{"type":"object","description":"НДС строки","required":["amount","amount_tiyn","formatted"],"properties":{"amount":{"type":"number","description":"Тенге десятичным числом, до тиына: 1234.5 = 1 234,50 ₸. Для показа и графиков; считать деньги — по amount_tiyn","example":1234.5,"isRequired":true,"uniqueKey":"oneOf.5.card.lines.items.[INDEX].vat.amount","typeLabel":"number"},"amount_tiyn":{"type":"integer","description":"То же целым числом тиынов (1 ₸ = 100 тиын): 1234.5 ₸ = 123450. Складывать и сравнивать суммы — по этому полю","example":123450,"isRequired":true,"uniqueKey":"oneOf.5.card.lines.items.[INDEX].vat.amount_tiyn","typeLabel":"integer"},"formatted":{"type":"string","description":"Готовая строка для человека — показывать как есть: «1 234,50 ₸»","example":"1 234,50 ₸","isRequired":true,"uniqueKey":"oneOf.5.card.lines.items.[INDEX].vat.formatted","typeLabel":"string"}},"isRequired":true,"uniqueKey":"oneOf.5.card.lines.items.[INDEX].vat","typeLabel":"object"},"total":{"type":"object","description":"Итог строки с НДС","required":["amount","amount_tiyn","formatted"],"properties":{"amount":{"type":"number","description":"Тенге десятичным числом, до тиына: 1234.5 = 1 234,50 ₸. Для показа и графиков; считать деньги — по amount_tiyn","example":1234.5,"isRequired":true,"uniqueKey":"oneOf.5.card.lines.items.[INDEX].total.amount","typeLabel":"number"},"amount_tiyn":{"type":"integer","description":"То же целым числом тиынов (1 ₸ = 100 тиын): 1234.5 ₸ = 123450. Складывать и сравнивать суммы — по этому полю","example":123450,"isRequired":true,"uniqueKey":"oneOf.5.card.lines.items.[INDEX].total.amount_tiyn","typeLabel":"integer"},"formatted":{"type":"string","description":"Готовая строка для человека — показывать как есть: «1 234,50 ₸»","example":"1 234,50 ₸","isRequired":true,"uniqueKey":"oneOf.5.card.lines.items.[INDEX].total.formatted","typeLabel":"string"}},"isRequired":true,"uniqueKey":"oneOf.5.card.lines.items.[INDEX].total","typeLabel":"object"},"accounts":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string","description":"Имя реквизита 1С без _Key (СчетУчетаБУ, СчетУчетаНДС…) — для отладки, людям показывать title","example":"СчетУчетаБУ","isRequired":true,"uniqueKey":"oneOf.5.card.lines.items.[INDEX].accounts.items.[INDEX].field","typeLabel":"string"},"title":{"type":"string","description":"Название реквизита по-русски для показа","example":"Счёт учёта (БУ)","isRequired":true,"uniqueKey":"oneOf.5.card.lines.items.[INDEX].accounts.items.[INDEX].title","typeLabel":"string"},"code":{"type":"string","description":"Код счёта по плану счетов 1С («1330», «6010»); «?» — ссылка на счёт есть, а код не прочитан (счёт удалён или 1С недоступна)","example":"1330","isRequired":true,"uniqueKey":"oneOf.5.card.lines.items.[INDEX].accounts.items.[INDEX].code","typeLabel":"string"},"ref":{"type":"string","description":"Ref_Key счёта в 1С (GUID). Показывать не нужно — это ссылка для перехода в 1С и для отладки","example":"00000000-0000-0000-0000-000000000000","isRequired":true,"uniqueKey":"oneOf.5.card.lines.items.[INDEX].accounts.items.[INDEX].ref","typeLabel":"string"}},"required":["field","title","code","ref"],"description":"Счёт бухгалтерского учёта, который документ подставит в реквизит 1С (БУ — бухгалтерский учёт, НУ — налоговый учёт)","uniqueKey":"oneOf.5.card.lines.items.[INDEX].accounts.items.[INDEX]","typeLabel":"object"},"description":"Счета строки: учёт, доходы, себестоимость, НДС","isRequired":true,"uniqueKey":"oneOf.5.card.lines.items.[INDEX].accounts","typeLabel":"object[]"},"description":{"type":"string","description":"Содержание услуги своими словами, если отличается от названия номенклатуры","uniqueKey":"oneOf.5.card.lines.items.[INDEX].description","typeLabel":"string"},"vat_rate":{"type":"number","description":"Ставка НДС в процентах (12, 0); нет — ставка не определена","example":12,"uniqueKey":"oneOf.5.card.lines.items.[INDEX].vat_rate","typeLabel":"number"}},"required":["no","section","item","quantity","price","sum","vat_rate_title","vat","total","accounts"],"description":"Строка товара или услуги в документе","uniqueKey":"oneOf.5.card.lines.items.[INDEX]","typeLabel":"object"},"description":"Строки товаров и услуг; пусто у платёжек, кассовых ордеров и справочников","isRequired":true,"uniqueKey":"oneOf.5.card.lines","typeLabel":"object[]"},"postings":{"type":"array","items":{"type":"object","properties":{"debit":{"type":"string","description":"Код счёта дебета (план счетов 1С)","example":"1210","isRequired":true,"uniqueKey":"oneOf.5.card.postings.items.[INDEX].debit","typeLabel":"string"},"credit":{"type":"string","description":"Код счёта кредита","example":"6010","isRequired":true,"uniqueKey":"oneOf.5.card.postings.items.[INDEX].credit","typeLabel":"string"},"amount":{"oneOf":[{"type":"object","description":"Сумма проводки; null — сумму посчитает сама 1С при проведении (себестоимость), тогда computed_by_1c = true: показать «считает 1С»","required":["amount","amount_tiyn","formatted"],"properties":{"amount":{"type":"number","description":"Тенге десятичным числом, до тиына: 1234.5 = 1 234,50 ₸. Для показа и графиков; считать деньги — по amount_tiyn","example":1234.5,"isRequired":true,"uniqueKey":"oneOf.5.card.postings.items.[INDEX].amount.oneOf.0.amount","typeLabel":"number"},"amount_tiyn":{"type":"integer","description":"То же целым числом тиынов (1 ₸ = 100 тиын): 1234.5 ₸ = 123450. Складывать и сравнивать суммы — по этому полю","example":123450,"isRequired":true,"uniqueKey":"oneOf.5.card.postings.items.[INDEX].amount.oneOf.0.amount_tiyn","typeLabel":"integer"},"formatted":{"type":"string","description":"Готовая строка для человека — показывать как есть: «1 234,50 ₸»","example":"1 234,50 ₸","isRequired":true,"uniqueKey":"oneOf.5.card.postings.items.[INDEX].amount.oneOf.0.formatted","typeLabel":"string"}},"isRequired":true,"uniqueKey":"oneOf.5.card.postings.items.[INDEX].amount.oneOf.0","typeLabel":"object"},{"type":"null","description":"Сумма проводки; null — сумму посчитает сама 1С при проведении (себестоимость), тогда computed_by_1c = true: показать «считает 1С»","isRequired":true,"uniqueKey":"oneOf.5.card.postings.items.[INDEX].amount.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"oneOf.5.card.postings.items.[INDEX].amount","typeLabel":"object | null"},"label":{"type":"string","description":"Что это за проводка простыми словами («выручка», «НДС к начислению»); у фактических проводок — «факт 1С»","isRequired":true,"uniqueKey":"oneOf.5.card.postings.items.[INDEX].label","typeLabel":"string"},"computed_by_1c":{"type":"boolean","description":"true — сумму считает 1С (amount = null)","isRequired":true,"uniqueKey":"oneOf.5.card.postings.items.[INDEX].computed_by_1c","typeLabel":"boolean"}},"required":["debit","credit","amount","label","computed_by_1c"],"description":"Проводка — запись «дебет счёта / кредит счёта на сумму» в бухгалтерском учёте. В карточке — ожидаемые проводки; в result и в ответе одобрения — фактические, прочитанные из 1С после проведения.","uniqueKey":"oneOf.5.card.postings.items.[INDEX]","typeLabel":"object"},"description":"Ожидаемые проводки — что получится в учёте после проведения","isRequired":true,"uniqueKey":"oneOf.5.card.postings","typeLabel":"object[]"},"warnings":{"type":"array","items":{"type":"string","uniqueKey":"oneOf.5.card.warnings.items.[INDEX]","typeLabel":"string"},"description":"Предупреждения — показать жёлтым; одобрению не мешают","isRequired":true,"uniqueKey":"oneOf.5.card.warnings","typeLabel":"string[]"},"blockers":{"type":"array","items":{"type":"string","uniqueKey":"oneOf.5.card.blockers.items.[INDEX]","typeLabel":"string"},"description":"Блокеры — показать красным: пока они есть, одобрить нельзя. Снимает их ответ человека в чате (ИИ пересоберёт предложение)","isRequired":true,"uniqueKey":"oneOf.5.card.blockers","typeLabel":"string[]"},"actions":{"type":"array","items":{"type":"object","properties":{"action":{"type":"string","enum":["approve","approve_draft","reject"],"description":"approve — «Записать и провести»; approve_draft — «Записать черновиком» (без проведения); reject — «Отклонить»","isRequired":true,"uniqueKey":"oneOf.5.card.actions.items.[INDEX].action","typeLabel":"enum\u003cstring>"},"label":{"type":"string","description":"Подпись кнопки — показывать как есть","isRequired":true,"uniqueKey":"oneOf.5.card.actions.items.[INDEX].label","typeLabel":"string"},"method":{"type":"string","enum":["POST"],"description":"HTTP-метод действия","isRequired":true,"uniqueKey":"oneOf.5.card.actions.items.[INDEX].method","typeLabel":"enum\u003cstring>"},"href":{"type":"string","description":"Адрес действия в API","isRequired":true,"uniqueKey":"oneOf.5.card.actions.items.[INDEX].href","typeLabel":"string"},"enabled":{"type":"boolean","description":"false — кнопку показать выключенной, причина — в disabled_reason","isRequired":true,"uniqueKey":"oneOf.5.card.actions.items.[INDEX].enabled","typeLabel":"boolean"},"effect":{"type":"string","description":"Что произойдёт по нажатию — текст для окна подтверждения","isRequired":true,"uniqueKey":"oneOf.5.card.actions.items.[INDEX].effect","typeLabel":"string"},"body":{"type":"object","additionalProperties":{"oneOf":[{}],"uniqueKey":"oneOf.5.card.actions.items.[INDEX].body.additionalProperties","typeLabel":"any"},"description":"Тело запроса действия. Значения в угловых скобках — подставить: idempotency_key — свой UUID (повторять тот же при повторе нажатия), reason — текст причины от человека","example":{"post":true,"idempotency_key":"\u003cuuid от клиента>"},"isRequired":true,"uniqueKey":"oneOf.5.card.actions.items.[INDEX].body","typeLabel":"object"},"disabled_reason":{"type":"string","description":"Почему кнопка выключена; есть только при enabled = false","uniqueKey":"oneOf.5.card.actions.items.[INDEX].disabled_reason","typeLabel":"string"}},"required":["action","label","method","href","enabled","effect","body"],"description":"Кнопка карточки: что отправить и чего ждать","uniqueKey":"oneOf.5.card.actions.items.[INDEX]","typeLabel":"object"},"description":"Кнопки карточки в нужном порядке: approve, approve_draft, reject","isRequired":true,"uniqueKey":"oneOf.5.card.actions","typeLabel":"object[]"},"history":{"type":"array","items":{"type":"object","properties":{"at":{"type":"string","format":"date-time","description":"Когда, ISO 8601 UTC","isRequired":true,"uniqueKey":"oneOf.5.card.history.items.[INDEX].at","typeLabel":"string\u003cdate-time>"},"status":{"type":"string","enum":["previewed","approved","rejected","committed","posted","verified","mismatch","failed"],"description":"Где предложение в жизненном цикле (подпись по-русски — в status_title рядом):\n- previewed — ждёт решения бухгалтера: показать кнопки «Записать» и «Отклонить»;\n- approved — одобрено, но запись в 1С не закончена (1С не ответила): «Записать» ещё раз безопасно — второй документ не создастся;\n- rejected — отклонено, в 1С ничего не записано; конечное;\n- committed — записано в 1С черновиком, без проведения (проводок нет);\n- posted — записано и проведено, проводки ещё не сверены;\n- verified — проведено, фактические проводки 1С совпали с ожидаемыми; конечное, всё хорошо;\n- mismatch — проведено, но проводки расходятся с ожидаемыми: показать предупреждение, причины — в result.mismatches;\n- failed — записать не удалось: причина — в последней записи history.","isRequired":true,"uniqueKey":"oneOf.5.card.history.items.[INDEX].status","typeLabel":"enum\u003cstring>"},"status_title":{"type":"string","description":"Статус по-русски","isRequired":true,"uniqueKey":"oneOf.5.card.history.items.[INDEX].status_title","typeLabel":"string"},"actor":{"type":"string","description":"Кто: usr_… — человек, key_… — ключ API, ai — ИИ, automation:… — автоматизация, system — сам сервис","isRequired":true,"uniqueKey":"oneOf.5.card.history.items.[INDEX].actor","typeLabel":"string"},"note":{"type":"string","description":"Пояснение: причина отклонения, комментарий к одобрению, текст ошибки записи","uniqueKey":"oneOf.5.card.history.items.[INDEX].note","typeLabel":"string"}},"required":["at","status","status_title","actor"],"description":"Шаг истории предложения","uniqueKey":"oneOf.5.card.history.items.[INDEX]","typeLabel":"object"},"description":"История статусов, от старых к новым","isRequired":true,"uniqueKey":"oneOf.5.card.history","typeLabel":"object[]"},"summary":{"type":"string","description":"Текстовое превью документа (для чата и логов). Интерфейс рисует карточку по полям выше","isRequired":true,"uniqueKey":"oneOf.5.card.summary","typeLabel":"string"},"counterparty":{"type":"object","properties":{"ref":{"type":"string","description":"Ref_Key контрагента или организации в 1С (GUID). Показывать не нужно — это ссылка для перехода в 1С и для отладки","example":"00000000-0000-0000-0000-000000000000","isRequired":true,"uniqueKey":"oneOf.5.card.counterparty.ref","typeLabel":"string"},"name":{"type":"string","description":"Название для показа. Не нашёлся в 1С — «Контрагент не найден в 1С»","example":"ТОО «Пример»","isRequired":true,"uniqueKey":"oneOf.5.card.counterparty.name","typeLabel":"string"},"bin":{"type":"string","description":"БИН/ИИН — 12 цифр (БИН у юрлица, ИИН у ИП и физлица). Нет — в 1С не заполнен","example":"000000000000","uniqueKey":"oneOf.5.card.counterparty.bin","typeLabel":"string"}},"required":["ref","name"],"description":"Контрагент документа; нет — у документа его нет (например, кассовый ордер без контрагента)","uniqueKey":"oneOf.5.card.counterparty","typeLabel":"object"},"document_number":{"type":"string","description":"Номер документа в 1С — есть, когда документ уже записан","example":"0000-000123","uniqueKey":"oneOf.5.card.document_number","typeLabel":"string"},"advance_offset":{"type":"object","properties":{"amount":{"type":"object","description":"Сколько аванса зачтётся","required":["amount","amount_tiyn","formatted"],"properties":{"amount":{"type":"number","description":"Тенге десятичным числом, до тиына: 1234.5 = 1 234,50 ₸. Для показа и графиков; считать деньги — по amount_tiyn","example":1234.5,"isRequired":true,"uniqueKey":"oneOf.5.card.advance_offset.amount.amount","typeLabel":"number"},"amount_tiyn":{"type":"integer","description":"То же целым числом тиынов (1 ₸ = 100 тиын): 1234.5 ₸ = 123450. Складывать и сравнивать суммы — по этому полю","example":123450,"isRequired":true,"uniqueKey":"oneOf.5.card.advance_offset.amount.amount_tiyn","typeLabel":"integer"},"formatted":{"type":"string","description":"Готовая строка для человека — показывать как есть: «1 234,50 ₸»","example":"1 234,50 ₸","isRequired":true,"uniqueKey":"oneOf.5.card.advance_offset.amount.formatted","typeLabel":"string"}},"isRequired":true,"uniqueKey":"oneOf.5.card.advance_offset.amount","typeLabel":"object"},"to_pay":{"type":"object","description":"Сколько останется к оплате после зачёта","required":["amount","amount_tiyn","formatted"],"properties":{"amount":{"type":"number","description":"Тенге десятичным числом, до тиына: 1234.5 = 1 234,50 ₸. Для показа и графиков; считать деньги — по amount_tiyn","example":1234.5,"isRequired":true,"uniqueKey":"oneOf.5.card.advance_offset.to_pay.amount","typeLabel":"number"},"amount_tiyn":{"type":"integer","description":"То же целым числом тиынов (1 ₸ = 100 тиын): 1234.5 ₸ = 123450. Складывать и сравнивать суммы — по этому полю","example":123450,"isRequired":true,"uniqueKey":"oneOf.5.card.advance_offset.to_pay.amount_tiyn","typeLabel":"integer"},"formatted":{"type":"string","description":"Готовая строка для человека — показывать как есть: «1 234,50 ₸»","example":"1 234,50 ₸","isRequired":true,"uniqueKey":"oneOf.5.card.advance_offset.to_pay.formatted","typeLabel":"string"}},"isRequired":true,"uniqueKey":"oneOf.5.card.advance_offset.to_pay","typeLabel":"object"},"debit":{"type":"string","description":"Счёт дебета проводки зачёта","isRequired":true,"uniqueKey":"oneOf.5.card.advance_offset.debit","typeLabel":"string"},"credit":{"type":"string","description":"Счёт кредита проводки зачёта","isRequired":true,"uniqueKey":"oneOf.5.card.advance_offset.credit","typeLabel":"string"},"note":{"type":"string","description":"Готовая фраза для человека: «Зачтётся аванс …, к оплате останется …»","isRequired":true,"uniqueKey":"oneOf.5.card.advance_offset.note","typeLabel":"string"}},"required":["amount","to_pay","debit","credit","note"],"description":"Есть, если при проведении 1С зачтёт аванс контрагента","uniqueKey":"oneOf.5.card.advance_offset","typeLabel":"object"},"result":{"type":"object","properties":{"number":{"type":"string","description":"Номер документа (или код карточки справочника) в 1С","isRequired":true,"uniqueKey":"oneOf.5.card.result.number","typeLabel":"string"},"ref":{"type":"string","description":"Ref_Key записанного документа в 1С (GUID). Показывать не нужно — это ссылка для перехода в 1С и для отладки","example":"00000000-0000-0000-0000-000000000000","isRequired":true,"uniqueKey":"oneOf.5.card.result.ref","typeLabel":"string"},"postings":{"type":"array","items":{"type":"object","properties":{"debit":{"type":"string","description":"Код счёта дебета (план счетов 1С)","example":"1210","isRequired":true,"uniqueKey":"oneOf.5.card.result.postings.items.[INDEX].debit","typeLabel":"string"},"credit":{"type":"string","description":"Код счёта кредита","example":"6010","isRequired":true,"uniqueKey":"oneOf.5.card.result.postings.items.[INDEX].credit","typeLabel":"string"},"amount":{"oneOf":[{"type":"object","description":"Сумма проводки; null — сумму посчитает сама 1С при проведении (себестоимость), тогда computed_by_1c = true: показать «считает 1С»","required":["amount","amount_tiyn","formatted"],"properties":{"amount":{"type":"number","description":"Тенге десятичным числом, до тиына: 1234.5 = 1 234,50 ₸. Для показа и графиков; считать деньги — по amount_tiyn","example":1234.5,"isRequired":true,"uniqueKey":"oneOf.5.card.result.postings.items.[INDEX].amount.oneOf.0.amount","typeLabel":"number"},"amount_tiyn":{"type":"integer","description":"То же целым числом тиынов (1 ₸ = 100 тиын): 1234.5 ₸ = 123450. Складывать и сравнивать суммы — по этому полю","example":123450,"isRequired":true,"uniqueKey":"oneOf.5.card.result.postings.items.[INDEX].amount.oneOf.0.amount_tiyn","typeLabel":"integer"},"formatted":{"type":"string","description":"Готовая строка для человека — показывать как есть: «1 234,50 ₸»","example":"1 234,50 ₸","isRequired":true,"uniqueKey":"oneOf.5.card.result.postings.items.[INDEX].amount.oneOf.0.formatted","typeLabel":"string"}},"isRequired":true,"uniqueKey":"oneOf.5.card.result.postings.items.[INDEX].amount.oneOf.0","typeLabel":"object"},{"type":"null","description":"Сумма проводки; null — сумму посчитает сама 1С при проведении (себестоимость), тогда computed_by_1c = true: показать «считает 1С»","isRequired":true,"uniqueKey":"oneOf.5.card.result.postings.items.[INDEX].amount.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"oneOf.5.card.result.postings.items.[INDEX].amount","typeLabel":"object | null"},"label":{"type":"string","description":"Что это за проводка простыми словами («выручка», «НДС к начислению»); у фактических проводок — «факт 1С»","isRequired":true,"uniqueKey":"oneOf.5.card.result.postings.items.[INDEX].label","typeLabel":"string"},"computed_by_1c":{"type":"boolean","description":"true — сумму считает 1С (amount = null)","isRequired":true,"uniqueKey":"oneOf.5.card.result.postings.items.[INDEX].computed_by_1c","typeLabel":"boolean"}},"required":["debit","credit","amount","label","computed_by_1c"],"description":"Проводка — запись «дебет счёта / кредит счёта на сумму» в бухгалтерском учёте. В карточке — ожидаемые проводки; в result и в ответе одобрения — фактические, прочитанные из 1С после проведения.","uniqueKey":"oneOf.5.card.result.postings.items.[INDEX]","typeLabel":"object"},"description":"Фактические проводки 1С после проведения; пусто у черновика и справочников","isRequired":true,"uniqueKey":"oneOf.5.card.result.postings","typeLabel":"object[]"},"mismatches":{"type":"array","items":{"type":"string","uniqueKey":"oneOf.5.card.result.mismatches.items.[INDEX]","typeLabel":"string"},"description":"Чем фактические проводки расходятся с ожидаемыми — по строке на расхождение; пусто — совпали","isRequired":true,"uniqueKey":"oneOf.5.card.result.mismatches","typeLabel":"string[]"}},"required":["number","ref","postings","mismatches"],"description":"Есть, когда документ уже записан в 1С","uniqueKey":"oneOf.5.card.result","typeLabel":"object"}},"isRequired":true,"uniqueKey":"oneOf.5.card","typeLabel":"object"}},"uniqueKey":"oneOf.5","typeLabel":"object"},{"type":"object","description":"Одно событие потока: `id: \u003cномер>`, `event: \u003ctype>`, `data: \u003cJSON этого вида>`. Ещё бывает `event: ping` с пустым data — пульс, его пропускайте. Переподключение — GET …/chat/{id}/events с Last-Event-ID.","required":["type","source","title"],"properties":{"type":{"type":"string","enum":["citation"],"description":"Вид события: citation","isRequired":true,"uniqueKey":"oneOf.6.type","typeLabel":"enum\u003cstring>"},"source":{"type":"string","description":"Откуда: код нормы или статьи базы знаний","isRequired":true,"uniqueKey":"oneOf.6.source","typeLabel":"string"},"title":{"type":"string","description":"Название источника","isRequired":true,"uniqueKey":"oneOf.6.title","typeLabel":"string"},"url":{"type":"string","description":"Ссылка на текст источника","uniqueKey":"oneOf.6.url","typeLabel":"string"},"edition":{"type":"string","description":"Редакция нормы","uniqueKey":"oneOf.6.edition","typeLabel":"string"}},"uniqueKey":"oneOf.6","typeLabel":"object"},{"type":"object","description":"Одно событие потока: `id: \u003cномер>`, `event: \u003ctype>`, `data: \u003cJSON этого вида>`. Ещё бывает `event: ping` с пустым data — пульс, его пропускайте. Переподключение — GET …/chat/{id}/events с Last-Event-ID.","required":["type","text"],"properties":{"type":{"type":"string","enum":["question"],"description":"Вид события: question","isRequired":true,"uniqueKey":"oneOf.7.type","typeLabel":"enum\u003cstring>"},"text":{"type":"string","description":"Вопрос","isRequired":true,"uniqueKey":"oneOf.7.text","typeLabel":"string"},"proposal_id":{"type":"string","description":"Номер предложения, к которому вопрос","example":"P-000123","uniqueKey":"oneOf.7.proposal_id","typeLabel":"string"}},"uniqueKey":"oneOf.7","typeLabel":"object"},{"type":"object","description":"Одно событие потока: `id: \u003cномер>`, `event: \u003ctype>`, `data: \u003cJSON этого вида>`. Ещё бывает `event: ping` с пустым data — пульс, его пропускайте. Переподключение — GET …/chat/{id}/events с Last-Event-ID.","required":["type","choice_id","questions"],"properties":{"type":{"type":"string","enum":["choice"],"description":"Вид события: choice","isRequired":true,"uniqueKey":"oneOf.8.type","typeLabel":"enum\u003cstring>"},"choice_id":{"type":"string","description":"id вопроса — прислать в POST …/answer","isRequired":true,"uniqueKey":"oneOf.8.choice_id","typeLabel":"string"},"questions":{"type":"array","items":{"type":"object","properties":{"question":{"type":"string","description":"Вопрос целиком","example":"По какому договору провести оплату?","isRequired":true,"uniqueKey":"oneOf.8.questions.items.[INDEX].question","typeLabel":"string"},"header":{"type":"string","description":"Короткая подпись вопроса, до ~12 символов (для вкладки или чипа)","example":"Договор","isRequired":true,"uniqueKey":"oneOf.8.questions.items.[INDEX].header","typeLabel":"string"},"options":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string","description":"Текст варианта — его же отправлять в selected","isRequired":true,"uniqueKey":"oneOf.8.questions.items.[INDEX].options.items.[INDEX].label","typeLabel":"string"},"description":{"type":"string","description":"Пояснение варианта мелким текстом","isRequired":true,"uniqueKey":"oneOf.8.questions.items.[INDEX].options.items.[INDEX].description","typeLabel":"string"},"ref":{"type":"string","description":"Короткая ссылка на объект 1С (cp_…, it_…), если вариант — этот объект; показывать не нужно","uniqueKey":"oneOf.8.questions.items.[INDEX].options.items.[INDEX].ref","typeLabel":"string"}},"required":["label","description"],"description":"Вариант ответа","uniqueKey":"oneOf.8.questions.items.[INDEX].options.items.[INDEX]","typeLabel":"object"},"description":"Варианты. «Свой ответ» есть всегда и сюда не входит — показать поле ввода отдельно","isRequired":true,"uniqueKey":"oneOf.8.questions.items.[INDEX].options","typeLabel":"object[]"},"multi_select":{"type":"boolean","description":"true — можно выбрать несколько вариантов (чекбоксы); false — один (радиокнопки)","isRequired":true,"uniqueKey":"oneOf.8.questions.items.[INDEX].multi_select","typeLabel":"boolean"}},"required":["question","header","options","multi_select"],"description":"Уточняющий вопрос ИИ с вариантами. Вариант «свой ответ» есть всегда и в options не входит","uniqueKey":"oneOf.8.questions.items.[INDEX]","typeLabel":"object"},"description":"Вопросы — ответить на все сразу","isRequired":true,"uniqueKey":"oneOf.8.questions","typeLabel":"object[]"}},"uniqueKey":"oneOf.8","typeLabel":"object"},{"type":"object","description":"Одно событие потока: `id: \u003cномер>`, `event: \u003ctype>`, `data: \u003cJSON этого вида>`. Ещё бывает `event: ping` с пустым data — пульс, его пропускайте. Переподключение — GET …/chat/{id}/events с Last-Event-ID.","required":["type","error","request_id"],"properties":{"type":{"type":"string","enum":["error"],"description":"Вид события: error","isRequired":true,"uniqueKey":"oneOf.9.type","typeLabel":"enum\u003cstring>"},"error":{"type":"object","properties":{"type":{"type":"string","description":"Вид ошибки, как у REST: limit_error, unavailable_error, conflict_error, invalid_request_error, api_error","isRequired":true,"uniqueKey":"oneOf.9.error.type","typeLabel":"string"},"code":{"type":"string","enum":["budget","rate_limited","api","refusal","context_overflow","aborted","max_iterations","max_tokens","empty_answer","unexpected","history","internal","stream_failed","batch_failed","batch_abandoned"],"description":"Причина:\n- `budget` — кончился лимит (дня или разговора)\n- `rate_limited` — сервис модели перегружен — повторите\n- `api` — сбой сервиса модели\n- `refusal` — модель отказалась отвечать\n- `context_overflow` — разговор слишком длинный — начните новый\n- `aborted` — ход остановили\n- `max_iterations` — ИИ не уложился в предел шагов — попросите по частям\n- `max_tokens` — ответ слишком длинный и оборвался — попросите короче или по частям\n- `empty_answer` — модель закончила ход без ответа — повторите вопрос\n- `unexpected` — ход закончился неожиданно — повторите вопрос\n- `history` — ответ не сохранился в истории\n- `internal` — внутренняя ошибка\n- `stream_failed` — поток ответа оборвался на нашей стороне\n- `batch_failed` — пачка прервана ошибкой\n- `batch_abandoned` — пачка брошена (процесс перезапущен)","isRequired":true,"uniqueKey":"oneOf.9.error.code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Текст для человека — показать в ленте ответа","isRequired":true,"uniqueKey":"oneOf.9.error.message","typeLabel":"string"},"can_request_more":{"type":"boolean","enum":[true],"description":"Только у code = budget: лимит можно попросить поднять у админа","uniqueKey":"oneOf.9.error.can_request_more","typeLabel":"enum\u003cboolean>"},"limit_kind":{"type":"string","enum":["day","dialog"],"description":"Только у code = budget: day — дневной лимит, dialog — лимит разговора","uniqueKey":"oneOf.9.error.limit_kind","typeLabel":"enum\u003cstring>"}},"required":["type","code","message"],"additionalProperties":{"oneOf":[{}],"uniqueKey":"oneOf.9.error.additionalProperties","typeLabel":"any"},"description":"Ошибка хода","isRequired":true,"uniqueKey":"oneOf.9.error","typeLabel":"object"},"request_id":{"oneOf":[{"type":"string","description":"Номер запроса для поддержки","isRequired":true,"uniqueKey":"oneOf.9.request_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"Номер запроса для поддержки","isRequired":true,"uniqueKey":"oneOf.9.request_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"oneOf.9.request_id","typeLabel":"string | null"}},"uniqueKey":"oneOf.9","typeLabel":"object"},{"type":"object","description":"Одно событие потока: `id: \u003cномер>`, `event: \u003ctype>`, `data: \u003cJSON этого вида>`. Ещё бывает `event: ping` с пустым data — пульс, его пропускайте. Переподключение — GET …/chat/{id}/events с Last-Event-ID.","required":["type","stage","completed","total"],"properties":{"type":{"type":"string","enum":["batch"],"description":"Вид события: batch","isRequired":true,"uniqueKey":"oneOf.10.type","typeLabel":"enum\u003cstring>"},"stage":{"type":"string","enum":["resolve","warmup","run"],"description":"Этап: resolve — разбор источника; warmup — подготовка (справочники 1С); run — строки идут","isRequired":true,"uniqueKey":"oneOf.10.stage","typeLabel":"enum\u003cstring>"},"completed":{"type":"number","description":"Сколько строк готово","isRequired":true,"uniqueKey":"oneOf.10.completed","typeLabel":"number"},"total":{"type":"number","description":"Сколько строк всего","isRequired":true,"uniqueKey":"oneOf.10.total","typeLabel":"number"},"title":{"type":"string","description":"Последняя строка: дата, контрагент, сумма","uniqueKey":"oneOf.10.title","typeLabel":"string"},"outcome":{"type":"string","enum":["created","skipped","failed","unknown","manual"],"description":"Исход последней строки: created — предложение создано; skipped — уже было; manual — решает человек; failed — ошибка; unknown — исход неизвестен","uniqueKey":"oneOf.10.outcome","typeLabel":"enum\u003cstring>"},"note":{"type":"string","description":"Пояснение к строке","uniqueKey":"oneOf.10.note","typeLabel":"string"}},"uniqueKey":"oneOf.10","typeLabel":"object"},{"type":"object","description":"Одно событие потока: `id: \u003cномер>`, `event: \u003ctype>`, `data: \u003cJSON этого вида>`. Ещё бывает `event: ping` с пустым data — пульс, его пропускайте. Переподключение — GET …/chat/{id}/events с Last-Event-ID.","required":["type","job_id","report"],"properties":{"type":{"type":"string","enum":["batch_report"],"description":"Вид события: batch_report","isRequired":true,"uniqueKey":"oneOf.11.type","typeLabel":"enum\u003cstring>"},"job_id":{"type":"string","description":"id задания (bat_…)","isRequired":true,"uniqueKey":"oneOf.11.job_id","typeLabel":"string"},"report":{"type":"object","description":"Отчёт задания пачки","required":["total","created","skipped","failed","unknown","manual","duplicates","pending","rows","min_concurrency","stopped"],"properties":{"total":{"type":"integer","description":"Строк в источнике","isRequired":true,"uniqueKey":"oneOf.11.report.total","typeLabel":"integer"},"created":{"type":"integer","description":"Создано предложений","isRequired":true,"uniqueKey":"oneOf.11.report.created","typeLabel":"integer"},"skipped":{"type":"integer","description":"Пропущено (уже было)","isRequired":true,"uniqueKey":"oneOf.11.report.skipped","typeLabel":"integer"},"failed":{"type":"integer","description":"С ошибкой","isRequired":true,"uniqueKey":"oneOf.11.report.failed","typeLabel":"integer"},"unknown":{"type":"integer","description":"С неизвестным исходом (1С не ответила)","isRequired":true,"uniqueKey":"oneOf.11.report.unknown","typeLabel":"integer"},"manual":{"type":"integer","description":"Ждут решения человека","isRequired":true,"uniqueKey":"oneOf.11.report.manual","typeLabel":"integer"},"duplicates":{"type":"integer","description":"Повторы строки в одном источнике (тот же ключ, исход один). Одинаковые строки выписки без номера документа — разные платежи: у второй и дальше свой ключ, сюда они не входят","isRequired":true,"uniqueKey":"oneOf.11.report.duplicates","typeLabel":"integer"},"pending":{"type":"integer","description":"Не взятые в работу после остановки; повторный запуск возьмёт их","isRequired":true,"uniqueKey":"oneOf.11.report.pending","typeLabel":"integer"},"rows":{"type":"array","items":{"type":"object","properties":{"key":{"type":"string","description":"Ключ строки (он же метка документа): повтор задания эту строку второй раз не возьмёт","isRequired":true,"uniqueKey":"oneOf.11.report.rows.items.[INDEX].key","typeLabel":"string"},"title":{"type":"string","description":"Строка для человека: дата, контрагент, сумма","example":"10.07.2026 ТОО «Пример» 1 200 000 ₸","isRequired":true,"uniqueKey":"oneOf.11.report.rows.items.[INDEX].title","typeLabel":"string"},"status":{"type":"string","enum":["created","skipped","failed","unknown","manual"],"description":"created — предложение создано; skipped — уже было (повтор строки или документ уже есть); manual — строку решает человек (reason); failed — ошибка; unknown — исход неизвестен (1С не ответила)","isRequired":true,"uniqueKey":"oneOf.11.report.rows.items.[INDEX].status","typeLabel":"enum\u003cstring>"},"proposal_id":{"type":"string","description":"Номер предложения строки (P-…), если оно есть","uniqueKey":"oneOf.11.report.rows.items.[INDEX].proposal_id","typeLabel":"string"},"document_ref":{"type":"string","description":"Ref_Key найденного или созданного документа 1С","uniqueKey":"oneOf.11.report.rows.items.[INDEX].document_ref","typeLabel":"string"},"reason":{"type":"string","description":"Почему manual, failed или unknown — текст для бухгалтера","uniqueKey":"oneOf.11.report.rows.items.[INDEX].reason","typeLabel":"string"},"warnings":{"type":"array","items":{"type":"string","uniqueKey":"oneOf.11.report.rows.items.[INDEX].warnings.items.[INDEX]","typeLabel":"string"},"description":"Предупреждения по строке","uniqueKey":"oneOf.11.report.rows.items.[INDEX].warnings","typeLabel":"string[]"},"blockers":{"type":"array","items":{"type":"string","uniqueKey":"oneOf.11.report.rows.items.[INDEX].blockers.items.[INDEX]","typeLabel":"string"},"description":"Блокеры по строке","uniqueKey":"oneOf.11.report.rows.items.[INDEX].blockers","typeLabel":"string[]"},"question":{"type":"object","properties":{"id":{"type":"string","description":"id вопроса","isRequired":true,"uniqueKey":"oneOf.11.report.rows.items.[INDEX].question.id","typeLabel":"string"},"text":{"type":"string","description":"Вопрос бухгалтеру","isRequired":true,"uniqueKey":"oneOf.11.report.rows.items.[INDEX].question.text","typeLabel":"string"},"options":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string","description":"Вариант ответа","isRequired":true,"uniqueKey":"oneOf.11.report.rows.items.[INDEX].question.options.items.[INDEX].label","typeLabel":"string"},"description":{"type":"string","description":"Пояснение варианта","isRequired":true,"uniqueKey":"oneOf.11.report.rows.items.[INDEX].question.options.items.[INDEX].description","typeLabel":"string"}},"required":["label","description"],"uniqueKey":"oneOf.11.report.rows.items.[INDEX].question.options.items.[INDEX]","typeLabel":"object"},"description":"Варианты ответа","isRequired":true,"uniqueKey":"oneOf.11.report.rows.items.[INDEX].question.options","typeLabel":"object[]"}},"required":["id","text","options"],"description":"Вопрос по строке выписки: ответ в чате станет правилом, и следующий прогон разнесёт такую строку сам","uniqueKey":"oneOf.11.report.rows.items.[INDEX].question","typeLabel":"object"}},"required":["key","title","status"],"description":"Исход одной строки задания","uniqueKey":"oneOf.11.report.rows.items.[INDEX]","typeLabel":"object"},"description":"Исход по каждой строке","isRequired":true,"uniqueKey":"oneOf.11.report.rows","typeLabel":"object[]"},"min_concurrency":{"type":"integer","description":"Служебное: сколько сеансов 1С пачка держала","isRequired":true,"uniqueKey":"oneOf.11.report.min_concurrency","typeLabel":"integer"},"stopped":{"type":"boolean","description":"true — задание остановили до конца","isRequired":true,"uniqueKey":"oneOf.11.report.stopped","typeLabel":"boolean"},"gateway":{"type":"object","properties":{"asked":{"type":"integer","description":"Сколько обращений к 1С просили","isRequired":true,"uniqueKey":"oneOf.11.report.gateway.asked","typeLabel":"integer"},"passed":{"type":"integer","description":"Сколько пропустил ограничитель","isRequired":true,"uniqueKey":"oneOf.11.report.gateway.passed","typeLabel":"integer"}},"required":["asked","passed"],"description":"Служебное: нагрузка на 1С","uniqueKey":"oneOf.11.report.gateway","typeLabel":"object"},"approval":{"type":"object","description":"Только у approve_batch: итог одобрения в той же форме, что ответ POST …/proposals/approve-batch","required":["ok","message","requested","approved","excluded","failed","limit","counts","results"],"properties":{"ok":{"type":"boolean","description":"true — всё, что не снято галочкой, одобрено (или уже было записано); false — есть отказы, смотрите results","isRequired":true,"uniqueKey":"oneOf.11.report.approval.ok","typeLabel":"boolean"},"message":{"type":"string","description":"Итог одной фразой для человека","example":"Одобрено 12 из 14, исключено 1, с блокерами 1.","isRequired":true,"uniqueKey":"oneOf.11.report.approval.message","typeLabel":"string"},"requested":{"type":"number","description":"Сколько предложений в пачке (со снятыми галочкой)","isRequired":true,"uniqueKey":"oneOf.11.report.approval.requested","typeLabel":"number"},"approved":{"type":"number","description":"Одобрено, включая уже записанные раньше","isRequired":true,"uniqueKey":"oneOf.11.report.approval.approved","typeLabel":"number"},"excluded":{"type":"number","description":"Снято галочкой","isRequired":true,"uniqueKey":"oneOf.11.report.approval.excluded","typeLabel":"number"},"failed":{"type":"number","description":"Не одобрено по любой причине","isRequired":true,"uniqueKey":"oneOf.11.report.approval.failed","typeLabel":"number"},"limit":{"type":"number","description":"Предел пачки (2000)","isRequired":true,"uniqueKey":"oneOf.11.report.approval.limit","typeLabel":"number"},"counts":{"type":"object","additionalProperties":{"type":"number","uniqueKey":"oneOf.11.report.approval.counts.additionalProperties","typeLabel":"number"},"description":"Сколько предложений с каждым исходом (ключ — outcome из results)","example":{"approved":12,"excluded":1,"blocked":1},"isRequired":true,"uniqueKey":"oneOf.11.report.approval.counts","typeLabel":"object"},"results":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Номер предложения внутри компании (P-000123): по нему открывают карточку GET …/proposals/{id} и одобряют POST …/proposals/{id}/approve","example":"P-000123","isRequired":true,"uniqueKey":"oneOf.11.report.approval.results.items.[INDEX].id","typeLabel":"string"},"outcome":{"type":"string","enum":["approved","forbidden","already_written","not_found","blocked","wrong_status","read_only","unavailable","failed","policy_blocked","job_running","excluded","not_attempted"],"description":"Исход: approved — одобрено и записано; already_written — уже было записано (второй документ не создан); excluded — снято галочкой; forbidden — нет права; policy_blocked — не пускает политика; blocked — есть блокеры; not_found — нет такого предложения; wrong_status — решение уже принято; job_running — из задания, которое ещё идёт; read_only — база только для чтения; unavailable — 1С недоступна; failed — запись не удалась; not_attempted — пачку остановили раньше","isRequired":true,"uniqueKey":"oneOf.11.report.approval.results.items.[INDEX].outcome","typeLabel":"enum\u003cstring>"},"title":{"type":"string","description":"Исход по-русски для показа","example":"Одобрено и записано","isRequired":true,"uniqueKey":"oneOf.11.report.approval.results.items.[INDEX].title","typeLabel":"string"},"message":{"type":"string","description":"Подробности для человека","isRequired":true,"uniqueKey":"oneOf.11.report.approval.results.items.[INDEX].message","typeLabel":"string"},"error":{"type":"string","description":"Код отказа (как error.code в ApproveError), если не удалось","uniqueKey":"oneOf.11.report.approval.results.items.[INDEX].error","typeLabel":"string"},"retry_after":{"type":"integer","description":"При write_unknown сразу после обрыва: через сколько секунд повтор запишет заново, если документа по метке так и не будет; в серию «1С не ответила» не считается","uniqueKey":"oneOf.11.report.approval.results.items.[INDEX].retry_after","typeLabel":"integer"},"document_number":{"type":"string","description":"Номер документа в 1С, если записан","uniqueKey":"oneOf.11.report.approval.results.items.[INDEX].document_number","typeLabel":"string"},"mismatches":{"type":"array","items":{"type":"string","uniqueKey":"oneOf.11.report.approval.results.items.[INDEX].mismatches.items.[INDEX]","typeLabel":"string"},"description":"Расхождения проводок, если есть","uniqueKey":"oneOf.11.report.approval.results.items.[INDEX].mismatches","typeLabel":"string[]"}},"required":["id","outcome","title","message"],"description":"Исход одного предложения пачки","uniqueKey":"oneOf.11.report.approval.results.items.[INDEX]","typeLabel":"object"},"description":"Исход по каждому предложению, в порядке пачки","isRequired":true,"uniqueKey":"oneOf.11.report.approval.results","typeLabel":"object[]"},"batch_id":{"type":"string","description":"Номер задания, если одобряли по batch_id","uniqueKey":"oneOf.11.report.approval.batch_id","typeLabel":"string"},"unknown_excluded":{"type":"array","items":{"type":"string","uniqueKey":"oneOf.11.report.approval.unknown_excluded.items.[INDEX]","typeLabel":"string"},"description":"Номера из exclude, которых нет в пачке","uniqueKey":"oneOf.11.report.approval.unknown_excluded","typeLabel":"string[]"},"stopped":{"type":"object","properties":{"reason":{"type":"string","description":"Почему остановлена — текст для человека","isRequired":true,"uniqueKey":"oneOf.11.report.approval.stopped.reason","typeLabel":"string"},"remaining":{"type":"number","description":"Сколько предложений не тронуто и ждут решения","isRequired":true,"uniqueKey":"oneOf.11.report.approval.stopped.remaining","typeLabel":"number"}},"required":["reason","remaining"],"description":"Пачка остановлена раньше конца (1С трижды не ответила, база только для чтения, отозвали право, нажали «Остановить»)","uniqueKey":"oneOf.11.report.approval.stopped","typeLabel":"object"}},"uniqueKey":"oneOf.11.report.approval","typeLabel":"object"}},"additionalProperties":{"oneOf":[{}],"uniqueKey":"oneOf.11.report.additionalProperties","typeLabel":"any"},"isRequired":true,"uniqueKey":"oneOf.11.report","typeLabel":"object"}},"uniqueKey":"oneOf.11","typeLabel":"object"},{"type":"object","description":"Одно событие потока: `id: \u003cномер>`, `event: \u003ctype>`, `data: \u003cJSON этого вида>`. Ещё бывает `event: ping` с пустым data — пульс, его пропускайте. Переподключение — GET …/chat/{id}/events с Last-Event-ID.","required":["type"],"properties":{"type":{"type":"string","enum":["done"],"description":"Вид события: done","isRequired":true,"uniqueKey":"oneOf.12.type","typeLabel":"enum\u003cstring>"},"usage":{"type":"object","properties":{"input_tokens":{"type":"integer","description":"Токенов на входе модели (токен — кусок слова; для статистики)","isRequired":true,"uniqueKey":"oneOf.12.usage.input_tokens","typeLabel":"integer"},"output_tokens":{"type":"integer","description":"Токенов в ответе модели","isRequired":true,"uniqueKey":"oneOf.12.usage.output_tokens","typeLabel":"integer"},"cache_read_tokens":{"type":"integer","description":"Токенов, прочитанных из кэша модели (дешевле обычных)","isRequired":true,"uniqueKey":"oneOf.12.usage.cache_read_tokens","typeLabel":"integer"},"cache_write_tokens":{"type":"integer","description":"Токенов, записанных в кэш модели (дороже обычных): входят в стоимость","isRequired":true,"uniqueKey":"oneOf.12.usage.cache_write_tokens","typeLabel":"integer"}},"required":["input_tokens","output_tokens","cache_read_tokens","cache_write_tokens"],"description":"Расход модели за ход в токенах. Только ключу API (платформа разработчиков): кабинет токенов хода не получает — вместе с ценами моделей они дают стоимость ответа","uniqueKey":"oneOf.12.usage","typeLabel":"object"},"cost_tiyn":{"type":"integer","description":"Сколько ход стоил, в тиынах (1 ₸ = 100 тиын). Только в потоке для ключа API (платформа разработчиков); кабинету стоимость ответа не отдаётся","uniqueKey":"oneOf.12.cost_tiyn","typeLabel":"integer"},"stop_reason":{"type":"string","description":"Чем кончился ход: end_turn — ответ готов; awaiting_user — ждёт ответа на вопрос choice; budget — кончился лимит; aborted — остановили; refusal — модель отказалась; context_overflow — разговор слишком длинный; max_iterations — предел шагов; elsewhere — ход шёл на другом сервере и закончился, ответ и его итог — в GET …/chat/{id}","uniqueKey":"oneOf.12.stop_reason","typeLabel":"string"},"answer":{"type":"string","description":"Итоговый ответ хода целиком (Markdown): заменить им собранный из text","uniqueKey":"oneOf.12.answer","typeLabel":"string"},"choice_id":{"type":"string","description":"При awaiting_user — id открытого вопроса","uniqueKey":"oneOf.12.choice_id","typeLabel":"string"}},"uniqueKey":"oneOf.12","typeLabel":"object"}],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"type":"text","delta":"\u003cstring>","step":123}}},"exampleType":"generated"},"application/json":{"schema":{"type":"object","properties":{"dialog_id":{"type":"string","description":"id разговора (обычно UUID): по нему продолжают разговор (dialog_id), открывают его GET …/chat/{id} и стирают","example":"6f1c2b9e-0000-4000-8000-000000000000","isRequired":true,"uniqueKey":"dialog_id","typeLabel":"string"},"turn_no":{"type":"number","description":"Номер хода в разговоре (как заголовок X-Turn-No)","isRequired":true,"uniqueKey":"turn_no","typeLabel":"number"},"answer":{"type":"string","description":"Итоговый ответ текстом (Markdown), без промежуточных шагов","isRequired":true,"uniqueKey":"answer","typeLabel":"string"},"proposals":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Номер предложения (P-000123): карточка — GET …/proposals/{id}","example":"P-000123","isRequired":true,"uniqueKey":"proposals.items.[INDEX].id","typeLabel":"string"},"card":{"type":"object","description":"Полная карточка предложения: шапка, строки, проводки, блокеры, кнопки и история","required":["source","intent","header","lines","postings","warnings","blockers","actions","history","summary","id","kind","kind_title","status","status_title","created_at","level","level_title","title","total","vat","line_count","warning_count","blocker_count","approval","dialog_id","href"],"properties":{"id":{"type":"string","description":"Номер предложения внутри компании (P-000123): по нему открывают карточку GET …/proposals/{id} и одобряют POST …/proposals/{id}/approve","example":"P-000123","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.id","typeLabel":"string"},"kind":{"type":"string","enum":["sale","purchase","bank_receipt","bank_payment","counterparty","contract","revert","inventory_writeoff","cash_order_in","cash_order_out","advance_report"],"description":"Что ИИ предлагает записать в 1С (подпись по-русски — в kind_title):\n- sale — реализация товаров и услуг (продажа покупателю);\n- purchase — поступление товаров и услуг (покупка у поставщика);\n- bank_receipt — входящее платёжное поручение (деньги пришли на счёт);\n- bank_payment — исходящее платёжное поручение (оплата со счёта);\n- counterparty — новый контрагент (карточка справочника, не документ);\n- contract — новый договор с контрагентом (карточка справочника);\n- revert — отмена ранее записанного документа (распровести и пометить на удаление);\n- inventory_writeoff — списание товаров;\n- cash_order_in — приходный кассовый ордер (наличные в кассу);\n- cash_order_out — расходный кассовый ордер (наличные из кассы);\n- advance_report — авансовый отчёт подотчётного лица.","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.kind","typeLabel":"enum\u003cstring>"},"kind_title":{"type":"string","description":"Вид документа по-русски для показа","example":"Реализация товаров и услуг","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.kind_title","typeLabel":"string"},"status":{"type":"string","enum":["previewed","approved","rejected","committed","posted","verified","mismatch","failed"],"description":"Где предложение в жизненном цикле (подпись по-русски — в status_title рядом):\n- previewed — ждёт решения бухгалтера: показать кнопки «Записать» и «Отклонить»;\n- approved — одобрено, но запись в 1С не закончена (1С не ответила): «Записать» ещё раз безопасно — второй документ не создастся;\n- rejected — отклонено, в 1С ничего не записано; конечное;\n- committed — записано в 1С черновиком, без проведения (проводок нет);\n- posted — записано и проведено, проводки ещё не сверены;\n- verified — проведено, фактические проводки 1С совпали с ожидаемыми; конечное, всё хорошо;\n- mismatch — проведено, но проводки расходятся с ожидаемыми: показать предупреждение, причины — в result.mismatches;\n- failed — записать не удалось: причина — в последней записи history.","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.status","typeLabel":"enum\u003cstring>"},"status_title":{"type":"string","description":"Статус по-русски для показа (бейдж)","example":"Ждёт решения","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.status_title","typeLabel":"string"},"created_at":{"type":"string","format":"date-time","description":"Когда ИИ подготовил предложение, ISO 8601 UTC","example":"2026-07-10T09:15:00.000Z","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.created_at","typeLabel":"string\u003cdate-time>"},"level":{"type":"string","enum":["L0","L1","L2","L3","L4","HUMAN_ONLY","FORBIDDEN"],"description":"Уровень самостоятельности ИИ для этого вида операции по политике компании (подпись — в level_title):\n- L0 — только чтение; L1 — ИИ предлагает, одобряет человек (обычный случай);\n- L2 — ИИ сам записывает черновик; L3 — ИИ проводит сам, с возможностью отмены; L4 — ИИ проводит сам;\n- HUMAN_ONLY — только человек и только по одному: пачкой не одобряется (исход policy_blocked);\n- FORBIDDEN — запрещено политикой: одобрить нельзя (403, error.code = policy_blocked).","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.level","typeLabel":"enum\u003cstring>"},"level_title":{"type":"string","description":"Уровень самостоятельности по-русски для показа","example":"Предложение, одобряет человек","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.level_title","typeLabel":"string"},"title":{"type":"string","description":"Заголовок строки очереди: вид документа, дата и контрагент","example":"Реализация товаров и услуг от 2026-07-10 · ТОО «Пример»","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.title","typeLabel":"string"},"total":{"type":"object","properties":{"amount":{"type":"number","description":"Тенге десятичным числом, до тиына: 1234.5 = 1 234,50 ₸. Для показа и графиков; считать деньги — по amount_tiyn","example":1234.5,"isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.total.amount","typeLabel":"number"},"amount_tiyn":{"type":"integer","description":"То же целым числом тиынов (1 ₸ = 100 тиын): 1234.5 ₸ = 123450. Складывать и сравнивать суммы — по этому полю","example":123450,"isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.total.amount_tiyn","typeLabel":"integer"},"formatted":{"type":"string","description":"Готовая строка для человека — показывать как есть: «1 234,50 ₸»","example":"1 234,50 ₸","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.total.formatted","typeLabel":"string"}},"required":["amount","amount_tiyn","formatted"],"description":"Сумма документа (как в 1С: с НДС или без — см. header.prices_include_vat в карточке)","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.total","typeLabel":"object"},"vat":{"type":"object","description":"НДС по строкам документа (налог на добавленную стоимость); 0 — без НДС","required":["amount","amount_tiyn","formatted"],"properties":{"amount":{"type":"number","description":"Тенге десятичным числом, до тиына: 1234.5 = 1 234,50 ₸. Для показа и графиков; считать деньги — по amount_tiyn","example":1234.5,"isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.vat.amount","typeLabel":"number"},"amount_tiyn":{"type":"integer","description":"То же целым числом тиынов (1 ₸ = 100 тиын): 1234.5 ₸ = 123450. Складывать и сравнивать суммы — по этому полю","example":123450,"isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.vat.amount_tiyn","typeLabel":"integer"},"formatted":{"type":"string","description":"Готовая строка для человека — показывать как есть: «1 234,50 ₸»","example":"1 234,50 ₸","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.vat.formatted","typeLabel":"string"}},"isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.vat","typeLabel":"object"},"line_count":{"type":"integer","description":"Сколько строк товаров и услуг в документе; 0 у платёжек и справочников","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.line_count","typeLabel":"integer"},"warning_count":{"type":"integer","description":"Сколько предупреждений: показать жёлтый значок, одобрению не мешают","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.warning_count","typeLabel":"integer"},"blocker_count":{"type":"integer","description":"Сколько блокеров: больше 0 — одобрить нельзя, нужен ответ человека в чате","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.blocker_count","typeLabel":"integer"},"approval":{"type":"object","properties":{"allowed":{"type":"boolean","description":"Можно ли сейчас нажать «Записать»: false — кнопку выключить и показать reason рядом. Сервер всё равно проверит заново","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.approval.allowed","typeLabel":"boolean"},"requires_right":{"type":"string","enum":["proposals.approve"],"description":"Какое право нужно, чтобы одобрять (всегда proposals.approve)","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.approval.requires_right","typeLabel":"enum\u003cstring>"},"blocked_by_blockers":{"type":"boolean","description":"true — есть блокеры (blockers): пока они есть, одобрение невозможно. Предупреждения (warnings) одобрению не мешают","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.approval.blocked_by_blockers","typeLabel":"boolean"},"reason":{"type":"string","description":"Почему одобрить нельзя — показать рядом с выключенной кнопкой. Есть только при allowed = false","uniqueKey":"proposals.items.[INDEX].card.approval.reason","typeLabel":"string"}},"required":["allowed","requires_right","blocked_by_blockers"],"description":"Можно ли текущему пользователю одобрить предложение — то же правило, что применит ручка одобрения","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.approval","typeLabel":"object"},"dialog_id":{"oneOf":[{"type":"string","description":"Разговор чата, в котором ИИ подготовил предложение: «Открыть разговор» — GET …/chat/{dialog_id} (если он ваш). null — не из чата (пачка, автоматизация, MCP)","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.dialog_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"Разговор чата, в котором ИИ подготовил предложение: «Открыть разговор» — GET …/chat/{dialog_id} (если он ваш). null — не из чата (пачка, автоматизация, MCP)","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.dialog_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.dialog_id","typeLabel":"string | null"},"href":{"type":"string","description":"Адрес карточки в API: GET по нему отдаёт ProposalCard","example":"/v1/companies/co_01jx0000000000000000000000/proposals/P-000123","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.href","typeLabel":"string"},"source":{"type":"object","properties":{"channel":{"type":"string","enum":["mcp","pipeline","cli","web","api"],"description":"Откуда пришло: web — чат в приложении; api — по ключу API; mcp — из ИИ-клиента через MCP; pipeline — пачка (выписка, ЭСФ, автоматизация); cli — служебная командная строка","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.source.channel","typeLabel":"enum\u003cstring>"},"note":{"type":"string","description":"Уточнение источника; у пачек — метка «batch:\u003cномер задания>»","uniqueKey":"proposals.items.[INDEX].card.source.note","typeLabel":"string"}},"required":["channel"],"description":"Откуда пришло предложение","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.source","typeLabel":"object"},"intent":{"type":"object","additionalProperties":{"oneOf":[{}],"uniqueKey":"proposals.items.[INDEX].card.intent.additionalProperties","typeLabel":"any"},"description":"Намерение ИИ в предметных терминах (ключи snake_case) — для аудита и отладки; интерфейсу показывать не нужно","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.intent","typeLabel":"object"},"header":{"type":"object","properties":{"document_title":{"type":"string","description":"Вид документа по-русски (заголовок карточки)","example":"Реализация товаров и услуг","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.header.document_title","typeLabel":"string"},"entity_set":{"type":"string","description":"Набор OData 1С, куда ляжет запись (Document_… — документ, Catalog_… — справочник); для отладки","example":"Document_РеализацияТоваровУслуг","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.header.entity_set","typeLabel":"string"},"date":{"type":"string","description":"Дата документа ГГГГ-ММ-ДД — календарная дата, без часового пояса: показывать как есть, не переводить","example":"2026-07-10","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.header.date","typeLabel":"string"},"total":{"type":"object","description":"Сумма документа, как её хранит 1С","required":["amount","amount_tiyn","formatted"],"properties":{"amount":{"type":"number","description":"Тенге десятичным числом, до тиына: 1234.5 = 1 234,50 ₸. Для показа и графиков; считать деньги — по amount_tiyn","example":1234.5,"isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.header.total.amount","typeLabel":"number"},"amount_tiyn":{"type":"integer","description":"То же целым числом тиынов (1 ₸ = 100 тиын): 1234.5 ₸ = 123450. Складывать и сравнивать суммы — по этому полю","example":123450,"isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.header.total.amount_tiyn","typeLabel":"integer"},"formatted":{"type":"string","description":"Готовая строка для человека — показывать как есть: «1 234,50 ₸»","example":"1 234,50 ₸","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.header.total.formatted","typeLabel":"string"}},"isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.header.total","typeLabel":"object"},"vat":{"type":"object","description":"НДС по строкам документа","required":["amount","amount_tiyn","formatted"],"properties":{"amount":{"type":"number","description":"Тенге десятичным числом, до тиына: 1234.5 = 1 234,50 ₸. Для показа и графиков; считать деньги — по amount_tiyn","example":1234.5,"isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.header.vat.amount","typeLabel":"number"},"amount_tiyn":{"type":"integer","description":"То же целым числом тиынов (1 ₸ = 100 тиын): 1234.5 ₸ = 123450. Складывать и сравнивать суммы — по этому полю","example":123450,"isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.header.vat.amount_tiyn","typeLabel":"integer"},"formatted":{"type":"string","description":"Готовая строка для человека — показывать как есть: «1 234,50 ₸»","example":"1 234,50 ₸","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.header.vat.formatted","typeLabel":"string"}},"isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.header.vat","typeLabel":"object"},"net":{"type":"object","description":"Сумма без НДС: total − vat, когда цены включают НДС; иначе равна total","required":["amount","amount_tiyn","formatted"],"properties":{"amount":{"type":"number","description":"Тенге десятичным числом, до тиына: 1234.5 = 1 234,50 ₸. Для показа и графиков; считать деньги — по amount_tiyn","example":1234.5,"isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.header.net.amount","typeLabel":"number"},"amount_tiyn":{"type":"integer","description":"То же целым числом тиынов (1 ₸ = 100 тиын): 1234.5 ₸ = 123450. Складывать и сравнивать суммы — по этому полю","example":123450,"isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.header.net.amount_tiyn","typeLabel":"integer"},"formatted":{"type":"string","description":"Готовая строка для человека — показывать как есть: «1 234,50 ₸»","example":"1 234,50 ₸","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.header.net.formatted","typeLabel":"string"}},"isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.header.net","typeLabel":"object"},"accounts":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string","description":"Имя реквизита 1С без _Key (СчетУчетаБУ, СчетУчетаНДС…) — для отладки, людям показывать title","example":"СчетУчетаБУ","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.header.accounts.items.[INDEX].field","typeLabel":"string"},"title":{"type":"string","description":"Название реквизита по-русски для показа","example":"Счёт учёта (БУ)","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.header.accounts.items.[INDEX].title","typeLabel":"string"},"code":{"type":"string","description":"Код счёта по плану счетов 1С («1330», «6010»); «?» — ссылка на счёт есть, а код не прочитан (счёт удалён или 1С недоступна)","example":"1330","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.header.accounts.items.[INDEX].code","typeLabel":"string"},"ref":{"type":"string","description":"Ref_Key счёта в 1С (GUID). Показывать не нужно — это ссылка для перехода в 1С и для отладки","example":"00000000-0000-0000-0000-000000000000","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.header.accounts.items.[INDEX].ref","typeLabel":"string"}},"required":["field","title","code","ref"],"description":"Счёт бухгалтерского учёта, который документ подставит в реквизит 1С (БУ — бухгалтерский учёт, НУ — налоговый учёт)","uniqueKey":"proposals.items.[INDEX].card.header.accounts.items.[INDEX]","typeLabel":"object"},"description":"Счета из шапки документа: расчёты с контрагентом, авансы, банковский счёт","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.header.accounts","typeLabel":"object[]"},"organization":{"type":"object","description":"Своя организация (от чьего имени документ); нет — 1С не ответила","required":["ref","name"],"properties":{"ref":{"type":"string","description":"Ref_Key контрагента или организации в 1С (GUID). Показывать не нужно — это ссылка для перехода в 1С и для отладки","example":"00000000-0000-0000-0000-000000000000","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.header.organization.ref","typeLabel":"string"},"name":{"type":"string","description":"Название для показа. Не нашёлся в 1С — «Контрагент не найден в 1С»","example":"ТОО «Пример»","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.header.organization.name","typeLabel":"string"},"bin":{"type":"string","description":"БИН/ИИН — 12 цифр (БИН у юрлица, ИИН у ИП и физлица). Нет — в 1С не заполнен","example":"000000000000","uniqueKey":"proposals.items.[INDEX].card.header.organization.bin","typeLabel":"string"}},"uniqueKey":"proposals.items.[INDEX].card.header.organization","typeLabel":"object"},"counterparty":{"type":"object","description":"Контрагент документа, если есть","required":["ref","name"],"properties":{"ref":{"type":"string","description":"Ref_Key контрагента или организации в 1С (GUID). Показывать не нужно — это ссылка для перехода в 1С и для отладки","example":"00000000-0000-0000-0000-000000000000","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.header.counterparty.ref","typeLabel":"string"},"name":{"type":"string","description":"Название для показа. Не нашёлся в 1С — «Контрагент не найден в 1С»","example":"ТОО «Пример»","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.header.counterparty.name","typeLabel":"string"},"bin":{"type":"string","description":"БИН/ИИН — 12 цифр (БИН у юрлица, ИИН у ИП и физлица). Нет — в 1С не заполнен","example":"000000000000","uniqueKey":"proposals.items.[INDEX].card.header.counterparty.bin","typeLabel":"string"}},"uniqueKey":"proposals.items.[INDEX].card.header.counterparty","typeLabel":"object"},"contract":{"type":"object","properties":{"ref":{"type":"string","description":"Ref_Key договора в 1С (GUID). Показывать не нужно — это ссылка для перехода в 1С и для отладки","example":"00000000-0000-0000-0000-000000000000","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.header.contract.ref","typeLabel":"string"},"name":{"type":"string","description":"Название договора; не нашёлся в 1С — «Договор не найден в 1С»","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.header.contract.name","typeLabel":"string"},"number":{"type":"string","description":"Номер договора, если заполнен в 1С","uniqueKey":"proposals.items.[INDEX].card.header.contract.number","typeLabel":"string"},"date":{"type":"string","description":"Дата договора как записана в 1С (обычно ГГГГ-ММ-ДД)","uniqueKey":"proposals.items.[INDEX].card.header.contract.date","typeLabel":"string"},"kind":{"type":"string","description":"Вид договора из 1С: СПокупателем, СПоставщиком, Прочее…","uniqueKey":"proposals.items.[INDEX].card.header.contract.kind","typeLabel":"string"}},"required":["ref","name"],"description":"Договор контрагента, по которому идёт документ","uniqueKey":"proposals.items.[INDEX].card.header.contract","typeLabel":"object"},"prices_include_vat":{"type":"boolean","description":"Включают ли суммы строк НДС (реквизит СуммаВключаетНДС); нет — у документа такого реквизита нет","uniqueKey":"proposals.items.[INDEX].card.header.prices_include_vat","typeLabel":"boolean"},"comment":{"type":"string","description":"Комментарий документа в 1С (там же метка [AI P-…], по которой документ находится в 1С)","uniqueKey":"proposals.items.[INDEX].card.header.comment","typeLabel":"string"},"payment_purpose":{"type":"string","description":"Назначение платежа — у банковских документов","uniqueKey":"proposals.items.[INDEX].card.header.payment_purpose","typeLabel":"string"}},"required":["document_title","entity_set","date","total","vat","net","accounts"],"description":"Шапка документа: дата, стороны, итоги, счета","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.header","typeLabel":"object"},"lines":{"type":"array","items":{"type":"object","properties":{"no":{"type":"integer","description":"Номер строки в карточке, с 1 (товары, затем услуги)","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.lines.items.[INDEX].no","typeLabel":"integer"},"section":{"type":"string","enum":["goods","services"],"description":"goods — табличная часть «Товары»; services — «Услуги»","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.lines.items.[INDEX].section","typeLabel":"enum\u003cstring>"},"item":{"type":"object","properties":{"ref":{"type":"string","description":"Ref_Key номенклатуры в 1С; пустая строка — номенклатура не указана","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.lines.items.[INDEX].item.ref","typeLabel":"string"},"name":{"type":"string","description":"Название товара или услуги; не нашлась в 1С — «Номенклатура не найдена в 1С»","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.lines.items.[INDEX].item.name","typeLabel":"string"}},"required":["ref","name"],"description":"Номенклатура строки (товар или услуга из справочника 1С)","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.lines.items.[INDEX].item","typeLabel":"object"},"quantity":{"type":"number","description":"Количество (может быть дробным)","example":2,"isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.lines.items.[INDEX].quantity","typeLabel":"number"},"price":{"type":"object","description":"Цена за единицу","required":["amount","amount_tiyn","formatted"],"properties":{"amount":{"type":"number","description":"Тенге десятичным числом, до тиына: 1234.5 = 1 234,50 ₸. Для показа и графиков; считать деньги — по amount_tiyn","example":1234.5,"isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.lines.items.[INDEX].price.amount","typeLabel":"number"},"amount_tiyn":{"type":"integer","description":"То же целым числом тиынов (1 ₸ = 100 тиын): 1234.5 ₸ = 123450. Складывать и сравнивать суммы — по этому полю","example":123450,"isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.lines.items.[INDEX].price.amount_tiyn","typeLabel":"integer"},"formatted":{"type":"string","description":"Готовая строка для человека — показывать как есть: «1 234,50 ₸»","example":"1 234,50 ₸","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.lines.items.[INDEX].price.formatted","typeLabel":"string"}},"isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.lines.items.[INDEX].price","typeLabel":"object"},"sum":{"type":"object","description":"Сумма строки, как её хранит 1С (с НДС или без — см. header.prices_include_vat)","required":["amount","amount_tiyn","formatted"],"properties":{"amount":{"type":"number","description":"Тенге десятичным числом, до тиына: 1234.5 = 1 234,50 ₸. Для показа и графиков; считать деньги — по amount_tiyn","example":1234.5,"isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.lines.items.[INDEX].sum.amount","typeLabel":"number"},"amount_tiyn":{"type":"integer","description":"То же целым числом тиынов (1 ₸ = 100 тиын): 1234.5 ₸ = 123450. Складывать и сравнивать суммы — по этому полю","example":123450,"isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.lines.items.[INDEX].sum.amount_tiyn","typeLabel":"integer"},"formatted":{"type":"string","description":"Готовая строка для человека — показывать как есть: «1 234,50 ₸»","example":"1 234,50 ₸","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.lines.items.[INDEX].sum.formatted","typeLabel":"string"}},"isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.lines.items.[INDEX].sum","typeLabel":"object"},"vat_rate_title":{"type":"string","description":"Ставка НДС для показа: «12%», «Без НДС», «Ставка не определена»","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.lines.items.[INDEX].vat_rate_title","typeLabel":"string"},"vat":{"type":"object","description":"НДС строки","required":["amount","amount_tiyn","formatted"],"properties":{"amount":{"type":"number","description":"Тенге десятичным числом, до тиына: 1234.5 = 1 234,50 ₸. Для показа и графиков; считать деньги — по amount_tiyn","example":1234.5,"isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.lines.items.[INDEX].vat.amount","typeLabel":"number"},"amount_tiyn":{"type":"integer","description":"То же целым числом тиынов (1 ₸ = 100 тиын): 1234.5 ₸ = 123450. Складывать и сравнивать суммы — по этому полю","example":123450,"isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.lines.items.[INDEX].vat.amount_tiyn","typeLabel":"integer"},"formatted":{"type":"string","description":"Готовая строка для человека — показывать как есть: «1 234,50 ₸»","example":"1 234,50 ₸","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.lines.items.[INDEX].vat.formatted","typeLabel":"string"}},"isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.lines.items.[INDEX].vat","typeLabel":"object"},"total":{"type":"object","description":"Итог строки с НДС","required":["amount","amount_tiyn","formatted"],"properties":{"amount":{"type":"number","description":"Тенге десятичным числом, до тиына: 1234.5 = 1 234,50 ₸. Для показа и графиков; считать деньги — по amount_tiyn","example":1234.5,"isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.lines.items.[INDEX].total.amount","typeLabel":"number"},"amount_tiyn":{"type":"integer","description":"То же целым числом тиынов (1 ₸ = 100 тиын): 1234.5 ₸ = 123450. Складывать и сравнивать суммы — по этому полю","example":123450,"isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.lines.items.[INDEX].total.amount_tiyn","typeLabel":"integer"},"formatted":{"type":"string","description":"Готовая строка для человека — показывать как есть: «1 234,50 ₸»","example":"1 234,50 ₸","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.lines.items.[INDEX].total.formatted","typeLabel":"string"}},"isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.lines.items.[INDEX].total","typeLabel":"object"},"accounts":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string","description":"Имя реквизита 1С без _Key (СчетУчетаБУ, СчетУчетаНДС…) — для отладки, людям показывать title","example":"СчетУчетаБУ","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.lines.items.[INDEX].accounts.items.[INDEX].field","typeLabel":"string"},"title":{"type":"string","description":"Название реквизита по-русски для показа","example":"Счёт учёта (БУ)","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.lines.items.[INDEX].accounts.items.[INDEX].title","typeLabel":"string"},"code":{"type":"string","description":"Код счёта по плану счетов 1С («1330», «6010»); «?» — ссылка на счёт есть, а код не прочитан (счёт удалён или 1С недоступна)","example":"1330","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.lines.items.[INDEX].accounts.items.[INDEX].code","typeLabel":"string"},"ref":{"type":"string","description":"Ref_Key счёта в 1С (GUID). Показывать не нужно — это ссылка для перехода в 1С и для отладки","example":"00000000-0000-0000-0000-000000000000","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.lines.items.[INDEX].accounts.items.[INDEX].ref","typeLabel":"string"}},"required":["field","title","code","ref"],"description":"Счёт бухгалтерского учёта, который документ подставит в реквизит 1С (БУ — бухгалтерский учёт, НУ — налоговый учёт)","uniqueKey":"proposals.items.[INDEX].card.lines.items.[INDEX].accounts.items.[INDEX]","typeLabel":"object"},"description":"Счета строки: учёт, доходы, себестоимость, НДС","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.lines.items.[INDEX].accounts","typeLabel":"object[]"},"description":{"type":"string","description":"Содержание услуги своими словами, если отличается от названия номенклатуры","uniqueKey":"proposals.items.[INDEX].card.lines.items.[INDEX].description","typeLabel":"string"},"vat_rate":{"type":"number","description":"Ставка НДС в процентах (12, 0); нет — ставка не определена","example":12,"uniqueKey":"proposals.items.[INDEX].card.lines.items.[INDEX].vat_rate","typeLabel":"number"}},"required":["no","section","item","quantity","price","sum","vat_rate_title","vat","total","accounts"],"description":"Строка товара или услуги в документе","uniqueKey":"proposals.items.[INDEX].card.lines.items.[INDEX]","typeLabel":"object"},"description":"Строки товаров и услуг; пусто у платёжек, кассовых ордеров и справочников","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.lines","typeLabel":"object[]"},"postings":{"type":"array","items":{"type":"object","properties":{"debit":{"type":"string","description":"Код счёта дебета (план счетов 1С)","example":"1210","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.postings.items.[INDEX].debit","typeLabel":"string"},"credit":{"type":"string","description":"Код счёта кредита","example":"6010","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.postings.items.[INDEX].credit","typeLabel":"string"},"amount":{"oneOf":[{"type":"object","description":"Сумма проводки; null — сумму посчитает сама 1С при проведении (себестоимость), тогда computed_by_1c = true: показать «считает 1С»","required":["amount","amount_tiyn","formatted"],"properties":{"amount":{"type":"number","description":"Тенге десятичным числом, до тиына: 1234.5 = 1 234,50 ₸. Для показа и графиков; считать деньги — по amount_tiyn","example":1234.5,"isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.postings.items.[INDEX].amount.oneOf.0.amount","typeLabel":"number"},"amount_tiyn":{"type":"integer","description":"То же целым числом тиынов (1 ₸ = 100 тиын): 1234.5 ₸ = 123450. Складывать и сравнивать суммы — по этому полю","example":123450,"isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.postings.items.[INDEX].amount.oneOf.0.amount_tiyn","typeLabel":"integer"},"formatted":{"type":"string","description":"Готовая строка для человека — показывать как есть: «1 234,50 ₸»","example":"1 234,50 ₸","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.postings.items.[INDEX].amount.oneOf.0.formatted","typeLabel":"string"}},"isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.postings.items.[INDEX].amount.oneOf.0","typeLabel":"object"},{"type":"null","description":"Сумма проводки; null — сумму посчитает сама 1С при проведении (себестоимость), тогда computed_by_1c = true: показать «считает 1С»","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.postings.items.[INDEX].amount.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.postings.items.[INDEX].amount","typeLabel":"object | null"},"label":{"type":"string","description":"Что это за проводка простыми словами («выручка», «НДС к начислению»); у фактических проводок — «факт 1С»","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.postings.items.[INDEX].label","typeLabel":"string"},"computed_by_1c":{"type":"boolean","description":"true — сумму считает 1С (amount = null)","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.postings.items.[INDEX].computed_by_1c","typeLabel":"boolean"}},"required":["debit","credit","amount","label","computed_by_1c"],"description":"Проводка — запись «дебет счёта / кредит счёта на сумму» в бухгалтерском учёте. В карточке — ожидаемые проводки; в result и в ответе одобрения — фактические, прочитанные из 1С после проведения.","uniqueKey":"proposals.items.[INDEX].card.postings.items.[INDEX]","typeLabel":"object"},"description":"Ожидаемые проводки — что получится в учёте после проведения","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.postings","typeLabel":"object[]"},"warnings":{"type":"array","items":{"type":"string","uniqueKey":"proposals.items.[INDEX].card.warnings.items.[INDEX]","typeLabel":"string"},"description":"Предупреждения — показать жёлтым; одобрению не мешают","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.warnings","typeLabel":"string[]"},"blockers":{"type":"array","items":{"type":"string","uniqueKey":"proposals.items.[INDEX].card.blockers.items.[INDEX]","typeLabel":"string"},"description":"Блокеры — показать красным: пока они есть, одобрить нельзя. Снимает их ответ человека в чате (ИИ пересоберёт предложение)","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.blockers","typeLabel":"string[]"},"actions":{"type":"array","items":{"type":"object","properties":{"action":{"type":"string","enum":["approve","approve_draft","reject"],"description":"approve — «Записать и провести»; approve_draft — «Записать черновиком» (без проведения); reject — «Отклонить»","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.actions.items.[INDEX].action","typeLabel":"enum\u003cstring>"},"label":{"type":"string","description":"Подпись кнопки — показывать как есть","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.actions.items.[INDEX].label","typeLabel":"string"},"method":{"type":"string","enum":["POST"],"description":"HTTP-метод действия","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.actions.items.[INDEX].method","typeLabel":"enum\u003cstring>"},"href":{"type":"string","description":"Адрес действия в API","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.actions.items.[INDEX].href","typeLabel":"string"},"enabled":{"type":"boolean","description":"false — кнопку показать выключенной, причина — в disabled_reason","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.actions.items.[INDEX].enabled","typeLabel":"boolean"},"effect":{"type":"string","description":"Что произойдёт по нажатию — текст для окна подтверждения","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.actions.items.[INDEX].effect","typeLabel":"string"},"body":{"type":"object","additionalProperties":{"oneOf":[{}],"uniqueKey":"proposals.items.[INDEX].card.actions.items.[INDEX].body.additionalProperties","typeLabel":"any"},"description":"Тело запроса действия. Значения в угловых скобках — подставить: idempotency_key — свой UUID (повторять тот же при повторе нажатия), reason — текст причины от человека","example":{"post":true,"idempotency_key":"\u003cuuid от клиента>"},"isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.actions.items.[INDEX].body","typeLabel":"object"},"disabled_reason":{"type":"string","description":"Почему кнопка выключена; есть только при enabled = false","uniqueKey":"proposals.items.[INDEX].card.actions.items.[INDEX].disabled_reason","typeLabel":"string"}},"required":["action","label","method","href","enabled","effect","body"],"description":"Кнопка карточки: что отправить и чего ждать","uniqueKey":"proposals.items.[INDEX].card.actions.items.[INDEX]","typeLabel":"object"},"description":"Кнопки карточки в нужном порядке: approve, approve_draft, reject","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.actions","typeLabel":"object[]"},"history":{"type":"array","items":{"type":"object","properties":{"at":{"type":"string","format":"date-time","description":"Когда, ISO 8601 UTC","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.history.items.[INDEX].at","typeLabel":"string\u003cdate-time>"},"status":{"type":"string","enum":["previewed","approved","rejected","committed","posted","verified","mismatch","failed"],"description":"Где предложение в жизненном цикле (подпись по-русски — в status_title рядом):\n- previewed — ждёт решения бухгалтера: показать кнопки «Записать» и «Отклонить»;\n- approved — одобрено, но запись в 1С не закончена (1С не ответила): «Записать» ещё раз безопасно — второй документ не создастся;\n- rejected — отклонено, в 1С ничего не записано; конечное;\n- committed — записано в 1С черновиком, без проведения (проводок нет);\n- posted — записано и проведено, проводки ещё не сверены;\n- verified — проведено, фактические проводки 1С совпали с ожидаемыми; конечное, всё хорошо;\n- mismatch — проведено, но проводки расходятся с ожидаемыми: показать предупреждение, причины — в result.mismatches;\n- failed — записать не удалось: причина — в последней записи history.","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.history.items.[INDEX].status","typeLabel":"enum\u003cstring>"},"status_title":{"type":"string","description":"Статус по-русски","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.history.items.[INDEX].status_title","typeLabel":"string"},"actor":{"type":"string","description":"Кто: usr_… — человек, key_… — ключ API, ai — ИИ, automation:… — автоматизация, system — сам сервис","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.history.items.[INDEX].actor","typeLabel":"string"},"note":{"type":"string","description":"Пояснение: причина отклонения, комментарий к одобрению, текст ошибки записи","uniqueKey":"proposals.items.[INDEX].card.history.items.[INDEX].note","typeLabel":"string"}},"required":["at","status","status_title","actor"],"description":"Шаг истории предложения","uniqueKey":"proposals.items.[INDEX].card.history.items.[INDEX]","typeLabel":"object"},"description":"История статусов, от старых к новым","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.history","typeLabel":"object[]"},"summary":{"type":"string","description":"Текстовое превью документа (для чата и логов). Интерфейс рисует карточку по полям выше","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.summary","typeLabel":"string"},"counterparty":{"type":"object","properties":{"ref":{"type":"string","description":"Ref_Key контрагента или организации в 1С (GUID). Показывать не нужно — это ссылка для перехода в 1С и для отладки","example":"00000000-0000-0000-0000-000000000000","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.counterparty.ref","typeLabel":"string"},"name":{"type":"string","description":"Название для показа. Не нашёлся в 1С — «Контрагент не найден в 1С»","example":"ТОО «Пример»","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.counterparty.name","typeLabel":"string"},"bin":{"type":"string","description":"БИН/ИИН — 12 цифр (БИН у юрлица, ИИН у ИП и физлица). Нет — в 1С не заполнен","example":"000000000000","uniqueKey":"proposals.items.[INDEX].card.counterparty.bin","typeLabel":"string"}},"required":["ref","name"],"description":"Контрагент документа; нет — у документа его нет (например, кассовый ордер без контрагента)","uniqueKey":"proposals.items.[INDEX].card.counterparty","typeLabel":"object"},"document_number":{"type":"string","description":"Номер документа в 1С — есть, когда документ уже записан","example":"0000-000123","uniqueKey":"proposals.items.[INDEX].card.document_number","typeLabel":"string"},"advance_offset":{"type":"object","properties":{"amount":{"type":"object","description":"Сколько аванса зачтётся","required":["amount","amount_tiyn","formatted"],"properties":{"amount":{"type":"number","description":"Тенге десятичным числом, до тиына: 1234.5 = 1 234,50 ₸. Для показа и графиков; считать деньги — по amount_tiyn","example":1234.5,"isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.advance_offset.amount.amount","typeLabel":"number"},"amount_tiyn":{"type":"integer","description":"То же целым числом тиынов (1 ₸ = 100 тиын): 1234.5 ₸ = 123450. Складывать и сравнивать суммы — по этому полю","example":123450,"isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.advance_offset.amount.amount_tiyn","typeLabel":"integer"},"formatted":{"type":"string","description":"Готовая строка для человека — показывать как есть: «1 234,50 ₸»","example":"1 234,50 ₸","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.advance_offset.amount.formatted","typeLabel":"string"}},"isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.advance_offset.amount","typeLabel":"object"},"to_pay":{"type":"object","description":"Сколько останется к оплате после зачёта","required":["amount","amount_tiyn","formatted"],"properties":{"amount":{"type":"number","description":"Тенге десятичным числом, до тиына: 1234.5 = 1 234,50 ₸. Для показа и графиков; считать деньги — по amount_tiyn","example":1234.5,"isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.advance_offset.to_pay.amount","typeLabel":"number"},"amount_tiyn":{"type":"integer","description":"То же целым числом тиынов (1 ₸ = 100 тиын): 1234.5 ₸ = 123450. Складывать и сравнивать суммы — по этому полю","example":123450,"isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.advance_offset.to_pay.amount_tiyn","typeLabel":"integer"},"formatted":{"type":"string","description":"Готовая строка для человека — показывать как есть: «1 234,50 ₸»","example":"1 234,50 ₸","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.advance_offset.to_pay.formatted","typeLabel":"string"}},"isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.advance_offset.to_pay","typeLabel":"object"},"debit":{"type":"string","description":"Счёт дебета проводки зачёта","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.advance_offset.debit","typeLabel":"string"},"credit":{"type":"string","description":"Счёт кредита проводки зачёта","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.advance_offset.credit","typeLabel":"string"},"note":{"type":"string","description":"Готовая фраза для человека: «Зачтётся аванс …, к оплате останется …»","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.advance_offset.note","typeLabel":"string"}},"required":["amount","to_pay","debit","credit","note"],"description":"Есть, если при проведении 1С зачтёт аванс контрагента","uniqueKey":"proposals.items.[INDEX].card.advance_offset","typeLabel":"object"},"result":{"type":"object","properties":{"number":{"type":"string","description":"Номер документа (или код карточки справочника) в 1С","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.result.number","typeLabel":"string"},"ref":{"type":"string","description":"Ref_Key записанного документа в 1С (GUID). Показывать не нужно — это ссылка для перехода в 1С и для отладки","example":"00000000-0000-0000-0000-000000000000","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.result.ref","typeLabel":"string"},"postings":{"type":"array","items":{"type":"object","properties":{"debit":{"type":"string","description":"Код счёта дебета (план счетов 1С)","example":"1210","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.result.postings.items.[INDEX].debit","typeLabel":"string"},"credit":{"type":"string","description":"Код счёта кредита","example":"6010","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.result.postings.items.[INDEX].credit","typeLabel":"string"},"amount":{"oneOf":[{"type":"object","description":"Сумма проводки; null — сумму посчитает сама 1С при проведении (себестоимость), тогда computed_by_1c = true: показать «считает 1С»","required":["amount","amount_tiyn","formatted"],"properties":{"amount":{"type":"number","description":"Тенге десятичным числом, до тиына: 1234.5 = 1 234,50 ₸. Для показа и графиков; считать деньги — по amount_tiyn","example":1234.5,"isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.result.postings.items.[INDEX].amount.oneOf.0.amount","typeLabel":"number"},"amount_tiyn":{"type":"integer","description":"То же целым числом тиынов (1 ₸ = 100 тиын): 1234.5 ₸ = 123450. Складывать и сравнивать суммы — по этому полю","example":123450,"isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.result.postings.items.[INDEX].amount.oneOf.0.amount_tiyn","typeLabel":"integer"},"formatted":{"type":"string","description":"Готовая строка для человека — показывать как есть: «1 234,50 ₸»","example":"1 234,50 ₸","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.result.postings.items.[INDEX].amount.oneOf.0.formatted","typeLabel":"string"}},"isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.result.postings.items.[INDEX].amount.oneOf.0","typeLabel":"object"},{"type":"null","description":"Сумма проводки; null — сумму посчитает сама 1С при проведении (себестоимость), тогда computed_by_1c = true: показать «считает 1С»","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.result.postings.items.[INDEX].amount.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.result.postings.items.[INDEX].amount","typeLabel":"object | null"},"label":{"type":"string","description":"Что это за проводка простыми словами («выручка», «НДС к начислению»); у фактических проводок — «факт 1С»","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.result.postings.items.[INDEX].label","typeLabel":"string"},"computed_by_1c":{"type":"boolean","description":"true — сумму считает 1С (amount = null)","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.result.postings.items.[INDEX].computed_by_1c","typeLabel":"boolean"}},"required":["debit","credit","amount","label","computed_by_1c"],"description":"Проводка — запись «дебет счёта / кредит счёта на сумму» в бухгалтерском учёте. В карточке — ожидаемые проводки; в result и в ответе одобрения — фактические, прочитанные из 1С после проведения.","uniqueKey":"proposals.items.[INDEX].card.result.postings.items.[INDEX]","typeLabel":"object"},"description":"Фактические проводки 1С после проведения; пусто у черновика и справочников","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.result.postings","typeLabel":"object[]"},"mismatches":{"type":"array","items":{"type":"string","uniqueKey":"proposals.items.[INDEX].card.result.mismatches.items.[INDEX]","typeLabel":"string"},"description":"Чем фактические проводки расходятся с ожидаемыми — по строке на расхождение; пусто — совпали","isRequired":true,"uniqueKey":"proposals.items.[INDEX].card.result.mismatches","typeLabel":"string[]"}},"required":["number","ref","postings","mismatches"],"description":"Есть, когда документ уже записан в 1С","uniqueKey":"proposals.items.[INDEX].card.result","typeLabel":"object"}},"isRequired":true,"uniqueKey":"proposals.items.[INDEX].card","typeLabel":"object"}},"required":["id","card"],"description":"Предложение, подготовленное в ходе","uniqueKey":"proposals.items.[INDEX]","typeLabel":"object"},"description":"Документы, которые ИИ подготовил в этом ходе","isRequired":true,"uniqueKey":"proposals","typeLabel":"object[]"},"pending_question":{"oneOf":[{"type":"object","description":"Открытый уточняющий вопрос: ответ — POST …/chat/{dialog_id}/answer; null — вопроса нет","required":["choice_id","questions"],"properties":{"choice_id":{"type":"string","description":"id вопроса: ответ — POST …/chat/{dialog_id}/answer с этим choice_id","isRequired":true,"uniqueKey":"pending_question.oneOf.0.choice_id","typeLabel":"string"},"questions":{"type":"array","items":{"type":"object","properties":{"question":{"type":"string","description":"Вопрос целиком","example":"По какому договору провести оплату?","isRequired":true,"uniqueKey":"pending_question.oneOf.0.questions.items.[INDEX].question","typeLabel":"string"},"header":{"type":"string","description":"Короткая подпись вопроса, до ~12 символов (для вкладки или чипа)","example":"Договор","isRequired":true,"uniqueKey":"pending_question.oneOf.0.questions.items.[INDEX].header","typeLabel":"string"},"options":{"type":"array","items":{"type":"object","properties":{"label":{"type":"string","description":"Текст варианта — его же отправлять в selected","isRequired":true,"uniqueKey":"pending_question.oneOf.0.questions.items.[INDEX].options.items.[INDEX].label","typeLabel":"string"},"description":{"type":"string","description":"Пояснение варианта мелким текстом","isRequired":true,"uniqueKey":"pending_question.oneOf.0.questions.items.[INDEX].options.items.[INDEX].description","typeLabel":"string"},"ref":{"type":"string","description":"Короткая ссылка на объект 1С (cp_…, it_…), если вариант — этот объект; показывать не нужно","uniqueKey":"pending_question.oneOf.0.questions.items.[INDEX].options.items.[INDEX].ref","typeLabel":"string"}},"required":["label","description"],"description":"Вариант ответа","uniqueKey":"pending_question.oneOf.0.questions.items.[INDEX].options.items.[INDEX]","typeLabel":"object"},"description":"Варианты. «Свой ответ» есть всегда и сюда не входит — показать поле ввода отдельно","isRequired":true,"uniqueKey":"pending_question.oneOf.0.questions.items.[INDEX].options","typeLabel":"object[]"},"multi_select":{"type":"boolean","description":"true — можно выбрать несколько вариантов (чекбоксы); false — один (радиокнопки)","isRequired":true,"uniqueKey":"pending_question.oneOf.0.questions.items.[INDEX].multi_select","typeLabel":"boolean"}},"required":["question","header","options","multi_select"],"description":"Уточняющий вопрос ИИ с вариантами. Вариант «свой ответ» есть всегда и в options не входит","uniqueKey":"pending_question.oneOf.0.questions.items.[INDEX]","typeLabel":"object"},"description":"Вопросы — ответить на все сразу","isRequired":true,"uniqueKey":"pending_question.oneOf.0.questions","typeLabel":"object[]"}},"isRequired":true,"uniqueKey":"pending_question.oneOf.0","typeLabel":"object"},{"type":"null","description":"Открытый уточняющий вопрос: ответ — POST …/chat/{dialog_id}/answer; null — вопроса нет","isRequired":true,"uniqueKey":"pending_question.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"pending_question","typeLabel":"object | null"},"questions":{"type":"array","items":{"type":"object","properties":{"text":{"type":"string","description":"Вопрос ИИ к человеку","isRequired":true,"uniqueKey":"questions.items.[INDEX].text","typeLabel":"string"},"proposal_id":{"type":"string","description":"Номер предложения, к которому вопрос; нет — вопрос вообще","example":"P-000123","uniqueKey":"questions.items.[INDEX].proposal_id","typeLabel":"string"}},"required":["text"],"description":"Вопрос ИИ к человеку без вариантов (ответить обычным сообщением)","uniqueKey":"questions.items.[INDEX]","typeLabel":"object"},"description":"Вопросы ИИ к человеку без вариантов","isRequired":true,"uniqueKey":"questions","typeLabel":"object[]"},"citations":{"type":"array","items":{"type":"object","properties":{"source":{"type":"string","description":"Откуда: код нормы или статьи базы знаний","example":"НК РК ст. 412","isRequired":true,"uniqueKey":"citations.items.[INDEX].source","typeLabel":"string"},"title":{"type":"string","description":"Название источника для показа","isRequired":true,"uniqueKey":"citations.items.[INDEX].title","typeLabel":"string"},"url":{"type":"string","description":"Ссылка на текст источника, если есть","uniqueKey":"citations.items.[INDEX].url","typeLabel":"string"},"edition":{"type":"string","description":"Редакция нормы (на какую дату)","uniqueKey":"citations.items.[INDEX].edition","typeLabel":"string"}},"required":["source","title"],"description":"Источник ответа: норма закона, статья базы знаний","uniqueKey":"citations.items.[INDEX]","typeLabel":"object"},"description":"Источники ответа","isRequired":true,"uniqueKey":"citations","typeLabel":"object[]"},"errors":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","description":"Вид ошибки, как у REST: limit_error, unavailable_error, conflict_error, invalid_request_error, api_error","isRequired":true,"uniqueKey":"errors.items.[INDEX].type","typeLabel":"string"},"code":{"type":"string","enum":["budget","rate_limited","api","refusal","context_overflow","aborted","max_iterations","max_tokens","empty_answer","unexpected","history","internal","stream_failed","batch_failed","batch_abandoned"],"description":"Причина:\n- `budget` — кончился лимит (дня или разговора)\n- `rate_limited` — сервис модели перегружен — повторите\n- `api` — сбой сервиса модели\n- `refusal` — модель отказалась отвечать\n- `context_overflow` — разговор слишком длинный — начните новый\n- `aborted` — ход остановили\n- `max_iterations` — ИИ не уложился в предел шагов — попросите по частям\n- `max_tokens` — ответ слишком длинный и оборвался — попросите короче или по частям\n- `empty_answer` — модель закончила ход без ответа — повторите вопрос\n- `unexpected` — ход закончился неожиданно — повторите вопрос\n- `history` — ответ не сохранился в истории\n- `internal` — внутренняя ошибка\n- `stream_failed` — поток ответа оборвался на нашей стороне\n- `batch_failed` — пачка прервана ошибкой\n- `batch_abandoned` — пачка брошена (процесс перезапущен)","isRequired":true,"uniqueKey":"errors.items.[INDEX].code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Текст для человека — показать в ленте ответа","isRequired":true,"uniqueKey":"errors.items.[INDEX].message","typeLabel":"string"},"can_request_more":{"type":"boolean","enum":[true],"description":"Только у code = budget: лимит можно попросить поднять у админа","uniqueKey":"errors.items.[INDEX].can_request_more","typeLabel":"enum\u003cboolean>"},"limit_kind":{"type":"string","enum":["day","dialog"],"description":"Только у code = budget: day — дневной лимит, dialog — лимит разговора","uniqueKey":"errors.items.[INDEX].limit_kind","typeLabel":"enum\u003cstring>"}},"required":["type","code","message"],"additionalProperties":{"oneOf":[{}],"uniqueKey":"errors.items.[INDEX].additionalProperties","typeLabel":"any"},"description":"Ошибка хода","uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"description":"Ошибки хода (как error в событии error); пусто — без ошибок","isRequired":true,"uniqueKey":"errors","typeLabel":"object[]"},"stop_reason":{"oneOf":[{"type":"string","description":"Чем кончился ход (как stop_reason в событии done); null — ход прервался внутренней ошибкой (подробности в errors)","isRequired":true,"uniqueKey":"stop_reason.oneOf.0","typeLabel":"string"},{"type":"null","description":"Чем кончился ход (как stop_reason в событии done); null — ход прервался внутренней ошибкой (подробности в errors)","isRequired":true,"uniqueKey":"stop_reason.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"stop_reason","typeLabel":"string | null"},"usage":{"type":"object","description":"Токены и стоимость хода. Только в ответе ключу API (платформа разработчиков); в кабинете поля usage нет","required":["cost_tiyn","input_tokens","output_tokens","cache_read_tokens","cache_write_tokens"],"properties":{"input_tokens":{"type":"integer","description":"Токенов на входе модели (токен — кусок слова; для статистики)","isRequired":true,"uniqueKey":"usage.input_tokens","typeLabel":"integer"},"output_tokens":{"type":"integer","description":"Токенов в ответе модели","isRequired":true,"uniqueKey":"usage.output_tokens","typeLabel":"integer"},"cache_read_tokens":{"type":"integer","description":"Токенов, прочитанных из кэша модели (дешевле обычных)","isRequired":true,"uniqueKey":"usage.cache_read_tokens","typeLabel":"integer"},"cache_write_tokens":{"type":"integer","description":"Токенов, записанных в кэш модели (дороже обычных): входят в стоимость","isRequired":true,"uniqueKey":"usage.cache_write_tokens","typeLabel":"integer"},"cost_tiyn":{"type":"integer","description":"Стоимость хода в тиынах (1 ₸ = 100 тиын)","isRequired":true,"uniqueKey":"usage.cost_tiyn","typeLabel":"integer"}},"uniqueKey":"usage","typeLabel":"object"}},"required":["dialog_id","turn_no","answer","proposals","pending_question","questions","citations","errors","stop_reason"],"description":"Ход одним JSON: stream: false (или Accept: application/json), а также повтор хода по Idempotency-Key","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"dialog_id":"6f1c2b9e-0000-4000-8000-000000000000","turn_no":123,"answer":"\u003cstring>","proposals":[{"id":"P-000123","card":{"id":"P-000123","kind":"sale","kind_title":"Реализация товаров и услуг","status":"previewed","status_title":"Ждёт решения","created_at":"2026-07-10T09:15:00.000Z","level":"L0","level_title":"Предложение, одобряет человек","title":"Реализация товаров и услуг от 2026-07-10 · ТОО «Пример»","total":{"amount":1234.5,"amount_tiyn":123450,"formatted":"1 234,50 ₸"},"vat":{"amount":1234.5,"amount_tiyn":123450,"formatted":"1 234,50 ₸"},"line_count":123,"warning_count":123,"blocker_count":123,"approval":{"allowed":true,"requires_right":"proposals.approve","blocked_by_blockers":true,"reason":"\u003cstring>"},"dialog_id":"\u003cstring>","href":"/v1/companies/co_01jx0000000000000000000000/proposals/P-000123","source":{"channel":"mcp","note":"\u003cstring>"},"intent":{},"header":{"document_title":"Реализация товаров и услуг","entity_set":"Document_РеализацияТоваровУслуг","date":"2026-07-10","total":{"amount":1234.5,"amount_tiyn":123450,"formatted":"1 234,50 ₸"},"vat":{"amount":1234.5,"amount_tiyn":123450,"formatted":"1 234,50 ₸"},"net":{"amount":1234.5,"amount_tiyn":123450,"formatted":"1 234,50 ₸"},"accounts":[{"field":"СчетУчетаБУ","title":"Счёт учёта (БУ)","code":"1330","ref":"00000000-0000-0000-0000-000000000000"}],"organization":{"ref":"00000000-0000-0000-0000-000000000000","name":"ТОО «Пример»","bin":"000000000000"},"counterparty":{"ref":"00000000-0000-0000-0000-000000000000","name":"ТОО «Пример»","bin":"000000000000"},"contract":{"ref":"00000000-0000-0000-0000-000000000000","name":"\u003cstring>","number":"\u003cstring>","date":"\u003cstring>","kind":"\u003cstring>"},"prices_include_vat":true,"comment":"\u003cstring>","payment_purpose":"\u003cstring>"},"lines":[{"no":123,"section":"goods","item":{"ref":"\u003cstring>","name":"\u003cstring>"},"quantity":2,"price":{"amount":1234.5,"amount_tiyn":123450,"formatted":"1 234,50 ₸"},"sum":{"amount":1234.5,"amount_tiyn":123450,"formatted":"1 234,50 ₸"},"vat_rate_title":"\u003cstring>","vat":{"amount":1234.5,"amount_tiyn":123450,"formatted":"1 234,50 ₸"},"total":{"amount":1234.5,"amount_tiyn":123450,"formatted":"1 234,50 ₸"},"accounts":[{"field":"СчетУчетаБУ","title":"Счёт учёта (БУ)","code":"1330","ref":"00000000-0000-0000-0000-000000000000"}],"description":"\u003cstring>","vat_rate":12}],"postings":[{"debit":"1210","credit":"6010","amount":{"amount":1234.5,"amount_tiyn":123450,"formatted":"1 234,50 ₸"},"label":"\u003cstring>","computed_by_1c":true}],"warnings":["\u003cstring>"],"blockers":["\u003cstring>"],"actions":[{"action":"approve","label":"\u003cstring>","method":"POST","href":"\u003cstring>","enabled":true,"effect":"\u003cstring>","body":{"post":true,"idempotency_key":"\u003cuuid от клиента>"},"disabled_reason":"\u003cstring>"}],"history":[{"at":"2023-11-07T05:31:56Z","status":"previewed","status_title":"\u003cstring>","actor":"\u003cstring>","note":"\u003cstring>"}],"summary":"\u003cstring>","counterparty":{"ref":"00000000-0000-0000-0000-000000000000","name":"ТОО «Пример»","bin":"000000000000"},"document_number":"0000-000123","advance_offset":{"amount":{"amount":1234.5,"amount_tiyn":123450,"formatted":"1 234,50 ₸"},"to_pay":{"amount":1234.5,"amount_tiyn":123450,"formatted":"1 234,50 ₸"},"debit":"\u003cstring>","credit":"\u003cstring>","note":"\u003cstring>"},"result":{"number":"\u003cstring>","ref":"00000000-0000-0000-0000-000000000000","postings":[{"debit":"1210","credit":"6010","amount":{"amount":1234.5,"amount_tiyn":123450,"formatted":"1 234,50 ₸"},"label":"\u003cstring>","computed_by_1c":true}],"mismatches":["\u003cstring>"]}}}],"pending_question":{"choice_id":"\u003cstring>","questions":[{"question":"По какому договору провести оплату?","header":"Договор","options":[{"label":"\u003cstring>","description":"\u003cstring>","ref":"\u003cstring>"}],"multi_select":true}]},"questions":[{"text":"\u003cstring>","proposal_id":"P-000123"}],"citations":[{"source":"НК РК ст. 412","title":"\u003cstring>","url":"\u003cstring>","edition":"\u003cstring>"}],"errors":[{"type":"\u003cstring>","code":"budget","message":"\u003cstring>","can_request_more":true,"limit_kind":"day"}],"stop_reason":"\u003cstring>","usage":{"input_tokens":123,"output_tokens":123,"cache_read_tokens":123,"cache_write_tokens":123,"cost_tiyn":123}}}},"exampleType":"generated"}},"exampleType":"generated"},"accd3a61-3d61-4ea2-a1cf-8bf2d649f8b7":{"description":"Запрос неверен — показать error.message у формы; при error.code = validation_failed — ошибки полей в error.fields (error.type: invalid_request_error)","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","enum":["error"],"description":"Всегда «error»: так тело ошибки отличается от обычного ответа.","isRequired":true,"uniqueKey":"type","typeLabel":"enum\u003cstring>"},"error":{"type":"object","properties":{"type":{"type":"string","enum":["invalid_request_error","authentication_error","payment_required_error","permission_error","not_found_error","conflict_error","gone_error","limit_error","api_error","unavailable_error"],"description":"Вид ошибки — по нему ветвится клиент (не по тексту message). Статус HTTP у вида один, кроме invalid_request_error:\n- `invalid_request_error` (400) — запрос неверен: поле не прошло проверку, неверный формат, действие сейчас недопустимо. Показать message рядом с формой; повтор без исправления не поможет. Обычно 400; 413 и 422 — у кодов, где это сказано в списке code.\n- `authentication_error` (401) — нет входа: сессия закончилась, cookie нет, ключ API неверен, отозван или истёк. Кабинет — отправить на страницу входа; по ключу — проверить ключ (см. code).\n- `payment_required_error` (402) — нужны деньги или решение владельца/админа организации: ждать бесполезно. Показать message и кнопку действия по code (оформить тариф, пополнить баланс, поднять потолок); без code — не оплачено подключение компании.\n- `permission_error` (403) — нельзя: не хватает права или роли, организация заблокирована, вход не тем способом. Показать message (в нём сказано, к кому обратиться); детали — в code и полях рядом.\n- `not_found_error` (404) — нет такого объекта — или он чужой: чужие организации, компании и записи тоже отвечают 404, чтобы не раскрывать, что они есть. Показать «не найдено» и вернуть к списку.\n- `conflict_error` (409) — состояние не позволяет: уже сделано, уже идёт другое действие, версия устарела. Перечитать объект, обновить экран и показать message.\n- `gone_error` (410) — объекта больше нет: разговор не найден или истёк (вопрос в чате, ответ на вопрос ИИ, подсчёт токенов — начать новый разговор), ход потерян при перезапуске сервера, ссылка привязки программы устарела или уже использована (code connector_link_gone). Повторять незачем.\n- `limit_error` (429) — предел: частота запросов, окно тарифа, число объектов или мест. Если есть заголовок Retry-After или resets_at — пройдёт само, показать, когда; иначе нужно освободить место (удалить лишнее) или сменить тариф.\n- `api_error` (500) — сбой на нашей стороне. Показать message и request_id (для поддержки); повторить позже.\n- `unavailable_error` (503) — временно недоступно (внешний сервис, ИИ, настройка сервера). Повторить позже; если повторяется — сообщить request_id в поддержку.","example":"payment_required_error","isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Готовый текст для человека по-русски: что случилось, что делать и к кому обратиться. Показывать как есть; не разбирать — формулировки меняются.","example":"Баланс доп. использования закончился — пополнить его или включить автопополнение могут владелец и админ workspace.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"code":{"type":"string","description":"Уточнение вида: по нему выбирается действие интерфейса (кнопка «Пополнить», «Войти иначе»…). Нет поля — хватает type и message. Известные коды:\n- `sso_domain_taken` (409) — домен SSO уже подтверждён другой организацией\n- `sso_last_verified_domain` (409) — включён обязательный вход, а это последний подтверждённый домен — сначала выключить обязательный вход\n- `sso_login_required` (400) — включить обязательный вход можно только из сессии, открытой через SSO этой организации\n- `domain_verification_failed` (400) — запись DNS для домена не найдена или не совпала — проверить и повторить\n- `oidc_openid_scope_required` (400) — в scopes сервера входа OIDC нет openid — добавить её: без неё вход через SSO не пройдёт\n- `enterprise_only` (403) — возможность есть только на тарифе Enterprise\n- `groups_limit` (429) — достигнут предел групп в организации\n- `custom_roles_limit` (429) — достигнут предел своих ролей в организации\n- `group_managed_by_directory` (409) — группа из каталога: название и состав меняются только там\n- `group_member_not_in_workspace` (400) — в группу можно добавить только сотрудника этой организации\n- `role_above_ceiling` (400) — роль даёт права выше потолка организации\n- `unknown_model` (400) — такой модели нет — список в available_models\n- `price_required` (400) — админка, тариф целиком: у платного тарифа нужна цена (price)\n- `lago_rejected` (409) — админка, тариф целиком: Lago отказал по существу (4xx, текст Lago в message) — правила не изменены, повтор без правки не поможет\n- `price_mismatch` (400) — админка, тариф целиком: цена не сходится с правилами (место без per_seat, per_seat без цены места, цена у бесплатного)\n- `model_not_allowed` (403) — политика организации не разрешает эту модель, а подходящей разрешённой нет — админу дополнить список\n- `retention_too_short` (400) — срок хранения меньше наименьшего\n- `audit_export_range` (400) — неверный период выгрузки журнала: конец раньше начала или период слишком длинный\n- `compliance_disabled` (403) — адрес для проверок выключен — владелец включает его в настройке\n- `missing_credentials` (401) — нет ни cookie сессии, ни ключа API — войти или передать x-api-key\n- `link_revoked` (401) — вход в Tungo из 1С больше не действует (вышли, отключили на сайте, вошли в той же базе заново, компания или человек заблокированы) — 1С просит войти заново\n- `login_denied` (403) — вход из 1С отклонён на сайте Tungo — 1С показывает отказ\n- `code_expired` (410) — код входа из 1С устарел или уже использован — 1С просит новый код\n- `code_gone` (410) — код входа из 1С уже подтверждён, отклонён или устарел — на сайте подтверждать нечего\n- `invalid_api_key` (401) — ключ API неверен (опечатка или удалён)\n- `key_revoked` (401) — ключ API отозван (при правке ключа — 409 с тем же code: отозванный ключ не меняется)\n- `key_expired` (401) — срок ключа API истёк — сменить секрет (POST …/api-keys/{id}/roll: срок начнётся заново) или выпустить новый (при правке срока — 409 с тем же code: PATCH истёкший ключ не оживляет)\n- `key_disabled` (401) — ключ API выключен — включить может автор ключа или владелец организации (POST …/api-keys/{id}/enable)\n- `key_creator_lost_access` (401) — тот, кто выпустил ключ, больше не владелец/админ организации — ключ недействителен\n- `user_banned` (401) — вход в аккаунт закрыт администратором Tungo — только поддержка Tungo\n- `onboarding_unpaid` (402) — подключение компании к ИИ-бухгалтеру не оплачено (разовый платёж): владельцу/админу организации — «Оплатить» в настройках компании; остальным — сообщить им\n- `onboarding_pending` (402) — оплата подключения компании ещё проходит в банке — ИИ заработает после подтверждения; опрашивать состояние подключения\n- `no_active_plan` (402) — нет действующей подписки (не оформлена, закончилась, первая оплата не прошла или ждёт 3-D Secure). Владельцу/админу — кнопка в настройки оплаты; остальным — «обратитесь к владельцу организации». Что именно случилось — в message\n- `balance_exhausted` (402) — баланс доп. использования кончился. Владельцу/админу — «Пополнить баланс» или включить автопополнение; остальным — сообщить им\n- `workspace_cap_reached` (402) — достигнут месячный потолок доп. использования организации. resets_at — 1-е число следующего месяца, 00:00 по Алматы; раньше — если админ поднимет потолок\n- `report_busy` (429) — сейчас собирается много отчётов команды: повторить через время из Retry-After\n- `report_timeout` (503) — отчёт команды не успел собраться: сократить период или выбрать разбивку по месяцам\n- `company_cap_reached` (402) — достигнут месячный потолок доп. использования компании. Письмо владельцу и админам уже отправлено. resets_at — 1-е число; раньше — если админ поднимет потолок (PUT /v1/workspaces/{ws}/team/company-caps/{co})\n- `member_cap_reached` (402) — достигнут личный месячный потолок доп. использования сотрудника. resets_at — 1-е число; раньше — если админ поднимет его потолок\n- `key_cap_reached` (402) — достигнут месячный потолок расхода ключа API (или остаток меньше оценки одного вызова). resets_at — 1-е число\n- `platform_balance_exhausted` (402) — баланс платформы пуст: вызов по ключу или автоматизация не сделаны. Пополнить — POST /v1/workspaces/{ws}/platform/purchases или автопополнением\n- `platform_cap_reached` (402) — достигнут месячный потолок трат платформы. resets_at — 1-е число следующего месяца, 00:00 по Алматы; раньше — поднять потолок в PUT /v1/workspaces/{ws}/platform/account\n- `platform_disabled` (402) — платформа выключена в организации: вызовы по ключам и автоматизации остановлены. Включить — PUT /v1/workspaces/{ws}/platform/account\n- `free_plan_chat_only` (402) — бесплатный тариф: пачки из кабинета только на платных тарифах. Ключам API и автоматизациям тариф не нужен\n- `free_limit_unavailable` (402) — бесплатный лимит этой учётной записи не положен (проверка регистрации или решение администратора) — оформить тариф\n- `plan_company_limit` (402) — в организации уже столько компаний не в архиве, сколько разрешает тариф (max_companies в GET /v1/plans; limit и plan_code — в ответе): новую не завести и из архива не вернуть. Убрать лишнюю в архив или перейти на тариф больше\n- `effort_not_in_plan` (402) — поле effort в чате на тарифе без выбора усилия (max_effort тарифа null, например бесплатный): ход не начат. Прислать вопрос без effort или оформить платный тариф\n- `model_not_in_plan` (402) — модель сильнее потолка тарифа (plans.model_ceiling): вызов не сделан; более сильные модели — на платных тарифах\n- `missing_permission` (403) — не хватает права в компании (или у ключа API); какого — в поле permission\n- `login_method_not_allowed` (403) — организация пускает к своим данным только после входа другим способом; какими — в allowed_methods. Предложить выйти и войти так\n- `ip_not_allowed` (403) — ключ API не принимает запросы с этого адреса — поправить allowed_ips ключа (PATCH …/api-keys/{id}) или вызывать с разрешённого адреса\n- `key_write_limit` (403) — запись в 1С по ключу API — сверх его пределов (сумма на документ или в день, виды документов) или правило автоодобрения шире пределов ключа; в сообщении — что и на сколько\n- `human_only` (403) — это решение принимает только человек в кабинете Tungo, не ключ API: например, отклонить «не знаем, записан ли» на снимке базы без проверки 1С (confirm_unknown_write)\n- `autonomy_raise_requires_session` (403) — поднять уровень доверия ИИ или потолки компании можно только владельцу или админу организации из кабинета; ключом API — только понизить\n- `id_path_required` (400) — для автоодобрения по хуку задайте хуку id_path — путь к номеру операции в теле события: без него повтор доставки нельзя отличить от новой операции\n- `directbank_rule_exists` (400) — у компании уже есть сценарий с правилом для выписки DirectBank — правило выписки одно на компанию\n- `event_not_found` (404) — события нет в этой компании или оно удалено по сроку хранения — для пробного прогона выберите событие посвежее\n- `event_body_unavailable` (409) — тело события зашифровано, а ключ шифрования на сервере сменился — прогнать сценарий на нём нельзя\n- `scenario_steps_required` (409) — у сценария цепочка шагов, а в замене (PUT) нет ни steps, ни output: передайте steps явно, иначе замена молча убрала бы цепочку\n- `scenario_output_required` (409) — у сценария форма итога, а в замене (PUT) нет ни steps, ни output: передайте output явно (null — снять форму)\n- `automation_queue_full` (429) — у компании слишком много запусков в очереди: повторите позже (событие хука отправитель повторит сам)\n- `restarting` (503) — сервис перезапускается: новый ход не начат — повторите через Retry-After\n- `company_suspended` (403) — работа с компанией приостановлена (решение платформы или оплаты); карточка видна, работать, править и архивировать нельзя (архив — 409 с тем же code)\n- `company_archived` (403) — компания в архиве: карточка видна, работать с ней нельзя. Вернуть — POST /v1/companies/{company_id}/unarchive (владелец компании или владелец/админ организации)\n- `workspace_blocked` (403) — организация заблокирована администратором платформы — только поддержка Tungo\n- `untrusted_origin` (403) — запрос пришёл не со страницы Tungo (защита от подделки запросов) — открыть кабинет по обычному адресу; для /admin/* — только со страниц ADMIN_ORIGINS\n- `cors_not_supported` (403) — вызов API из чужого браузерного кода (CORS) не поддерживается: ключ API — секрет сервера\n- `api_keys_disabled_by_policy` (403) — политика организации запрещает ключи API\n- `owner_role_reserved` (403) — владельца компании назначает, меняет и снимает только владелец или админ организации\n- `role_above_yours` (403) — у выдаваемой (или снимаемой) роли есть права, которых нет у вас; роль — в поле role, лишние права — в permissions\n- `not_key_creator` (403) — менять компании, права, срок и секрет ключа, снимать и поднимать его пределы записи в 1С может только тот, кто его выпустил (ужесточить пределы может любой админ)\n- `transfer_wider_than_target` (403) — передать ключ нельзя: у нового владельца нет нужного права (или доступа) в одной из компаний ключа\n- `invalid_allowed_ips` (400) — в allowed_ips ключа — не IP-адрес и не подсеть CIDR; какая запись — в сообщении\n- `transfer_target_not_admin` (400) — передать ключ можно только владельцу или админу этой организации\n- `platform_model_not_allowed` (403) — модель сильнее потолка платформы (настройка platform.billing): вызов не сделан и ничего не списано\n- `managed_by_sso` (403) — удаление аккаунта: аккаунт ведёт организация (SSO или SCIM) — удаляет её администратор; организации — в workspaces\n- `fresh_session_required` (403) — удаление аккаунта без почты (Telegram): нужен свежий вход — выйти, войти снова и подтвердить\n- `api_key_not_allowed` (403) — действие только из кабинета (сессия), не по ключу API: удаление аккаунта\n- `not_own_key` (403) — по ключу API виден только расход самого этого ключа\n- `webhooks_not_in_plan` (403) — вебхуков нет в тарифе организации\n- `admin_2fa_required` (403) — админ-API: у администратора платформы нет второго фактора или эта сессия не подтверждена кодом приложения-аутентификатора (POST /v1/auth/two-factor/enable, затем verify-totp)\n- `two_factor_required` (403) — отключить второй фактор, показать его секрет или выпустить резервные коды — только после кода из приложения-аутентификатора в этой сессии\n- `webhooks_require_all_companies` (403) — вебхуки — только ключу на все компании организации (при выпуске ключа — 400 с тем же code)\n- `audit_requires_all_companies` (403) — журнал организации — только ключу на все компании организации\n- `policy_blocked` (403) — одобрение: организация не доверяет ИИ записывать такой документ этим способом (поле level — уровень доверия); одобрить по одному или поднять уровень\n- `onec_read_only` (403) — одобрение: у пользователя 1С из подключения нет права записи — дать права в 1С\n- `validation_failed` (400) — тело или параметры запроса не прошли проверку: что не так с каждым полем — в fields (путь, код, текст по-русски). Подсветить поля формы; общий message — над формой\n- `invalid_json` (400) — тело запроса — не JSON-объект\n- `personal_workspace` (400) — в личной организации нет сотрудников, приглашений и политик — нужна организация Team или Enterprise\n- `api_key_required` (400) — адрес только для запроса по ключу API\n- `email_code_unavailable` (400) — удаление аккаунта: у аккаунта нет почты для кода (вход через Telegram) — подтверждать свежим входом, без кода\n- `deletion_code_invalid` (400) — удаление аккаунта: неверный код из письма; сколько попыток осталось — attempts_left\n- `deletion_code_expired` (400) — удаление аккаунта: код истёк, попытки кончились или код не запрашивался — запросить новый (POST /v1/me/deletion/code)\n- `unsafe_url` (400) — адрес вебхука недопустим (внутренняя сеть, не HTTPS)\n- `idempotency_key_invalid` (400) — Idempotency-Key неверного вида\n- `payload_too_large` (413) — тело запроса (или события хука) больше допустимого; пределы — настройки платформы\n- `idempotency_key_reused` (422) — этот Idempotency-Key уже был у другого запроса — для нового действия нужен новый ключ\n- `has_blockers` (422) — одобрение: у предложения есть блокеры — сначала исправить их\n- `batch_too_large` (413) — одобрение пачкой: предложений больше предела (поля limit, requested) — разбить на части\n- `unknown_kind` (400) — настройки писем: такого вида уведомлений нет — взять список из GET /v1/me/notifications\n- `kind_locked` (400) — настройки писем: этот вид (безопасность и аккаунт) выключить нельзя — переключатель неактивен (locked)\n- `onec_rejected` (400) — одобрение: 1С отклонила документ (причина — в message): исправить в 1С или построить предложение заново\n- `proposal_not_found` (404) — предложения с таким id нет в компании\n- `export_link_expired` (404) — ссылка на архив выгрузки истекла или неверна — получить новую: GET /v1/me/export\n- `batch_not_found` (404) — одобрение пачкой: задания с таким batch_id нет (или в нём нет предложений)\n- `idempotency_in_progress` (409) — первый запрос с этим Idempotency-Key ещё выполняется — подождать и повторить, придёт тот же ответ\n- `idempotency_response_not_kept` (409) — запрос с этим Idempotency-Key уже выполнен, но копия ответа не хранится (в нём персональные данные): результат — по ссылке в ответе (dialog_url) или в списке; статус первого ответа — original_status\n- `idempotency_response_too_large` (409) — запрос с этим Idempotency-Key уже выполнен, но ответ слишком большой, чтобы повторить его целиком: результат — в списке; статус первого ответа — original_status\n- `sole_owner` (409) — удаление аккаунта: вы единственный владелец организации с другими участниками (workspaces) — передать владение (POST /v1/workspaces/{ws}/ownership) или удалить организацию\n- `account_deletion_in_progress` (409) — удаление аккаунта: фон уже стирает аккаунт — новый код и подтверждение не принимаются, отменить нельзя\n- `wrong_status` (409) — предложение уже не в том состоянии (поле status — нынешнее): обновить его\n- `wrong_state` (409) — запуск автоматизации уже не в том состоянии (поле state — нынешнее)\n- `dialog_closed` (409) — разговор закрыт (поле reason — почему): начать новый\n- `dialog_id_taken` (409) — разговор с таким dialog_id уже есть — для нового прислать другой id или не присылать его\n- `turn_in_progress` (409) — в разговоре уже идёт ход ИИ (поле turn — его номер): дождаться его конца или остановить\n- `turn_superseded` (409) — читаемый ход уже закончился и идёт следующий (поле turn) — читать его с начала\n- `dialog_changed` (409) — разговор только что изменился в другом окне или на другом сервере Tungo — открыть его заново (GET …/chat/{id}) и повторить\n- `already_answered` (409) — на этот вопрос ИИ уже ответили (поле turn — ход с ответом)\n- `question_stale` (409) — вопрос ИИ устарел (в разговоре уже другой вопрос или его нет) — обновить разговор\n- `dismissed` (409) — вопрос ИИ закрыт без ответа — написать обычное сообщение\n- `job_running` (409) — задание (пачка) ещё идёт — дождаться отчёта; поле batch_id\n- `payload_changed` (409) — одобрение: документ изменился после превью — построить предложение заново\n- `onec_conflict` (409) — одобрение: 1С отказала из-за конфликта (объект занят или изменён) — повторить позже\n- `onec_not_found` (409) — одобрение: в 1С нет объекта, на который ссылается документ — построить предложение заново\n- `plan_limit_reached` (429) — лимит окна тарифа исчерпан; resets_at и Retry-After — когда обновится. Показать время; если в message предложено доп. использование — дать кнопку включить\n- `rate_limited` (429) — слишком часто (по ключу API, уведомления ePay с одного адреса, попытки кода второго фактора) — подождать Retry-After секунд\n- `concurrent_turns_limit` (429) — по ключу API уже идёт предельное число ходов ИИ одновременно — дождаться окончания\n- `api_keys_limit` (429) — в организации предельное число действующих ключей API — отозвать ненужные\n- `webhook_endpoints_limit` (429) — предельное число адресов вебхуков — удалить ненужные\n- `export_too_soon` (429) — выгрузку данных можно запрашивать не чаще раза в сутки: next_request_at и Retry-After — когда можно снова\n- `hook_rate_limited` (429) — приём событий хука: больше automations.hook_events_per_minute в минуту — повторить через Retry-After секунд\n- `lago_unavailable` (503) — админка, тариф целиком: Lago не настроен или не ответил (сеть, 5xx) — правила не изменены, повторить позже\n- `model_price_missing` (503) — у модели ИИ не задана цена — сбой настройки платформы, ничего не списано; повторить позже\n- `data_export_disabled` (503) — выгрузка данных на сервере не настроена (поддержка Tungo)\n- `webhooks_disabled` (503) — вебхуки на сервере не настроены\n- `webhooks_unavailable` (503) — служба доставки вебхуков временно недоступна\n- `model_not_configured` (503) — сервис модели ИИ не настроен на сервере — повторить позже (Retry-After)\n- `write_unknown` (503) — одобрение: исход записи в 1С неизвестен (связь оборвалась) — проверить документ в 1С по метке (поле marker); повтор безопасен (retry_safe); слишком ранний повтор в 1С не пишет — подождать retry_after секунд (Retry-After)\n- `onec_unavailable` (503) — 1С сейчас не отвечает — повторить позже (Retry-After)\n- `onec_check_busy` (503) — проверка связи 1С: сервер сейчас проверяет слишком много подключений — повторить через Retry-After секунд\n- `onec_failed` (503) — записать документ в 1С не удалось по неизвестной причине — повторить позже\n- `journal_unavailable` (503) — журнал решений недоступен — пачка не одобрена, повторить позже\n- `hook_secret_unavailable` (503) — приём событий хука: секрет подписи сейчас не открыть — отправителю повторить доставку позже\n- `secret_box_missing` (503) — на сервере не задан ключ шифрования настроек — секрет подписи хука сохранить нельзя (поддержка Tungo)\n- `not_personal` (409) — перевод в команду: организация уже не личная — обновить экран\n- `subscription_blocks_conversion` (409) — перевод в команду: действует подписка для одного человека — сначала отменить её и дождаться конца периода\n- `subscription_kind_mismatch` (409) — админка: действующая подписка оформлена на другой вид организации — вид не меняется, пока она идёт\n- `enterprise_features_active` (409) — админка: у организации подключены SSO или SCIM — сначала отключить, потом снимать Enterprise\n- `too_many_members_for_personal` (409) — админка: в личной организации один человек — сначала убрать остальных участников\n- `open_debt` (409) — есть неоплаченный счёт — сначала оплатить; в плане удаления этот же код лежит в blockers\n- `active_work` (409) — в организации идут ходы ИИ или автоматизации — дождаться окончания и повторить; в плане удаления этот же код лежит в blockers\n- `deletion_already_scheduled` (409) — удаление организации уже запланировано — показать дату из плана\n- `deletion_purging` (409) — очистка организации уже идёт — отменить её нельзя\n- `workspace_deleting` (409) — админка: организация удаляется по просьбе владельца — блок удаления снимает только отмена удаления\n- `invitation_not_pending` (409) — приглашение принято, отозвано или истекло — письмо не отправить, пригласить заново\n- `last_owner` (409) — это последний владелец организации — сначала передать владение другому участнику\n- `seats_by_contract` (409) — места Enterprise — по договору, карта и докупка не работают: обратиться к менеджеру\n- `no_subscription` (409) — нет действующей подписки — сначала оформить тариф\n- `not_per_seat` (409) — этот тариф не считает оплату за место — докупка не нужна, предел мест показан в ответе GET …/seats\n- `subscription_ended` (409) — возобновление: период отменённой подписки уже закончился — ничего не списано, оформить тариф заново (повторный PUT — обычное оформление)\n- `subscription_busy` (409) — подписка уже меняется другим запросом (отмена или возобновление) — обновить экран через несколько секунд\n- `subscription_ending` (409) — подписка отменена и закончится в конце периода — места не докупаются и не сокращаются\n- `seats_unpaid_debt` (409) — подписка просрочена — сначала оплатить счёт; участники остаются, новых приглашать нельзя\n- `idempotency_conflict` (409) — докупка: этот ключ уже использован с другим числом мест — для новой покупки нужен новый ключ\n- `seat_quote_changed` (409) — докупка: сумма изменилась (другой день или новая цена), деньги не списаны — показать новую сумму из поля и спросить снова\n- `no_paid_seats` (409) — оплаченных мест ещё нет — сокращать нечего\n- `seats_below_occupied` (409) — занято больше мест, чем просите оставить — сначала убрать участников или отозвать приглашения\n- `not_enterprise` (409) — админка: места по договору есть только у Enterprise — сначала поставить вид\n- `per_seat_plan_change` (409) — смена тарифа с оплатой за место не делается сразу: Lago взял бы плату за места дважды. Отменить и оформить новый с конца периода\n- `confirm_name_mismatch` (400) — удаление организации: название введено неверно — ввести точно как в плане удаления\n- `below_min_seats` (400) — на этом тарифе мест меньше нельзя: минимум — min_seats тарифа\n- `seats_over_max` (400) — мест больше предела одной организации (team.limits.max_seats) — обратиться в поддержку\n- `seats_above_paid` (400) — PUT …/seats только сокращает; новые места — через POST …/seats с оплатой\n- `onec_check_running` (429) — проверка связи 1С уже идёт у этой компании, у вас (другая компания) или у двух других компаний организации — дождаться её итога и повторить (Retry-After)\n- `invitation_resend_too_soon` (429) — письмо с приглашением уже отправлено только что — подождать Retry-After секунд\n- `seats_exhausted` (429) — свободные места закончились: докупите места или освободите их, отозвав приглашение\n- `seat_price_unknown` (503) — цена места сейчас неизвестна (тариф не прочитан или настроен неверно), деньги не списаны — повторить позже\n- `otp_mail_failed` (503) — письмо с кодом входа не отправлено: попробуйте позже\n- `seat_period_unknown` (503) — не удалось сверить период подписки с биллингом: деньги не списаны, попробуйте позже\n\nНезнакомый code — вести себя по type.","example":"balance_exhausted","uniqueKey":"error.code","typeLabel":"string"},"permission":{"type":"string","description":"При code = missing_permission — какого права не хватает: права в компании (company.read, company.manage, company.members.manage, onec.connect, proposals.create, proposals.approve, chat.use, audit.read, automations.manage) или права только ключа API (automations.read, webhooks.manage). Показать «нужно право …» и предложить попросить админа (или выпустить ключ с этим правом).","example":"proposals.approve","uniqueKey":"error.permission","typeLabel":"string"},"resets_at":{"type":"string","format":"date-time","description":"Когда ограничение снимется само — ISO 8601, UTC. Есть у plan_limit_reached (конец окна тарифа) и у месячных потолков (workspace_cap_reached, company_cap_reached, member_cap_reached, key_cap_reached, platform_cap_reached — 1-е число, 00:00 по Алматы). Показать в местном времени: «Лимит обновится в 14:30». Нет поля — само не пройдёт.","example":"2026-11-01T19:00:00.000Z","uniqueKey":"error.resets_at","typeLabel":"string\u003cdate-time>"},"allowed_methods":{"type":"array","items":{"type":"string","enum":["email_otp","google","apple","telegram","sso"],"uniqueKey":"error.allowed_methods.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"При code = login_method_not_allowed — какими способами входа организация пускает к своим данным: email_otp — код из почты, google, apple, telegram, sso — SSO организации. Предложить выйти и войти одним из них.","uniqueKey":"error.allowed_methods","typeLabel":"enum\u003cstring>[]"},"role":{"type":"string","description":"При code = role_above_yours — ключ роли в компании, которую нельзя выдать или снять (например chief_accountant).","uniqueKey":"error.role","typeLabel":"string"},"permissions":{"type":"array","items":{"type":"string","uniqueKey":"error.permissions.items.[INDEX]","typeLabel":"string"},"description":"При code = role_above_yours — права этой роли, которых нет у того, кто выдаёт. Показать списком: «у роли есть права, которых нет у вас: …».","uniqueKey":"error.permissions","typeLabel":"string[]"},"fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string","description":"Путь к полю через точку, как в теле запроса или имени параметра: `name`, `lines.0.amount`. Пустая строка — всё тело (не объект, лишние поля).","example":"bin","isRequired":true,"uniqueKey":"error.fields.items.[INDEX].path","typeLabel":"string"},"code":{"type":"string","enum":["invalid_type","too_small","too_big","invalid_format","invalid_value","not_multiple_of","unrecognized_keys","invalid_union","invalid_key","invalid_element","custom"],"description":"Что не так: invalid_type — не тот тип или поле не передано; too_small / too_big — короче/меньше или длиннее/больше допустимого; invalid_format — неверный вид (почта, дата, шаблон); invalid_value — значения нет среди допустимых; not_multiple_of — не кратно; unrecognized_keys — лишние поля; invalid_union — не подходит ни один вид; invalid_key / invalid_element — неверный ключ или элемент; custom — своё правило ручки","example":"invalid_format","isRequired":true,"uniqueKey":"error.fields.items.[INDEX].code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Текст для человека по-русски — показать под полем","example":"БИН/ИИН — 12 цифр","isRequired":true,"uniqueKey":"error.fields.items.[INDEX].message","typeLabel":"string"}},"required":["path","code","message"],"description":"Ошибка одного поля запроса","uniqueKey":"error.fields.items.[INDEX]","typeLabel":"object"},"description":"При code = validation_failed — ошибки по полям, в порядке проверки; у одного поля может быть несколько.","uniqueKey":"error.fields","typeLabel":"object[]"}},"required":["type","message"],"additionalProperties":{"oneOf":[{}],"uniqueKey":"error.additionalProperties","typeLabel":"any"},"description":"Что пошло не так. Все 503 — с заголовком Retry-After (через сколько секунд повторить). Кроме описанных, у отдельных ручек бывают свои поля рядом с code (например status у wrong_status, state у wrong_state, reason у dialog_closed) — они описаны у этих ручек.","isRequired":true,"uniqueKey":"error","typeLabel":"object"},"request_id":{"oneOf":[{"type":"string","description":"Номер запроса (тот же, что в заголовке x-request-id). Показывать мелко рядом с ошибкой с кнопкой «скопировать»: по нему поддержка находит запрос в журнале. null — номер не успел появиться (очень ранний отказ).","example":"req_4f9c2a7e1b3d4c5a8e6f7a9b0c1d2e3f","isRequired":true,"uniqueKey":"request_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"Номер запроса (тот же, что в заголовке x-request-id). Показывать мелко рядом с ошибкой с кнопкой «скопировать»: по нему поддержка находит запрос в журнале. null — номер не успел появиться (очень ранний отказ).","example":"req_4f9c2a7e1b3d4c5a8e6f7a9b0c1d2e3f","isRequired":true,"uniqueKey":"request_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"request_id","typeLabel":"string | null"}},"required":["type","error","request_id"],"description":"Тело любой ошибки API (статусы 4xx и 5xx): `{\"type\":\"error\",\"error\":{\"type\":\"…\",\"code\":\"…\",\"message\":\"…\"},\"request_id\":\"…\"}`. Интерфейс ветвится по error.type и error.code, человеку показывает error.message и request_id.","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"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":"\u003cstring>","permissions":["\u003cstring>"],"fields":[{"path":"bin","code":"invalid_format","message":"БИН/ИИН — 12 цифр"}]},"request_id":"req_4f9c2a7e1b3d4c5a8e6f7a9b0c1d2e3f"}}},"exampleType":"generated"}},"headers":{"x-request-id":{"description":"Номер запроса (тот же, что request_id в теле ошибки) — назвать в обращении в поддержку. Его всегда создаёт сервер: присланный клиентом x-request-id номером не становится","schema":{"type":"string","example":"req_3f2a9c0d1e4b4c5d8e7f6a5b4c3d2e1f"}},"x-ratelimit-limit":{"description":"Только при входе по ключу API: сколько запросов можно в текущем окне — самый тесный предел из ключа и организации","schema":{"type":"integer"}},"x-ratelimit-remaining":{"description":"Только при входе по ключу API: сколько запросов осталось по этому пределу в текущем окне","schema":{"type":"integer"}},"x-ratelimit-reset":{"description":"Только при входе по ключу API: секунд до нового окна этого предела","schema":{"type":"integer"}}},"exampleType":"generated"},"7db3a44f-fda0-42a5-a283-e7d43081b926":{"description":"Нет входа (сессия закончилась или ключ API неверен) — отправить на вход (error.type: authentication_error)","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","enum":["error"],"description":"Всегда «error»: так тело ошибки отличается от обычного ответа.","isRequired":true,"uniqueKey":"type","typeLabel":"enum\u003cstring>"},"error":{"type":"object","properties":{"type":{"type":"string","enum":["invalid_request_error","authentication_error","payment_required_error","permission_error","not_found_error","conflict_error","gone_error","limit_error","api_error","unavailable_error"],"description":"Вид ошибки — по нему ветвится клиент (не по тексту message). Статус HTTP у вида один, кроме invalid_request_error:\n- `invalid_request_error` (400) — запрос неверен: поле не прошло проверку, неверный формат, действие сейчас недопустимо. Показать message рядом с формой; повтор без исправления не поможет. Обычно 400; 413 и 422 — у кодов, где это сказано в списке code.\n- `authentication_error` (401) — нет входа: сессия закончилась, cookie нет, ключ API неверен, отозван или истёк. Кабинет — отправить на страницу входа; по ключу — проверить ключ (см. code).\n- `payment_required_error` (402) — нужны деньги или решение владельца/админа организации: ждать бесполезно. Показать message и кнопку действия по code (оформить тариф, пополнить баланс, поднять потолок); без code — не оплачено подключение компании.\n- `permission_error` (403) — нельзя: не хватает права или роли, организация заблокирована, вход не тем способом. Показать message (в нём сказано, к кому обратиться); детали — в code и полях рядом.\n- `not_found_error` (404) — нет такого объекта — или он чужой: чужие организации, компании и записи тоже отвечают 404, чтобы не раскрывать, что они есть. Показать «не найдено» и вернуть к списку.\n- `conflict_error` (409) — состояние не позволяет: уже сделано, уже идёт другое действие, версия устарела. Перечитать объект, обновить экран и показать message.\n- `gone_error` (410) — объекта больше нет: разговор не найден или истёк (вопрос в чате, ответ на вопрос ИИ, подсчёт токенов — начать новый разговор), ход потерян при перезапуске сервера, ссылка привязки программы устарела или уже использована (code connector_link_gone). Повторять незачем.\n- `limit_error` (429) — предел: частота запросов, окно тарифа, число объектов или мест. Если есть заголовок Retry-After или resets_at — пройдёт само, показать, когда; иначе нужно освободить место (удалить лишнее) или сменить тариф.\n- `api_error` (500) — сбой на нашей стороне. Показать message и request_id (для поддержки); повторить позже.\n- `unavailable_error` (503) — временно недоступно (внешний сервис, ИИ, настройка сервера). Повторить позже; если повторяется — сообщить request_id в поддержку.","example":"payment_required_error","isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Готовый текст для человека по-русски: что случилось, что делать и к кому обратиться. Показывать как есть; не разбирать — формулировки меняются.","example":"Баланс доп. использования закончился — пополнить его или включить автопополнение могут владелец и админ workspace.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"code":{"type":"string","description":"Уточнение вида: по нему выбирается действие интерфейса (кнопка «Пополнить», «Войти иначе»…). Нет поля — хватает type и message. Известные коды:\n- `sso_domain_taken` (409) — домен SSO уже подтверждён другой организацией\n- `sso_last_verified_domain` (409) — включён обязательный вход, а это последний подтверждённый домен — сначала выключить обязательный вход\n- `sso_login_required` (400) — включить обязательный вход можно только из сессии, открытой через SSO этой организации\n- `domain_verification_failed` (400) — запись DNS для домена не найдена или не совпала — проверить и повторить\n- `oidc_openid_scope_required` (400) — в scopes сервера входа OIDC нет openid — добавить её: без неё вход через SSO не пройдёт\n- `enterprise_only` (403) — возможность есть только на тарифе Enterprise\n- `groups_limit` (429) — достигнут предел групп в организации\n- `custom_roles_limit` (429) — достигнут предел своих ролей в организации\n- `group_managed_by_directory` (409) — группа из каталога: название и состав меняются только там\n- `group_member_not_in_workspace` (400) — в группу можно добавить только сотрудника этой организации\n- `role_above_ceiling` (400) — роль даёт права выше потолка организации\n- `unknown_model` (400) — такой модели нет — список в available_models\n- `price_required` (400) — админка, тариф целиком: у платного тарифа нужна цена (price)\n- `lago_rejected` (409) — админка, тариф целиком: Lago отказал по существу (4xx, текст Lago в message) — правила не изменены, повтор без правки не поможет\n- `price_mismatch` (400) — админка, тариф целиком: цена не сходится с правилами (место без per_seat, per_seat без цены места, цена у бесплатного)\n- `model_not_allowed` (403) — политика организации не разрешает эту модель, а подходящей разрешённой нет — админу дополнить список\n- `retention_too_short` (400) — срок хранения меньше наименьшего\n- `audit_export_range` (400) — неверный период выгрузки журнала: конец раньше начала или период слишком длинный\n- `compliance_disabled` (403) — адрес для проверок выключен — владелец включает его в настройке\n- `missing_credentials` (401) — нет ни cookie сессии, ни ключа API — войти или передать x-api-key\n- `link_revoked` (401) — вход в Tungo из 1С больше не действует (вышли, отключили на сайте, вошли в той же базе заново, компания или человек заблокированы) — 1С просит войти заново\n- `login_denied` (403) — вход из 1С отклонён на сайте Tungo — 1С показывает отказ\n- `code_expired` (410) — код входа из 1С устарел или уже использован — 1С просит новый код\n- `code_gone` (410) — код входа из 1С уже подтверждён, отклонён или устарел — на сайте подтверждать нечего\n- `invalid_api_key` (401) — ключ API неверен (опечатка или удалён)\n- `key_revoked` (401) — ключ API отозван (при правке ключа — 409 с тем же code: отозванный ключ не меняется)\n- `key_expired` (401) — срок ключа API истёк — сменить секрет (POST …/api-keys/{id}/roll: срок начнётся заново) или выпустить новый (при правке срока — 409 с тем же code: PATCH истёкший ключ не оживляет)\n- `key_disabled` (401) — ключ API выключен — включить может автор ключа или владелец организации (POST …/api-keys/{id}/enable)\n- `key_creator_lost_access` (401) — тот, кто выпустил ключ, больше не владелец/админ организации — ключ недействителен\n- `user_banned` (401) — вход в аккаунт закрыт администратором Tungo — только поддержка Tungo\n- `onboarding_unpaid` (402) — подключение компании к ИИ-бухгалтеру не оплачено (разовый платёж): владельцу/админу организации — «Оплатить» в настройках компании; остальным — сообщить им\n- `onboarding_pending` (402) — оплата подключения компании ещё проходит в банке — ИИ заработает после подтверждения; опрашивать состояние подключения\n- `no_active_plan` (402) — нет действующей подписки (не оформлена, закончилась, первая оплата не прошла или ждёт 3-D Secure). Владельцу/админу — кнопка в настройки оплаты; остальным — «обратитесь к владельцу организации». Что именно случилось — в message\n- `balance_exhausted` (402) — баланс доп. использования кончился. Владельцу/админу — «Пополнить баланс» или включить автопополнение; остальным — сообщить им\n- `workspace_cap_reached` (402) — достигнут месячный потолок доп. использования организации. resets_at — 1-е число следующего месяца, 00:00 по Алматы; раньше — если админ поднимет потолок\n- `report_busy` (429) — сейчас собирается много отчётов команды: повторить через время из Retry-After\n- `report_timeout` (503) — отчёт команды не успел собраться: сократить период или выбрать разбивку по месяцам\n- `company_cap_reached` (402) — достигнут месячный потолок доп. использования компании. Письмо владельцу и админам уже отправлено. resets_at — 1-е число; раньше — если админ поднимет потолок (PUT /v1/workspaces/{ws}/team/company-caps/{co})\n- `member_cap_reached` (402) — достигнут личный месячный потолок доп. использования сотрудника. resets_at — 1-е число; раньше — если админ поднимет его потолок\n- `key_cap_reached` (402) — достигнут месячный потолок расхода ключа API (или остаток меньше оценки одного вызова). resets_at — 1-е число\n- `platform_balance_exhausted` (402) — баланс платформы пуст: вызов по ключу или автоматизация не сделаны. Пополнить — POST /v1/workspaces/{ws}/platform/purchases или автопополнением\n- `platform_cap_reached` (402) — достигнут месячный потолок трат платформы. resets_at — 1-е число следующего месяца, 00:00 по Алматы; раньше — поднять потолок в PUT /v1/workspaces/{ws}/platform/account\n- `platform_disabled` (402) — платформа выключена в организации: вызовы по ключам и автоматизации остановлены. Включить — PUT /v1/workspaces/{ws}/platform/account\n- `free_plan_chat_only` (402) — бесплатный тариф: пачки из кабинета только на платных тарифах. Ключам API и автоматизациям тариф не нужен\n- `free_limit_unavailable` (402) — бесплатный лимит этой учётной записи не положен (проверка регистрации или решение администратора) — оформить тариф\n- `plan_company_limit` (402) — в организации уже столько компаний не в архиве, сколько разрешает тариф (max_companies в GET /v1/plans; limit и plan_code — в ответе): новую не завести и из архива не вернуть. Убрать лишнюю в архив или перейти на тариф больше\n- `effort_not_in_plan` (402) — поле effort в чате на тарифе без выбора усилия (max_effort тарифа null, например бесплатный): ход не начат. Прислать вопрос без effort или оформить платный тариф\n- `model_not_in_plan` (402) — модель сильнее потолка тарифа (plans.model_ceiling): вызов не сделан; более сильные модели — на платных тарифах\n- `missing_permission` (403) — не хватает права в компании (или у ключа API); какого — в поле permission\n- `login_method_not_allowed` (403) — организация пускает к своим данным только после входа другим способом; какими — в allowed_methods. Предложить выйти и войти так\n- `ip_not_allowed` (403) — ключ API не принимает запросы с этого адреса — поправить allowed_ips ключа (PATCH …/api-keys/{id}) или вызывать с разрешённого адреса\n- `key_write_limit` (403) — запись в 1С по ключу API — сверх его пределов (сумма на документ или в день, виды документов) или правило автоодобрения шире пределов ключа; в сообщении — что и на сколько\n- `human_only` (403) — это решение принимает только человек в кабинете Tungo, не ключ API: например, отклонить «не знаем, записан ли» на снимке базы без проверки 1С (confirm_unknown_write)\n- `autonomy_raise_requires_session` (403) — поднять уровень доверия ИИ или потолки компании можно только владельцу или админу организации из кабинета; ключом API — только понизить\n- `id_path_required` (400) — для автоодобрения по хуку задайте хуку id_path — путь к номеру операции в теле события: без него повтор доставки нельзя отличить от новой операции\n- `directbank_rule_exists` (400) — у компании уже есть сценарий с правилом для выписки DirectBank — правило выписки одно на компанию\n- `event_not_found` (404) — события нет в этой компании или оно удалено по сроку хранения — для пробного прогона выберите событие посвежее\n- `event_body_unavailable` (409) — тело события зашифровано, а ключ шифрования на сервере сменился — прогнать сценарий на нём нельзя\n- `scenario_steps_required` (409) — у сценария цепочка шагов, а в замене (PUT) нет ни steps, ни output: передайте steps явно, иначе замена молча убрала бы цепочку\n- `scenario_output_required` (409) — у сценария форма итога, а в замене (PUT) нет ни steps, ни output: передайте output явно (null — снять форму)\n- `automation_queue_full` (429) — у компании слишком много запусков в очереди: повторите позже (событие хука отправитель повторит сам)\n- `restarting` (503) — сервис перезапускается: новый ход не начат — повторите через Retry-After\n- `company_suspended` (403) — работа с компанией приостановлена (решение платформы или оплаты); карточка видна, работать, править и архивировать нельзя (архив — 409 с тем же code)\n- `company_archived` (403) — компания в архиве: карточка видна, работать с ней нельзя. Вернуть — POST /v1/companies/{company_id}/unarchive (владелец компании или владелец/админ организации)\n- `workspace_blocked` (403) — организация заблокирована администратором платформы — только поддержка Tungo\n- `untrusted_origin` (403) — запрос пришёл не со страницы Tungo (защита от подделки запросов) — открыть кабинет по обычному адресу; для /admin/* — только со страниц ADMIN_ORIGINS\n- `cors_not_supported` (403) — вызов API из чужого браузерного кода (CORS) не поддерживается: ключ API — секрет сервера\n- `api_keys_disabled_by_policy` (403) — политика организации запрещает ключи API\n- `owner_role_reserved` (403) — владельца компании назначает, меняет и снимает только владелец или админ организации\n- `role_above_yours` (403) — у выдаваемой (или снимаемой) роли есть права, которых нет у вас; роль — в поле role, лишние права — в permissions\n- `not_key_creator` (403) — менять компании, права, срок и секрет ключа, снимать и поднимать его пределы записи в 1С может только тот, кто его выпустил (ужесточить пределы может любой админ)\n- `transfer_wider_than_target` (403) — передать ключ нельзя: у нового владельца нет нужного права (или доступа) в одной из компаний ключа\n- `invalid_allowed_ips` (400) — в allowed_ips ключа — не IP-адрес и не подсеть CIDR; какая запись — в сообщении\n- `transfer_target_not_admin` (400) — передать ключ можно только владельцу или админу этой организации\n- `platform_model_not_allowed` (403) — модель сильнее потолка платформы (настройка platform.billing): вызов не сделан и ничего не списано\n- `managed_by_sso` (403) — удаление аккаунта: аккаунт ведёт организация (SSO или SCIM) — удаляет её администратор; организации — в workspaces\n- `fresh_session_required` (403) — удаление аккаунта без почты (Telegram): нужен свежий вход — выйти, войти снова и подтвердить\n- `api_key_not_allowed` (403) — действие только из кабинета (сессия), не по ключу API: удаление аккаунта\n- `not_own_key` (403) — по ключу API виден только расход самого этого ключа\n- `webhooks_not_in_plan` (403) — вебхуков нет в тарифе организации\n- `admin_2fa_required` (403) — админ-API: у администратора платформы нет второго фактора или эта сессия не подтверждена кодом приложения-аутентификатора (POST /v1/auth/two-factor/enable, затем verify-totp)\n- `two_factor_required` (403) — отключить второй фактор, показать его секрет или выпустить резервные коды — только после кода из приложения-аутентификатора в этой сессии\n- `webhooks_require_all_companies` (403) — вебхуки — только ключу на все компании организации (при выпуске ключа — 400 с тем же code)\n- `audit_requires_all_companies` (403) — журнал организации — только ключу на все компании организации\n- `policy_blocked` (403) — одобрение: организация не доверяет ИИ записывать такой документ этим способом (поле level — уровень доверия); одобрить по одному или поднять уровень\n- `onec_read_only` (403) — одобрение: у пользователя 1С из подключения нет права записи — дать права в 1С\n- `validation_failed` (400) — тело или параметры запроса не прошли проверку: что не так с каждым полем — в fields (путь, код, текст по-русски). Подсветить поля формы; общий message — над формой\n- `invalid_json` (400) — тело запроса — не JSON-объект\n- `personal_workspace` (400) — в личной организации нет сотрудников, приглашений и политик — нужна организация Team или Enterprise\n- `api_key_required` (400) — адрес только для запроса по ключу API\n- `email_code_unavailable` (400) — удаление аккаунта: у аккаунта нет почты для кода (вход через Telegram) — подтверждать свежим входом, без кода\n- `deletion_code_invalid` (400) — удаление аккаунта: неверный код из письма; сколько попыток осталось — attempts_left\n- `deletion_code_expired` (400) — удаление аккаунта: код истёк, попытки кончились или код не запрашивался — запросить новый (POST /v1/me/deletion/code)\n- `unsafe_url` (400) — адрес вебхука недопустим (внутренняя сеть, не HTTPS)\n- `idempotency_key_invalid` (400) — Idempotency-Key неверного вида\n- `payload_too_large` (413) — тело запроса (или события хука) больше допустимого; пределы — настройки платформы\n- `idempotency_key_reused` (422) — этот Idempotency-Key уже был у другого запроса — для нового действия нужен новый ключ\n- `has_blockers` (422) — одобрение: у предложения есть блокеры — сначала исправить их\n- `batch_too_large` (413) — одобрение пачкой: предложений больше предела (поля limit, requested) — разбить на части\n- `unknown_kind` (400) — настройки писем: такого вида уведомлений нет — взять список из GET /v1/me/notifications\n- `kind_locked` (400) — настройки писем: этот вид (безопасность и аккаунт) выключить нельзя — переключатель неактивен (locked)\n- `onec_rejected` (400) — одобрение: 1С отклонила документ (причина — в message): исправить в 1С или построить предложение заново\n- `proposal_not_found` (404) — предложения с таким id нет в компании\n- `export_link_expired` (404) — ссылка на архив выгрузки истекла или неверна — получить новую: GET /v1/me/export\n- `batch_not_found` (404) — одобрение пачкой: задания с таким batch_id нет (или в нём нет предложений)\n- `idempotency_in_progress` (409) — первый запрос с этим Idempotency-Key ещё выполняется — подождать и повторить, придёт тот же ответ\n- `idempotency_response_not_kept` (409) — запрос с этим Idempotency-Key уже выполнен, но копия ответа не хранится (в нём персональные данные): результат — по ссылке в ответе (dialog_url) или в списке; статус первого ответа — original_status\n- `idempotency_response_too_large` (409) — запрос с этим Idempotency-Key уже выполнен, но ответ слишком большой, чтобы повторить его целиком: результат — в списке; статус первого ответа — original_status\n- `sole_owner` (409) — удаление аккаунта: вы единственный владелец организации с другими участниками (workspaces) — передать владение (POST /v1/workspaces/{ws}/ownership) или удалить организацию\n- `account_deletion_in_progress` (409) — удаление аккаунта: фон уже стирает аккаунт — новый код и подтверждение не принимаются, отменить нельзя\n- `wrong_status` (409) — предложение уже не в том состоянии (поле status — нынешнее): обновить его\n- `wrong_state` (409) — запуск автоматизации уже не в том состоянии (поле state — нынешнее)\n- `dialog_closed` (409) — разговор закрыт (поле reason — почему): начать новый\n- `dialog_id_taken` (409) — разговор с таким dialog_id уже есть — для нового прислать другой id или не присылать его\n- `turn_in_progress` (409) — в разговоре уже идёт ход ИИ (поле turn — его номер): дождаться его конца или остановить\n- `turn_superseded` (409) — читаемый ход уже закончился и идёт следующий (поле turn) — читать его с начала\n- `dialog_changed` (409) — разговор только что изменился в другом окне или на другом сервере Tungo — открыть его заново (GET …/chat/{id}) и повторить\n- `already_answered` (409) — на этот вопрос ИИ уже ответили (поле turn — ход с ответом)\n- `question_stale` (409) — вопрос ИИ устарел (в разговоре уже другой вопрос или его нет) — обновить разговор\n- `dismissed` (409) — вопрос ИИ закрыт без ответа — написать обычное сообщение\n- `job_running` (409) — задание (пачка) ещё идёт — дождаться отчёта; поле batch_id\n- `payload_changed` (409) — одобрение: документ изменился после превью — построить предложение заново\n- `onec_conflict` (409) — одобрение: 1С отказала из-за конфликта (объект занят или изменён) — повторить позже\n- `onec_not_found` (409) — одобрение: в 1С нет объекта, на который ссылается документ — построить предложение заново\n- `plan_limit_reached` (429) — лимит окна тарифа исчерпан; resets_at и Retry-After — когда обновится. Показать время; если в message предложено доп. использование — дать кнопку включить\n- `rate_limited` (429) — слишком часто (по ключу API, уведомления ePay с одного адреса, попытки кода второго фактора) — подождать Retry-After секунд\n- `concurrent_turns_limit` (429) — по ключу API уже идёт предельное число ходов ИИ одновременно — дождаться окончания\n- `api_keys_limit` (429) — в организации предельное число действующих ключей API — отозвать ненужные\n- `webhook_endpoints_limit` (429) — предельное число адресов вебхуков — удалить ненужные\n- `export_too_soon` (429) — выгрузку данных можно запрашивать не чаще раза в сутки: next_request_at и Retry-After — когда можно снова\n- `hook_rate_limited` (429) — приём событий хука: больше automations.hook_events_per_minute в минуту — повторить через Retry-After секунд\n- `lago_unavailable` (503) — админка, тариф целиком: Lago не настроен или не ответил (сеть, 5xx) — правила не изменены, повторить позже\n- `model_price_missing` (503) — у модели ИИ не задана цена — сбой настройки платформы, ничего не списано; повторить позже\n- `data_export_disabled` (503) — выгрузка данных на сервере не настроена (поддержка Tungo)\n- `webhooks_disabled` (503) — вебхуки на сервере не настроены\n- `webhooks_unavailable` (503) — служба доставки вебхуков временно недоступна\n- `model_not_configured` (503) — сервис модели ИИ не настроен на сервере — повторить позже (Retry-After)\n- `write_unknown` (503) — одобрение: исход записи в 1С неизвестен (связь оборвалась) — проверить документ в 1С по метке (поле marker); повтор безопасен (retry_safe); слишком ранний повтор в 1С не пишет — подождать retry_after секунд (Retry-After)\n- `onec_unavailable` (503) — 1С сейчас не отвечает — повторить позже (Retry-After)\n- `onec_check_busy` (503) — проверка связи 1С: сервер сейчас проверяет слишком много подключений — повторить через Retry-After секунд\n- `onec_failed` (503) — записать документ в 1С не удалось по неизвестной причине — повторить позже\n- `journal_unavailable` (503) — журнал решений недоступен — пачка не одобрена, повторить позже\n- `hook_secret_unavailable` (503) — приём событий хука: секрет подписи сейчас не открыть — отправителю повторить доставку позже\n- `secret_box_missing` (503) — на сервере не задан ключ шифрования настроек — секрет подписи хука сохранить нельзя (поддержка Tungo)\n- `not_personal` (409) — перевод в команду: организация уже не личная — обновить экран\n- `subscription_blocks_conversion` (409) — перевод в команду: действует подписка для одного человека — сначала отменить её и дождаться конца периода\n- `subscription_kind_mismatch` (409) — админка: действующая подписка оформлена на другой вид организации — вид не меняется, пока она идёт\n- `enterprise_features_active` (409) — админка: у организации подключены SSO или SCIM — сначала отключить, потом снимать Enterprise\n- `too_many_members_for_personal` (409) — админка: в личной организации один человек — сначала убрать остальных участников\n- `open_debt` (409) — есть неоплаченный счёт — сначала оплатить; в плане удаления этот же код лежит в blockers\n- `active_work` (409) — в организации идут ходы ИИ или автоматизации — дождаться окончания и повторить; в плане удаления этот же код лежит в blockers\n- `deletion_already_scheduled` (409) — удаление организации уже запланировано — показать дату из плана\n- `deletion_purging` (409) — очистка организации уже идёт — отменить её нельзя\n- `workspace_deleting` (409) — админка: организация удаляется по просьбе владельца — блок удаления снимает только отмена удаления\n- `invitation_not_pending` (409) — приглашение принято, отозвано или истекло — письмо не отправить, пригласить заново\n- `last_owner` (409) — это последний владелец организации — сначала передать владение другому участнику\n- `seats_by_contract` (409) — места Enterprise — по договору, карта и докупка не работают: обратиться к менеджеру\n- `no_subscription` (409) — нет действующей подписки — сначала оформить тариф\n- `not_per_seat` (409) — этот тариф не считает оплату за место — докупка не нужна, предел мест показан в ответе GET …/seats\n- `subscription_ended` (409) — возобновление: период отменённой подписки уже закончился — ничего не списано, оформить тариф заново (повторный PUT — обычное оформление)\n- `subscription_busy` (409) — подписка уже меняется другим запросом (отмена или возобновление) — обновить экран через несколько секунд\n- `subscription_ending` (409) — подписка отменена и закончится в конце периода — места не докупаются и не сокращаются\n- `seats_unpaid_debt` (409) — подписка просрочена — сначала оплатить счёт; участники остаются, новых приглашать нельзя\n- `idempotency_conflict` (409) — докупка: этот ключ уже использован с другим числом мест — для новой покупки нужен новый ключ\n- `seat_quote_changed` (409) — докупка: сумма изменилась (другой день или новая цена), деньги не списаны — показать новую сумму из поля и спросить снова\n- `no_paid_seats` (409) — оплаченных мест ещё нет — сокращать нечего\n- `seats_below_occupied` (409) — занято больше мест, чем просите оставить — сначала убрать участников или отозвать приглашения\n- `not_enterprise` (409) — админка: места по договору есть только у Enterprise — сначала поставить вид\n- `per_seat_plan_change` (409) — смена тарифа с оплатой за место не делается сразу: Lago взял бы плату за места дважды. Отменить и оформить новый с конца периода\n- `confirm_name_mismatch` (400) — удаление организации: название введено неверно — ввести точно как в плане удаления\n- `below_min_seats` (400) — на этом тарифе мест меньше нельзя: минимум — min_seats тарифа\n- `seats_over_max` (400) — мест больше предела одной организации (team.limits.max_seats) — обратиться в поддержку\n- `seats_above_paid` (400) — PUT …/seats только сокращает; новые места — через POST …/seats с оплатой\n- `onec_check_running` (429) — проверка связи 1С уже идёт у этой компании, у вас (другая компания) или у двух других компаний организации — дождаться её итога и повторить (Retry-After)\n- `invitation_resend_too_soon` (429) — письмо с приглашением уже отправлено только что — подождать Retry-After секунд\n- `seats_exhausted` (429) — свободные места закончились: докупите места или освободите их, отозвав приглашение\n- `seat_price_unknown` (503) — цена места сейчас неизвестна (тариф не прочитан или настроен неверно), деньги не списаны — повторить позже\n- `otp_mail_failed` (503) — письмо с кодом входа не отправлено: попробуйте позже\n- `seat_period_unknown` (503) — не удалось сверить период подписки с биллингом: деньги не списаны, попробуйте позже\n\nНезнакомый code — вести себя по type.","example":"balance_exhausted","uniqueKey":"error.code","typeLabel":"string"},"permission":{"type":"string","description":"При code = missing_permission — какого права не хватает: права в компании (company.read, company.manage, company.members.manage, onec.connect, proposals.create, proposals.approve, chat.use, audit.read, automations.manage) или права только ключа API (automations.read, webhooks.manage). Показать «нужно право …» и предложить попросить админа (или выпустить ключ с этим правом).","example":"proposals.approve","uniqueKey":"error.permission","typeLabel":"string"},"resets_at":{"type":"string","format":"date-time","description":"Когда ограничение снимется само — ISO 8601, UTC. Есть у plan_limit_reached (конец окна тарифа) и у месячных потолков (workspace_cap_reached, company_cap_reached, member_cap_reached, key_cap_reached, platform_cap_reached — 1-е число, 00:00 по Алматы). Показать в местном времени: «Лимит обновится в 14:30». Нет поля — само не пройдёт.","example":"2026-11-01T19:00:00.000Z","uniqueKey":"error.resets_at","typeLabel":"string\u003cdate-time>"},"allowed_methods":{"type":"array","items":{"type":"string","enum":["email_otp","google","apple","telegram","sso"],"uniqueKey":"error.allowed_methods.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"При code = login_method_not_allowed — какими способами входа организация пускает к своим данным: email_otp — код из почты, google, apple, telegram, sso — SSO организации. Предложить выйти и войти одним из них.","uniqueKey":"error.allowed_methods","typeLabel":"enum\u003cstring>[]"},"role":{"type":"string","description":"При code = role_above_yours — ключ роли в компании, которую нельзя выдать или снять (например chief_accountant).","uniqueKey":"error.role","typeLabel":"string"},"permissions":{"type":"array","items":{"type":"string","uniqueKey":"error.permissions.items.[INDEX]","typeLabel":"string"},"description":"При code = role_above_yours — права этой роли, которых нет у того, кто выдаёт. Показать списком: «у роли есть права, которых нет у вас: …».","uniqueKey":"error.permissions","typeLabel":"string[]"},"fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string","description":"Путь к полю через точку, как в теле запроса или имени параметра: `name`, `lines.0.amount`. Пустая строка — всё тело (не объект, лишние поля).","example":"bin","isRequired":true,"uniqueKey":"error.fields.items.[INDEX].path","typeLabel":"string"},"code":{"type":"string","enum":["invalid_type","too_small","too_big","invalid_format","invalid_value","not_multiple_of","unrecognized_keys","invalid_union","invalid_key","invalid_element","custom"],"description":"Что не так: invalid_type — не тот тип или поле не передано; too_small / too_big — короче/меньше или длиннее/больше допустимого; invalid_format — неверный вид (почта, дата, шаблон); invalid_value — значения нет среди допустимых; not_multiple_of — не кратно; unrecognized_keys — лишние поля; invalid_union — не подходит ни один вид; invalid_key / invalid_element — неверный ключ или элемент; custom — своё правило ручки","example":"invalid_format","isRequired":true,"uniqueKey":"error.fields.items.[INDEX].code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Текст для человека по-русски — показать под полем","example":"БИН/ИИН — 12 цифр","isRequired":true,"uniqueKey":"error.fields.items.[INDEX].message","typeLabel":"string"}},"required":["path","code","message"],"description":"Ошибка одного поля запроса","uniqueKey":"error.fields.items.[INDEX]","typeLabel":"object"},"description":"При code = validation_failed — ошибки по полям, в порядке проверки; у одного поля может быть несколько.","uniqueKey":"error.fields","typeLabel":"object[]"}},"required":["type","message"],"additionalProperties":{"oneOf":[{}],"uniqueKey":"error.additionalProperties","typeLabel":"any"},"description":"Что пошло не так. Все 503 — с заголовком Retry-After (через сколько секунд повторить). Кроме описанных, у отдельных ручек бывают свои поля рядом с code (например status у wrong_status, state у wrong_state, reason у dialog_closed) — они описаны у этих ручек.","isRequired":true,"uniqueKey":"error","typeLabel":"object"},"request_id":{"oneOf":[{"type":"string","description":"Номер запроса (тот же, что в заголовке x-request-id). Показывать мелко рядом с ошибкой с кнопкой «скопировать»: по нему поддержка находит запрос в журнале. null — номер не успел появиться (очень ранний отказ).","example":"req_4f9c2a7e1b3d4c5a8e6f7a9b0c1d2e3f","isRequired":true,"uniqueKey":"request_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"Номер запроса (тот же, что в заголовке x-request-id). Показывать мелко рядом с ошибкой с кнопкой «скопировать»: по нему поддержка находит запрос в журнале. null — номер не успел появиться (очень ранний отказ).","example":"req_4f9c2a7e1b3d4c5a8e6f7a9b0c1d2e3f","isRequired":true,"uniqueKey":"request_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"request_id","typeLabel":"string | null"}},"required":["type","error","request_id"],"description":"Тело любой ошибки API (статусы 4xx и 5xx): `{\"type\":\"error\",\"error\":{\"type\":\"…\",\"code\":\"…\",\"message\":\"…\"},\"request_id\":\"…\"}`. Интерфейс ветвится по error.type и error.code, человеку показывает error.message и request_id.","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"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":"\u003cstring>","permissions":["\u003cstring>"],"fields":[{"path":"bin","code":"invalid_format","message":"БИН/ИИН — 12 цифр"}]},"request_id":"req_4f9c2a7e1b3d4c5a8e6f7a9b0c1d2e3f"}}},"exampleType":"generated"}},"headers":{"x-request-id":{"description":"Номер запроса (тот же, что request_id в теле ошибки) — назвать в обращении в поддержку. Его всегда создаёт сервер: присланный клиентом x-request-id номером не становится","schema":{"type":"string","example":"req_3f2a9c0d1e4b4c5d8e7f6a5b4c3d2e1f"}},"x-ratelimit-limit":{"description":"Только при входе по ключу API: сколько запросов можно в текущем окне — самый тесный предел из ключа и организации","schema":{"type":"integer"}},"x-ratelimit-remaining":{"description":"Только при входе по ключу API: сколько запросов осталось по этому пределу в текущем окне","schema":{"type":"integer"}},"x-ratelimit-reset":{"description":"Только при входе по ключу API: секунд до нового окна этого предела","schema":{"type":"integer"}}},"exampleType":"generated"},"f81af3e4-4a65-48d4-9a80-92bfcc0532fb":{"description":"Нужны деньги или решение админа (подписка, баланс, потолок, оплата подключения компании) — действие по error.code (error.type: payment_required_error)","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","enum":["error"],"description":"Всегда «error»: так тело ошибки отличается от обычного ответа.","isRequired":true,"uniqueKey":"type","typeLabel":"enum\u003cstring>"},"error":{"type":"object","properties":{"type":{"type":"string","enum":["invalid_request_error","authentication_error","payment_required_error","permission_error","not_found_error","conflict_error","gone_error","limit_error","api_error","unavailable_error"],"description":"Вид ошибки — по нему ветвится клиент (не по тексту message). Статус HTTP у вида один, кроме invalid_request_error:\n- `invalid_request_error` (400) — запрос неверен: поле не прошло проверку, неверный формат, действие сейчас недопустимо. Показать message рядом с формой; повтор без исправления не поможет. Обычно 400; 413 и 422 — у кодов, где это сказано в списке code.\n- `authentication_error` (401) — нет входа: сессия закончилась, cookie нет, ключ API неверен, отозван или истёк. Кабинет — отправить на страницу входа; по ключу — проверить ключ (см. code).\n- `payment_required_error` (402) — нужны деньги или решение владельца/админа организации: ждать бесполезно. Показать message и кнопку действия по code (оформить тариф, пополнить баланс, поднять потолок); без code — не оплачено подключение компании.\n- `permission_error` (403) — нельзя: не хватает права или роли, организация заблокирована, вход не тем способом. Показать message (в нём сказано, к кому обратиться); детали — в code и полях рядом.\n- `not_found_error` (404) — нет такого объекта — или он чужой: чужие организации, компании и записи тоже отвечают 404, чтобы не раскрывать, что они есть. Показать «не найдено» и вернуть к списку.\n- `conflict_error` (409) — состояние не позволяет: уже сделано, уже идёт другое действие, версия устарела. Перечитать объект, обновить экран и показать message.\n- `gone_error` (410) — объекта больше нет: разговор не найден или истёк (вопрос в чате, ответ на вопрос ИИ, подсчёт токенов — начать новый разговор), ход потерян при перезапуске сервера, ссылка привязки программы устарела или уже использована (code connector_link_gone). Повторять незачем.\n- `limit_error` (429) — предел: частота запросов, окно тарифа, число объектов или мест. Если есть заголовок Retry-After или resets_at — пройдёт само, показать, когда; иначе нужно освободить место (удалить лишнее) или сменить тариф.\n- `api_error` (500) — сбой на нашей стороне. Показать message и request_id (для поддержки); повторить позже.\n- `unavailable_error` (503) — временно недоступно (внешний сервис, ИИ, настройка сервера). Повторить позже; если повторяется — сообщить request_id в поддержку.","example":"payment_required_error","isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Готовый текст для человека по-русски: что случилось, что делать и к кому обратиться. Показывать как есть; не разбирать — формулировки меняются.","example":"Баланс доп. использования закончился — пополнить его или включить автопополнение могут владелец и админ workspace.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"code":{"type":"string","description":"Уточнение вида: по нему выбирается действие интерфейса (кнопка «Пополнить», «Войти иначе»…). Нет поля — хватает type и message. Известные коды:\n- `sso_domain_taken` (409) — домен SSO уже подтверждён другой организацией\n- `sso_last_verified_domain` (409) — включён обязательный вход, а это последний подтверждённый домен — сначала выключить обязательный вход\n- `sso_login_required` (400) — включить обязательный вход можно только из сессии, открытой через SSO этой организации\n- `domain_verification_failed` (400) — запись DNS для домена не найдена или не совпала — проверить и повторить\n- `oidc_openid_scope_required` (400) — в scopes сервера входа OIDC нет openid — добавить её: без неё вход через SSO не пройдёт\n- `enterprise_only` (403) — возможность есть только на тарифе Enterprise\n- `groups_limit` (429) — достигнут предел групп в организации\n- `custom_roles_limit` (429) — достигнут предел своих ролей в организации\n- `group_managed_by_directory` (409) — группа из каталога: название и состав меняются только там\n- `group_member_not_in_workspace` (400) — в группу можно добавить только сотрудника этой организации\n- `role_above_ceiling` (400) — роль даёт права выше потолка организации\n- `unknown_model` (400) — такой модели нет — список в available_models\n- `price_required` (400) — админка, тариф целиком: у платного тарифа нужна цена (price)\n- `lago_rejected` (409) — админка, тариф целиком: Lago отказал по существу (4xx, текст Lago в message) — правила не изменены, повтор без правки не поможет\n- `price_mismatch` (400) — админка, тариф целиком: цена не сходится с правилами (место без per_seat, per_seat без цены места, цена у бесплатного)\n- `model_not_allowed` (403) — политика организации не разрешает эту модель, а подходящей разрешённой нет — админу дополнить список\n- `retention_too_short` (400) — срок хранения меньше наименьшего\n- `audit_export_range` (400) — неверный период выгрузки журнала: конец раньше начала или период слишком длинный\n- `compliance_disabled` (403) — адрес для проверок выключен — владелец включает его в настройке\n- `missing_credentials` (401) — нет ни cookie сессии, ни ключа API — войти или передать x-api-key\n- `link_revoked` (401) — вход в Tungo из 1С больше не действует (вышли, отключили на сайте, вошли в той же базе заново, компания или человек заблокированы) — 1С просит войти заново\n- `login_denied` (403) — вход из 1С отклонён на сайте Tungo — 1С показывает отказ\n- `code_expired` (410) — код входа из 1С устарел или уже использован — 1С просит новый код\n- `code_gone` (410) — код входа из 1С уже подтверждён, отклонён или устарел — на сайте подтверждать нечего\n- `invalid_api_key` (401) — ключ API неверен (опечатка или удалён)\n- `key_revoked` (401) — ключ API отозван (при правке ключа — 409 с тем же code: отозванный ключ не меняется)\n- `key_expired` (401) — срок ключа API истёк — сменить секрет (POST …/api-keys/{id}/roll: срок начнётся заново) или выпустить новый (при правке срока — 409 с тем же code: PATCH истёкший ключ не оживляет)\n- `key_disabled` (401) — ключ API выключен — включить может автор ключа или владелец организации (POST …/api-keys/{id}/enable)\n- `key_creator_lost_access` (401) — тот, кто выпустил ключ, больше не владелец/админ организации — ключ недействителен\n- `user_banned` (401) — вход в аккаунт закрыт администратором Tungo — только поддержка Tungo\n- `onboarding_unpaid` (402) — подключение компании к ИИ-бухгалтеру не оплачено (разовый платёж): владельцу/админу организации — «Оплатить» в настройках компании; остальным — сообщить им\n- `onboarding_pending` (402) — оплата подключения компании ещё проходит в банке — ИИ заработает после подтверждения; опрашивать состояние подключения\n- `no_active_plan` (402) — нет действующей подписки (не оформлена, закончилась, первая оплата не прошла или ждёт 3-D Secure). Владельцу/админу — кнопка в настройки оплаты; остальным — «обратитесь к владельцу организации». Что именно случилось — в message\n- `balance_exhausted` (402) — баланс доп. использования кончился. Владельцу/админу — «Пополнить баланс» или включить автопополнение; остальным — сообщить им\n- `workspace_cap_reached` (402) — достигнут месячный потолок доп. использования организации. resets_at — 1-е число следующего месяца, 00:00 по Алматы; раньше — если админ поднимет потолок\n- `report_busy` (429) — сейчас собирается много отчётов команды: повторить через время из Retry-After\n- `report_timeout` (503) — отчёт команды не успел собраться: сократить период или выбрать разбивку по месяцам\n- `company_cap_reached` (402) — достигнут месячный потолок доп. использования компании. Письмо владельцу и админам уже отправлено. resets_at — 1-е число; раньше — если админ поднимет потолок (PUT /v1/workspaces/{ws}/team/company-caps/{co})\n- `member_cap_reached` (402) — достигнут личный месячный потолок доп. использования сотрудника. resets_at — 1-е число; раньше — если админ поднимет его потолок\n- `key_cap_reached` (402) — достигнут месячный потолок расхода ключа API (или остаток меньше оценки одного вызова). resets_at — 1-е число\n- `platform_balance_exhausted` (402) — баланс платформы пуст: вызов по ключу или автоматизация не сделаны. Пополнить — POST /v1/workspaces/{ws}/platform/purchases или автопополнением\n- `platform_cap_reached` (402) — достигнут месячный потолок трат платформы. resets_at — 1-е число следующего месяца, 00:00 по Алматы; раньше — поднять потолок в PUT /v1/workspaces/{ws}/platform/account\n- `platform_disabled` (402) — платформа выключена в организации: вызовы по ключам и автоматизации остановлены. Включить — PUT /v1/workspaces/{ws}/platform/account\n- `free_plan_chat_only` (402) — бесплатный тариф: пачки из кабинета только на платных тарифах. Ключам API и автоматизациям тариф не нужен\n- `free_limit_unavailable` (402) — бесплатный лимит этой учётной записи не положен (проверка регистрации или решение администратора) — оформить тариф\n- `plan_company_limit` (402) — в организации уже столько компаний не в архиве, сколько разрешает тариф (max_companies в GET /v1/plans; limit и plan_code — в ответе): новую не завести и из архива не вернуть. Убрать лишнюю в архив или перейти на тариф больше\n- `effort_not_in_plan` (402) — поле effort в чате на тарифе без выбора усилия (max_effort тарифа null, например бесплатный): ход не начат. Прислать вопрос без effort или оформить платный тариф\n- `model_not_in_plan` (402) — модель сильнее потолка тарифа (plans.model_ceiling): вызов не сделан; более сильные модели — на платных тарифах\n- `missing_permission` (403) — не хватает права в компании (или у ключа API); какого — в поле permission\n- `login_method_not_allowed` (403) — организация пускает к своим данным только после входа другим способом; какими — в allowed_methods. Предложить выйти и войти так\n- `ip_not_allowed` (403) — ключ API не принимает запросы с этого адреса — поправить allowed_ips ключа (PATCH …/api-keys/{id}) или вызывать с разрешённого адреса\n- `key_write_limit` (403) — запись в 1С по ключу API — сверх его пределов (сумма на документ или в день, виды документов) или правило автоодобрения шире пределов ключа; в сообщении — что и на сколько\n- `human_only` (403) — это решение принимает только человек в кабинете Tungo, не ключ API: например, отклонить «не знаем, записан ли» на снимке базы без проверки 1С (confirm_unknown_write)\n- `autonomy_raise_requires_session` (403) — поднять уровень доверия ИИ или потолки компании можно только владельцу или админу организации из кабинета; ключом API — только понизить\n- `id_path_required` (400) — для автоодобрения по хуку задайте хуку id_path — путь к номеру операции в теле события: без него повтор доставки нельзя отличить от новой операции\n- `directbank_rule_exists` (400) — у компании уже есть сценарий с правилом для выписки DirectBank — правило выписки одно на компанию\n- `event_not_found` (404) — события нет в этой компании или оно удалено по сроку хранения — для пробного прогона выберите событие посвежее\n- `event_body_unavailable` (409) — тело события зашифровано, а ключ шифрования на сервере сменился — прогнать сценарий на нём нельзя\n- `scenario_steps_required` (409) — у сценария цепочка шагов, а в замене (PUT) нет ни steps, ни output: передайте steps явно, иначе замена молча убрала бы цепочку\n- `scenario_output_required` (409) — у сценария форма итога, а в замене (PUT) нет ни steps, ни output: передайте output явно (null — снять форму)\n- `automation_queue_full` (429) — у компании слишком много запусков в очереди: повторите позже (событие хука отправитель повторит сам)\n- `restarting` (503) — сервис перезапускается: новый ход не начат — повторите через Retry-After\n- `company_suspended` (403) — работа с компанией приостановлена (решение платформы или оплаты); карточка видна, работать, править и архивировать нельзя (архив — 409 с тем же code)\n- `company_archived` (403) — компания в архиве: карточка видна, работать с ней нельзя. Вернуть — POST /v1/companies/{company_id}/unarchive (владелец компании или владелец/админ организации)\n- `workspace_blocked` (403) — организация заблокирована администратором платформы — только поддержка Tungo\n- `untrusted_origin` (403) — запрос пришёл не со страницы Tungo (защита от подделки запросов) — открыть кабинет по обычному адресу; для /admin/* — только со страниц ADMIN_ORIGINS\n- `cors_not_supported` (403) — вызов API из чужого браузерного кода (CORS) не поддерживается: ключ API — секрет сервера\n- `api_keys_disabled_by_policy` (403) — политика организации запрещает ключи API\n- `owner_role_reserved` (403) — владельца компании назначает, меняет и снимает только владелец или админ организации\n- `role_above_yours` (403) — у выдаваемой (или снимаемой) роли есть права, которых нет у вас; роль — в поле role, лишние права — в permissions\n- `not_key_creator` (403) — менять компании, права, срок и секрет ключа, снимать и поднимать его пределы записи в 1С может только тот, кто его выпустил (ужесточить пределы может любой админ)\n- `transfer_wider_than_target` (403) — передать ключ нельзя: у нового владельца нет нужного права (или доступа) в одной из компаний ключа\n- `invalid_allowed_ips` (400) — в allowed_ips ключа — не IP-адрес и не подсеть CIDR; какая запись — в сообщении\n- `transfer_target_not_admin` (400) — передать ключ можно только владельцу или админу этой организации\n- `platform_model_not_allowed` (403) — модель сильнее потолка платформы (настройка platform.billing): вызов не сделан и ничего не списано\n- `managed_by_sso` (403) — удаление аккаунта: аккаунт ведёт организация (SSO или SCIM) — удаляет её администратор; организации — в workspaces\n- `fresh_session_required` (403) — удаление аккаунта без почты (Telegram): нужен свежий вход — выйти, войти снова и подтвердить\n- `api_key_not_allowed` (403) — действие только из кабинета (сессия), не по ключу API: удаление аккаунта\n- `not_own_key` (403) — по ключу API виден только расход самого этого ключа\n- `webhooks_not_in_plan` (403) — вебхуков нет в тарифе организации\n- `admin_2fa_required` (403) — админ-API: у администратора платформы нет второго фактора или эта сессия не подтверждена кодом приложения-аутентификатора (POST /v1/auth/two-factor/enable, затем verify-totp)\n- `two_factor_required` (403) — отключить второй фактор, показать его секрет или выпустить резервные коды — только после кода из приложения-аутентификатора в этой сессии\n- `webhooks_require_all_companies` (403) — вебхуки — только ключу на все компании организации (при выпуске ключа — 400 с тем же code)\n- `audit_requires_all_companies` (403) — журнал организации — только ключу на все компании организации\n- `policy_blocked` (403) — одобрение: организация не доверяет ИИ записывать такой документ этим способом (поле level — уровень доверия); одобрить по одному или поднять уровень\n- `onec_read_only` (403) — одобрение: у пользователя 1С из подключения нет права записи — дать права в 1С\n- `validation_failed` (400) — тело или параметры запроса не прошли проверку: что не так с каждым полем — в fields (путь, код, текст по-русски). Подсветить поля формы; общий message — над формой\n- `invalid_json` (400) — тело запроса — не JSON-объект\n- `personal_workspace` (400) — в личной организации нет сотрудников, приглашений и политик — нужна организация Team или Enterprise\n- `api_key_required` (400) — адрес только для запроса по ключу API\n- `email_code_unavailable` (400) — удаление аккаунта: у аккаунта нет почты для кода (вход через Telegram) — подтверждать свежим входом, без кода\n- `deletion_code_invalid` (400) — удаление аккаунта: неверный код из письма; сколько попыток осталось — attempts_left\n- `deletion_code_expired` (400) — удаление аккаунта: код истёк, попытки кончились или код не запрашивался — запросить новый (POST /v1/me/deletion/code)\n- `unsafe_url` (400) — адрес вебхука недопустим (внутренняя сеть, не HTTPS)\n- `idempotency_key_invalid` (400) — Idempotency-Key неверного вида\n- `payload_too_large` (413) — тело запроса (или события хука) больше допустимого; пределы — настройки платформы\n- `idempotency_key_reused` (422) — этот Idempotency-Key уже был у другого запроса — для нового действия нужен новый ключ\n- `has_blockers` (422) — одобрение: у предложения есть блокеры — сначала исправить их\n- `batch_too_large` (413) — одобрение пачкой: предложений больше предела (поля limit, requested) — разбить на части\n- `unknown_kind` (400) — настройки писем: такого вида уведомлений нет — взять список из GET /v1/me/notifications\n- `kind_locked` (400) — настройки писем: этот вид (безопасность и аккаунт) выключить нельзя — переключатель неактивен (locked)\n- `onec_rejected` (400) — одобрение: 1С отклонила документ (причина — в message): исправить в 1С или построить предложение заново\n- `proposal_not_found` (404) — предложения с таким id нет в компании\n- `export_link_expired` (404) — ссылка на архив выгрузки истекла или неверна — получить новую: GET /v1/me/export\n- `batch_not_found` (404) — одобрение пачкой: задания с таким batch_id нет (или в нём нет предложений)\n- `idempotency_in_progress` (409) — первый запрос с этим Idempotency-Key ещё выполняется — подождать и повторить, придёт тот же ответ\n- `idempotency_response_not_kept` (409) — запрос с этим Idempotency-Key уже выполнен, но копия ответа не хранится (в нём персональные данные): результат — по ссылке в ответе (dialog_url) или в списке; статус первого ответа — original_status\n- `idempotency_response_too_large` (409) — запрос с этим Idempotency-Key уже выполнен, но ответ слишком большой, чтобы повторить его целиком: результат — в списке; статус первого ответа — original_status\n- `sole_owner` (409) — удаление аккаунта: вы единственный владелец организации с другими участниками (workspaces) — передать владение (POST /v1/workspaces/{ws}/ownership) или удалить организацию\n- `account_deletion_in_progress` (409) — удаление аккаунта: фон уже стирает аккаунт — новый код и подтверждение не принимаются, отменить нельзя\n- `wrong_status` (409) — предложение уже не в том состоянии (поле status — нынешнее): обновить его\n- `wrong_state` (409) — запуск автоматизации уже не в том состоянии (поле state — нынешнее)\n- `dialog_closed` (409) — разговор закрыт (поле reason — почему): начать новый\n- `dialog_id_taken` (409) — разговор с таким dialog_id уже есть — для нового прислать другой id или не присылать его\n- `turn_in_progress` (409) — в разговоре уже идёт ход ИИ (поле turn — его номер): дождаться его конца или остановить\n- `turn_superseded` (409) — читаемый ход уже закончился и идёт следующий (поле turn) — читать его с начала\n- `dialog_changed` (409) — разговор только что изменился в другом окне или на другом сервере Tungo — открыть его заново (GET …/chat/{id}) и повторить\n- `already_answered` (409) — на этот вопрос ИИ уже ответили (поле turn — ход с ответом)\n- `question_stale` (409) — вопрос ИИ устарел (в разговоре уже другой вопрос или его нет) — обновить разговор\n- `dismissed` (409) — вопрос ИИ закрыт без ответа — написать обычное сообщение\n- `job_running` (409) — задание (пачка) ещё идёт — дождаться отчёта; поле batch_id\n- `payload_changed` (409) — одобрение: документ изменился после превью — построить предложение заново\n- `onec_conflict` (409) — одобрение: 1С отказала из-за конфликта (объект занят или изменён) — повторить позже\n- `onec_not_found` (409) — одобрение: в 1С нет объекта, на который ссылается документ — построить предложение заново\n- `plan_limit_reached` (429) — лимит окна тарифа исчерпан; resets_at и Retry-After — когда обновится. Показать время; если в message предложено доп. использование — дать кнопку включить\n- `rate_limited` (429) — слишком часто (по ключу API, уведомления ePay с одного адреса, попытки кода второго фактора) — подождать Retry-After секунд\n- `concurrent_turns_limit` (429) — по ключу API уже идёт предельное число ходов ИИ одновременно — дождаться окончания\n- `api_keys_limit` (429) — в организации предельное число действующих ключей API — отозвать ненужные\n- `webhook_endpoints_limit` (429) — предельное число адресов вебхуков — удалить ненужные\n- `export_too_soon` (429) — выгрузку данных можно запрашивать не чаще раза в сутки: next_request_at и Retry-After — когда можно снова\n- `hook_rate_limited` (429) — приём событий хука: больше automations.hook_events_per_minute в минуту — повторить через Retry-After секунд\n- `lago_unavailable` (503) — админка, тариф целиком: Lago не настроен или не ответил (сеть, 5xx) — правила не изменены, повторить позже\n- `model_price_missing` (503) — у модели ИИ не задана цена — сбой настройки платформы, ничего не списано; повторить позже\n- `data_export_disabled` (503) — выгрузка данных на сервере не настроена (поддержка Tungo)\n- `webhooks_disabled` (503) — вебхуки на сервере не настроены\n- `webhooks_unavailable` (503) — служба доставки вебхуков временно недоступна\n- `model_not_configured` (503) — сервис модели ИИ не настроен на сервере — повторить позже (Retry-After)\n- `write_unknown` (503) — одобрение: исход записи в 1С неизвестен (связь оборвалась) — проверить документ в 1С по метке (поле marker); повтор безопасен (retry_safe); слишком ранний повтор в 1С не пишет — подождать retry_after секунд (Retry-After)\n- `onec_unavailable` (503) — 1С сейчас не отвечает — повторить позже (Retry-After)\n- `onec_check_busy` (503) — проверка связи 1С: сервер сейчас проверяет слишком много подключений — повторить через Retry-After секунд\n- `onec_failed` (503) — записать документ в 1С не удалось по неизвестной причине — повторить позже\n- `journal_unavailable` (503) — журнал решений недоступен — пачка не одобрена, повторить позже\n- `hook_secret_unavailable` (503) — приём событий хука: секрет подписи сейчас не открыть — отправителю повторить доставку позже\n- `secret_box_missing` (503) — на сервере не задан ключ шифрования настроек — секрет подписи хука сохранить нельзя (поддержка Tungo)\n- `not_personal` (409) — перевод в команду: организация уже не личная — обновить экран\n- `subscription_blocks_conversion` (409) — перевод в команду: действует подписка для одного человека — сначала отменить её и дождаться конца периода\n- `subscription_kind_mismatch` (409) — админка: действующая подписка оформлена на другой вид организации — вид не меняется, пока она идёт\n- `enterprise_features_active` (409) — админка: у организации подключены SSO или SCIM — сначала отключить, потом снимать Enterprise\n- `too_many_members_for_personal` (409) — админка: в личной организации один человек — сначала убрать остальных участников\n- `open_debt` (409) — есть неоплаченный счёт — сначала оплатить; в плане удаления этот же код лежит в blockers\n- `active_work` (409) — в организации идут ходы ИИ или автоматизации — дождаться окончания и повторить; в плане удаления этот же код лежит в blockers\n- `deletion_already_scheduled` (409) — удаление организации уже запланировано — показать дату из плана\n- `deletion_purging` (409) — очистка организации уже идёт — отменить её нельзя\n- `workspace_deleting` (409) — админка: организация удаляется по просьбе владельца — блок удаления снимает только отмена удаления\n- `invitation_not_pending` (409) — приглашение принято, отозвано или истекло — письмо не отправить, пригласить заново\n- `last_owner` (409) — это последний владелец организации — сначала передать владение другому участнику\n- `seats_by_contract` (409) — места Enterprise — по договору, карта и докупка не работают: обратиться к менеджеру\n- `no_subscription` (409) — нет действующей подписки — сначала оформить тариф\n- `not_per_seat` (409) — этот тариф не считает оплату за место — докупка не нужна, предел мест показан в ответе GET …/seats\n- `subscription_ended` (409) — возобновление: период отменённой подписки уже закончился — ничего не списано, оформить тариф заново (повторный PUT — обычное оформление)\n- `subscription_busy` (409) — подписка уже меняется другим запросом (отмена или возобновление) — обновить экран через несколько секунд\n- `subscription_ending` (409) — подписка отменена и закончится в конце периода — места не докупаются и не сокращаются\n- `seats_unpaid_debt` (409) — подписка просрочена — сначала оплатить счёт; участники остаются, новых приглашать нельзя\n- `idempotency_conflict` (409) — докупка: этот ключ уже использован с другим числом мест — для новой покупки нужен новый ключ\n- `seat_quote_changed` (409) — докупка: сумма изменилась (другой день или новая цена), деньги не списаны — показать новую сумму из поля и спросить снова\n- `no_paid_seats` (409) — оплаченных мест ещё нет — сокращать нечего\n- `seats_below_occupied` (409) — занято больше мест, чем просите оставить — сначала убрать участников или отозвать приглашения\n- `not_enterprise` (409) — админка: места по договору есть только у Enterprise — сначала поставить вид\n- `per_seat_plan_change` (409) — смена тарифа с оплатой за место не делается сразу: Lago взял бы плату за места дважды. Отменить и оформить новый с конца периода\n- `confirm_name_mismatch` (400) — удаление организации: название введено неверно — ввести точно как в плане удаления\n- `below_min_seats` (400) — на этом тарифе мест меньше нельзя: минимум — min_seats тарифа\n- `seats_over_max` (400) — мест больше предела одной организации (team.limits.max_seats) — обратиться в поддержку\n- `seats_above_paid` (400) — PUT …/seats только сокращает; новые места — через POST …/seats с оплатой\n- `onec_check_running` (429) — проверка связи 1С уже идёт у этой компании, у вас (другая компания) или у двух других компаний организации — дождаться её итога и повторить (Retry-After)\n- `invitation_resend_too_soon` (429) — письмо с приглашением уже отправлено только что — подождать Retry-After секунд\n- `seats_exhausted` (429) — свободные места закончились: докупите места или освободите их, отозвав приглашение\n- `seat_price_unknown` (503) — цена места сейчас неизвестна (тариф не прочитан или настроен неверно), деньги не списаны — повторить позже\n- `otp_mail_failed` (503) — письмо с кодом входа не отправлено: попробуйте позже\n- `seat_period_unknown` (503) — не удалось сверить период подписки с биллингом: деньги не списаны, попробуйте позже\n\nНезнакомый code — вести себя по type.","example":"balance_exhausted","uniqueKey":"error.code","typeLabel":"string"},"permission":{"type":"string","description":"При code = missing_permission — какого права не хватает: права в компании (company.read, company.manage, company.members.manage, onec.connect, proposals.create, proposals.approve, chat.use, audit.read, automations.manage) или права только ключа API (automations.read, webhooks.manage). Показать «нужно право …» и предложить попросить админа (или выпустить ключ с этим правом).","example":"proposals.approve","uniqueKey":"error.permission","typeLabel":"string"},"resets_at":{"type":"string","format":"date-time","description":"Когда ограничение снимется само — ISO 8601, UTC. Есть у plan_limit_reached (конец окна тарифа) и у месячных потолков (workspace_cap_reached, company_cap_reached, member_cap_reached, key_cap_reached, platform_cap_reached — 1-е число, 00:00 по Алматы). Показать в местном времени: «Лимит обновится в 14:30». Нет поля — само не пройдёт.","example":"2026-11-01T19:00:00.000Z","uniqueKey":"error.resets_at","typeLabel":"string\u003cdate-time>"},"allowed_methods":{"type":"array","items":{"type":"string","enum":["email_otp","google","apple","telegram","sso"],"uniqueKey":"error.allowed_methods.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"При code = login_method_not_allowed — какими способами входа организация пускает к своим данным: email_otp — код из почты, google, apple, telegram, sso — SSO организации. Предложить выйти и войти одним из них.","uniqueKey":"error.allowed_methods","typeLabel":"enum\u003cstring>[]"},"role":{"type":"string","description":"При code = role_above_yours — ключ роли в компании, которую нельзя выдать или снять (например chief_accountant).","uniqueKey":"error.role","typeLabel":"string"},"permissions":{"type":"array","items":{"type":"string","uniqueKey":"error.permissions.items.[INDEX]","typeLabel":"string"},"description":"При code = role_above_yours — права этой роли, которых нет у того, кто выдаёт. Показать списком: «у роли есть права, которых нет у вас: …».","uniqueKey":"error.permissions","typeLabel":"string[]"},"fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string","description":"Путь к полю через точку, как в теле запроса или имени параметра: `name`, `lines.0.amount`. Пустая строка — всё тело (не объект, лишние поля).","example":"bin","isRequired":true,"uniqueKey":"error.fields.items.[INDEX].path","typeLabel":"string"},"code":{"type":"string","enum":["invalid_type","too_small","too_big","invalid_format","invalid_value","not_multiple_of","unrecognized_keys","invalid_union","invalid_key","invalid_element","custom"],"description":"Что не так: invalid_type — не тот тип или поле не передано; too_small / too_big — короче/меньше или длиннее/больше допустимого; invalid_format — неверный вид (почта, дата, шаблон); invalid_value — значения нет среди допустимых; not_multiple_of — не кратно; unrecognized_keys — лишние поля; invalid_union — не подходит ни один вид; invalid_key / invalid_element — неверный ключ или элемент; custom — своё правило ручки","example":"invalid_format","isRequired":true,"uniqueKey":"error.fields.items.[INDEX].code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Текст для человека по-русски — показать под полем","example":"БИН/ИИН — 12 цифр","isRequired":true,"uniqueKey":"error.fields.items.[INDEX].message","typeLabel":"string"}},"required":["path","code","message"],"description":"Ошибка одного поля запроса","uniqueKey":"error.fields.items.[INDEX]","typeLabel":"object"},"description":"При code = validation_failed — ошибки по полям, в порядке проверки; у одного поля может быть несколько.","uniqueKey":"error.fields","typeLabel":"object[]"}},"required":["type","message"],"additionalProperties":{"oneOf":[{}],"uniqueKey":"error.additionalProperties","typeLabel":"any"},"description":"Что пошло не так. Все 503 — с заголовком Retry-After (через сколько секунд повторить). Кроме описанных, у отдельных ручек бывают свои поля рядом с code (например status у wrong_status, state у wrong_state, reason у dialog_closed) — они описаны у этих ручек.","isRequired":true,"uniqueKey":"error","typeLabel":"object"},"request_id":{"oneOf":[{"type":"string","description":"Номер запроса (тот же, что в заголовке x-request-id). Показывать мелко рядом с ошибкой с кнопкой «скопировать»: по нему поддержка находит запрос в журнале. null — номер не успел появиться (очень ранний отказ).","example":"req_4f9c2a7e1b3d4c5a8e6f7a9b0c1d2e3f","isRequired":true,"uniqueKey":"request_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"Номер запроса (тот же, что в заголовке x-request-id). Показывать мелко рядом с ошибкой с кнопкой «скопировать»: по нему поддержка находит запрос в журнале. null — номер не успел появиться (очень ранний отказ).","example":"req_4f9c2a7e1b3d4c5a8e6f7a9b0c1d2e3f","isRequired":true,"uniqueKey":"request_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"request_id","typeLabel":"string | null"}},"required":["type","error","request_id"],"description":"Тело любой ошибки API (статусы 4xx и 5xx): `{\"type\":\"error\",\"error\":{\"type\":\"…\",\"code\":\"…\",\"message\":\"…\"},\"request_id\":\"…\"}`. Интерфейс ветвится по error.type и error.code, человеку показывает error.message и request_id.","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"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":"\u003cstring>","permissions":["\u003cstring>"],"fields":[{"path":"bin","code":"invalid_format","message":"БИН/ИИН — 12 цифр"}]},"request_id":"req_4f9c2a7e1b3d4c5a8e6f7a9b0c1d2e3f"}}},"exampleType":"generated"}},"headers":{"x-request-id":{"description":"Номер запроса (тот же, что request_id в теле ошибки) — назвать в обращении в поддержку. Его всегда создаёт сервер: присланный клиентом x-request-id номером не становится","schema":{"type":"string","example":"req_3f2a9c0d1e4b4c5d8e7f6a5b4c3d2e1f"}},"x-ratelimit-limit":{"description":"Только при входе по ключу API: сколько запросов можно в текущем окне — самый тесный предел из ключа и организации","schema":{"type":"integer"}},"x-ratelimit-remaining":{"description":"Только при входе по ключу API: сколько запросов осталось по этому пределу в текущем окне","schema":{"type":"integer"}},"x-ratelimit-reset":{"description":"Только при входе по ключу API: секунд до нового окна этого предела","schema":{"type":"integer"}}},"exampleType":"generated"},"36b10de0-1bba-4892-87a9-041d8ff9ca51":{"description":"Нельзя: нет права или роли, организация заблокирована, вход не тем способом — показать error.message (error.type: permission_error)","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","enum":["error"],"description":"Всегда «error»: так тело ошибки отличается от обычного ответа.","isRequired":true,"uniqueKey":"type","typeLabel":"enum\u003cstring>"},"error":{"type":"object","properties":{"type":{"type":"string","enum":["invalid_request_error","authentication_error","payment_required_error","permission_error","not_found_error","conflict_error","gone_error","limit_error","api_error","unavailable_error"],"description":"Вид ошибки — по нему ветвится клиент (не по тексту message). Статус HTTP у вида один, кроме invalid_request_error:\n- `invalid_request_error` (400) — запрос неверен: поле не прошло проверку, неверный формат, действие сейчас недопустимо. Показать message рядом с формой; повтор без исправления не поможет. Обычно 400; 413 и 422 — у кодов, где это сказано в списке code.\n- `authentication_error` (401) — нет входа: сессия закончилась, cookie нет, ключ API неверен, отозван или истёк. Кабинет — отправить на страницу входа; по ключу — проверить ключ (см. code).\n- `payment_required_error` (402) — нужны деньги или решение владельца/админа организации: ждать бесполезно. Показать message и кнопку действия по code (оформить тариф, пополнить баланс, поднять потолок); без code — не оплачено подключение компании.\n- `permission_error` (403) — нельзя: не хватает права или роли, организация заблокирована, вход не тем способом. Показать message (в нём сказано, к кому обратиться); детали — в code и полях рядом.\n- `not_found_error` (404) — нет такого объекта — или он чужой: чужие организации, компании и записи тоже отвечают 404, чтобы не раскрывать, что они есть. Показать «не найдено» и вернуть к списку.\n- `conflict_error` (409) — состояние не позволяет: уже сделано, уже идёт другое действие, версия устарела. Перечитать объект, обновить экран и показать message.\n- `gone_error` (410) — объекта больше нет: разговор не найден или истёк (вопрос в чате, ответ на вопрос ИИ, подсчёт токенов — начать новый разговор), ход потерян при перезапуске сервера, ссылка привязки программы устарела или уже использована (code connector_link_gone). Повторять незачем.\n- `limit_error` (429) — предел: частота запросов, окно тарифа, число объектов или мест. Если есть заголовок Retry-After или resets_at — пройдёт само, показать, когда; иначе нужно освободить место (удалить лишнее) или сменить тариф.\n- `api_error` (500) — сбой на нашей стороне. Показать message и request_id (для поддержки); повторить позже.\n- `unavailable_error` (503) — временно недоступно (внешний сервис, ИИ, настройка сервера). Повторить позже; если повторяется — сообщить request_id в поддержку.","example":"payment_required_error","isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Готовый текст для человека по-русски: что случилось, что делать и к кому обратиться. Показывать как есть; не разбирать — формулировки меняются.","example":"Баланс доп. использования закончился — пополнить его или включить автопополнение могут владелец и админ workspace.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"code":{"type":"string","description":"Уточнение вида: по нему выбирается действие интерфейса (кнопка «Пополнить», «Войти иначе»…). Нет поля — хватает type и message. Известные коды:\n- `sso_domain_taken` (409) — домен SSO уже подтверждён другой организацией\n- `sso_last_verified_domain` (409) — включён обязательный вход, а это последний подтверждённый домен — сначала выключить обязательный вход\n- `sso_login_required` (400) — включить обязательный вход можно только из сессии, открытой через SSO этой организации\n- `domain_verification_failed` (400) — запись DNS для домена не найдена или не совпала — проверить и повторить\n- `oidc_openid_scope_required` (400) — в scopes сервера входа OIDC нет openid — добавить её: без неё вход через SSO не пройдёт\n- `enterprise_only` (403) — возможность есть только на тарифе Enterprise\n- `groups_limit` (429) — достигнут предел групп в организации\n- `custom_roles_limit` (429) — достигнут предел своих ролей в организации\n- `group_managed_by_directory` (409) — группа из каталога: название и состав меняются только там\n- `group_member_not_in_workspace` (400) — в группу можно добавить только сотрудника этой организации\n- `role_above_ceiling` (400) — роль даёт права выше потолка организации\n- `unknown_model` (400) — такой модели нет — список в available_models\n- `price_required` (400) — админка, тариф целиком: у платного тарифа нужна цена (price)\n- `lago_rejected` (409) — админка, тариф целиком: Lago отказал по существу (4xx, текст Lago в message) — правила не изменены, повтор без правки не поможет\n- `price_mismatch` (400) — админка, тариф целиком: цена не сходится с правилами (место без per_seat, per_seat без цены места, цена у бесплатного)\n- `model_not_allowed` (403) — политика организации не разрешает эту модель, а подходящей разрешённой нет — админу дополнить список\n- `retention_too_short` (400) — срок хранения меньше наименьшего\n- `audit_export_range` (400) — неверный период выгрузки журнала: конец раньше начала или период слишком длинный\n- `compliance_disabled` (403) — адрес для проверок выключен — владелец включает его в настройке\n- `missing_credentials` (401) — нет ни cookie сессии, ни ключа API — войти или передать x-api-key\n- `link_revoked` (401) — вход в Tungo из 1С больше не действует (вышли, отключили на сайте, вошли в той же базе заново, компания или человек заблокированы) — 1С просит войти заново\n- `login_denied` (403) — вход из 1С отклонён на сайте Tungo — 1С показывает отказ\n- `code_expired` (410) — код входа из 1С устарел или уже использован — 1С просит новый код\n- `code_gone` (410) — код входа из 1С уже подтверждён, отклонён или устарел — на сайте подтверждать нечего\n- `invalid_api_key` (401) — ключ API неверен (опечатка или удалён)\n- `key_revoked` (401) — ключ API отозван (при правке ключа — 409 с тем же code: отозванный ключ не меняется)\n- `key_expired` (401) — срок ключа API истёк — сменить секрет (POST …/api-keys/{id}/roll: срок начнётся заново) или выпустить новый (при правке срока — 409 с тем же code: PATCH истёкший ключ не оживляет)\n- `key_disabled` (401) — ключ API выключен — включить может автор ключа или владелец организации (POST …/api-keys/{id}/enable)\n- `key_creator_lost_access` (401) — тот, кто выпустил ключ, больше не владелец/админ организации — ключ недействителен\n- `user_banned` (401) — вход в аккаунт закрыт администратором Tungo — только поддержка Tungo\n- `onboarding_unpaid` (402) — подключение компании к ИИ-бухгалтеру не оплачено (разовый платёж): владельцу/админу организации — «Оплатить» в настройках компании; остальным — сообщить им\n- `onboarding_pending` (402) — оплата подключения компании ещё проходит в банке — ИИ заработает после подтверждения; опрашивать состояние подключения\n- `no_active_plan` (402) — нет действующей подписки (не оформлена, закончилась, первая оплата не прошла или ждёт 3-D Secure). Владельцу/админу — кнопка в настройки оплаты; остальным — «обратитесь к владельцу организации». Что именно случилось — в message\n- `balance_exhausted` (402) — баланс доп. использования кончился. Владельцу/админу — «Пополнить баланс» или включить автопополнение; остальным — сообщить им\n- `workspace_cap_reached` (402) — достигнут месячный потолок доп. использования организации. resets_at — 1-е число следующего месяца, 00:00 по Алматы; раньше — если админ поднимет потолок\n- `report_busy` (429) — сейчас собирается много отчётов команды: повторить через время из Retry-After\n- `report_timeout` (503) — отчёт команды не успел собраться: сократить период или выбрать разбивку по месяцам\n- `company_cap_reached` (402) — достигнут месячный потолок доп. использования компании. Письмо владельцу и админам уже отправлено. resets_at — 1-е число; раньше — если админ поднимет потолок (PUT /v1/workspaces/{ws}/team/company-caps/{co})\n- `member_cap_reached` (402) — достигнут личный месячный потолок доп. использования сотрудника. resets_at — 1-е число; раньше — если админ поднимет его потолок\n- `key_cap_reached` (402) — достигнут месячный потолок расхода ключа API (или остаток меньше оценки одного вызова). resets_at — 1-е число\n- `platform_balance_exhausted` (402) — баланс платформы пуст: вызов по ключу или автоматизация не сделаны. Пополнить — POST /v1/workspaces/{ws}/platform/purchases или автопополнением\n- `platform_cap_reached` (402) — достигнут месячный потолок трат платформы. resets_at — 1-е число следующего месяца, 00:00 по Алматы; раньше — поднять потолок в PUT /v1/workspaces/{ws}/platform/account\n- `platform_disabled` (402) — платформа выключена в организации: вызовы по ключам и автоматизации остановлены. Включить — PUT /v1/workspaces/{ws}/platform/account\n- `free_plan_chat_only` (402) — бесплатный тариф: пачки из кабинета только на платных тарифах. Ключам API и автоматизациям тариф не нужен\n- `free_limit_unavailable` (402) — бесплатный лимит этой учётной записи не положен (проверка регистрации или решение администратора) — оформить тариф\n- `plan_company_limit` (402) — в организации уже столько компаний не в архиве, сколько разрешает тариф (max_companies в GET /v1/plans; limit и plan_code — в ответе): новую не завести и из архива не вернуть. Убрать лишнюю в архив или перейти на тариф больше\n- `effort_not_in_plan` (402) — поле effort в чате на тарифе без выбора усилия (max_effort тарифа null, например бесплатный): ход не начат. Прислать вопрос без effort или оформить платный тариф\n- `model_not_in_plan` (402) — модель сильнее потолка тарифа (plans.model_ceiling): вызов не сделан; более сильные модели — на платных тарифах\n- `missing_permission` (403) — не хватает права в компании (или у ключа API); какого — в поле permission\n- `login_method_not_allowed` (403) — организация пускает к своим данным только после входа другим способом; какими — в allowed_methods. Предложить выйти и войти так\n- `ip_not_allowed` (403) — ключ API не принимает запросы с этого адреса — поправить allowed_ips ключа (PATCH …/api-keys/{id}) или вызывать с разрешённого адреса\n- `key_write_limit` (403) — запись в 1С по ключу API — сверх его пределов (сумма на документ или в день, виды документов) или правило автоодобрения шире пределов ключа; в сообщении — что и на сколько\n- `human_only` (403) — это решение принимает только человек в кабинете Tungo, не ключ API: например, отклонить «не знаем, записан ли» на снимке базы без проверки 1С (confirm_unknown_write)\n- `autonomy_raise_requires_session` (403) — поднять уровень доверия ИИ или потолки компании можно только владельцу или админу организации из кабинета; ключом API — только понизить\n- `id_path_required` (400) — для автоодобрения по хуку задайте хуку id_path — путь к номеру операции в теле события: без него повтор доставки нельзя отличить от новой операции\n- `directbank_rule_exists` (400) — у компании уже есть сценарий с правилом для выписки DirectBank — правило выписки одно на компанию\n- `event_not_found` (404) — события нет в этой компании или оно удалено по сроку хранения — для пробного прогона выберите событие посвежее\n- `event_body_unavailable` (409) — тело события зашифровано, а ключ шифрования на сервере сменился — прогнать сценарий на нём нельзя\n- `scenario_steps_required` (409) — у сценария цепочка шагов, а в замене (PUT) нет ни steps, ни output: передайте steps явно, иначе замена молча убрала бы цепочку\n- `scenario_output_required` (409) — у сценария форма итога, а в замене (PUT) нет ни steps, ни output: передайте output явно (null — снять форму)\n- `automation_queue_full` (429) — у компании слишком много запусков в очереди: повторите позже (событие хука отправитель повторит сам)\n- `restarting` (503) — сервис перезапускается: новый ход не начат — повторите через Retry-After\n- `company_suspended` (403) — работа с компанией приостановлена (решение платформы или оплаты); карточка видна, работать, править и архивировать нельзя (архив — 409 с тем же code)\n- `company_archived` (403) — компания в архиве: карточка видна, работать с ней нельзя. Вернуть — POST /v1/companies/{company_id}/unarchive (владелец компании или владелец/админ организации)\n- `workspace_blocked` (403) — организация заблокирована администратором платформы — только поддержка Tungo\n- `untrusted_origin` (403) — запрос пришёл не со страницы Tungo (защита от подделки запросов) — открыть кабинет по обычному адресу; для /admin/* — только со страниц ADMIN_ORIGINS\n- `cors_not_supported` (403) — вызов API из чужого браузерного кода (CORS) не поддерживается: ключ API — секрет сервера\n- `api_keys_disabled_by_policy` (403) — политика организации запрещает ключи API\n- `owner_role_reserved` (403) — владельца компании назначает, меняет и снимает только владелец или админ организации\n- `role_above_yours` (403) — у выдаваемой (или снимаемой) роли есть права, которых нет у вас; роль — в поле role, лишние права — в permissions\n- `not_key_creator` (403) — менять компании, права, срок и секрет ключа, снимать и поднимать его пределы записи в 1С может только тот, кто его выпустил (ужесточить пределы может любой админ)\n- `transfer_wider_than_target` (403) — передать ключ нельзя: у нового владельца нет нужного права (или доступа) в одной из компаний ключа\n- `invalid_allowed_ips` (400) — в allowed_ips ключа — не IP-адрес и не подсеть CIDR; какая запись — в сообщении\n- `transfer_target_not_admin` (400) — передать ключ можно только владельцу или админу этой организации\n- `platform_model_not_allowed` (403) — модель сильнее потолка платформы (настройка platform.billing): вызов не сделан и ничего не списано\n- `managed_by_sso` (403) — удаление аккаунта: аккаунт ведёт организация (SSO или SCIM) — удаляет её администратор; организации — в workspaces\n- `fresh_session_required` (403) — удаление аккаунта без почты (Telegram): нужен свежий вход — выйти, войти снова и подтвердить\n- `api_key_not_allowed` (403) — действие только из кабинета (сессия), не по ключу API: удаление аккаунта\n- `not_own_key` (403) — по ключу API виден только расход самого этого ключа\n- `webhooks_not_in_plan` (403) — вебхуков нет в тарифе организации\n- `admin_2fa_required` (403) — админ-API: у администратора платформы нет второго фактора или эта сессия не подтверждена кодом приложения-аутентификатора (POST /v1/auth/two-factor/enable, затем verify-totp)\n- `two_factor_required` (403) — отключить второй фактор, показать его секрет или выпустить резервные коды — только после кода из приложения-аутентификатора в этой сессии\n- `webhooks_require_all_companies` (403) — вебхуки — только ключу на все компании организации (при выпуске ключа — 400 с тем же code)\n- `audit_requires_all_companies` (403) — журнал организации — только ключу на все компании организации\n- `policy_blocked` (403) — одобрение: организация не доверяет ИИ записывать такой документ этим способом (поле level — уровень доверия); одобрить по одному или поднять уровень\n- `onec_read_only` (403) — одобрение: у пользователя 1С из подключения нет права записи — дать права в 1С\n- `validation_failed` (400) — тело или параметры запроса не прошли проверку: что не так с каждым полем — в fields (путь, код, текст по-русски). Подсветить поля формы; общий message — над формой\n- `invalid_json` (400) — тело запроса — не JSON-объект\n- `personal_workspace` (400) — в личной организации нет сотрудников, приглашений и политик — нужна организация Team или Enterprise\n- `api_key_required` (400) — адрес только для запроса по ключу API\n- `email_code_unavailable` (400) — удаление аккаунта: у аккаунта нет почты для кода (вход через Telegram) — подтверждать свежим входом, без кода\n- `deletion_code_invalid` (400) — удаление аккаунта: неверный код из письма; сколько попыток осталось — attempts_left\n- `deletion_code_expired` (400) — удаление аккаунта: код истёк, попытки кончились или код не запрашивался — запросить новый (POST /v1/me/deletion/code)\n- `unsafe_url` (400) — адрес вебхука недопустим (внутренняя сеть, не HTTPS)\n- `idempotency_key_invalid` (400) — Idempotency-Key неверного вида\n- `payload_too_large` (413) — тело запроса (или события хука) больше допустимого; пределы — настройки платформы\n- `idempotency_key_reused` (422) — этот Idempotency-Key уже был у другого запроса — для нового действия нужен новый ключ\n- `has_blockers` (422) — одобрение: у предложения есть блокеры — сначала исправить их\n- `batch_too_large` (413) — одобрение пачкой: предложений больше предела (поля limit, requested) — разбить на части\n- `unknown_kind` (400) — настройки писем: такого вида уведомлений нет — взять список из GET /v1/me/notifications\n- `kind_locked` (400) — настройки писем: этот вид (безопасность и аккаунт) выключить нельзя — переключатель неактивен (locked)\n- `onec_rejected` (400) — одобрение: 1С отклонила документ (причина — в message): исправить в 1С или построить предложение заново\n- `proposal_not_found` (404) — предложения с таким id нет в компании\n- `export_link_expired` (404) — ссылка на архив выгрузки истекла или неверна — получить новую: GET /v1/me/export\n- `batch_not_found` (404) — одобрение пачкой: задания с таким batch_id нет (или в нём нет предложений)\n- `idempotency_in_progress` (409) — первый запрос с этим Idempotency-Key ещё выполняется — подождать и повторить, придёт тот же ответ\n- `idempotency_response_not_kept` (409) — запрос с этим Idempotency-Key уже выполнен, но копия ответа не хранится (в нём персональные данные): результат — по ссылке в ответе (dialog_url) или в списке; статус первого ответа — original_status\n- `idempotency_response_too_large` (409) — запрос с этим Idempotency-Key уже выполнен, но ответ слишком большой, чтобы повторить его целиком: результат — в списке; статус первого ответа — original_status\n- `sole_owner` (409) — удаление аккаунта: вы единственный владелец организации с другими участниками (workspaces) — передать владение (POST /v1/workspaces/{ws}/ownership) или удалить организацию\n- `account_deletion_in_progress` (409) — удаление аккаунта: фон уже стирает аккаунт — новый код и подтверждение не принимаются, отменить нельзя\n- `wrong_status` (409) — предложение уже не в том состоянии (поле status — нынешнее): обновить его\n- `wrong_state` (409) — запуск автоматизации уже не в том состоянии (поле state — нынешнее)\n- `dialog_closed` (409) — разговор закрыт (поле reason — почему): начать новый\n- `dialog_id_taken` (409) — разговор с таким dialog_id уже есть — для нового прислать другой id или не присылать его\n- `turn_in_progress` (409) — в разговоре уже идёт ход ИИ (поле turn — его номер): дождаться его конца или остановить\n- `turn_superseded` (409) — читаемый ход уже закончился и идёт следующий (поле turn) — читать его с начала\n- `dialog_changed` (409) — разговор только что изменился в другом окне или на другом сервере Tungo — открыть его заново (GET …/chat/{id}) и повторить\n- `already_answered` (409) — на этот вопрос ИИ уже ответили (поле turn — ход с ответом)\n- `question_stale` (409) — вопрос ИИ устарел (в разговоре уже другой вопрос или его нет) — обновить разговор\n- `dismissed` (409) — вопрос ИИ закрыт без ответа — написать обычное сообщение\n- `job_running` (409) — задание (пачка) ещё идёт — дождаться отчёта; поле batch_id\n- `payload_changed` (409) — одобрение: документ изменился после превью — построить предложение заново\n- `onec_conflict` (409) — одобрение: 1С отказала из-за конфликта (объект занят или изменён) — повторить позже\n- `onec_not_found` (409) — одобрение: в 1С нет объекта, на который ссылается документ — построить предложение заново\n- `plan_limit_reached` (429) — лимит окна тарифа исчерпан; resets_at и Retry-After — когда обновится. Показать время; если в message предложено доп. использование — дать кнопку включить\n- `rate_limited` (429) — слишком часто (по ключу API, уведомления ePay с одного адреса, попытки кода второго фактора) — подождать Retry-After секунд\n- `concurrent_turns_limit` (429) — по ключу API уже идёт предельное число ходов ИИ одновременно — дождаться окончания\n- `api_keys_limit` (429) — в организации предельное число действующих ключей API — отозвать ненужные\n- `webhook_endpoints_limit` (429) — предельное число адресов вебхуков — удалить ненужные\n- `export_too_soon` (429) — выгрузку данных можно запрашивать не чаще раза в сутки: next_request_at и Retry-After — когда можно снова\n- `hook_rate_limited` (429) — приём событий хука: больше automations.hook_events_per_minute в минуту — повторить через Retry-After секунд\n- `lago_unavailable` (503) — админка, тариф целиком: Lago не настроен или не ответил (сеть, 5xx) — правила не изменены, повторить позже\n- `model_price_missing` (503) — у модели ИИ не задана цена — сбой настройки платформы, ничего не списано; повторить позже\n- `data_export_disabled` (503) — выгрузка данных на сервере не настроена (поддержка Tungo)\n- `webhooks_disabled` (503) — вебхуки на сервере не настроены\n- `webhooks_unavailable` (503) — служба доставки вебхуков временно недоступна\n- `model_not_configured` (503) — сервис модели ИИ не настроен на сервере — повторить позже (Retry-After)\n- `write_unknown` (503) — одобрение: исход записи в 1С неизвестен (связь оборвалась) — проверить документ в 1С по метке (поле marker); повтор безопасен (retry_safe); слишком ранний повтор в 1С не пишет — подождать retry_after секунд (Retry-After)\n- `onec_unavailable` (503) — 1С сейчас не отвечает — повторить позже (Retry-After)\n- `onec_check_busy` (503) — проверка связи 1С: сервер сейчас проверяет слишком много подключений — повторить через Retry-After секунд\n- `onec_failed` (503) — записать документ в 1С не удалось по неизвестной причине — повторить позже\n- `journal_unavailable` (503) — журнал решений недоступен — пачка не одобрена, повторить позже\n- `hook_secret_unavailable` (503) — приём событий хука: секрет подписи сейчас не открыть — отправителю повторить доставку позже\n- `secret_box_missing` (503) — на сервере не задан ключ шифрования настроек — секрет подписи хука сохранить нельзя (поддержка Tungo)\n- `not_personal` (409) — перевод в команду: организация уже не личная — обновить экран\n- `subscription_blocks_conversion` (409) — перевод в команду: действует подписка для одного человека — сначала отменить её и дождаться конца периода\n- `subscription_kind_mismatch` (409) — админка: действующая подписка оформлена на другой вид организации — вид не меняется, пока она идёт\n- `enterprise_features_active` (409) — админка: у организации подключены SSO или SCIM — сначала отключить, потом снимать Enterprise\n- `too_many_members_for_personal` (409) — админка: в личной организации один человек — сначала убрать остальных участников\n- `open_debt` (409) — есть неоплаченный счёт — сначала оплатить; в плане удаления этот же код лежит в blockers\n- `active_work` (409) — в организации идут ходы ИИ или автоматизации — дождаться окончания и повторить; в плане удаления этот же код лежит в blockers\n- `deletion_already_scheduled` (409) — удаление организации уже запланировано — показать дату из плана\n- `deletion_purging` (409) — очистка организации уже идёт — отменить её нельзя\n- `workspace_deleting` (409) — админка: организация удаляется по просьбе владельца — блок удаления снимает только отмена удаления\n- `invitation_not_pending` (409) — приглашение принято, отозвано или истекло — письмо не отправить, пригласить заново\n- `last_owner` (409) — это последний владелец организации — сначала передать владение другому участнику\n- `seats_by_contract` (409) — места Enterprise — по договору, карта и докупка не работают: обратиться к менеджеру\n- `no_subscription` (409) — нет действующей подписки — сначала оформить тариф\n- `not_per_seat` (409) — этот тариф не считает оплату за место — докупка не нужна, предел мест показан в ответе GET …/seats\n- `subscription_ended` (409) — возобновление: период отменённой подписки уже закончился — ничего не списано, оформить тариф заново (повторный PUT — обычное оформление)\n- `subscription_busy` (409) — подписка уже меняется другим запросом (отмена или возобновление) — обновить экран через несколько секунд\n- `subscription_ending` (409) — подписка отменена и закончится в конце периода — места не докупаются и не сокращаются\n- `seats_unpaid_debt` (409) — подписка просрочена — сначала оплатить счёт; участники остаются, новых приглашать нельзя\n- `idempotency_conflict` (409) — докупка: этот ключ уже использован с другим числом мест — для новой покупки нужен новый ключ\n- `seat_quote_changed` (409) — докупка: сумма изменилась (другой день или новая цена), деньги не списаны — показать новую сумму из поля и спросить снова\n- `no_paid_seats` (409) — оплаченных мест ещё нет — сокращать нечего\n- `seats_below_occupied` (409) — занято больше мест, чем просите оставить — сначала убрать участников или отозвать приглашения\n- `not_enterprise` (409) — админка: места по договору есть только у Enterprise — сначала поставить вид\n- `per_seat_plan_change` (409) — смена тарифа с оплатой за место не делается сразу: Lago взял бы плату за места дважды. Отменить и оформить новый с конца периода\n- `confirm_name_mismatch` (400) — удаление организации: название введено неверно — ввести точно как в плане удаления\n- `below_min_seats` (400) — на этом тарифе мест меньше нельзя: минимум — min_seats тарифа\n- `seats_over_max` (400) — мест больше предела одной организации (team.limits.max_seats) — обратиться в поддержку\n- `seats_above_paid` (400) — PUT …/seats только сокращает; новые места — через POST …/seats с оплатой\n- `onec_check_running` (429) — проверка связи 1С уже идёт у этой компании, у вас (другая компания) или у двух других компаний организации — дождаться её итога и повторить (Retry-After)\n- `invitation_resend_too_soon` (429) — письмо с приглашением уже отправлено только что — подождать Retry-After секунд\n- `seats_exhausted` (429) — свободные места закончились: докупите места или освободите их, отозвав приглашение\n- `seat_price_unknown` (503) — цена места сейчас неизвестна (тариф не прочитан или настроен неверно), деньги не списаны — повторить позже\n- `otp_mail_failed` (503) — письмо с кодом входа не отправлено: попробуйте позже\n- `seat_period_unknown` (503) — не удалось сверить период подписки с биллингом: деньги не списаны, попробуйте позже\n\nНезнакомый code — вести себя по type.","example":"balance_exhausted","uniqueKey":"error.code","typeLabel":"string"},"permission":{"type":"string","description":"При code = missing_permission — какого права не хватает: права в компании (company.read, company.manage, company.members.manage, onec.connect, proposals.create, proposals.approve, chat.use, audit.read, automations.manage) или права только ключа API (automations.read, webhooks.manage). Показать «нужно право …» и предложить попросить админа (или выпустить ключ с этим правом).","example":"proposals.approve","uniqueKey":"error.permission","typeLabel":"string"},"resets_at":{"type":"string","format":"date-time","description":"Когда ограничение снимется само — ISO 8601, UTC. Есть у plan_limit_reached (конец окна тарифа) и у месячных потолков (workspace_cap_reached, company_cap_reached, member_cap_reached, key_cap_reached, platform_cap_reached — 1-е число, 00:00 по Алматы). Показать в местном времени: «Лимит обновится в 14:30». Нет поля — само не пройдёт.","example":"2026-11-01T19:00:00.000Z","uniqueKey":"error.resets_at","typeLabel":"string\u003cdate-time>"},"allowed_methods":{"type":"array","items":{"type":"string","enum":["email_otp","google","apple","telegram","sso"],"uniqueKey":"error.allowed_methods.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"При code = login_method_not_allowed — какими способами входа организация пускает к своим данным: email_otp — код из почты, google, apple, telegram, sso — SSO организации. Предложить выйти и войти одним из них.","uniqueKey":"error.allowed_methods","typeLabel":"enum\u003cstring>[]"},"role":{"type":"string","description":"При code = role_above_yours — ключ роли в компании, которую нельзя выдать или снять (например chief_accountant).","uniqueKey":"error.role","typeLabel":"string"},"permissions":{"type":"array","items":{"type":"string","uniqueKey":"error.permissions.items.[INDEX]","typeLabel":"string"},"description":"При code = role_above_yours — права этой роли, которых нет у того, кто выдаёт. Показать списком: «у роли есть права, которых нет у вас: …».","uniqueKey":"error.permissions","typeLabel":"string[]"},"fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string","description":"Путь к полю через точку, как в теле запроса или имени параметра: `name`, `lines.0.amount`. Пустая строка — всё тело (не объект, лишние поля).","example":"bin","isRequired":true,"uniqueKey":"error.fields.items.[INDEX].path","typeLabel":"string"},"code":{"type":"string","enum":["invalid_type","too_small","too_big","invalid_format","invalid_value","not_multiple_of","unrecognized_keys","invalid_union","invalid_key","invalid_element","custom"],"description":"Что не так: invalid_type — не тот тип или поле не передано; too_small / too_big — короче/меньше или длиннее/больше допустимого; invalid_format — неверный вид (почта, дата, шаблон); invalid_value — значения нет среди допустимых; not_multiple_of — не кратно; unrecognized_keys — лишние поля; invalid_union — не подходит ни один вид; invalid_key / invalid_element — неверный ключ или элемент; custom — своё правило ручки","example":"invalid_format","isRequired":true,"uniqueKey":"error.fields.items.[INDEX].code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Текст для человека по-русски — показать под полем","example":"БИН/ИИН — 12 цифр","isRequired":true,"uniqueKey":"error.fields.items.[INDEX].message","typeLabel":"string"}},"required":["path","code","message"],"description":"Ошибка одного поля запроса","uniqueKey":"error.fields.items.[INDEX]","typeLabel":"object"},"description":"При code = validation_failed — ошибки по полям, в порядке проверки; у одного поля может быть несколько.","uniqueKey":"error.fields","typeLabel":"object[]"}},"required":["type","message"],"additionalProperties":{"oneOf":[{}],"uniqueKey":"error.additionalProperties","typeLabel":"any"},"description":"Что пошло не так. Все 503 — с заголовком Retry-After (через сколько секунд повторить). Кроме описанных, у отдельных ручек бывают свои поля рядом с code (например status у wrong_status, state у wrong_state, reason у dialog_closed) — они описаны у этих ручек.","isRequired":true,"uniqueKey":"error","typeLabel":"object"},"request_id":{"oneOf":[{"type":"string","description":"Номер запроса (тот же, что в заголовке x-request-id). Показывать мелко рядом с ошибкой с кнопкой «скопировать»: по нему поддержка находит запрос в журнале. null — номер не успел появиться (очень ранний отказ).","example":"req_4f9c2a7e1b3d4c5a8e6f7a9b0c1d2e3f","isRequired":true,"uniqueKey":"request_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"Номер запроса (тот же, что в заголовке x-request-id). Показывать мелко рядом с ошибкой с кнопкой «скопировать»: по нему поддержка находит запрос в журнале. null — номер не успел появиться (очень ранний отказ).","example":"req_4f9c2a7e1b3d4c5a8e6f7a9b0c1d2e3f","isRequired":true,"uniqueKey":"request_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"request_id","typeLabel":"string | null"}},"required":["type","error","request_id"],"description":"Тело любой ошибки API (статусы 4xx и 5xx): `{\"type\":\"error\",\"error\":{\"type\":\"…\",\"code\":\"…\",\"message\":\"…\"},\"request_id\":\"…\"}`. Интерфейс ветвится по error.type и error.code, человеку показывает error.message и request_id.","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"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":"\u003cstring>","permissions":["\u003cstring>"],"fields":[{"path":"bin","code":"invalid_format","message":"БИН/ИИН — 12 цифр"}]},"request_id":"req_4f9c2a7e1b3d4c5a8e6f7a9b0c1d2e3f"}}},"exampleType":"generated"}},"headers":{"x-request-id":{"description":"Номер запроса (тот же, что request_id в теле ошибки) — назвать в обращении в поддержку. Его всегда создаёт сервер: присланный клиентом x-request-id номером не становится","schema":{"type":"string","example":"req_3f2a9c0d1e4b4c5d8e7f6a5b4c3d2e1f"}},"x-ratelimit-limit":{"description":"Только при входе по ключу API: сколько запросов можно в текущем окне — самый тесный предел из ключа и организации","schema":{"type":"integer"}},"x-ratelimit-remaining":{"description":"Только при входе по ключу API: сколько запросов осталось по этому пределу в текущем окне","schema":{"type":"integer"}},"x-ratelimit-reset":{"description":"Только при входе по ключу API: секунд до нового окна этого предела","schema":{"type":"integer"}}},"exampleType":"generated"},"bac7cfa9-9d6a-4e37-8bdc-76b4f1a31481":{"description":"Не найдено (или чужое) (error.type: not_found_error)","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","enum":["error"],"description":"Всегда «error»: так тело ошибки отличается от обычного ответа.","isRequired":true,"uniqueKey":"type","typeLabel":"enum\u003cstring>"},"error":{"type":"object","properties":{"type":{"type":"string","enum":["invalid_request_error","authentication_error","payment_required_error","permission_error","not_found_error","conflict_error","gone_error","limit_error","api_error","unavailable_error"],"description":"Вид ошибки — по нему ветвится клиент (не по тексту message). Статус HTTP у вида один, кроме invalid_request_error:\n- `invalid_request_error` (400) — запрос неверен: поле не прошло проверку, неверный формат, действие сейчас недопустимо. Показать message рядом с формой; повтор без исправления не поможет. Обычно 400; 413 и 422 — у кодов, где это сказано в списке code.\n- `authentication_error` (401) — нет входа: сессия закончилась, cookie нет, ключ API неверен, отозван или истёк. Кабинет — отправить на страницу входа; по ключу — проверить ключ (см. code).\n- `payment_required_error` (402) — нужны деньги или решение владельца/админа организации: ждать бесполезно. Показать message и кнопку действия по code (оформить тариф, пополнить баланс, поднять потолок); без code — не оплачено подключение компании.\n- `permission_error` (403) — нельзя: не хватает права или роли, организация заблокирована, вход не тем способом. Показать message (в нём сказано, к кому обратиться); детали — в code и полях рядом.\n- `not_found_error` (404) — нет такого объекта — или он чужой: чужие организации, компании и записи тоже отвечают 404, чтобы не раскрывать, что они есть. Показать «не найдено» и вернуть к списку.\n- `conflict_error` (409) — состояние не позволяет: уже сделано, уже идёт другое действие, версия устарела. Перечитать объект, обновить экран и показать message.\n- `gone_error` (410) — объекта больше нет: разговор не найден или истёк (вопрос в чате, ответ на вопрос ИИ, подсчёт токенов — начать новый разговор), ход потерян при перезапуске сервера, ссылка привязки программы устарела или уже использована (code connector_link_gone). Повторять незачем.\n- `limit_error` (429) — предел: частота запросов, окно тарифа, число объектов или мест. Если есть заголовок Retry-After или resets_at — пройдёт само, показать, когда; иначе нужно освободить место (удалить лишнее) или сменить тариф.\n- `api_error` (500) — сбой на нашей стороне. Показать message и request_id (для поддержки); повторить позже.\n- `unavailable_error` (503) — временно недоступно (внешний сервис, ИИ, настройка сервера). Повторить позже; если повторяется — сообщить request_id в поддержку.","example":"payment_required_error","isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Готовый текст для человека по-русски: что случилось, что делать и к кому обратиться. Показывать как есть; не разбирать — формулировки меняются.","example":"Баланс доп. использования закончился — пополнить его или включить автопополнение могут владелец и админ workspace.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"code":{"type":"string","description":"Уточнение вида: по нему выбирается действие интерфейса (кнопка «Пополнить», «Войти иначе»…). Нет поля — хватает type и message. Известные коды:\n- `sso_domain_taken` (409) — домен SSO уже подтверждён другой организацией\n- `sso_last_verified_domain` (409) — включён обязательный вход, а это последний подтверждённый домен — сначала выключить обязательный вход\n- `sso_login_required` (400) — включить обязательный вход можно только из сессии, открытой через SSO этой организации\n- `domain_verification_failed` (400) — запись DNS для домена не найдена или не совпала — проверить и повторить\n- `oidc_openid_scope_required` (400) — в scopes сервера входа OIDC нет openid — добавить её: без неё вход через SSO не пройдёт\n- `enterprise_only` (403) — возможность есть только на тарифе Enterprise\n- `groups_limit` (429) — достигнут предел групп в организации\n- `custom_roles_limit` (429) — достигнут предел своих ролей в организации\n- `group_managed_by_directory` (409) — группа из каталога: название и состав меняются только там\n- `group_member_not_in_workspace` (400) — в группу можно добавить только сотрудника этой организации\n- `role_above_ceiling` (400) — роль даёт права выше потолка организации\n- `unknown_model` (400) — такой модели нет — список в available_models\n- `price_required` (400) — админка, тариф целиком: у платного тарифа нужна цена (price)\n- `lago_rejected` (409) — админка, тариф целиком: Lago отказал по существу (4xx, текст Lago в message) — правила не изменены, повтор без правки не поможет\n- `price_mismatch` (400) — админка, тариф целиком: цена не сходится с правилами (место без per_seat, per_seat без цены места, цена у бесплатного)\n- `model_not_allowed` (403) — политика организации не разрешает эту модель, а подходящей разрешённой нет — админу дополнить список\n- `retention_too_short` (400) — срок хранения меньше наименьшего\n- `audit_export_range` (400) — неверный период выгрузки журнала: конец раньше начала или период слишком длинный\n- `compliance_disabled` (403) — адрес для проверок выключен — владелец включает его в настройке\n- `missing_credentials` (401) — нет ни cookie сессии, ни ключа API — войти или передать x-api-key\n- `link_revoked` (401) — вход в Tungo из 1С больше не действует (вышли, отключили на сайте, вошли в той же базе заново, компания или человек заблокированы) — 1С просит войти заново\n- `login_denied` (403) — вход из 1С отклонён на сайте Tungo — 1С показывает отказ\n- `code_expired` (410) — код входа из 1С устарел или уже использован — 1С просит новый код\n- `code_gone` (410) — код входа из 1С уже подтверждён, отклонён или устарел — на сайте подтверждать нечего\n- `invalid_api_key` (401) — ключ API неверен (опечатка или удалён)\n- `key_revoked` (401) — ключ API отозван (при правке ключа — 409 с тем же code: отозванный ключ не меняется)\n- `key_expired` (401) — срок ключа API истёк — сменить секрет (POST …/api-keys/{id}/roll: срок начнётся заново) или выпустить новый (при правке срока — 409 с тем же code: PATCH истёкший ключ не оживляет)\n- `key_disabled` (401) — ключ API выключен — включить может автор ключа или владелец организации (POST …/api-keys/{id}/enable)\n- `key_creator_lost_access` (401) — тот, кто выпустил ключ, больше не владелец/админ организации — ключ недействителен\n- `user_banned` (401) — вход в аккаунт закрыт администратором Tungo — только поддержка Tungo\n- `onboarding_unpaid` (402) — подключение компании к ИИ-бухгалтеру не оплачено (разовый платёж): владельцу/админу организации — «Оплатить» в настройках компании; остальным — сообщить им\n- `onboarding_pending` (402) — оплата подключения компании ещё проходит в банке — ИИ заработает после подтверждения; опрашивать состояние подключения\n- `no_active_plan` (402) — нет действующей подписки (не оформлена, закончилась, первая оплата не прошла или ждёт 3-D Secure). Владельцу/админу — кнопка в настройки оплаты; остальным — «обратитесь к владельцу организации». Что именно случилось — в message\n- `balance_exhausted` (402) — баланс доп. использования кончился. Владельцу/админу — «Пополнить баланс» или включить автопополнение; остальным — сообщить им\n- `workspace_cap_reached` (402) — достигнут месячный потолок доп. использования организации. resets_at — 1-е число следующего месяца, 00:00 по Алматы; раньше — если админ поднимет потолок\n- `report_busy` (429) — сейчас собирается много отчётов команды: повторить через время из Retry-After\n- `report_timeout` (503) — отчёт команды не успел собраться: сократить период или выбрать разбивку по месяцам\n- `company_cap_reached` (402) — достигнут месячный потолок доп. использования компании. Письмо владельцу и админам уже отправлено. resets_at — 1-е число; раньше — если админ поднимет потолок (PUT /v1/workspaces/{ws}/team/company-caps/{co})\n- `member_cap_reached` (402) — достигнут личный месячный потолок доп. использования сотрудника. resets_at — 1-е число; раньше — если админ поднимет его потолок\n- `key_cap_reached` (402) — достигнут месячный потолок расхода ключа API (или остаток меньше оценки одного вызова). resets_at — 1-е число\n- `platform_balance_exhausted` (402) — баланс платформы пуст: вызов по ключу или автоматизация не сделаны. Пополнить — POST /v1/workspaces/{ws}/platform/purchases или автопополнением\n- `platform_cap_reached` (402) — достигнут месячный потолок трат платформы. resets_at — 1-е число следующего месяца, 00:00 по Алматы; раньше — поднять потолок в PUT /v1/workspaces/{ws}/platform/account\n- `platform_disabled` (402) — платформа выключена в организации: вызовы по ключам и автоматизации остановлены. Включить — PUT /v1/workspaces/{ws}/platform/account\n- `free_plan_chat_only` (402) — бесплатный тариф: пачки из кабинета только на платных тарифах. Ключам API и автоматизациям тариф не нужен\n- `free_limit_unavailable` (402) — бесплатный лимит этой учётной записи не положен (проверка регистрации или решение администратора) — оформить тариф\n- `plan_company_limit` (402) — в организации уже столько компаний не в архиве, сколько разрешает тариф (max_companies в GET /v1/plans; limit и plan_code — в ответе): новую не завести и из архива не вернуть. Убрать лишнюю в архив или перейти на тариф больше\n- `effort_not_in_plan` (402) — поле effort в чате на тарифе без выбора усилия (max_effort тарифа null, например бесплатный): ход не начат. Прислать вопрос без effort или оформить платный тариф\n- `model_not_in_plan` (402) — модель сильнее потолка тарифа (plans.model_ceiling): вызов не сделан; более сильные модели — на платных тарифах\n- `missing_permission` (403) — не хватает права в компании (или у ключа API); какого — в поле permission\n- `login_method_not_allowed` (403) — организация пускает к своим данным только после входа другим способом; какими — в allowed_methods. Предложить выйти и войти так\n- `ip_not_allowed` (403) — ключ API не принимает запросы с этого адреса — поправить allowed_ips ключа (PATCH …/api-keys/{id}) или вызывать с разрешённого адреса\n- `key_write_limit` (403) — запись в 1С по ключу API — сверх его пределов (сумма на документ или в день, виды документов) или правило автоодобрения шире пределов ключа; в сообщении — что и на сколько\n- `human_only` (403) — это решение принимает только человек в кабинете Tungo, не ключ API: например, отклонить «не знаем, записан ли» на снимке базы без проверки 1С (confirm_unknown_write)\n- `autonomy_raise_requires_session` (403) — поднять уровень доверия ИИ или потолки компании можно только владельцу или админу организации из кабинета; ключом API — только понизить\n- `id_path_required` (400) — для автоодобрения по хуку задайте хуку id_path — путь к номеру операции в теле события: без него повтор доставки нельзя отличить от новой операции\n- `directbank_rule_exists` (400) — у компании уже есть сценарий с правилом для выписки DirectBank — правило выписки одно на компанию\n- `event_not_found` (404) — события нет в этой компании или оно удалено по сроку хранения — для пробного прогона выберите событие посвежее\n- `event_body_unavailable` (409) — тело события зашифровано, а ключ шифрования на сервере сменился — прогнать сценарий на нём нельзя\n- `scenario_steps_required` (409) — у сценария цепочка шагов, а в замене (PUT) нет ни steps, ни output: передайте steps явно, иначе замена молча убрала бы цепочку\n- `scenario_output_required` (409) — у сценария форма итога, а в замене (PUT) нет ни steps, ни output: передайте output явно (null — снять форму)\n- `automation_queue_full` (429) — у компании слишком много запусков в очереди: повторите позже (событие хука отправитель повторит сам)\n- `restarting` (503) — сервис перезапускается: новый ход не начат — повторите через Retry-After\n- `company_suspended` (403) — работа с компанией приостановлена (решение платформы или оплаты); карточка видна, работать, править и архивировать нельзя (архив — 409 с тем же code)\n- `company_archived` (403) — компания в архиве: карточка видна, работать с ней нельзя. Вернуть — POST /v1/companies/{company_id}/unarchive (владелец компании или владелец/админ организации)\n- `workspace_blocked` (403) — организация заблокирована администратором платформы — только поддержка Tungo\n- `untrusted_origin` (403) — запрос пришёл не со страницы Tungo (защита от подделки запросов) — открыть кабинет по обычному адресу; для /admin/* — только со страниц ADMIN_ORIGINS\n- `cors_not_supported` (403) — вызов API из чужого браузерного кода (CORS) не поддерживается: ключ API — секрет сервера\n- `api_keys_disabled_by_policy` (403) — политика организации запрещает ключи API\n- `owner_role_reserved` (403) — владельца компании назначает, меняет и снимает только владелец или админ организации\n- `role_above_yours` (403) — у выдаваемой (или снимаемой) роли есть права, которых нет у вас; роль — в поле role, лишние права — в permissions\n- `not_key_creator` (403) — менять компании, права, срок и секрет ключа, снимать и поднимать его пределы записи в 1С может только тот, кто его выпустил (ужесточить пределы может любой админ)\n- `transfer_wider_than_target` (403) — передать ключ нельзя: у нового владельца нет нужного права (или доступа) в одной из компаний ключа\n- `invalid_allowed_ips` (400) — в allowed_ips ключа — не IP-адрес и не подсеть CIDR; какая запись — в сообщении\n- `transfer_target_not_admin` (400) — передать ключ можно только владельцу или админу этой организации\n- `platform_model_not_allowed` (403) — модель сильнее потолка платформы (настройка platform.billing): вызов не сделан и ничего не списано\n- `managed_by_sso` (403) — удаление аккаунта: аккаунт ведёт организация (SSO или SCIM) — удаляет её администратор; организации — в workspaces\n- `fresh_session_required` (403) — удаление аккаунта без почты (Telegram): нужен свежий вход — выйти, войти снова и подтвердить\n- `api_key_not_allowed` (403) — действие только из кабинета (сессия), не по ключу API: удаление аккаунта\n- `not_own_key` (403) — по ключу API виден только расход самого этого ключа\n- `webhooks_not_in_plan` (403) — вебхуков нет в тарифе организации\n- `admin_2fa_required` (403) — админ-API: у администратора платформы нет второго фактора или эта сессия не подтверждена кодом приложения-аутентификатора (POST /v1/auth/two-factor/enable, затем verify-totp)\n- `two_factor_required` (403) — отключить второй фактор, показать его секрет или выпустить резервные коды — только после кода из приложения-аутентификатора в этой сессии\n- `webhooks_require_all_companies` (403) — вебхуки — только ключу на все компании организации (при выпуске ключа — 400 с тем же code)\n- `audit_requires_all_companies` (403) — журнал организации — только ключу на все компании организации\n- `policy_blocked` (403) — одобрение: организация не доверяет ИИ записывать такой документ этим способом (поле level — уровень доверия); одобрить по одному или поднять уровень\n- `onec_read_only` (403) — одобрение: у пользователя 1С из подключения нет права записи — дать права в 1С\n- `validation_failed` (400) — тело или параметры запроса не прошли проверку: что не так с каждым полем — в fields (путь, код, текст по-русски). Подсветить поля формы; общий message — над формой\n- `invalid_json` (400) — тело запроса — не JSON-объект\n- `personal_workspace` (400) — в личной организации нет сотрудников, приглашений и политик — нужна организация Team или Enterprise\n- `api_key_required` (400) — адрес только для запроса по ключу API\n- `email_code_unavailable` (400) — удаление аккаунта: у аккаунта нет почты для кода (вход через Telegram) — подтверждать свежим входом, без кода\n- `deletion_code_invalid` (400) — удаление аккаунта: неверный код из письма; сколько попыток осталось — attempts_left\n- `deletion_code_expired` (400) — удаление аккаунта: код истёк, попытки кончились или код не запрашивался — запросить новый (POST /v1/me/deletion/code)\n- `unsafe_url` (400) — адрес вебхука недопустим (внутренняя сеть, не HTTPS)\n- `idempotency_key_invalid` (400) — Idempotency-Key неверного вида\n- `payload_too_large` (413) — тело запроса (или события хука) больше допустимого; пределы — настройки платформы\n- `idempotency_key_reused` (422) — этот Idempotency-Key уже был у другого запроса — для нового действия нужен новый ключ\n- `has_blockers` (422) — одобрение: у предложения есть блокеры — сначала исправить их\n- `batch_too_large` (413) — одобрение пачкой: предложений больше предела (поля limit, requested) — разбить на части\n- `unknown_kind` (400) — настройки писем: такого вида уведомлений нет — взять список из GET /v1/me/notifications\n- `kind_locked` (400) — настройки писем: этот вид (безопасность и аккаунт) выключить нельзя — переключатель неактивен (locked)\n- `onec_rejected` (400) — одобрение: 1С отклонила документ (причина — в message): исправить в 1С или построить предложение заново\n- `proposal_not_found` (404) — предложения с таким id нет в компании\n- `export_link_expired` (404) — ссылка на архив выгрузки истекла или неверна — получить новую: GET /v1/me/export\n- `batch_not_found` (404) — одобрение пачкой: задания с таким batch_id нет (или в нём нет предложений)\n- `idempotency_in_progress` (409) — первый запрос с этим Idempotency-Key ещё выполняется — подождать и повторить, придёт тот же ответ\n- `idempotency_response_not_kept` (409) — запрос с этим Idempotency-Key уже выполнен, но копия ответа не хранится (в нём персональные данные): результат — по ссылке в ответе (dialog_url) или в списке; статус первого ответа — original_status\n- `idempotency_response_too_large` (409) — запрос с этим Idempotency-Key уже выполнен, но ответ слишком большой, чтобы повторить его целиком: результат — в списке; статус первого ответа — original_status\n- `sole_owner` (409) — удаление аккаунта: вы единственный владелец организации с другими участниками (workspaces) — передать владение (POST /v1/workspaces/{ws}/ownership) или удалить организацию\n- `account_deletion_in_progress` (409) — удаление аккаунта: фон уже стирает аккаунт — новый код и подтверждение не принимаются, отменить нельзя\n- `wrong_status` (409) — предложение уже не в том состоянии (поле status — нынешнее): обновить его\n- `wrong_state` (409) — запуск автоматизации уже не в том состоянии (поле state — нынешнее)\n- `dialog_closed` (409) — разговор закрыт (поле reason — почему): начать новый\n- `dialog_id_taken` (409) — разговор с таким dialog_id уже есть — для нового прислать другой id или не присылать его\n- `turn_in_progress` (409) — в разговоре уже идёт ход ИИ (поле turn — его номер): дождаться его конца или остановить\n- `turn_superseded` (409) — читаемый ход уже закончился и идёт следующий (поле turn) — читать его с начала\n- `dialog_changed` (409) — разговор только что изменился в другом окне или на другом сервере Tungo — открыть его заново (GET …/chat/{id}) и повторить\n- `already_answered` (409) — на этот вопрос ИИ уже ответили (поле turn — ход с ответом)\n- `question_stale` (409) — вопрос ИИ устарел (в разговоре уже другой вопрос или его нет) — обновить разговор\n- `dismissed` (409) — вопрос ИИ закрыт без ответа — написать обычное сообщение\n- `job_running` (409) — задание (пачка) ещё идёт — дождаться отчёта; поле batch_id\n- `payload_changed` (409) — одобрение: документ изменился после превью — построить предложение заново\n- `onec_conflict` (409) — одобрение: 1С отказала из-за конфликта (объект занят или изменён) — повторить позже\n- `onec_not_found` (409) — одобрение: в 1С нет объекта, на который ссылается документ — построить предложение заново\n- `plan_limit_reached` (429) — лимит окна тарифа исчерпан; resets_at и Retry-After — когда обновится. Показать время; если в message предложено доп. использование — дать кнопку включить\n- `rate_limited` (429) — слишком часто (по ключу API, уведомления ePay с одного адреса, попытки кода второго фактора) — подождать Retry-After секунд\n- `concurrent_turns_limit` (429) — по ключу API уже идёт предельное число ходов ИИ одновременно — дождаться окончания\n- `api_keys_limit` (429) — в организации предельное число действующих ключей API — отозвать ненужные\n- `webhook_endpoints_limit` (429) — предельное число адресов вебхуков — удалить ненужные\n- `export_too_soon` (429) — выгрузку данных можно запрашивать не чаще раза в сутки: next_request_at и Retry-After — когда можно снова\n- `hook_rate_limited` (429) — приём событий хука: больше automations.hook_events_per_minute в минуту — повторить через Retry-After секунд\n- `lago_unavailable` (503) — админка, тариф целиком: Lago не настроен или не ответил (сеть, 5xx) — правила не изменены, повторить позже\n- `model_price_missing` (503) — у модели ИИ не задана цена — сбой настройки платформы, ничего не списано; повторить позже\n- `data_export_disabled` (503) — выгрузка данных на сервере не настроена (поддержка Tungo)\n- `webhooks_disabled` (503) — вебхуки на сервере не настроены\n- `webhooks_unavailable` (503) — служба доставки вебхуков временно недоступна\n- `model_not_configured` (503) — сервис модели ИИ не настроен на сервере — повторить позже (Retry-After)\n- `write_unknown` (503) — одобрение: исход записи в 1С неизвестен (связь оборвалась) — проверить документ в 1С по метке (поле marker); повтор безопасен (retry_safe); слишком ранний повтор в 1С не пишет — подождать retry_after секунд (Retry-After)\n- `onec_unavailable` (503) — 1С сейчас не отвечает — повторить позже (Retry-After)\n- `onec_check_busy` (503) — проверка связи 1С: сервер сейчас проверяет слишком много подключений — повторить через Retry-After секунд\n- `onec_failed` (503) — записать документ в 1С не удалось по неизвестной причине — повторить позже\n- `journal_unavailable` (503) — журнал решений недоступен — пачка не одобрена, повторить позже\n- `hook_secret_unavailable` (503) — приём событий хука: секрет подписи сейчас не открыть — отправителю повторить доставку позже\n- `secret_box_missing` (503) — на сервере не задан ключ шифрования настроек — секрет подписи хука сохранить нельзя (поддержка Tungo)\n- `not_personal` (409) — перевод в команду: организация уже не личная — обновить экран\n- `subscription_blocks_conversion` (409) — перевод в команду: действует подписка для одного человека — сначала отменить её и дождаться конца периода\n- `subscription_kind_mismatch` (409) — админка: действующая подписка оформлена на другой вид организации — вид не меняется, пока она идёт\n- `enterprise_features_active` (409) — админка: у организации подключены SSO или SCIM — сначала отключить, потом снимать Enterprise\n- `too_many_members_for_personal` (409) — админка: в личной организации один человек — сначала убрать остальных участников\n- `open_debt` (409) — есть неоплаченный счёт — сначала оплатить; в плане удаления этот же код лежит в blockers\n- `active_work` (409) — в организации идут ходы ИИ или автоматизации — дождаться окончания и повторить; в плане удаления этот же код лежит в blockers\n- `deletion_already_scheduled` (409) — удаление организации уже запланировано — показать дату из плана\n- `deletion_purging` (409) — очистка организации уже идёт — отменить её нельзя\n- `workspace_deleting` (409) — админка: организация удаляется по просьбе владельца — блок удаления снимает только отмена удаления\n- `invitation_not_pending` (409) — приглашение принято, отозвано или истекло — письмо не отправить, пригласить заново\n- `last_owner` (409) — это последний владелец организации — сначала передать владение другому участнику\n- `seats_by_contract` (409) — места Enterprise — по договору, карта и докупка не работают: обратиться к менеджеру\n- `no_subscription` (409) — нет действующей подписки — сначала оформить тариф\n- `not_per_seat` (409) — этот тариф не считает оплату за место — докупка не нужна, предел мест показан в ответе GET …/seats\n- `subscription_ended` (409) — возобновление: период отменённой подписки уже закончился — ничего не списано, оформить тариф заново (повторный PUT — обычное оформление)\n- `subscription_busy` (409) — подписка уже меняется другим запросом (отмена или возобновление) — обновить экран через несколько секунд\n- `subscription_ending` (409) — подписка отменена и закончится в конце периода — места не докупаются и не сокращаются\n- `seats_unpaid_debt` (409) — подписка просрочена — сначала оплатить счёт; участники остаются, новых приглашать нельзя\n- `idempotency_conflict` (409) — докупка: этот ключ уже использован с другим числом мест — для новой покупки нужен новый ключ\n- `seat_quote_changed` (409) — докупка: сумма изменилась (другой день или новая цена), деньги не списаны — показать новую сумму из поля и спросить снова\n- `no_paid_seats` (409) — оплаченных мест ещё нет — сокращать нечего\n- `seats_below_occupied` (409) — занято больше мест, чем просите оставить — сначала убрать участников или отозвать приглашения\n- `not_enterprise` (409) — админка: места по договору есть только у Enterprise — сначала поставить вид\n- `per_seat_plan_change` (409) — смена тарифа с оплатой за место не делается сразу: Lago взял бы плату за места дважды. Отменить и оформить новый с конца периода\n- `confirm_name_mismatch` (400) — удаление организации: название введено неверно — ввести точно как в плане удаления\n- `below_min_seats` (400) — на этом тарифе мест меньше нельзя: минимум — min_seats тарифа\n- `seats_over_max` (400) — мест больше предела одной организации (team.limits.max_seats) — обратиться в поддержку\n- `seats_above_paid` (400) — PUT …/seats только сокращает; новые места — через POST …/seats с оплатой\n- `onec_check_running` (429) — проверка связи 1С уже идёт у этой компании, у вас (другая компания) или у двух других компаний организации — дождаться её итога и повторить (Retry-After)\n- `invitation_resend_too_soon` (429) — письмо с приглашением уже отправлено только что — подождать Retry-After секунд\n- `seats_exhausted` (429) — свободные места закончились: докупите места или освободите их, отозвав приглашение\n- `seat_price_unknown` (503) — цена места сейчас неизвестна (тариф не прочитан или настроен неверно), деньги не списаны — повторить позже\n- `otp_mail_failed` (503) — письмо с кодом входа не отправлено: попробуйте позже\n- `seat_period_unknown` (503) — не удалось сверить период подписки с биллингом: деньги не списаны, попробуйте позже\n\nНезнакомый code — вести себя по type.","example":"balance_exhausted","uniqueKey":"error.code","typeLabel":"string"},"permission":{"type":"string","description":"При code = missing_permission — какого права не хватает: права в компании (company.read, company.manage, company.members.manage, onec.connect, proposals.create, proposals.approve, chat.use, audit.read, automations.manage) или права только ключа API (automations.read, webhooks.manage). Показать «нужно право …» и предложить попросить админа (или выпустить ключ с этим правом).","example":"proposals.approve","uniqueKey":"error.permission","typeLabel":"string"},"resets_at":{"type":"string","format":"date-time","description":"Когда ограничение снимется само — ISO 8601, UTC. Есть у plan_limit_reached (конец окна тарифа) и у месячных потолков (workspace_cap_reached, company_cap_reached, member_cap_reached, key_cap_reached, platform_cap_reached — 1-е число, 00:00 по Алматы). Показать в местном времени: «Лимит обновится в 14:30». Нет поля — само не пройдёт.","example":"2026-11-01T19:00:00.000Z","uniqueKey":"error.resets_at","typeLabel":"string\u003cdate-time>"},"allowed_methods":{"type":"array","items":{"type":"string","enum":["email_otp","google","apple","telegram","sso"],"uniqueKey":"error.allowed_methods.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"При code = login_method_not_allowed — какими способами входа организация пускает к своим данным: email_otp — код из почты, google, apple, telegram, sso — SSO организации. Предложить выйти и войти одним из них.","uniqueKey":"error.allowed_methods","typeLabel":"enum\u003cstring>[]"},"role":{"type":"string","description":"При code = role_above_yours — ключ роли в компании, которую нельзя выдать или снять (например chief_accountant).","uniqueKey":"error.role","typeLabel":"string"},"permissions":{"type":"array","items":{"type":"string","uniqueKey":"error.permissions.items.[INDEX]","typeLabel":"string"},"description":"При code = role_above_yours — права этой роли, которых нет у того, кто выдаёт. Показать списком: «у роли есть права, которых нет у вас: …».","uniqueKey":"error.permissions","typeLabel":"string[]"},"fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string","description":"Путь к полю через точку, как в теле запроса или имени параметра: `name`, `lines.0.amount`. Пустая строка — всё тело (не объект, лишние поля).","example":"bin","isRequired":true,"uniqueKey":"error.fields.items.[INDEX].path","typeLabel":"string"},"code":{"type":"string","enum":["invalid_type","too_small","too_big","invalid_format","invalid_value","not_multiple_of","unrecognized_keys","invalid_union","invalid_key","invalid_element","custom"],"description":"Что не так: invalid_type — не тот тип или поле не передано; too_small / too_big — короче/меньше или длиннее/больше допустимого; invalid_format — неверный вид (почта, дата, шаблон); invalid_value — значения нет среди допустимых; not_multiple_of — не кратно; unrecognized_keys — лишние поля; invalid_union — не подходит ни один вид; invalid_key / invalid_element — неверный ключ или элемент; custom — своё правило ручки","example":"invalid_format","isRequired":true,"uniqueKey":"error.fields.items.[INDEX].code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Текст для человека по-русски — показать под полем","example":"БИН/ИИН — 12 цифр","isRequired":true,"uniqueKey":"error.fields.items.[INDEX].message","typeLabel":"string"}},"required":["path","code","message"],"description":"Ошибка одного поля запроса","uniqueKey":"error.fields.items.[INDEX]","typeLabel":"object"},"description":"При code = validation_failed — ошибки по полям, в порядке проверки; у одного поля может быть несколько.","uniqueKey":"error.fields","typeLabel":"object[]"}},"required":["type","message"],"additionalProperties":{"oneOf":[{}],"uniqueKey":"error.additionalProperties","typeLabel":"any"},"description":"Что пошло не так. Все 503 — с заголовком Retry-After (через сколько секунд повторить). Кроме описанных, у отдельных ручек бывают свои поля рядом с code (например status у wrong_status, state у wrong_state, reason у dialog_closed) — они описаны у этих ручек.","isRequired":true,"uniqueKey":"error","typeLabel":"object"},"request_id":{"oneOf":[{"type":"string","description":"Номер запроса (тот же, что в заголовке x-request-id). Показывать мелко рядом с ошибкой с кнопкой «скопировать»: по нему поддержка находит запрос в журнале. null — номер не успел появиться (очень ранний отказ).","example":"req_4f9c2a7e1b3d4c5a8e6f7a9b0c1d2e3f","isRequired":true,"uniqueKey":"request_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"Номер запроса (тот же, что в заголовке x-request-id). Показывать мелко рядом с ошибкой с кнопкой «скопировать»: по нему поддержка находит запрос в журнале. null — номер не успел появиться (очень ранний отказ).","example":"req_4f9c2a7e1b3d4c5a8e6f7a9b0c1d2e3f","isRequired":true,"uniqueKey":"request_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"request_id","typeLabel":"string | null"}},"required":["type","error","request_id"],"description":"Тело любой ошибки API (статусы 4xx и 5xx): `{\"type\":\"error\",\"error\":{\"type\":\"…\",\"code\":\"…\",\"message\":\"…\"},\"request_id\":\"…\"}`. Интерфейс ветвится по error.type и error.code, человеку показывает error.message и request_id.","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"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":"\u003cstring>","permissions":["\u003cstring>"],"fields":[{"path":"bin","code":"invalid_format","message":"БИН/ИИН — 12 цифр"}]},"request_id":"req_4f9c2a7e1b3d4c5a8e6f7a9b0c1d2e3f"}}},"exampleType":"generated"}},"headers":{"x-request-id":{"description":"Номер запроса (тот же, что request_id в теле ошибки) — назвать в обращении в поддержку. Его всегда создаёт сервер: присланный клиентом x-request-id номером не становится","schema":{"type":"string","example":"req_3f2a9c0d1e4b4c5d8e7f6a5b4c3d2e1f"}},"x-ratelimit-limit":{"description":"Только при входе по ключу API: сколько запросов можно в текущем окне — самый тесный предел из ключа и организации","schema":{"type":"integer"}},"x-ratelimit-remaining":{"description":"Только при входе по ключу API: сколько запросов осталось по этому пределу в текущем окне","schema":{"type":"integer"}},"x-ratelimit-reset":{"description":"Только при входе по ключу API: секунд до нового окна этого предела","schema":{"type":"integer"}}},"exampleType":"generated"},"16ab431b-d338-47ec-9270-4d19ff4d297c":{"description":"Состояние не позволяет — перечитать объект и показать error.message (error.type: conflict_error)","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","enum":["error"],"description":"Всегда «error»: так тело ошибки отличается от обычного ответа.","isRequired":true,"uniqueKey":"type","typeLabel":"enum\u003cstring>"},"error":{"type":"object","properties":{"type":{"type":"string","enum":["invalid_request_error","authentication_error","payment_required_error","permission_error","not_found_error","conflict_error","gone_error","limit_error","api_error","unavailable_error"],"description":"Вид ошибки — по нему ветвится клиент (не по тексту message). Статус HTTP у вида один, кроме invalid_request_error:\n- `invalid_request_error` (400) — запрос неверен: поле не прошло проверку, неверный формат, действие сейчас недопустимо. Показать message рядом с формой; повтор без исправления не поможет. Обычно 400; 413 и 422 — у кодов, где это сказано в списке code.\n- `authentication_error` (401) — нет входа: сессия закончилась, cookie нет, ключ API неверен, отозван или истёк. Кабинет — отправить на страницу входа; по ключу — проверить ключ (см. code).\n- `payment_required_error` (402) — нужны деньги или решение владельца/админа организации: ждать бесполезно. Показать message и кнопку действия по code (оформить тариф, пополнить баланс, поднять потолок); без code — не оплачено подключение компании.\n- `permission_error` (403) — нельзя: не хватает права или роли, организация заблокирована, вход не тем способом. Показать message (в нём сказано, к кому обратиться); детали — в code и полях рядом.\n- `not_found_error` (404) — нет такого объекта — или он чужой: чужие организации, компании и записи тоже отвечают 404, чтобы не раскрывать, что они есть. Показать «не найдено» и вернуть к списку.\n- `conflict_error` (409) — состояние не позволяет: уже сделано, уже идёт другое действие, версия устарела. Перечитать объект, обновить экран и показать message.\n- `gone_error` (410) — объекта больше нет: разговор не найден или истёк (вопрос в чате, ответ на вопрос ИИ, подсчёт токенов — начать новый разговор), ход потерян при перезапуске сервера, ссылка привязки программы устарела или уже использована (code connector_link_gone). Повторять незачем.\n- `limit_error` (429) — предел: частота запросов, окно тарифа, число объектов или мест. Если есть заголовок Retry-After или resets_at — пройдёт само, показать, когда; иначе нужно освободить место (удалить лишнее) или сменить тариф.\n- `api_error` (500) — сбой на нашей стороне. Показать message и request_id (для поддержки); повторить позже.\n- `unavailable_error` (503) — временно недоступно (внешний сервис, ИИ, настройка сервера). Повторить позже; если повторяется — сообщить request_id в поддержку.","example":"payment_required_error","isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Готовый текст для человека по-русски: что случилось, что делать и к кому обратиться. Показывать как есть; не разбирать — формулировки меняются.","example":"Баланс доп. использования закончился — пополнить его или включить автопополнение могут владелец и админ workspace.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"code":{"type":"string","description":"Уточнение вида: по нему выбирается действие интерфейса (кнопка «Пополнить», «Войти иначе»…). Нет поля — хватает type и message. Известные коды:\n- `sso_domain_taken` (409) — домен SSO уже подтверждён другой организацией\n- `sso_last_verified_domain` (409) — включён обязательный вход, а это последний подтверждённый домен — сначала выключить обязательный вход\n- `sso_login_required` (400) — включить обязательный вход можно только из сессии, открытой через SSO этой организации\n- `domain_verification_failed` (400) — запись DNS для домена не найдена или не совпала — проверить и повторить\n- `oidc_openid_scope_required` (400) — в scopes сервера входа OIDC нет openid — добавить её: без неё вход через SSO не пройдёт\n- `enterprise_only` (403) — возможность есть только на тарифе Enterprise\n- `groups_limit` (429) — достигнут предел групп в организации\n- `custom_roles_limit` (429) — достигнут предел своих ролей в организации\n- `group_managed_by_directory` (409) — группа из каталога: название и состав меняются только там\n- `group_member_not_in_workspace` (400) — в группу можно добавить только сотрудника этой организации\n- `role_above_ceiling` (400) — роль даёт права выше потолка организации\n- `unknown_model` (400) — такой модели нет — список в available_models\n- `price_required` (400) — админка, тариф целиком: у платного тарифа нужна цена (price)\n- `lago_rejected` (409) — админка, тариф целиком: Lago отказал по существу (4xx, текст Lago в message) — правила не изменены, повтор без правки не поможет\n- `price_mismatch` (400) — админка, тариф целиком: цена не сходится с правилами (место без per_seat, per_seat без цены места, цена у бесплатного)\n- `model_not_allowed` (403) — политика организации не разрешает эту модель, а подходящей разрешённой нет — админу дополнить список\n- `retention_too_short` (400) — срок хранения меньше наименьшего\n- `audit_export_range` (400) — неверный период выгрузки журнала: конец раньше начала или период слишком длинный\n- `compliance_disabled` (403) — адрес для проверок выключен — владелец включает его в настройке\n- `missing_credentials` (401) — нет ни cookie сессии, ни ключа API — войти или передать x-api-key\n- `link_revoked` (401) — вход в Tungo из 1С больше не действует (вышли, отключили на сайте, вошли в той же базе заново, компания или человек заблокированы) — 1С просит войти заново\n- `login_denied` (403) — вход из 1С отклонён на сайте Tungo — 1С показывает отказ\n- `code_expired` (410) — код входа из 1С устарел или уже использован — 1С просит новый код\n- `code_gone` (410) — код входа из 1С уже подтверждён, отклонён или устарел — на сайте подтверждать нечего\n- `invalid_api_key` (401) — ключ API неверен (опечатка или удалён)\n- `key_revoked` (401) — ключ API отозван (при правке ключа — 409 с тем же code: отозванный ключ не меняется)\n- `key_expired` (401) — срок ключа API истёк — сменить секрет (POST …/api-keys/{id}/roll: срок начнётся заново) или выпустить новый (при правке срока — 409 с тем же code: PATCH истёкший ключ не оживляет)\n- `key_disabled` (401) — ключ API выключен — включить может автор ключа или владелец организации (POST …/api-keys/{id}/enable)\n- `key_creator_lost_access` (401) — тот, кто выпустил ключ, больше не владелец/админ организации — ключ недействителен\n- `user_banned` (401) — вход в аккаунт закрыт администратором Tungo — только поддержка Tungo\n- `onboarding_unpaid` (402) — подключение компании к ИИ-бухгалтеру не оплачено (разовый платёж): владельцу/админу организации — «Оплатить» в настройках компании; остальным — сообщить им\n- `onboarding_pending` (402) — оплата подключения компании ещё проходит в банке — ИИ заработает после подтверждения; опрашивать состояние подключения\n- `no_active_plan` (402) — нет действующей подписки (не оформлена, закончилась, первая оплата не прошла или ждёт 3-D Secure). Владельцу/админу — кнопка в настройки оплаты; остальным — «обратитесь к владельцу организации». Что именно случилось — в message\n- `balance_exhausted` (402) — баланс доп. использования кончился. Владельцу/админу — «Пополнить баланс» или включить автопополнение; остальным — сообщить им\n- `workspace_cap_reached` (402) — достигнут месячный потолок доп. использования организации. resets_at — 1-е число следующего месяца, 00:00 по Алматы; раньше — если админ поднимет потолок\n- `report_busy` (429) — сейчас собирается много отчётов команды: повторить через время из Retry-After\n- `report_timeout` (503) — отчёт команды не успел собраться: сократить период или выбрать разбивку по месяцам\n- `company_cap_reached` (402) — достигнут месячный потолок доп. использования компании. Письмо владельцу и админам уже отправлено. resets_at — 1-е число; раньше — если админ поднимет потолок (PUT /v1/workspaces/{ws}/team/company-caps/{co})\n- `member_cap_reached` (402) — достигнут личный месячный потолок доп. использования сотрудника. resets_at — 1-е число; раньше — если админ поднимет его потолок\n- `key_cap_reached` (402) — достигнут месячный потолок расхода ключа API (или остаток меньше оценки одного вызова). resets_at — 1-е число\n- `platform_balance_exhausted` (402) — баланс платформы пуст: вызов по ключу или автоматизация не сделаны. Пополнить — POST /v1/workspaces/{ws}/platform/purchases или автопополнением\n- `platform_cap_reached` (402) — достигнут месячный потолок трат платформы. resets_at — 1-е число следующего месяца, 00:00 по Алматы; раньше — поднять потолок в PUT /v1/workspaces/{ws}/platform/account\n- `platform_disabled` (402) — платформа выключена в организации: вызовы по ключам и автоматизации остановлены. Включить — PUT /v1/workspaces/{ws}/platform/account\n- `free_plan_chat_only` (402) — бесплатный тариф: пачки из кабинета только на платных тарифах. Ключам API и автоматизациям тариф не нужен\n- `free_limit_unavailable` (402) — бесплатный лимит этой учётной записи не положен (проверка регистрации или решение администратора) — оформить тариф\n- `plan_company_limit` (402) — в организации уже столько компаний не в архиве, сколько разрешает тариф (max_companies в GET /v1/plans; limit и plan_code — в ответе): новую не завести и из архива не вернуть. Убрать лишнюю в архив или перейти на тариф больше\n- `effort_not_in_plan` (402) — поле effort в чате на тарифе без выбора усилия (max_effort тарифа null, например бесплатный): ход не начат. Прислать вопрос без effort или оформить платный тариф\n- `model_not_in_plan` (402) — модель сильнее потолка тарифа (plans.model_ceiling): вызов не сделан; более сильные модели — на платных тарифах\n- `missing_permission` (403) — не хватает права в компании (или у ключа API); какого — в поле permission\n- `login_method_not_allowed` (403) — организация пускает к своим данным только после входа другим способом; какими — в allowed_methods. Предложить выйти и войти так\n- `ip_not_allowed` (403) — ключ API не принимает запросы с этого адреса — поправить allowed_ips ключа (PATCH …/api-keys/{id}) или вызывать с разрешённого адреса\n- `key_write_limit` (403) — запись в 1С по ключу API — сверх его пределов (сумма на документ или в день, виды документов) или правило автоодобрения шире пределов ключа; в сообщении — что и на сколько\n- `human_only` (403) — это решение принимает только человек в кабинете Tungo, не ключ API: например, отклонить «не знаем, записан ли» на снимке базы без проверки 1С (confirm_unknown_write)\n- `autonomy_raise_requires_session` (403) — поднять уровень доверия ИИ или потолки компании можно только владельцу или админу организации из кабинета; ключом API — только понизить\n- `id_path_required` (400) — для автоодобрения по хуку задайте хуку id_path — путь к номеру операции в теле события: без него повтор доставки нельзя отличить от новой операции\n- `directbank_rule_exists` (400) — у компании уже есть сценарий с правилом для выписки DirectBank — правило выписки одно на компанию\n- `event_not_found` (404) — события нет в этой компании или оно удалено по сроку хранения — для пробного прогона выберите событие посвежее\n- `event_body_unavailable` (409) — тело события зашифровано, а ключ шифрования на сервере сменился — прогнать сценарий на нём нельзя\n- `scenario_steps_required` (409) — у сценария цепочка шагов, а в замене (PUT) нет ни steps, ни output: передайте steps явно, иначе замена молча убрала бы цепочку\n- `scenario_output_required` (409) — у сценария форма итога, а в замене (PUT) нет ни steps, ни output: передайте output явно (null — снять форму)\n- `automation_queue_full` (429) — у компании слишком много запусков в очереди: повторите позже (событие хука отправитель повторит сам)\n- `restarting` (503) — сервис перезапускается: новый ход не начат — повторите через Retry-After\n- `company_suspended` (403) — работа с компанией приостановлена (решение платформы или оплаты); карточка видна, работать, править и архивировать нельзя (архив — 409 с тем же code)\n- `company_archived` (403) — компания в архиве: карточка видна, работать с ней нельзя. Вернуть — POST /v1/companies/{company_id}/unarchive (владелец компании или владелец/админ организации)\n- `workspace_blocked` (403) — организация заблокирована администратором платформы — только поддержка Tungo\n- `untrusted_origin` (403) — запрос пришёл не со страницы Tungo (защита от подделки запросов) — открыть кабинет по обычному адресу; для /admin/* — только со страниц ADMIN_ORIGINS\n- `cors_not_supported` (403) — вызов API из чужого браузерного кода (CORS) не поддерживается: ключ API — секрет сервера\n- `api_keys_disabled_by_policy` (403) — политика организации запрещает ключи API\n- `owner_role_reserved` (403) — владельца компании назначает, меняет и снимает только владелец или админ организации\n- `role_above_yours` (403) — у выдаваемой (или снимаемой) роли есть права, которых нет у вас; роль — в поле role, лишние права — в permissions\n- `not_key_creator` (403) — менять компании, права, срок и секрет ключа, снимать и поднимать его пределы записи в 1С может только тот, кто его выпустил (ужесточить пределы может любой админ)\n- `transfer_wider_than_target` (403) — передать ключ нельзя: у нового владельца нет нужного права (или доступа) в одной из компаний ключа\n- `invalid_allowed_ips` (400) — в allowed_ips ключа — не IP-адрес и не подсеть CIDR; какая запись — в сообщении\n- `transfer_target_not_admin` (400) — передать ключ можно только владельцу или админу этой организации\n- `platform_model_not_allowed` (403) — модель сильнее потолка платформы (настройка platform.billing): вызов не сделан и ничего не списано\n- `managed_by_sso` (403) — удаление аккаунта: аккаунт ведёт организация (SSO или SCIM) — удаляет её администратор; организации — в workspaces\n- `fresh_session_required` (403) — удаление аккаунта без почты (Telegram): нужен свежий вход — выйти, войти снова и подтвердить\n- `api_key_not_allowed` (403) — действие только из кабинета (сессия), не по ключу API: удаление аккаунта\n- `not_own_key` (403) — по ключу API виден только расход самого этого ключа\n- `webhooks_not_in_plan` (403) — вебхуков нет в тарифе организации\n- `admin_2fa_required` (403) — админ-API: у администратора платформы нет второго фактора или эта сессия не подтверждена кодом приложения-аутентификатора (POST /v1/auth/two-factor/enable, затем verify-totp)\n- `two_factor_required` (403) — отключить второй фактор, показать его секрет или выпустить резервные коды — только после кода из приложения-аутентификатора в этой сессии\n- `webhooks_require_all_companies` (403) — вебхуки — только ключу на все компании организации (при выпуске ключа — 400 с тем же code)\n- `audit_requires_all_companies` (403) — журнал организации — только ключу на все компании организации\n- `policy_blocked` (403) — одобрение: организация не доверяет ИИ записывать такой документ этим способом (поле level — уровень доверия); одобрить по одному или поднять уровень\n- `onec_read_only` (403) — одобрение: у пользователя 1С из подключения нет права записи — дать права в 1С\n- `validation_failed` (400) — тело или параметры запроса не прошли проверку: что не так с каждым полем — в fields (путь, код, текст по-русски). Подсветить поля формы; общий message — над формой\n- `invalid_json` (400) — тело запроса — не JSON-объект\n- `personal_workspace` (400) — в личной организации нет сотрудников, приглашений и политик — нужна организация Team или Enterprise\n- `api_key_required` (400) — адрес только для запроса по ключу API\n- `email_code_unavailable` (400) — удаление аккаунта: у аккаунта нет почты для кода (вход через Telegram) — подтверждать свежим входом, без кода\n- `deletion_code_invalid` (400) — удаление аккаунта: неверный код из письма; сколько попыток осталось — attempts_left\n- `deletion_code_expired` (400) — удаление аккаунта: код истёк, попытки кончились или код не запрашивался — запросить новый (POST /v1/me/deletion/code)\n- `unsafe_url` (400) — адрес вебхука недопустим (внутренняя сеть, не HTTPS)\n- `idempotency_key_invalid` (400) — Idempotency-Key неверного вида\n- `payload_too_large` (413) — тело запроса (или события хука) больше допустимого; пределы — настройки платформы\n- `idempotency_key_reused` (422) — этот Idempotency-Key уже был у другого запроса — для нового действия нужен новый ключ\n- `has_blockers` (422) — одобрение: у предложения есть блокеры — сначала исправить их\n- `batch_too_large` (413) — одобрение пачкой: предложений больше предела (поля limit, requested) — разбить на части\n- `unknown_kind` (400) — настройки писем: такого вида уведомлений нет — взять список из GET /v1/me/notifications\n- `kind_locked` (400) — настройки писем: этот вид (безопасность и аккаунт) выключить нельзя — переключатель неактивен (locked)\n- `onec_rejected` (400) — одобрение: 1С отклонила документ (причина — в message): исправить в 1С или построить предложение заново\n- `proposal_not_found` (404) — предложения с таким id нет в компании\n- `export_link_expired` (404) — ссылка на архив выгрузки истекла или неверна — получить новую: GET /v1/me/export\n- `batch_not_found` (404) — одобрение пачкой: задания с таким batch_id нет (или в нём нет предложений)\n- `idempotency_in_progress` (409) — первый запрос с этим Idempotency-Key ещё выполняется — подождать и повторить, придёт тот же ответ\n- `idempotency_response_not_kept` (409) — запрос с этим Idempotency-Key уже выполнен, но копия ответа не хранится (в нём персональные данные): результат — по ссылке в ответе (dialog_url) или в списке; статус первого ответа — original_status\n- `idempotency_response_too_large` (409) — запрос с этим Idempotency-Key уже выполнен, но ответ слишком большой, чтобы повторить его целиком: результат — в списке; статус первого ответа — original_status\n- `sole_owner` (409) — удаление аккаунта: вы единственный владелец организации с другими участниками (workspaces) — передать владение (POST /v1/workspaces/{ws}/ownership) или удалить организацию\n- `account_deletion_in_progress` (409) — удаление аккаунта: фон уже стирает аккаунт — новый код и подтверждение не принимаются, отменить нельзя\n- `wrong_status` (409) — предложение уже не в том состоянии (поле status — нынешнее): обновить его\n- `wrong_state` (409) — запуск автоматизации уже не в том состоянии (поле state — нынешнее)\n- `dialog_closed` (409) — разговор закрыт (поле reason — почему): начать новый\n- `dialog_id_taken` (409) — разговор с таким dialog_id уже есть — для нового прислать другой id или не присылать его\n- `turn_in_progress` (409) — в разговоре уже идёт ход ИИ (поле turn — его номер): дождаться его конца или остановить\n- `turn_superseded` (409) — читаемый ход уже закончился и идёт следующий (поле turn) — читать его с начала\n- `dialog_changed` (409) — разговор только что изменился в другом окне или на другом сервере Tungo — открыть его заново (GET …/chat/{id}) и повторить\n- `already_answered` (409) — на этот вопрос ИИ уже ответили (поле turn — ход с ответом)\n- `question_stale` (409) — вопрос ИИ устарел (в разговоре уже другой вопрос или его нет) — обновить разговор\n- `dismissed` (409) — вопрос ИИ закрыт без ответа — написать обычное сообщение\n- `job_running` (409) — задание (пачка) ещё идёт — дождаться отчёта; поле batch_id\n- `payload_changed` (409) — одобрение: документ изменился после превью — построить предложение заново\n- `onec_conflict` (409) — одобрение: 1С отказала из-за конфликта (объект занят или изменён) — повторить позже\n- `onec_not_found` (409) — одобрение: в 1С нет объекта, на который ссылается документ — построить предложение заново\n- `plan_limit_reached` (429) — лимит окна тарифа исчерпан; resets_at и Retry-After — когда обновится. Показать время; если в message предложено доп. использование — дать кнопку включить\n- `rate_limited` (429) — слишком часто (по ключу API, уведомления ePay с одного адреса, попытки кода второго фактора) — подождать Retry-After секунд\n- `concurrent_turns_limit` (429) — по ключу API уже идёт предельное число ходов ИИ одновременно — дождаться окончания\n- `api_keys_limit` (429) — в организации предельное число действующих ключей API — отозвать ненужные\n- `webhook_endpoints_limit` (429) — предельное число адресов вебхуков — удалить ненужные\n- `export_too_soon` (429) — выгрузку данных можно запрашивать не чаще раза в сутки: next_request_at и Retry-After — когда можно снова\n- `hook_rate_limited` (429) — приём событий хука: больше automations.hook_events_per_minute в минуту — повторить через Retry-After секунд\n- `lago_unavailable` (503) — админка, тариф целиком: Lago не настроен или не ответил (сеть, 5xx) — правила не изменены, повторить позже\n- `model_price_missing` (503) — у модели ИИ не задана цена — сбой настройки платформы, ничего не списано; повторить позже\n- `data_export_disabled` (503) — выгрузка данных на сервере не настроена (поддержка Tungo)\n- `webhooks_disabled` (503) — вебхуки на сервере не настроены\n- `webhooks_unavailable` (503) — служба доставки вебхуков временно недоступна\n- `model_not_configured` (503) — сервис модели ИИ не настроен на сервере — повторить позже (Retry-After)\n- `write_unknown` (503) — одобрение: исход записи в 1С неизвестен (связь оборвалась) — проверить документ в 1С по метке (поле marker); повтор безопасен (retry_safe); слишком ранний повтор в 1С не пишет — подождать retry_after секунд (Retry-After)\n- `onec_unavailable` (503) — 1С сейчас не отвечает — повторить позже (Retry-After)\n- `onec_check_busy` (503) — проверка связи 1С: сервер сейчас проверяет слишком много подключений — повторить через Retry-After секунд\n- `onec_failed` (503) — записать документ в 1С не удалось по неизвестной причине — повторить позже\n- `journal_unavailable` (503) — журнал решений недоступен — пачка не одобрена, повторить позже\n- `hook_secret_unavailable` (503) — приём событий хука: секрет подписи сейчас не открыть — отправителю повторить доставку позже\n- `secret_box_missing` (503) — на сервере не задан ключ шифрования настроек — секрет подписи хука сохранить нельзя (поддержка Tungo)\n- `not_personal` (409) — перевод в команду: организация уже не личная — обновить экран\n- `subscription_blocks_conversion` (409) — перевод в команду: действует подписка для одного человека — сначала отменить её и дождаться конца периода\n- `subscription_kind_mismatch` (409) — админка: действующая подписка оформлена на другой вид организации — вид не меняется, пока она идёт\n- `enterprise_features_active` (409) — админка: у организации подключены SSO или SCIM — сначала отключить, потом снимать Enterprise\n- `too_many_members_for_personal` (409) — админка: в личной организации один человек — сначала убрать остальных участников\n- `open_debt` (409) — есть неоплаченный счёт — сначала оплатить; в плане удаления этот же код лежит в blockers\n- `active_work` (409) — в организации идут ходы ИИ или автоматизации — дождаться окончания и повторить; в плане удаления этот же код лежит в blockers\n- `deletion_already_scheduled` (409) — удаление организации уже запланировано — показать дату из плана\n- `deletion_purging` (409) — очистка организации уже идёт — отменить её нельзя\n- `workspace_deleting` (409) — админка: организация удаляется по просьбе владельца — блок удаления снимает только отмена удаления\n- `invitation_not_pending` (409) — приглашение принято, отозвано или истекло — письмо не отправить, пригласить заново\n- `last_owner` (409) — это последний владелец организации — сначала передать владение другому участнику\n- `seats_by_contract` (409) — места Enterprise — по договору, карта и докупка не работают: обратиться к менеджеру\n- `no_subscription` (409) — нет действующей подписки — сначала оформить тариф\n- `not_per_seat` (409) — этот тариф не считает оплату за место — докупка не нужна, предел мест показан в ответе GET …/seats\n- `subscription_ended` (409) — возобновление: период отменённой подписки уже закончился — ничего не списано, оформить тариф заново (повторный PUT — обычное оформление)\n- `subscription_busy` (409) — подписка уже меняется другим запросом (отмена или возобновление) — обновить экран через несколько секунд\n- `subscription_ending` (409) — подписка отменена и закончится в конце периода — места не докупаются и не сокращаются\n- `seats_unpaid_debt` (409) — подписка просрочена — сначала оплатить счёт; участники остаются, новых приглашать нельзя\n- `idempotency_conflict` (409) — докупка: этот ключ уже использован с другим числом мест — для новой покупки нужен новый ключ\n- `seat_quote_changed` (409) — докупка: сумма изменилась (другой день или новая цена), деньги не списаны — показать новую сумму из поля и спросить снова\n- `no_paid_seats` (409) — оплаченных мест ещё нет — сокращать нечего\n- `seats_below_occupied` (409) — занято больше мест, чем просите оставить — сначала убрать участников или отозвать приглашения\n- `not_enterprise` (409) — админка: места по договору есть только у Enterprise — сначала поставить вид\n- `per_seat_plan_change` (409) — смена тарифа с оплатой за место не делается сразу: Lago взял бы плату за места дважды. Отменить и оформить новый с конца периода\n- `confirm_name_mismatch` (400) — удаление организации: название введено неверно — ввести точно как в плане удаления\n- `below_min_seats` (400) — на этом тарифе мест меньше нельзя: минимум — min_seats тарифа\n- `seats_over_max` (400) — мест больше предела одной организации (team.limits.max_seats) — обратиться в поддержку\n- `seats_above_paid` (400) — PUT …/seats только сокращает; новые места — через POST …/seats с оплатой\n- `onec_check_running` (429) — проверка связи 1С уже идёт у этой компании, у вас (другая компания) или у двух других компаний организации — дождаться её итога и повторить (Retry-After)\n- `invitation_resend_too_soon` (429) — письмо с приглашением уже отправлено только что — подождать Retry-After секунд\n- `seats_exhausted` (429) — свободные места закончились: докупите места или освободите их, отозвав приглашение\n- `seat_price_unknown` (503) — цена места сейчас неизвестна (тариф не прочитан или настроен неверно), деньги не списаны — повторить позже\n- `otp_mail_failed` (503) — письмо с кодом входа не отправлено: попробуйте позже\n- `seat_period_unknown` (503) — не удалось сверить период подписки с биллингом: деньги не списаны, попробуйте позже\n\nНезнакомый code — вести себя по type.","example":"balance_exhausted","uniqueKey":"error.code","typeLabel":"string"},"permission":{"type":"string","description":"При code = missing_permission — какого права не хватает: права в компании (company.read, company.manage, company.members.manage, onec.connect, proposals.create, proposals.approve, chat.use, audit.read, automations.manage) или права только ключа API (automations.read, webhooks.manage). Показать «нужно право …» и предложить попросить админа (или выпустить ключ с этим правом).","example":"proposals.approve","uniqueKey":"error.permission","typeLabel":"string"},"resets_at":{"type":"string","format":"date-time","description":"Когда ограничение снимется само — ISO 8601, UTC. Есть у plan_limit_reached (конец окна тарифа) и у месячных потолков (workspace_cap_reached, company_cap_reached, member_cap_reached, key_cap_reached, platform_cap_reached — 1-е число, 00:00 по Алматы). Показать в местном времени: «Лимит обновится в 14:30». Нет поля — само не пройдёт.","example":"2026-11-01T19:00:00.000Z","uniqueKey":"error.resets_at","typeLabel":"string\u003cdate-time>"},"allowed_methods":{"type":"array","items":{"type":"string","enum":["email_otp","google","apple","telegram","sso"],"uniqueKey":"error.allowed_methods.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"При code = login_method_not_allowed — какими способами входа организация пускает к своим данным: email_otp — код из почты, google, apple, telegram, sso — SSO организации. Предложить выйти и войти одним из них.","uniqueKey":"error.allowed_methods","typeLabel":"enum\u003cstring>[]"},"role":{"type":"string","description":"При code = role_above_yours — ключ роли в компании, которую нельзя выдать или снять (например chief_accountant).","uniqueKey":"error.role","typeLabel":"string"},"permissions":{"type":"array","items":{"type":"string","uniqueKey":"error.permissions.items.[INDEX]","typeLabel":"string"},"description":"При code = role_above_yours — права этой роли, которых нет у того, кто выдаёт. Показать списком: «у роли есть права, которых нет у вас: …».","uniqueKey":"error.permissions","typeLabel":"string[]"},"fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string","description":"Путь к полю через точку, как в теле запроса или имени параметра: `name`, `lines.0.amount`. Пустая строка — всё тело (не объект, лишние поля).","example":"bin","isRequired":true,"uniqueKey":"error.fields.items.[INDEX].path","typeLabel":"string"},"code":{"type":"string","enum":["invalid_type","too_small","too_big","invalid_format","invalid_value","not_multiple_of","unrecognized_keys","invalid_union","invalid_key","invalid_element","custom"],"description":"Что не так: invalid_type — не тот тип или поле не передано; too_small / too_big — короче/меньше или длиннее/больше допустимого; invalid_format — неверный вид (почта, дата, шаблон); invalid_value — значения нет среди допустимых; not_multiple_of — не кратно; unrecognized_keys — лишние поля; invalid_union — не подходит ни один вид; invalid_key / invalid_element — неверный ключ или элемент; custom — своё правило ручки","example":"invalid_format","isRequired":true,"uniqueKey":"error.fields.items.[INDEX].code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Текст для человека по-русски — показать под полем","example":"БИН/ИИН — 12 цифр","isRequired":true,"uniqueKey":"error.fields.items.[INDEX].message","typeLabel":"string"}},"required":["path","code","message"],"description":"Ошибка одного поля запроса","uniqueKey":"error.fields.items.[INDEX]","typeLabel":"object"},"description":"При code = validation_failed — ошибки по полям, в порядке проверки; у одного поля может быть несколько.","uniqueKey":"error.fields","typeLabel":"object[]"}},"required":["type","message"],"additionalProperties":{"oneOf":[{}],"uniqueKey":"error.additionalProperties","typeLabel":"any"},"description":"Что пошло не так. Все 503 — с заголовком Retry-After (через сколько секунд повторить). Кроме описанных, у отдельных ручек бывают свои поля рядом с code (например status у wrong_status, state у wrong_state, reason у dialog_closed) — они описаны у этих ручек.","isRequired":true,"uniqueKey":"error","typeLabel":"object"},"request_id":{"oneOf":[{"type":"string","description":"Номер запроса (тот же, что в заголовке x-request-id). Показывать мелко рядом с ошибкой с кнопкой «скопировать»: по нему поддержка находит запрос в журнале. null — номер не успел появиться (очень ранний отказ).","example":"req_4f9c2a7e1b3d4c5a8e6f7a9b0c1d2e3f","isRequired":true,"uniqueKey":"request_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"Номер запроса (тот же, что в заголовке x-request-id). Показывать мелко рядом с ошибкой с кнопкой «скопировать»: по нему поддержка находит запрос в журнале. null — номер не успел появиться (очень ранний отказ).","example":"req_4f9c2a7e1b3d4c5a8e6f7a9b0c1d2e3f","isRequired":true,"uniqueKey":"request_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"request_id","typeLabel":"string | null"}},"required":["type","error","request_id"],"description":"Тело любой ошибки API (статусы 4xx и 5xx): `{\"type\":\"error\",\"error\":{\"type\":\"…\",\"code\":\"…\",\"message\":\"…\"},\"request_id\":\"…\"}`. Интерфейс ветвится по error.type и error.code, человеку показывает error.message и request_id.","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"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":"\u003cstring>","permissions":["\u003cstring>"],"fields":[{"path":"bin","code":"invalid_format","message":"БИН/ИИН — 12 цифр"}]},"request_id":"req_4f9c2a7e1b3d4c5a8e6f7a9b0c1d2e3f"}}},"exampleType":"generated"}},"headers":{"x-request-id":{"description":"Номер запроса (тот же, что request_id в теле ошибки) — назвать в обращении в поддержку. Его всегда создаёт сервер: присланный клиентом x-request-id номером не становится","schema":{"type":"string","example":"req_3f2a9c0d1e4b4c5d8e7f6a5b4c3d2e1f"}},"x-ratelimit-limit":{"description":"Только при входе по ключу API: сколько запросов можно в текущем окне — самый тесный предел из ключа и организации","schema":{"type":"integer"}},"x-ratelimit-remaining":{"description":"Только при входе по ключу API: сколько запросов осталось по этому пределу в текущем окне","schema":{"type":"integer"}},"x-ratelimit-reset":{"description":"Только при входе по ключу API: секунд до нового окна этого предела","schema":{"type":"integer"}}},"exampleType":"generated"},"eeb995e2-d64b-47e9-91b6-382205f906c0":{"description":"Объекта больше нет (разговор истёк, ход потерян, ссылка устарела) — начать заново (error.type: gone_error)","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","enum":["error"],"description":"Всегда «error»: так тело ошибки отличается от обычного ответа.","isRequired":true,"uniqueKey":"type","typeLabel":"enum\u003cstring>"},"error":{"type":"object","properties":{"type":{"type":"string","enum":["invalid_request_error","authentication_error","payment_required_error","permission_error","not_found_error","conflict_error","gone_error","limit_error","api_error","unavailable_error"],"description":"Вид ошибки — по нему ветвится клиент (не по тексту message). Статус HTTP у вида один, кроме invalid_request_error:\n- `invalid_request_error` (400) — запрос неверен: поле не прошло проверку, неверный формат, действие сейчас недопустимо. Показать message рядом с формой; повтор без исправления не поможет. Обычно 400; 413 и 422 — у кодов, где это сказано в списке code.\n- `authentication_error` (401) — нет входа: сессия закончилась, cookie нет, ключ API неверен, отозван или истёк. Кабинет — отправить на страницу входа; по ключу — проверить ключ (см. code).\n- `payment_required_error` (402) — нужны деньги или решение владельца/админа организации: ждать бесполезно. Показать message и кнопку действия по code (оформить тариф, пополнить баланс, поднять потолок); без code — не оплачено подключение компании.\n- `permission_error` (403) — нельзя: не хватает права или роли, организация заблокирована, вход не тем способом. Показать message (в нём сказано, к кому обратиться); детали — в code и полях рядом.\n- `not_found_error` (404) — нет такого объекта — или он чужой: чужие организации, компании и записи тоже отвечают 404, чтобы не раскрывать, что они есть. Показать «не найдено» и вернуть к списку.\n- `conflict_error` (409) — состояние не позволяет: уже сделано, уже идёт другое действие, версия устарела. Перечитать объект, обновить экран и показать message.\n- `gone_error` (410) — объекта больше нет: разговор не найден или истёк (вопрос в чате, ответ на вопрос ИИ, подсчёт токенов — начать новый разговор), ход потерян при перезапуске сервера, ссылка привязки программы устарела или уже использована (code connector_link_gone). Повторять незачем.\n- `limit_error` (429) — предел: частота запросов, окно тарифа, число объектов или мест. Если есть заголовок Retry-After или resets_at — пройдёт само, показать, когда; иначе нужно освободить место (удалить лишнее) или сменить тариф.\n- `api_error` (500) — сбой на нашей стороне. Показать message и request_id (для поддержки); повторить позже.\n- `unavailable_error` (503) — временно недоступно (внешний сервис, ИИ, настройка сервера). Повторить позже; если повторяется — сообщить request_id в поддержку.","example":"payment_required_error","isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Готовый текст для человека по-русски: что случилось, что делать и к кому обратиться. Показывать как есть; не разбирать — формулировки меняются.","example":"Баланс доп. использования закончился — пополнить его или включить автопополнение могут владелец и админ workspace.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"code":{"type":"string","description":"Уточнение вида: по нему выбирается действие интерфейса (кнопка «Пополнить», «Войти иначе»…). Нет поля — хватает type и message. Известные коды:\n- `sso_domain_taken` (409) — домен SSO уже подтверждён другой организацией\n- `sso_last_verified_domain` (409) — включён обязательный вход, а это последний подтверждённый домен — сначала выключить обязательный вход\n- `sso_login_required` (400) — включить обязательный вход можно только из сессии, открытой через SSO этой организации\n- `domain_verification_failed` (400) — запись DNS для домена не найдена или не совпала — проверить и повторить\n- `oidc_openid_scope_required` (400) — в scopes сервера входа OIDC нет openid — добавить её: без неё вход через SSO не пройдёт\n- `enterprise_only` (403) — возможность есть только на тарифе Enterprise\n- `groups_limit` (429) — достигнут предел групп в организации\n- `custom_roles_limit` (429) — достигнут предел своих ролей в организации\n- `group_managed_by_directory` (409) — группа из каталога: название и состав меняются только там\n- `group_member_not_in_workspace` (400) — в группу можно добавить только сотрудника этой организации\n- `role_above_ceiling` (400) — роль даёт права выше потолка организации\n- `unknown_model` (400) — такой модели нет — список в available_models\n- `price_required` (400) — админка, тариф целиком: у платного тарифа нужна цена (price)\n- `lago_rejected` (409) — админка, тариф целиком: Lago отказал по существу (4xx, текст Lago в message) — правила не изменены, повтор без правки не поможет\n- `price_mismatch` (400) — админка, тариф целиком: цена не сходится с правилами (место без per_seat, per_seat без цены места, цена у бесплатного)\n- `model_not_allowed` (403) — политика организации не разрешает эту модель, а подходящей разрешённой нет — админу дополнить список\n- `retention_too_short` (400) — срок хранения меньше наименьшего\n- `audit_export_range` (400) — неверный период выгрузки журнала: конец раньше начала или период слишком длинный\n- `compliance_disabled` (403) — адрес для проверок выключен — владелец включает его в настройке\n- `missing_credentials` (401) — нет ни cookie сессии, ни ключа API — войти или передать x-api-key\n- `link_revoked` (401) — вход в Tungo из 1С больше не действует (вышли, отключили на сайте, вошли в той же базе заново, компания или человек заблокированы) — 1С просит войти заново\n- `login_denied` (403) — вход из 1С отклонён на сайте Tungo — 1С показывает отказ\n- `code_expired` (410) — код входа из 1С устарел или уже использован — 1С просит новый код\n- `code_gone` (410) — код входа из 1С уже подтверждён, отклонён или устарел — на сайте подтверждать нечего\n- `invalid_api_key` (401) — ключ API неверен (опечатка или удалён)\n- `key_revoked` (401) — ключ API отозван (при правке ключа — 409 с тем же code: отозванный ключ не меняется)\n- `key_expired` (401) — срок ключа API истёк — сменить секрет (POST …/api-keys/{id}/roll: срок начнётся заново) или выпустить новый (при правке срока — 409 с тем же code: PATCH истёкший ключ не оживляет)\n- `key_disabled` (401) — ключ API выключен — включить может автор ключа или владелец организации (POST …/api-keys/{id}/enable)\n- `key_creator_lost_access` (401) — тот, кто выпустил ключ, больше не владелец/админ организации — ключ недействителен\n- `user_banned` (401) — вход в аккаунт закрыт администратором Tungo — только поддержка Tungo\n- `onboarding_unpaid` (402) — подключение компании к ИИ-бухгалтеру не оплачено (разовый платёж): владельцу/админу организации — «Оплатить» в настройках компании; остальным — сообщить им\n- `onboarding_pending` (402) — оплата подключения компании ещё проходит в банке — ИИ заработает после подтверждения; опрашивать состояние подключения\n- `no_active_plan` (402) — нет действующей подписки (не оформлена, закончилась, первая оплата не прошла или ждёт 3-D Secure). Владельцу/админу — кнопка в настройки оплаты; остальным — «обратитесь к владельцу организации». Что именно случилось — в message\n- `balance_exhausted` (402) — баланс доп. использования кончился. Владельцу/админу — «Пополнить баланс» или включить автопополнение; остальным — сообщить им\n- `workspace_cap_reached` (402) — достигнут месячный потолок доп. использования организации. resets_at — 1-е число следующего месяца, 00:00 по Алматы; раньше — если админ поднимет потолок\n- `report_busy` (429) — сейчас собирается много отчётов команды: повторить через время из Retry-After\n- `report_timeout` (503) — отчёт команды не успел собраться: сократить период или выбрать разбивку по месяцам\n- `company_cap_reached` (402) — достигнут месячный потолок доп. использования компании. Письмо владельцу и админам уже отправлено. resets_at — 1-е число; раньше — если админ поднимет потолок (PUT /v1/workspaces/{ws}/team/company-caps/{co})\n- `member_cap_reached` (402) — достигнут личный месячный потолок доп. использования сотрудника. resets_at — 1-е число; раньше — если админ поднимет его потолок\n- `key_cap_reached` (402) — достигнут месячный потолок расхода ключа API (или остаток меньше оценки одного вызова). resets_at — 1-е число\n- `platform_balance_exhausted` (402) — баланс платформы пуст: вызов по ключу или автоматизация не сделаны. Пополнить — POST /v1/workspaces/{ws}/platform/purchases или автопополнением\n- `platform_cap_reached` (402) — достигнут месячный потолок трат платформы. resets_at — 1-е число следующего месяца, 00:00 по Алматы; раньше — поднять потолок в PUT /v1/workspaces/{ws}/platform/account\n- `platform_disabled` (402) — платформа выключена в организации: вызовы по ключам и автоматизации остановлены. Включить — PUT /v1/workspaces/{ws}/platform/account\n- `free_plan_chat_only` (402) — бесплатный тариф: пачки из кабинета только на платных тарифах. Ключам API и автоматизациям тариф не нужен\n- `free_limit_unavailable` (402) — бесплатный лимит этой учётной записи не положен (проверка регистрации или решение администратора) — оформить тариф\n- `plan_company_limit` (402) — в организации уже столько компаний не в архиве, сколько разрешает тариф (max_companies в GET /v1/plans; limit и plan_code — в ответе): новую не завести и из архива не вернуть. Убрать лишнюю в архив или перейти на тариф больше\n- `effort_not_in_plan` (402) — поле effort в чате на тарифе без выбора усилия (max_effort тарифа null, например бесплатный): ход не начат. Прислать вопрос без effort или оформить платный тариф\n- `model_not_in_plan` (402) — модель сильнее потолка тарифа (plans.model_ceiling): вызов не сделан; более сильные модели — на платных тарифах\n- `missing_permission` (403) — не хватает права в компании (или у ключа API); какого — в поле permission\n- `login_method_not_allowed` (403) — организация пускает к своим данным только после входа другим способом; какими — в allowed_methods. Предложить выйти и войти так\n- `ip_not_allowed` (403) — ключ API не принимает запросы с этого адреса — поправить allowed_ips ключа (PATCH …/api-keys/{id}) или вызывать с разрешённого адреса\n- `key_write_limit` (403) — запись в 1С по ключу API — сверх его пределов (сумма на документ или в день, виды документов) или правило автоодобрения шире пределов ключа; в сообщении — что и на сколько\n- `human_only` (403) — это решение принимает только человек в кабинете Tungo, не ключ API: например, отклонить «не знаем, записан ли» на снимке базы без проверки 1С (confirm_unknown_write)\n- `autonomy_raise_requires_session` (403) — поднять уровень доверия ИИ или потолки компании можно только владельцу или админу организации из кабинета; ключом API — только понизить\n- `id_path_required` (400) — для автоодобрения по хуку задайте хуку id_path — путь к номеру операции в теле события: без него повтор доставки нельзя отличить от новой операции\n- `directbank_rule_exists` (400) — у компании уже есть сценарий с правилом для выписки DirectBank — правило выписки одно на компанию\n- `event_not_found` (404) — события нет в этой компании или оно удалено по сроку хранения — для пробного прогона выберите событие посвежее\n- `event_body_unavailable` (409) — тело события зашифровано, а ключ шифрования на сервере сменился — прогнать сценарий на нём нельзя\n- `scenario_steps_required` (409) — у сценария цепочка шагов, а в замене (PUT) нет ни steps, ни output: передайте steps явно, иначе замена молча убрала бы цепочку\n- `scenario_output_required` (409) — у сценария форма итога, а в замене (PUT) нет ни steps, ни output: передайте output явно (null — снять форму)\n- `automation_queue_full` (429) — у компании слишком много запусков в очереди: повторите позже (событие хука отправитель повторит сам)\n- `restarting` (503) — сервис перезапускается: новый ход не начат — повторите через Retry-After\n- `company_suspended` (403) — работа с компанией приостановлена (решение платформы или оплаты); карточка видна, работать, править и архивировать нельзя (архив — 409 с тем же code)\n- `company_archived` (403) — компания в архиве: карточка видна, работать с ней нельзя. Вернуть — POST /v1/companies/{company_id}/unarchive (владелец компании или владелец/админ организации)\n- `workspace_blocked` (403) — организация заблокирована администратором платформы — только поддержка Tungo\n- `untrusted_origin` (403) — запрос пришёл не со страницы Tungo (защита от подделки запросов) — открыть кабинет по обычному адресу; для /admin/* — только со страниц ADMIN_ORIGINS\n- `cors_not_supported` (403) — вызов API из чужого браузерного кода (CORS) не поддерживается: ключ API — секрет сервера\n- `api_keys_disabled_by_policy` (403) — политика организации запрещает ключи API\n- `owner_role_reserved` (403) — владельца компании назначает, меняет и снимает только владелец или админ организации\n- `role_above_yours` (403) — у выдаваемой (или снимаемой) роли есть права, которых нет у вас; роль — в поле role, лишние права — в permissions\n- `not_key_creator` (403) — менять компании, права, срок и секрет ключа, снимать и поднимать его пределы записи в 1С может только тот, кто его выпустил (ужесточить пределы может любой админ)\n- `transfer_wider_than_target` (403) — передать ключ нельзя: у нового владельца нет нужного права (или доступа) в одной из компаний ключа\n- `invalid_allowed_ips` (400) — в allowed_ips ключа — не IP-адрес и не подсеть CIDR; какая запись — в сообщении\n- `transfer_target_not_admin` (400) — передать ключ можно только владельцу или админу этой организации\n- `platform_model_not_allowed` (403) — модель сильнее потолка платформы (настройка platform.billing): вызов не сделан и ничего не списано\n- `managed_by_sso` (403) — удаление аккаунта: аккаунт ведёт организация (SSO или SCIM) — удаляет её администратор; организации — в workspaces\n- `fresh_session_required` (403) — удаление аккаунта без почты (Telegram): нужен свежий вход — выйти, войти снова и подтвердить\n- `api_key_not_allowed` (403) — действие только из кабинета (сессия), не по ключу API: удаление аккаунта\n- `not_own_key` (403) — по ключу API виден только расход самого этого ключа\n- `webhooks_not_in_plan` (403) — вебхуков нет в тарифе организации\n- `admin_2fa_required` (403) — админ-API: у администратора платформы нет второго фактора или эта сессия не подтверждена кодом приложения-аутентификатора (POST /v1/auth/two-factor/enable, затем verify-totp)\n- `two_factor_required` (403) — отключить второй фактор, показать его секрет или выпустить резервные коды — только после кода из приложения-аутентификатора в этой сессии\n- `webhooks_require_all_companies` (403) — вебхуки — только ключу на все компании организации (при выпуске ключа — 400 с тем же code)\n- `audit_requires_all_companies` (403) — журнал организации — только ключу на все компании организации\n- `policy_blocked` (403) — одобрение: организация не доверяет ИИ записывать такой документ этим способом (поле level — уровень доверия); одобрить по одному или поднять уровень\n- `onec_read_only` (403) — одобрение: у пользователя 1С из подключения нет права записи — дать права в 1С\n- `validation_failed` (400) — тело или параметры запроса не прошли проверку: что не так с каждым полем — в fields (путь, код, текст по-русски). Подсветить поля формы; общий message — над формой\n- `invalid_json` (400) — тело запроса — не JSON-объект\n- `personal_workspace` (400) — в личной организации нет сотрудников, приглашений и политик — нужна организация Team или Enterprise\n- `api_key_required` (400) — адрес только для запроса по ключу API\n- `email_code_unavailable` (400) — удаление аккаунта: у аккаунта нет почты для кода (вход через Telegram) — подтверждать свежим входом, без кода\n- `deletion_code_invalid` (400) — удаление аккаунта: неверный код из письма; сколько попыток осталось — attempts_left\n- `deletion_code_expired` (400) — удаление аккаунта: код истёк, попытки кончились или код не запрашивался — запросить новый (POST /v1/me/deletion/code)\n- `unsafe_url` (400) — адрес вебхука недопустим (внутренняя сеть, не HTTPS)\n- `idempotency_key_invalid` (400) — Idempotency-Key неверного вида\n- `payload_too_large` (413) — тело запроса (или события хука) больше допустимого; пределы — настройки платформы\n- `idempotency_key_reused` (422) — этот Idempotency-Key уже был у другого запроса — для нового действия нужен новый ключ\n- `has_blockers` (422) — одобрение: у предложения есть блокеры — сначала исправить их\n- `batch_too_large` (413) — одобрение пачкой: предложений больше предела (поля limit, requested) — разбить на части\n- `unknown_kind` (400) — настройки писем: такого вида уведомлений нет — взять список из GET /v1/me/notifications\n- `kind_locked` (400) — настройки писем: этот вид (безопасность и аккаунт) выключить нельзя — переключатель неактивен (locked)\n- `onec_rejected` (400) — одобрение: 1С отклонила документ (причина — в message): исправить в 1С или построить предложение заново\n- `proposal_not_found` (404) — предложения с таким id нет в компании\n- `export_link_expired` (404) — ссылка на архив выгрузки истекла или неверна — получить новую: GET /v1/me/export\n- `batch_not_found` (404) — одобрение пачкой: задания с таким batch_id нет (или в нём нет предложений)\n- `idempotency_in_progress` (409) — первый запрос с этим Idempotency-Key ещё выполняется — подождать и повторить, придёт тот же ответ\n- `idempotency_response_not_kept` (409) — запрос с этим Idempotency-Key уже выполнен, но копия ответа не хранится (в нём персональные данные): результат — по ссылке в ответе (dialog_url) или в списке; статус первого ответа — original_status\n- `idempotency_response_too_large` (409) — запрос с этим Idempotency-Key уже выполнен, но ответ слишком большой, чтобы повторить его целиком: результат — в списке; статус первого ответа — original_status\n- `sole_owner` (409) — удаление аккаунта: вы единственный владелец организации с другими участниками (workspaces) — передать владение (POST /v1/workspaces/{ws}/ownership) или удалить организацию\n- `account_deletion_in_progress` (409) — удаление аккаунта: фон уже стирает аккаунт — новый код и подтверждение не принимаются, отменить нельзя\n- `wrong_status` (409) — предложение уже не в том состоянии (поле status — нынешнее): обновить его\n- `wrong_state` (409) — запуск автоматизации уже не в том состоянии (поле state — нынешнее)\n- `dialog_closed` (409) — разговор закрыт (поле reason — почему): начать новый\n- `dialog_id_taken` (409) — разговор с таким dialog_id уже есть — для нового прислать другой id или не присылать его\n- `turn_in_progress` (409) — в разговоре уже идёт ход ИИ (поле turn — его номер): дождаться его конца или остановить\n- `turn_superseded` (409) — читаемый ход уже закончился и идёт следующий (поле turn) — читать его с начала\n- `dialog_changed` (409) — разговор только что изменился в другом окне или на другом сервере Tungo — открыть его заново (GET …/chat/{id}) и повторить\n- `already_answered` (409) — на этот вопрос ИИ уже ответили (поле turn — ход с ответом)\n- `question_stale` (409) — вопрос ИИ устарел (в разговоре уже другой вопрос или его нет) — обновить разговор\n- `dismissed` (409) — вопрос ИИ закрыт без ответа — написать обычное сообщение\n- `job_running` (409) — задание (пачка) ещё идёт — дождаться отчёта; поле batch_id\n- `payload_changed` (409) — одобрение: документ изменился после превью — построить предложение заново\n- `onec_conflict` (409) — одобрение: 1С отказала из-за конфликта (объект занят или изменён) — повторить позже\n- `onec_not_found` (409) — одобрение: в 1С нет объекта, на который ссылается документ — построить предложение заново\n- `plan_limit_reached` (429) — лимит окна тарифа исчерпан; resets_at и Retry-After — когда обновится. Показать время; если в message предложено доп. использование — дать кнопку включить\n- `rate_limited` (429) — слишком часто (по ключу API, уведомления ePay с одного адреса, попытки кода второго фактора) — подождать Retry-After секунд\n- `concurrent_turns_limit` (429) — по ключу API уже идёт предельное число ходов ИИ одновременно — дождаться окончания\n- `api_keys_limit` (429) — в организации предельное число действующих ключей API — отозвать ненужные\n- `webhook_endpoints_limit` (429) — предельное число адресов вебхуков — удалить ненужные\n- `export_too_soon` (429) — выгрузку данных можно запрашивать не чаще раза в сутки: next_request_at и Retry-After — когда можно снова\n- `hook_rate_limited` (429) — приём событий хука: больше automations.hook_events_per_minute в минуту — повторить через Retry-After секунд\n- `lago_unavailable` (503) — админка, тариф целиком: Lago не настроен или не ответил (сеть, 5xx) — правила не изменены, повторить позже\n- `model_price_missing` (503) — у модели ИИ не задана цена — сбой настройки платформы, ничего не списано; повторить позже\n- `data_export_disabled` (503) — выгрузка данных на сервере не настроена (поддержка Tungo)\n- `webhooks_disabled` (503) — вебхуки на сервере не настроены\n- `webhooks_unavailable` (503) — служба доставки вебхуков временно недоступна\n- `model_not_configured` (503) — сервис модели ИИ не настроен на сервере — повторить позже (Retry-After)\n- `write_unknown` (503) — одобрение: исход записи в 1С неизвестен (связь оборвалась) — проверить документ в 1С по метке (поле marker); повтор безопасен (retry_safe); слишком ранний повтор в 1С не пишет — подождать retry_after секунд (Retry-After)\n- `onec_unavailable` (503) — 1С сейчас не отвечает — повторить позже (Retry-After)\n- `onec_check_busy` (503) — проверка связи 1С: сервер сейчас проверяет слишком много подключений — повторить через Retry-After секунд\n- `onec_failed` (503) — записать документ в 1С не удалось по неизвестной причине — повторить позже\n- `journal_unavailable` (503) — журнал решений недоступен — пачка не одобрена, повторить позже\n- `hook_secret_unavailable` (503) — приём событий хука: секрет подписи сейчас не открыть — отправителю повторить доставку позже\n- `secret_box_missing` (503) — на сервере не задан ключ шифрования настроек — секрет подписи хука сохранить нельзя (поддержка Tungo)\n- `not_personal` (409) — перевод в команду: организация уже не личная — обновить экран\n- `subscription_blocks_conversion` (409) — перевод в команду: действует подписка для одного человека — сначала отменить её и дождаться конца периода\n- `subscription_kind_mismatch` (409) — админка: действующая подписка оформлена на другой вид организации — вид не меняется, пока она идёт\n- `enterprise_features_active` (409) — админка: у организации подключены SSO или SCIM — сначала отключить, потом снимать Enterprise\n- `too_many_members_for_personal` (409) — админка: в личной организации один человек — сначала убрать остальных участников\n- `open_debt` (409) — есть неоплаченный счёт — сначала оплатить; в плане удаления этот же код лежит в blockers\n- `active_work` (409) — в организации идут ходы ИИ или автоматизации — дождаться окончания и повторить; в плане удаления этот же код лежит в blockers\n- `deletion_already_scheduled` (409) — удаление организации уже запланировано — показать дату из плана\n- `deletion_purging` (409) — очистка организации уже идёт — отменить её нельзя\n- `workspace_deleting` (409) — админка: организация удаляется по просьбе владельца — блок удаления снимает только отмена удаления\n- `invitation_not_pending` (409) — приглашение принято, отозвано или истекло — письмо не отправить, пригласить заново\n- `last_owner` (409) — это последний владелец организации — сначала передать владение другому участнику\n- `seats_by_contract` (409) — места Enterprise — по договору, карта и докупка не работают: обратиться к менеджеру\n- `no_subscription` (409) — нет действующей подписки — сначала оформить тариф\n- `not_per_seat` (409) — этот тариф не считает оплату за место — докупка не нужна, предел мест показан в ответе GET …/seats\n- `subscription_ended` (409) — возобновление: период отменённой подписки уже закончился — ничего не списано, оформить тариф заново (повторный PUT — обычное оформление)\n- `subscription_busy` (409) — подписка уже меняется другим запросом (отмена или возобновление) — обновить экран через несколько секунд\n- `subscription_ending` (409) — подписка отменена и закончится в конце периода — места не докупаются и не сокращаются\n- `seats_unpaid_debt` (409) — подписка просрочена — сначала оплатить счёт; участники остаются, новых приглашать нельзя\n- `idempotency_conflict` (409) — докупка: этот ключ уже использован с другим числом мест — для новой покупки нужен новый ключ\n- `seat_quote_changed` (409) — докупка: сумма изменилась (другой день или новая цена), деньги не списаны — показать новую сумму из поля и спросить снова\n- `no_paid_seats` (409) — оплаченных мест ещё нет — сокращать нечего\n- `seats_below_occupied` (409) — занято больше мест, чем просите оставить — сначала убрать участников или отозвать приглашения\n- `not_enterprise` (409) — админка: места по договору есть только у Enterprise — сначала поставить вид\n- `per_seat_plan_change` (409) — смена тарифа с оплатой за место не делается сразу: Lago взял бы плату за места дважды. Отменить и оформить новый с конца периода\n- `confirm_name_mismatch` (400) — удаление организации: название введено неверно — ввести точно как в плане удаления\n- `below_min_seats` (400) — на этом тарифе мест меньше нельзя: минимум — min_seats тарифа\n- `seats_over_max` (400) — мест больше предела одной организации (team.limits.max_seats) — обратиться в поддержку\n- `seats_above_paid` (400) — PUT …/seats только сокращает; новые места — через POST …/seats с оплатой\n- `onec_check_running` (429) — проверка связи 1С уже идёт у этой компании, у вас (другая компания) или у двух других компаний организации — дождаться её итога и повторить (Retry-After)\n- `invitation_resend_too_soon` (429) — письмо с приглашением уже отправлено только что — подождать Retry-After секунд\n- `seats_exhausted` (429) — свободные места закончились: докупите места или освободите их, отозвав приглашение\n- `seat_price_unknown` (503) — цена места сейчас неизвестна (тариф не прочитан или настроен неверно), деньги не списаны — повторить позже\n- `otp_mail_failed` (503) — письмо с кодом входа не отправлено: попробуйте позже\n- `seat_period_unknown` (503) — не удалось сверить период подписки с биллингом: деньги не списаны, попробуйте позже\n\nНезнакомый code — вести себя по type.","example":"balance_exhausted","uniqueKey":"error.code","typeLabel":"string"},"permission":{"type":"string","description":"При code = missing_permission — какого права не хватает: права в компании (company.read, company.manage, company.members.manage, onec.connect, proposals.create, proposals.approve, chat.use, audit.read, automations.manage) или права только ключа API (automations.read, webhooks.manage). Показать «нужно право …» и предложить попросить админа (или выпустить ключ с этим правом).","example":"proposals.approve","uniqueKey":"error.permission","typeLabel":"string"},"resets_at":{"type":"string","format":"date-time","description":"Когда ограничение снимется само — ISO 8601, UTC. Есть у plan_limit_reached (конец окна тарифа) и у месячных потолков (workspace_cap_reached, company_cap_reached, member_cap_reached, key_cap_reached, platform_cap_reached — 1-е число, 00:00 по Алматы). Показать в местном времени: «Лимит обновится в 14:30». Нет поля — само не пройдёт.","example":"2026-11-01T19:00:00.000Z","uniqueKey":"error.resets_at","typeLabel":"string\u003cdate-time>"},"allowed_methods":{"type":"array","items":{"type":"string","enum":["email_otp","google","apple","telegram","sso"],"uniqueKey":"error.allowed_methods.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"При code = login_method_not_allowed — какими способами входа организация пускает к своим данным: email_otp — код из почты, google, apple, telegram, sso — SSO организации. Предложить выйти и войти одним из них.","uniqueKey":"error.allowed_methods","typeLabel":"enum\u003cstring>[]"},"role":{"type":"string","description":"При code = role_above_yours — ключ роли в компании, которую нельзя выдать или снять (например chief_accountant).","uniqueKey":"error.role","typeLabel":"string"},"permissions":{"type":"array","items":{"type":"string","uniqueKey":"error.permissions.items.[INDEX]","typeLabel":"string"},"description":"При code = role_above_yours — права этой роли, которых нет у того, кто выдаёт. Показать списком: «у роли есть права, которых нет у вас: …».","uniqueKey":"error.permissions","typeLabel":"string[]"},"fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string","description":"Путь к полю через точку, как в теле запроса или имени параметра: `name`, `lines.0.amount`. Пустая строка — всё тело (не объект, лишние поля).","example":"bin","isRequired":true,"uniqueKey":"error.fields.items.[INDEX].path","typeLabel":"string"},"code":{"type":"string","enum":["invalid_type","too_small","too_big","invalid_format","invalid_value","not_multiple_of","unrecognized_keys","invalid_union","invalid_key","invalid_element","custom"],"description":"Что не так: invalid_type — не тот тип или поле не передано; too_small / too_big — короче/меньше или длиннее/больше допустимого; invalid_format — неверный вид (почта, дата, шаблон); invalid_value — значения нет среди допустимых; not_multiple_of — не кратно; unrecognized_keys — лишние поля; invalid_union — не подходит ни один вид; invalid_key / invalid_element — неверный ключ или элемент; custom — своё правило ручки","example":"invalid_format","isRequired":true,"uniqueKey":"error.fields.items.[INDEX].code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Текст для человека по-русски — показать под полем","example":"БИН/ИИН — 12 цифр","isRequired":true,"uniqueKey":"error.fields.items.[INDEX].message","typeLabel":"string"}},"required":["path","code","message"],"description":"Ошибка одного поля запроса","uniqueKey":"error.fields.items.[INDEX]","typeLabel":"object"},"description":"При code = validation_failed — ошибки по полям, в порядке проверки; у одного поля может быть несколько.","uniqueKey":"error.fields","typeLabel":"object[]"}},"required":["type","message"],"additionalProperties":{"oneOf":[{}],"uniqueKey":"error.additionalProperties","typeLabel":"any"},"description":"Что пошло не так. Все 503 — с заголовком Retry-After (через сколько секунд повторить). Кроме описанных, у отдельных ручек бывают свои поля рядом с code (например status у wrong_status, state у wrong_state, reason у dialog_closed) — они описаны у этих ручек.","isRequired":true,"uniqueKey":"error","typeLabel":"object"},"request_id":{"oneOf":[{"type":"string","description":"Номер запроса (тот же, что в заголовке x-request-id). Показывать мелко рядом с ошибкой с кнопкой «скопировать»: по нему поддержка находит запрос в журнале. null — номер не успел появиться (очень ранний отказ).","example":"req_4f9c2a7e1b3d4c5a8e6f7a9b0c1d2e3f","isRequired":true,"uniqueKey":"request_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"Номер запроса (тот же, что в заголовке x-request-id). Показывать мелко рядом с ошибкой с кнопкой «скопировать»: по нему поддержка находит запрос в журнале. null — номер не успел появиться (очень ранний отказ).","example":"req_4f9c2a7e1b3d4c5a8e6f7a9b0c1d2e3f","isRequired":true,"uniqueKey":"request_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"request_id","typeLabel":"string | null"}},"required":["type","error","request_id"],"description":"Тело любой ошибки API (статусы 4xx и 5xx): `{\"type\":\"error\",\"error\":{\"type\":\"…\",\"code\":\"…\",\"message\":\"…\"},\"request_id\":\"…\"}`. Интерфейс ветвится по error.type и error.code, человеку показывает error.message и request_id.","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"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":"\u003cstring>","permissions":["\u003cstring>"],"fields":[{"path":"bin","code":"invalid_format","message":"БИН/ИИН — 12 цифр"}]},"request_id":"req_4f9c2a7e1b3d4c5a8e6f7a9b0c1d2e3f"}}},"exampleType":"generated"}},"headers":{"x-request-id":{"description":"Номер запроса (тот же, что request_id в теле ошибки) — назвать в обращении в поддержку. Его всегда создаёт сервер: присланный клиентом x-request-id номером не становится","schema":{"type":"string","example":"req_3f2a9c0d1e4b4c5d8e7f6a5b4c3d2e1f"}},"x-ratelimit-limit":{"description":"Только при входе по ключу API: сколько запросов можно в текущем окне — самый тесный предел из ключа и организации","schema":{"type":"integer"}},"x-ratelimit-remaining":{"description":"Только при входе по ключу API: сколько запросов осталось по этому пределу в текущем окне","schema":{"type":"integer"}},"x-ratelimit-reset":{"description":"Только при входе по ключу API: секунд до нового окна этого предела","schema":{"type":"integer"}}},"exampleType":"generated"},"e34a4898-e25b-420a-a517-a653398faa51":{"description":"Тело запроса больше предела этого адреса (error.code = payload_too_large)","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","enum":["error"],"description":"Всегда «error»: так тело ошибки отличается от обычного ответа.","isRequired":true,"uniqueKey":"type","typeLabel":"enum\u003cstring>"},"error":{"type":"object","properties":{"type":{"type":"string","enum":["invalid_request_error","authentication_error","payment_required_error","permission_error","not_found_error","conflict_error","gone_error","limit_error","api_error","unavailable_error"],"description":"Вид ошибки — по нему ветвится клиент (не по тексту message). Статус HTTP у вида один, кроме invalid_request_error:\n- `invalid_request_error` (400) — запрос неверен: поле не прошло проверку, неверный формат, действие сейчас недопустимо. Показать message рядом с формой; повтор без исправления не поможет. Обычно 400; 413 и 422 — у кодов, где это сказано в списке code.\n- `authentication_error` (401) — нет входа: сессия закончилась, cookie нет, ключ API неверен, отозван или истёк. Кабинет — отправить на страницу входа; по ключу — проверить ключ (см. code).\n- `payment_required_error` (402) — нужны деньги или решение владельца/админа организации: ждать бесполезно. Показать message и кнопку действия по code (оформить тариф, пополнить баланс, поднять потолок); без code — не оплачено подключение компании.\n- `permission_error` (403) — нельзя: не хватает права или роли, организация заблокирована, вход не тем способом. Показать message (в нём сказано, к кому обратиться); детали — в code и полях рядом.\n- `not_found_error` (404) — нет такого объекта — или он чужой: чужие организации, компании и записи тоже отвечают 404, чтобы не раскрывать, что они есть. Показать «не найдено» и вернуть к списку.\n- `conflict_error` (409) — состояние не позволяет: уже сделано, уже идёт другое действие, версия устарела. Перечитать объект, обновить экран и показать message.\n- `gone_error` (410) — объекта больше нет: разговор не найден или истёк (вопрос в чате, ответ на вопрос ИИ, подсчёт токенов — начать новый разговор), ход потерян при перезапуске сервера, ссылка привязки программы устарела или уже использована (code connector_link_gone). Повторять незачем.\n- `limit_error` (429) — предел: частота запросов, окно тарифа, число объектов или мест. Если есть заголовок Retry-After или resets_at — пройдёт само, показать, когда; иначе нужно освободить место (удалить лишнее) или сменить тариф.\n- `api_error` (500) — сбой на нашей стороне. Показать message и request_id (для поддержки); повторить позже.\n- `unavailable_error` (503) — временно недоступно (внешний сервис, ИИ, настройка сервера). Повторить позже; если повторяется — сообщить request_id в поддержку.","example":"payment_required_error","isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Готовый текст для человека по-русски: что случилось, что делать и к кому обратиться. Показывать как есть; не разбирать — формулировки меняются.","example":"Баланс доп. использования закончился — пополнить его или включить автопополнение могут владелец и админ workspace.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"code":{"type":"string","description":"Уточнение вида: по нему выбирается действие интерфейса (кнопка «Пополнить», «Войти иначе»…). Нет поля — хватает type и message. Известные коды:\n- `sso_domain_taken` (409) — домен SSO уже подтверждён другой организацией\n- `sso_last_verified_domain` (409) — включён обязательный вход, а это последний подтверждённый домен — сначала выключить обязательный вход\n- `sso_login_required` (400) — включить обязательный вход можно только из сессии, открытой через SSO этой организации\n- `domain_verification_failed` (400) — запись DNS для домена не найдена или не совпала — проверить и повторить\n- `oidc_openid_scope_required` (400) — в scopes сервера входа OIDC нет openid — добавить её: без неё вход через SSO не пройдёт\n- `enterprise_only` (403) — возможность есть только на тарифе Enterprise\n- `groups_limit` (429) — достигнут предел групп в организации\n- `custom_roles_limit` (429) — достигнут предел своих ролей в организации\n- `group_managed_by_directory` (409) — группа из каталога: название и состав меняются только там\n- `group_member_not_in_workspace` (400) — в группу можно добавить только сотрудника этой организации\n- `role_above_ceiling` (400) — роль даёт права выше потолка организации\n- `unknown_model` (400) — такой модели нет — список в available_models\n- `price_required` (400) — админка, тариф целиком: у платного тарифа нужна цена (price)\n- `lago_rejected` (409) — админка, тариф целиком: Lago отказал по существу (4xx, текст Lago в message) — правила не изменены, повтор без правки не поможет\n- `price_mismatch` (400) — админка, тариф целиком: цена не сходится с правилами (место без per_seat, per_seat без цены места, цена у бесплатного)\n- `model_not_allowed` (403) — политика организации не разрешает эту модель, а подходящей разрешённой нет — админу дополнить список\n- `retention_too_short` (400) — срок хранения меньше наименьшего\n- `audit_export_range` (400) — неверный период выгрузки журнала: конец раньше начала или период слишком длинный\n- `compliance_disabled` (403) — адрес для проверок выключен — владелец включает его в настройке\n- `missing_credentials` (401) — нет ни cookie сессии, ни ключа API — войти или передать x-api-key\n- `link_revoked` (401) — вход в Tungo из 1С больше не действует (вышли, отключили на сайте, вошли в той же базе заново, компания или человек заблокированы) — 1С просит войти заново\n- `login_denied` (403) — вход из 1С отклонён на сайте Tungo — 1С показывает отказ\n- `code_expired` (410) — код входа из 1С устарел или уже использован — 1С просит новый код\n- `code_gone` (410) — код входа из 1С уже подтверждён, отклонён или устарел — на сайте подтверждать нечего\n- `invalid_api_key` (401) — ключ API неверен (опечатка или удалён)\n- `key_revoked` (401) — ключ API отозван (при правке ключа — 409 с тем же code: отозванный ключ не меняется)\n- `key_expired` (401) — срок ключа API истёк — сменить секрет (POST …/api-keys/{id}/roll: срок начнётся заново) или выпустить новый (при правке срока — 409 с тем же code: PATCH истёкший ключ не оживляет)\n- `key_disabled` (401) — ключ API выключен — включить может автор ключа или владелец организации (POST …/api-keys/{id}/enable)\n- `key_creator_lost_access` (401) — тот, кто выпустил ключ, больше не владелец/админ организации — ключ недействителен\n- `user_banned` (401) — вход в аккаунт закрыт администратором Tungo — только поддержка Tungo\n- `onboarding_unpaid` (402) — подключение компании к ИИ-бухгалтеру не оплачено (разовый платёж): владельцу/админу организации — «Оплатить» в настройках компании; остальным — сообщить им\n- `onboarding_pending` (402) — оплата подключения компании ещё проходит в банке — ИИ заработает после подтверждения; опрашивать состояние подключения\n- `no_active_plan` (402) — нет действующей подписки (не оформлена, закончилась, первая оплата не прошла или ждёт 3-D Secure). Владельцу/админу — кнопка в настройки оплаты; остальным — «обратитесь к владельцу организации». Что именно случилось — в message\n- `balance_exhausted` (402) — баланс доп. использования кончился. Владельцу/админу — «Пополнить баланс» или включить автопополнение; остальным — сообщить им\n- `workspace_cap_reached` (402) — достигнут месячный потолок доп. использования организации. resets_at — 1-е число следующего месяца, 00:00 по Алматы; раньше — если админ поднимет потолок\n- `report_busy` (429) — сейчас собирается много отчётов команды: повторить через время из Retry-After\n- `report_timeout` (503) — отчёт команды не успел собраться: сократить период или выбрать разбивку по месяцам\n- `company_cap_reached` (402) — достигнут месячный потолок доп. использования компании. Письмо владельцу и админам уже отправлено. resets_at — 1-е число; раньше — если админ поднимет потолок (PUT /v1/workspaces/{ws}/team/company-caps/{co})\n- `member_cap_reached` (402) — достигнут личный месячный потолок доп. использования сотрудника. resets_at — 1-е число; раньше — если админ поднимет его потолок\n- `key_cap_reached` (402) — достигнут месячный потолок расхода ключа API (или остаток меньше оценки одного вызова). resets_at — 1-е число\n- `platform_balance_exhausted` (402) — баланс платформы пуст: вызов по ключу или автоматизация не сделаны. Пополнить — POST /v1/workspaces/{ws}/platform/purchases или автопополнением\n- `platform_cap_reached` (402) — достигнут месячный потолок трат платформы. resets_at — 1-е число следующего месяца, 00:00 по Алматы; раньше — поднять потолок в PUT /v1/workspaces/{ws}/platform/account\n- `platform_disabled` (402) — платформа выключена в организации: вызовы по ключам и автоматизации остановлены. Включить — PUT /v1/workspaces/{ws}/platform/account\n- `free_plan_chat_only` (402) — бесплатный тариф: пачки из кабинета только на платных тарифах. Ключам API и автоматизациям тариф не нужен\n- `free_limit_unavailable` (402) — бесплатный лимит этой учётной записи не положен (проверка регистрации или решение администратора) — оформить тариф\n- `plan_company_limit` (402) — в организации уже столько компаний не в архиве, сколько разрешает тариф (max_companies в GET /v1/plans; limit и plan_code — в ответе): новую не завести и из архива не вернуть. Убрать лишнюю в архив или перейти на тариф больше\n- `effort_not_in_plan` (402) — поле effort в чате на тарифе без выбора усилия (max_effort тарифа null, например бесплатный): ход не начат. Прислать вопрос без effort или оформить платный тариф\n- `model_not_in_plan` (402) — модель сильнее потолка тарифа (plans.model_ceiling): вызов не сделан; более сильные модели — на платных тарифах\n- `missing_permission` (403) — не хватает права в компании (или у ключа API); какого — в поле permission\n- `login_method_not_allowed` (403) — организация пускает к своим данным только после входа другим способом; какими — в allowed_methods. Предложить выйти и войти так\n- `ip_not_allowed` (403) — ключ API не принимает запросы с этого адреса — поправить allowed_ips ключа (PATCH …/api-keys/{id}) или вызывать с разрешённого адреса\n- `key_write_limit` (403) — запись в 1С по ключу API — сверх его пределов (сумма на документ или в день, виды документов) или правило автоодобрения шире пределов ключа; в сообщении — что и на сколько\n- `human_only` (403) — это решение принимает только человек в кабинете Tungo, не ключ API: например, отклонить «не знаем, записан ли» на снимке базы без проверки 1С (confirm_unknown_write)\n- `autonomy_raise_requires_session` (403) — поднять уровень доверия ИИ или потолки компании можно только владельцу или админу организации из кабинета; ключом API — только понизить\n- `id_path_required` (400) — для автоодобрения по хуку задайте хуку id_path — путь к номеру операции в теле события: без него повтор доставки нельзя отличить от новой операции\n- `directbank_rule_exists` (400) — у компании уже есть сценарий с правилом для выписки DirectBank — правило выписки одно на компанию\n- `event_not_found` (404) — события нет в этой компании или оно удалено по сроку хранения — для пробного прогона выберите событие посвежее\n- `event_body_unavailable` (409) — тело события зашифровано, а ключ шифрования на сервере сменился — прогнать сценарий на нём нельзя\n- `scenario_steps_required` (409) — у сценария цепочка шагов, а в замене (PUT) нет ни steps, ни output: передайте steps явно, иначе замена молча убрала бы цепочку\n- `scenario_output_required` (409) — у сценария форма итога, а в замене (PUT) нет ни steps, ни output: передайте output явно (null — снять форму)\n- `automation_queue_full` (429) — у компании слишком много запусков в очереди: повторите позже (событие хука отправитель повторит сам)\n- `restarting` (503) — сервис перезапускается: новый ход не начат — повторите через Retry-After\n- `company_suspended` (403) — работа с компанией приостановлена (решение платформы или оплаты); карточка видна, работать, править и архивировать нельзя (архив — 409 с тем же code)\n- `company_archived` (403) — компания в архиве: карточка видна, работать с ней нельзя. Вернуть — POST /v1/companies/{company_id}/unarchive (владелец компании или владелец/админ организации)\n- `workspace_blocked` (403) — организация заблокирована администратором платформы — только поддержка Tungo\n- `untrusted_origin` (403) — запрос пришёл не со страницы Tungo (защита от подделки запросов) — открыть кабинет по обычному адресу; для /admin/* — только со страниц ADMIN_ORIGINS\n- `cors_not_supported` (403) — вызов API из чужого браузерного кода (CORS) не поддерживается: ключ API — секрет сервера\n- `api_keys_disabled_by_policy` (403) — политика организации запрещает ключи API\n- `owner_role_reserved` (403) — владельца компании назначает, меняет и снимает только владелец или админ организации\n- `role_above_yours` (403) — у выдаваемой (или снимаемой) роли есть права, которых нет у вас; роль — в поле role, лишние права — в permissions\n- `not_key_creator` (403) — менять компании, права, срок и секрет ключа, снимать и поднимать его пределы записи в 1С может только тот, кто его выпустил (ужесточить пределы может любой админ)\n- `transfer_wider_than_target` (403) — передать ключ нельзя: у нового владельца нет нужного права (или доступа) в одной из компаний ключа\n- `invalid_allowed_ips` (400) — в allowed_ips ключа — не IP-адрес и не подсеть CIDR; какая запись — в сообщении\n- `transfer_target_not_admin` (400) — передать ключ можно только владельцу или админу этой организации\n- `platform_model_not_allowed` (403) — модель сильнее потолка платформы (настройка platform.billing): вызов не сделан и ничего не списано\n- `managed_by_sso` (403) — удаление аккаунта: аккаунт ведёт организация (SSO или SCIM) — удаляет её администратор; организации — в workspaces\n- `fresh_session_required` (403) — удаление аккаунта без почты (Telegram): нужен свежий вход — выйти, войти снова и подтвердить\n- `api_key_not_allowed` (403) — действие только из кабинета (сессия), не по ключу API: удаление аккаунта\n- `not_own_key` (403) — по ключу API виден только расход самого этого ключа\n- `webhooks_not_in_plan` (403) — вебхуков нет в тарифе организации\n- `admin_2fa_required` (403) — админ-API: у администратора платформы нет второго фактора или эта сессия не подтверждена кодом приложения-аутентификатора (POST /v1/auth/two-factor/enable, затем verify-totp)\n- `two_factor_required` (403) — отключить второй фактор, показать его секрет или выпустить резервные коды — только после кода из приложения-аутентификатора в этой сессии\n- `webhooks_require_all_companies` (403) — вебхуки — только ключу на все компании организации (при выпуске ключа — 400 с тем же code)\n- `audit_requires_all_companies` (403) — журнал организации — только ключу на все компании организации\n- `policy_blocked` (403) — одобрение: организация не доверяет ИИ записывать такой документ этим способом (поле level — уровень доверия); одобрить по одному или поднять уровень\n- `onec_read_only` (403) — одобрение: у пользователя 1С из подключения нет права записи — дать права в 1С\n- `validation_failed` (400) — тело или параметры запроса не прошли проверку: что не так с каждым полем — в fields (путь, код, текст по-русски). Подсветить поля формы; общий message — над формой\n- `invalid_json` (400) — тело запроса — не JSON-объект\n- `personal_workspace` (400) — в личной организации нет сотрудников, приглашений и политик — нужна организация Team или Enterprise\n- `api_key_required` (400) — адрес только для запроса по ключу API\n- `email_code_unavailable` (400) — удаление аккаунта: у аккаунта нет почты для кода (вход через Telegram) — подтверждать свежим входом, без кода\n- `deletion_code_invalid` (400) — удаление аккаунта: неверный код из письма; сколько попыток осталось — attempts_left\n- `deletion_code_expired` (400) — удаление аккаунта: код истёк, попытки кончились или код не запрашивался — запросить новый (POST /v1/me/deletion/code)\n- `unsafe_url` (400) — адрес вебхука недопустим (внутренняя сеть, не HTTPS)\n- `idempotency_key_invalid` (400) — Idempotency-Key неверного вида\n- `payload_too_large` (413) — тело запроса (или события хука) больше допустимого; пределы — настройки платформы\n- `idempotency_key_reused` (422) — этот Idempotency-Key уже был у другого запроса — для нового действия нужен новый ключ\n- `has_blockers` (422) — одобрение: у предложения есть блокеры — сначала исправить их\n- `batch_too_large` (413) — одобрение пачкой: предложений больше предела (поля limit, requested) — разбить на части\n- `unknown_kind` (400) — настройки писем: такого вида уведомлений нет — взять список из GET /v1/me/notifications\n- `kind_locked` (400) — настройки писем: этот вид (безопасность и аккаунт) выключить нельзя — переключатель неактивен (locked)\n- `onec_rejected` (400) — одобрение: 1С отклонила документ (причина — в message): исправить в 1С или построить предложение заново\n- `proposal_not_found` (404) — предложения с таким id нет в компании\n- `export_link_expired` (404) — ссылка на архив выгрузки истекла или неверна — получить новую: GET /v1/me/export\n- `batch_not_found` (404) — одобрение пачкой: задания с таким batch_id нет (или в нём нет предложений)\n- `idempotency_in_progress` (409) — первый запрос с этим Idempotency-Key ещё выполняется — подождать и повторить, придёт тот же ответ\n- `idempotency_response_not_kept` (409) — запрос с этим Idempotency-Key уже выполнен, но копия ответа не хранится (в нём персональные данные): результат — по ссылке в ответе (dialog_url) или в списке; статус первого ответа — original_status\n- `idempotency_response_too_large` (409) — запрос с этим Idempotency-Key уже выполнен, но ответ слишком большой, чтобы повторить его целиком: результат — в списке; статус первого ответа — original_status\n- `sole_owner` (409) — удаление аккаунта: вы единственный владелец организации с другими участниками (workspaces) — передать владение (POST /v1/workspaces/{ws}/ownership) или удалить организацию\n- `account_deletion_in_progress` (409) — удаление аккаунта: фон уже стирает аккаунт — новый код и подтверждение не принимаются, отменить нельзя\n- `wrong_status` (409) — предложение уже не в том состоянии (поле status — нынешнее): обновить его\n- `wrong_state` (409) — запуск автоматизации уже не в том состоянии (поле state — нынешнее)\n- `dialog_closed` (409) — разговор закрыт (поле reason — почему): начать новый\n- `dialog_id_taken` (409) — разговор с таким dialog_id уже есть — для нового прислать другой id или не присылать его\n- `turn_in_progress` (409) — в разговоре уже идёт ход ИИ (поле turn — его номер): дождаться его конца или остановить\n- `turn_superseded` (409) — читаемый ход уже закончился и идёт следующий (поле turn) — читать его с начала\n- `dialog_changed` (409) — разговор только что изменился в другом окне или на другом сервере Tungo — открыть его заново (GET …/chat/{id}) и повторить\n- `already_answered` (409) — на этот вопрос ИИ уже ответили (поле turn — ход с ответом)\n- `question_stale` (409) — вопрос ИИ устарел (в разговоре уже другой вопрос или его нет) — обновить разговор\n- `dismissed` (409) — вопрос ИИ закрыт без ответа — написать обычное сообщение\n- `job_running` (409) — задание (пачка) ещё идёт — дождаться отчёта; поле batch_id\n- `payload_changed` (409) — одобрение: документ изменился после превью — построить предложение заново\n- `onec_conflict` (409) — одобрение: 1С отказала из-за конфликта (объект занят или изменён) — повторить позже\n- `onec_not_found` (409) — одобрение: в 1С нет объекта, на который ссылается документ — построить предложение заново\n- `plan_limit_reached` (429) — лимит окна тарифа исчерпан; resets_at и Retry-After — когда обновится. Показать время; если в message предложено доп. использование — дать кнопку включить\n- `rate_limited` (429) — слишком часто (по ключу API, уведомления ePay с одного адреса, попытки кода второго фактора) — подождать Retry-After секунд\n- `concurrent_turns_limit` (429) — по ключу API уже идёт предельное число ходов ИИ одновременно — дождаться окончания\n- `api_keys_limit` (429) — в организации предельное число действующих ключей API — отозвать ненужные\n- `webhook_endpoints_limit` (429) — предельное число адресов вебхуков — удалить ненужные\n- `export_too_soon` (429) — выгрузку данных можно запрашивать не чаще раза в сутки: next_request_at и Retry-After — когда можно снова\n- `hook_rate_limited` (429) — приём событий хука: больше automations.hook_events_per_minute в минуту — повторить через Retry-After секунд\n- `lago_unavailable` (503) — админка, тариф целиком: Lago не настроен или не ответил (сеть, 5xx) — правила не изменены, повторить позже\n- `model_price_missing` (503) — у модели ИИ не задана цена — сбой настройки платформы, ничего не списано; повторить позже\n- `data_export_disabled` (503) — выгрузка данных на сервере не настроена (поддержка Tungo)\n- `webhooks_disabled` (503) — вебхуки на сервере не настроены\n- `webhooks_unavailable` (503) — служба доставки вебхуков временно недоступна\n- `model_not_configured` (503) — сервис модели ИИ не настроен на сервере — повторить позже (Retry-After)\n- `write_unknown` (503) — одобрение: исход записи в 1С неизвестен (связь оборвалась) — проверить документ в 1С по метке (поле marker); повтор безопасен (retry_safe); слишком ранний повтор в 1С не пишет — подождать retry_after секунд (Retry-After)\n- `onec_unavailable` (503) — 1С сейчас не отвечает — повторить позже (Retry-After)\n- `onec_check_busy` (503) — проверка связи 1С: сервер сейчас проверяет слишком много подключений — повторить через Retry-After секунд\n- `onec_failed` (503) — записать документ в 1С не удалось по неизвестной причине — повторить позже\n- `journal_unavailable` (503) — журнал решений недоступен — пачка не одобрена, повторить позже\n- `hook_secret_unavailable` (503) — приём событий хука: секрет подписи сейчас не открыть — отправителю повторить доставку позже\n- `secret_box_missing` (503) — на сервере не задан ключ шифрования настроек — секрет подписи хука сохранить нельзя (поддержка Tungo)\n- `not_personal` (409) — перевод в команду: организация уже не личная — обновить экран\n- `subscription_blocks_conversion` (409) — перевод в команду: действует подписка для одного человека — сначала отменить её и дождаться конца периода\n- `subscription_kind_mismatch` (409) — админка: действующая подписка оформлена на другой вид организации — вид не меняется, пока она идёт\n- `enterprise_features_active` (409) — админка: у организации подключены SSO или SCIM — сначала отключить, потом снимать Enterprise\n- `too_many_members_for_personal` (409) — админка: в личной организации один человек — сначала убрать остальных участников\n- `open_debt` (409) — есть неоплаченный счёт — сначала оплатить; в плане удаления этот же код лежит в blockers\n- `active_work` (409) — в организации идут ходы ИИ или автоматизации — дождаться окончания и повторить; в плане удаления этот же код лежит в blockers\n- `deletion_already_scheduled` (409) — удаление организации уже запланировано — показать дату из плана\n- `deletion_purging` (409) — очистка организации уже идёт — отменить её нельзя\n- `workspace_deleting` (409) — админка: организация удаляется по просьбе владельца — блок удаления снимает только отмена удаления\n- `invitation_not_pending` (409) — приглашение принято, отозвано или истекло — письмо не отправить, пригласить заново\n- `last_owner` (409) — это последний владелец организации — сначала передать владение другому участнику\n- `seats_by_contract` (409) — места Enterprise — по договору, карта и докупка не работают: обратиться к менеджеру\n- `no_subscription` (409) — нет действующей подписки — сначала оформить тариф\n- `not_per_seat` (409) — этот тариф не считает оплату за место — докупка не нужна, предел мест показан в ответе GET …/seats\n- `subscription_ended` (409) — возобновление: период отменённой подписки уже закончился — ничего не списано, оформить тариф заново (повторный PUT — обычное оформление)\n- `subscription_busy` (409) — подписка уже меняется другим запросом (отмена или возобновление) — обновить экран через несколько секунд\n- `subscription_ending` (409) — подписка отменена и закончится в конце периода — места не докупаются и не сокращаются\n- `seats_unpaid_debt` (409) — подписка просрочена — сначала оплатить счёт; участники остаются, новых приглашать нельзя\n- `idempotency_conflict` (409) — докупка: этот ключ уже использован с другим числом мест — для новой покупки нужен новый ключ\n- `seat_quote_changed` (409) — докупка: сумма изменилась (другой день или новая цена), деньги не списаны — показать новую сумму из поля и спросить снова\n- `no_paid_seats` (409) — оплаченных мест ещё нет — сокращать нечего\n- `seats_below_occupied` (409) — занято больше мест, чем просите оставить — сначала убрать участников или отозвать приглашения\n- `not_enterprise` (409) — админка: места по договору есть только у Enterprise — сначала поставить вид\n- `per_seat_plan_change` (409) — смена тарифа с оплатой за место не делается сразу: Lago взял бы плату за места дважды. Отменить и оформить новый с конца периода\n- `confirm_name_mismatch` (400) — удаление организации: название введено неверно — ввести точно как в плане удаления\n- `below_min_seats` (400) — на этом тарифе мест меньше нельзя: минимум — min_seats тарифа\n- `seats_over_max` (400) — мест больше предела одной организации (team.limits.max_seats) — обратиться в поддержку\n- `seats_above_paid` (400) — PUT …/seats только сокращает; новые места — через POST …/seats с оплатой\n- `onec_check_running` (429) — проверка связи 1С уже идёт у этой компании, у вас (другая компания) или у двух других компаний организации — дождаться её итога и повторить (Retry-After)\n- `invitation_resend_too_soon` (429) — письмо с приглашением уже отправлено только что — подождать Retry-After секунд\n- `seats_exhausted` (429) — свободные места закончились: докупите места или освободите их, отозвав приглашение\n- `seat_price_unknown` (503) — цена места сейчас неизвестна (тариф не прочитан или настроен неверно), деньги не списаны — повторить позже\n- `otp_mail_failed` (503) — письмо с кодом входа не отправлено: попробуйте позже\n- `seat_period_unknown` (503) — не удалось сверить период подписки с биллингом: деньги не списаны, попробуйте позже\n\nНезнакомый code — вести себя по type.","example":"balance_exhausted","uniqueKey":"error.code","typeLabel":"string"},"permission":{"type":"string","description":"При code = missing_permission — какого права не хватает: права в компании (company.read, company.manage, company.members.manage, onec.connect, proposals.create, proposals.approve, chat.use, audit.read, automations.manage) или права только ключа API (automations.read, webhooks.manage). Показать «нужно право …» и предложить попросить админа (или выпустить ключ с этим правом).","example":"proposals.approve","uniqueKey":"error.permission","typeLabel":"string"},"resets_at":{"type":"string","format":"date-time","description":"Когда ограничение снимется само — ISO 8601, UTC. Есть у plan_limit_reached (конец окна тарифа) и у месячных потолков (workspace_cap_reached, company_cap_reached, member_cap_reached, key_cap_reached, platform_cap_reached — 1-е число, 00:00 по Алматы). Показать в местном времени: «Лимит обновится в 14:30». Нет поля — само не пройдёт.","example":"2026-11-01T19:00:00.000Z","uniqueKey":"error.resets_at","typeLabel":"string\u003cdate-time>"},"allowed_methods":{"type":"array","items":{"type":"string","enum":["email_otp","google","apple","telegram","sso"],"uniqueKey":"error.allowed_methods.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"При code = login_method_not_allowed — какими способами входа организация пускает к своим данным: email_otp — код из почты, google, apple, telegram, sso — SSO организации. Предложить выйти и войти одним из них.","uniqueKey":"error.allowed_methods","typeLabel":"enum\u003cstring>[]"},"role":{"type":"string","description":"При code = role_above_yours — ключ роли в компании, которую нельзя выдать или снять (например chief_accountant).","uniqueKey":"error.role","typeLabel":"string"},"permissions":{"type":"array","items":{"type":"string","uniqueKey":"error.permissions.items.[INDEX]","typeLabel":"string"},"description":"При code = role_above_yours — права этой роли, которых нет у того, кто выдаёт. Показать списком: «у роли есть права, которых нет у вас: …».","uniqueKey":"error.permissions","typeLabel":"string[]"},"fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string","description":"Путь к полю через точку, как в теле запроса или имени параметра: `name`, `lines.0.amount`. Пустая строка — всё тело (не объект, лишние поля).","example":"bin","isRequired":true,"uniqueKey":"error.fields.items.[INDEX].path","typeLabel":"string"},"code":{"type":"string","enum":["invalid_type","too_small","too_big","invalid_format","invalid_value","not_multiple_of","unrecognized_keys","invalid_union","invalid_key","invalid_element","custom"],"description":"Что не так: invalid_type — не тот тип или поле не передано; too_small / too_big — короче/меньше или длиннее/больше допустимого; invalid_format — неверный вид (почта, дата, шаблон); invalid_value — значения нет среди допустимых; not_multiple_of — не кратно; unrecognized_keys — лишние поля; invalid_union — не подходит ни один вид; invalid_key / invalid_element — неверный ключ или элемент; custom — своё правило ручки","example":"invalid_format","isRequired":true,"uniqueKey":"error.fields.items.[INDEX].code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Текст для человека по-русски — показать под полем","example":"БИН/ИИН — 12 цифр","isRequired":true,"uniqueKey":"error.fields.items.[INDEX].message","typeLabel":"string"}},"required":["path","code","message"],"description":"Ошибка одного поля запроса","uniqueKey":"error.fields.items.[INDEX]","typeLabel":"object"},"description":"При code = validation_failed — ошибки по полям, в порядке проверки; у одного поля может быть несколько.","uniqueKey":"error.fields","typeLabel":"object[]"}},"required":["type","message"],"additionalProperties":{"oneOf":[{}],"uniqueKey":"error.additionalProperties","typeLabel":"any"},"description":"Что пошло не так. Все 503 — с заголовком Retry-After (через сколько секунд повторить). Кроме описанных, у отдельных ручек бывают свои поля рядом с code (например status у wrong_status, state у wrong_state, reason у dialog_closed) — они описаны у этих ручек.","isRequired":true,"uniqueKey":"error","typeLabel":"object"},"request_id":{"oneOf":[{"type":"string","description":"Номер запроса (тот же, что в заголовке x-request-id). Показывать мелко рядом с ошибкой с кнопкой «скопировать»: по нему поддержка находит запрос в журнале. null — номер не успел появиться (очень ранний отказ).","example":"req_4f9c2a7e1b3d4c5a8e6f7a9b0c1d2e3f","isRequired":true,"uniqueKey":"request_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"Номер запроса (тот же, что в заголовке x-request-id). Показывать мелко рядом с ошибкой с кнопкой «скопировать»: по нему поддержка находит запрос в журнале. null — номер не успел появиться (очень ранний отказ).","example":"req_4f9c2a7e1b3d4c5a8e6f7a9b0c1d2e3f","isRequired":true,"uniqueKey":"request_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"request_id","typeLabel":"string | null"}},"required":["type","error","request_id"],"description":"Тело любой ошибки API (статусы 4xx и 5xx): `{\"type\":\"error\",\"error\":{\"type\":\"…\",\"code\":\"…\",\"message\":\"…\"},\"request_id\":\"…\"}`. Интерфейс ветвится по error.type и error.code, человеку показывает error.message и request_id.","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"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":"\u003cstring>","permissions":["\u003cstring>"],"fields":[{"path":"bin","code":"invalid_format","message":"БИН/ИИН — 12 цифр"}]},"request_id":"req_4f9c2a7e1b3d4c5a8e6f7a9b0c1d2e3f"}}},"exampleType":"generated"}},"headers":{"x-request-id":{"description":"Номер запроса (тот же, что request_id в теле ошибки) — назвать в обращении в поддержку. Его всегда создаёт сервер: присланный клиентом x-request-id номером не становится","schema":{"type":"string","example":"req_3f2a9c0d1e4b4c5d8e7f6a5b4c3d2e1f"}},"x-ratelimit-limit":{"description":"Только при входе по ключу API: сколько запросов можно в текущем окне — самый тесный предел из ключа и организации","schema":{"type":"integer"}},"x-ratelimit-remaining":{"description":"Только при входе по ключу API: сколько запросов осталось по этому пределу в текущем окне","schema":{"type":"integer"}},"x-ratelimit-reset":{"description":"Только при входе по ключу API: секунд до нового окна этого предела","schema":{"type":"integer"}}},"exampleType":"generated"},"95b68e55-12a0-4b4a-ab38-9dcbc4232c1b":{"description":"Idempotency-Key уже использован для другого запроса (error.code = idempotency_key_reused)","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","enum":["error"],"description":"Всегда «error»: так тело ошибки отличается от обычного ответа.","isRequired":true,"uniqueKey":"type","typeLabel":"enum\u003cstring>"},"error":{"type":"object","properties":{"type":{"type":"string","enum":["invalid_request_error","authentication_error","payment_required_error","permission_error","not_found_error","conflict_error","gone_error","limit_error","api_error","unavailable_error"],"description":"Вид ошибки — по нему ветвится клиент (не по тексту message). Статус HTTP у вида один, кроме invalid_request_error:\n- `invalid_request_error` (400) — запрос неверен: поле не прошло проверку, неверный формат, действие сейчас недопустимо. Показать message рядом с формой; повтор без исправления не поможет. Обычно 400; 413 и 422 — у кодов, где это сказано в списке code.\n- `authentication_error` (401) — нет входа: сессия закончилась, cookie нет, ключ API неверен, отозван или истёк. Кабинет — отправить на страницу входа; по ключу — проверить ключ (см. code).\n- `payment_required_error` (402) — нужны деньги или решение владельца/админа организации: ждать бесполезно. Показать message и кнопку действия по code (оформить тариф, пополнить баланс, поднять потолок); без code — не оплачено подключение компании.\n- `permission_error` (403) — нельзя: не хватает права или роли, организация заблокирована, вход не тем способом. Показать message (в нём сказано, к кому обратиться); детали — в code и полях рядом.\n- `not_found_error` (404) — нет такого объекта — или он чужой: чужие организации, компании и записи тоже отвечают 404, чтобы не раскрывать, что они есть. Показать «не найдено» и вернуть к списку.\n- `conflict_error` (409) — состояние не позволяет: уже сделано, уже идёт другое действие, версия устарела. Перечитать объект, обновить экран и показать message.\n- `gone_error` (410) — объекта больше нет: разговор не найден или истёк (вопрос в чате, ответ на вопрос ИИ, подсчёт токенов — начать новый разговор), ход потерян при перезапуске сервера, ссылка привязки программы устарела или уже использована (code connector_link_gone). Повторять незачем.\n- `limit_error` (429) — предел: частота запросов, окно тарифа, число объектов или мест. Если есть заголовок Retry-After или resets_at — пройдёт само, показать, когда; иначе нужно освободить место (удалить лишнее) или сменить тариф.\n- `api_error` (500) — сбой на нашей стороне. Показать message и request_id (для поддержки); повторить позже.\n- `unavailable_error` (503) — временно недоступно (внешний сервис, ИИ, настройка сервера). Повторить позже; если повторяется — сообщить request_id в поддержку.","example":"payment_required_error","isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Готовый текст для человека по-русски: что случилось, что делать и к кому обратиться. Показывать как есть; не разбирать — формулировки меняются.","example":"Баланс доп. использования закончился — пополнить его или включить автопополнение могут владелец и админ workspace.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"code":{"type":"string","description":"Уточнение вида: по нему выбирается действие интерфейса (кнопка «Пополнить», «Войти иначе»…). Нет поля — хватает type и message. Известные коды:\n- `sso_domain_taken` (409) — домен SSO уже подтверждён другой организацией\n- `sso_last_verified_domain` (409) — включён обязательный вход, а это последний подтверждённый домен — сначала выключить обязательный вход\n- `sso_login_required` (400) — включить обязательный вход можно только из сессии, открытой через SSO этой организации\n- `domain_verification_failed` (400) — запись DNS для домена не найдена или не совпала — проверить и повторить\n- `oidc_openid_scope_required` (400) — в scopes сервера входа OIDC нет openid — добавить её: без неё вход через SSO не пройдёт\n- `enterprise_only` (403) — возможность есть только на тарифе Enterprise\n- `groups_limit` (429) — достигнут предел групп в организации\n- `custom_roles_limit` (429) — достигнут предел своих ролей в организации\n- `group_managed_by_directory` (409) — группа из каталога: название и состав меняются только там\n- `group_member_not_in_workspace` (400) — в группу можно добавить только сотрудника этой организации\n- `role_above_ceiling` (400) — роль даёт права выше потолка организации\n- `unknown_model` (400) — такой модели нет — список в available_models\n- `price_required` (400) — админка, тариф целиком: у платного тарифа нужна цена (price)\n- `lago_rejected` (409) — админка, тариф целиком: Lago отказал по существу (4xx, текст Lago в message) — правила не изменены, повтор без правки не поможет\n- `price_mismatch` (400) — админка, тариф целиком: цена не сходится с правилами (место без per_seat, per_seat без цены места, цена у бесплатного)\n- `model_not_allowed` (403) — политика организации не разрешает эту модель, а подходящей разрешённой нет — админу дополнить список\n- `retention_too_short` (400) — срок хранения меньше наименьшего\n- `audit_export_range` (400) — неверный период выгрузки журнала: конец раньше начала или период слишком длинный\n- `compliance_disabled` (403) — адрес для проверок выключен — владелец включает его в настройке\n- `missing_credentials` (401) — нет ни cookie сессии, ни ключа API — войти или передать x-api-key\n- `link_revoked` (401) — вход в Tungo из 1С больше не действует (вышли, отключили на сайте, вошли в той же базе заново, компания или человек заблокированы) — 1С просит войти заново\n- `login_denied` (403) — вход из 1С отклонён на сайте Tungo — 1С показывает отказ\n- `code_expired` (410) — код входа из 1С устарел или уже использован — 1С просит новый код\n- `code_gone` (410) — код входа из 1С уже подтверждён, отклонён или устарел — на сайте подтверждать нечего\n- `invalid_api_key` (401) — ключ API неверен (опечатка или удалён)\n- `key_revoked` (401) — ключ API отозван (при правке ключа — 409 с тем же code: отозванный ключ не меняется)\n- `key_expired` (401) — срок ключа API истёк — сменить секрет (POST …/api-keys/{id}/roll: срок начнётся заново) или выпустить новый (при правке срока — 409 с тем же code: PATCH истёкший ключ не оживляет)\n- `key_disabled` (401) — ключ API выключен — включить может автор ключа или владелец организации (POST …/api-keys/{id}/enable)\n- `key_creator_lost_access` (401) — тот, кто выпустил ключ, больше не владелец/админ организации — ключ недействителен\n- `user_banned` (401) — вход в аккаунт закрыт администратором Tungo — только поддержка Tungo\n- `onboarding_unpaid` (402) — подключение компании к ИИ-бухгалтеру не оплачено (разовый платёж): владельцу/админу организации — «Оплатить» в настройках компании; остальным — сообщить им\n- `onboarding_pending` (402) — оплата подключения компании ещё проходит в банке — ИИ заработает после подтверждения; опрашивать состояние подключения\n- `no_active_plan` (402) — нет действующей подписки (не оформлена, закончилась, первая оплата не прошла или ждёт 3-D Secure). Владельцу/админу — кнопка в настройки оплаты; остальным — «обратитесь к владельцу организации». Что именно случилось — в message\n- `balance_exhausted` (402) — баланс доп. использования кончился. Владельцу/админу — «Пополнить баланс» или включить автопополнение; остальным — сообщить им\n- `workspace_cap_reached` (402) — достигнут месячный потолок доп. использования организации. resets_at — 1-е число следующего месяца, 00:00 по Алматы; раньше — если админ поднимет потолок\n- `report_busy` (429) — сейчас собирается много отчётов команды: повторить через время из Retry-After\n- `report_timeout` (503) — отчёт команды не успел собраться: сократить период или выбрать разбивку по месяцам\n- `company_cap_reached` (402) — достигнут месячный потолок доп. использования компании. Письмо владельцу и админам уже отправлено. resets_at — 1-е число; раньше — если админ поднимет потолок (PUT /v1/workspaces/{ws}/team/company-caps/{co})\n- `member_cap_reached` (402) — достигнут личный месячный потолок доп. использования сотрудника. resets_at — 1-е число; раньше — если админ поднимет его потолок\n- `key_cap_reached` (402) — достигнут месячный потолок расхода ключа API (или остаток меньше оценки одного вызова). resets_at — 1-е число\n- `platform_balance_exhausted` (402) — баланс платформы пуст: вызов по ключу или автоматизация не сделаны. Пополнить — POST /v1/workspaces/{ws}/platform/purchases или автопополнением\n- `platform_cap_reached` (402) — достигнут месячный потолок трат платформы. resets_at — 1-е число следующего месяца, 00:00 по Алматы; раньше — поднять потолок в PUT /v1/workspaces/{ws}/platform/account\n- `platform_disabled` (402) — платформа выключена в организации: вызовы по ключам и автоматизации остановлены. Включить — PUT /v1/workspaces/{ws}/platform/account\n- `free_plan_chat_only` (402) — бесплатный тариф: пачки из кабинета только на платных тарифах. Ключам API и автоматизациям тариф не нужен\n- `free_limit_unavailable` (402) — бесплатный лимит этой учётной записи не положен (проверка регистрации или решение администратора) — оформить тариф\n- `plan_company_limit` (402) — в организации уже столько компаний не в архиве, сколько разрешает тариф (max_companies в GET /v1/plans; limit и plan_code — в ответе): новую не завести и из архива не вернуть. Убрать лишнюю в архив или перейти на тариф больше\n- `effort_not_in_plan` (402) — поле effort в чате на тарифе без выбора усилия (max_effort тарифа null, например бесплатный): ход не начат. Прислать вопрос без effort или оформить платный тариф\n- `model_not_in_plan` (402) — модель сильнее потолка тарифа (plans.model_ceiling): вызов не сделан; более сильные модели — на платных тарифах\n- `missing_permission` (403) — не хватает права в компании (или у ключа API); какого — в поле permission\n- `login_method_not_allowed` (403) — организация пускает к своим данным только после входа другим способом; какими — в allowed_methods. Предложить выйти и войти так\n- `ip_not_allowed` (403) — ключ API не принимает запросы с этого адреса — поправить allowed_ips ключа (PATCH …/api-keys/{id}) или вызывать с разрешённого адреса\n- `key_write_limit` (403) — запись в 1С по ключу API — сверх его пределов (сумма на документ или в день, виды документов) или правило автоодобрения шире пределов ключа; в сообщении — что и на сколько\n- `human_only` (403) — это решение принимает только человек в кабинете Tungo, не ключ API: например, отклонить «не знаем, записан ли» на снимке базы без проверки 1С (confirm_unknown_write)\n- `autonomy_raise_requires_session` (403) — поднять уровень доверия ИИ или потолки компании можно только владельцу или админу организации из кабинета; ключом API — только понизить\n- `id_path_required` (400) — для автоодобрения по хуку задайте хуку id_path — путь к номеру операции в теле события: без него повтор доставки нельзя отличить от новой операции\n- `directbank_rule_exists` (400) — у компании уже есть сценарий с правилом для выписки DirectBank — правило выписки одно на компанию\n- `event_not_found` (404) — события нет в этой компании или оно удалено по сроку хранения — для пробного прогона выберите событие посвежее\n- `event_body_unavailable` (409) — тело события зашифровано, а ключ шифрования на сервере сменился — прогнать сценарий на нём нельзя\n- `scenario_steps_required` (409) — у сценария цепочка шагов, а в замене (PUT) нет ни steps, ни output: передайте steps явно, иначе замена молча убрала бы цепочку\n- `scenario_output_required` (409) — у сценария форма итога, а в замене (PUT) нет ни steps, ни output: передайте output явно (null — снять форму)\n- `automation_queue_full` (429) — у компании слишком много запусков в очереди: повторите позже (событие хука отправитель повторит сам)\n- `restarting` (503) — сервис перезапускается: новый ход не начат — повторите через Retry-After\n- `company_suspended` (403) — работа с компанией приостановлена (решение платформы или оплаты); карточка видна, работать, править и архивировать нельзя (архив — 409 с тем же code)\n- `company_archived` (403) — компания в архиве: карточка видна, работать с ней нельзя. Вернуть — POST /v1/companies/{company_id}/unarchive (владелец компании или владелец/админ организации)\n- `workspace_blocked` (403) — организация заблокирована администратором платформы — только поддержка Tungo\n- `untrusted_origin` (403) — запрос пришёл не со страницы Tungo (защита от подделки запросов) — открыть кабинет по обычному адресу; для /admin/* — только со страниц ADMIN_ORIGINS\n- `cors_not_supported` (403) — вызов API из чужого браузерного кода (CORS) не поддерживается: ключ API — секрет сервера\n- `api_keys_disabled_by_policy` (403) — политика организации запрещает ключи API\n- `owner_role_reserved` (403) — владельца компании назначает, меняет и снимает только владелец или админ организации\n- `role_above_yours` (403) — у выдаваемой (или снимаемой) роли есть права, которых нет у вас; роль — в поле role, лишние права — в permissions\n- `not_key_creator` (403) — менять компании, права, срок и секрет ключа, снимать и поднимать его пределы записи в 1С может только тот, кто его выпустил (ужесточить пределы может любой админ)\n- `transfer_wider_than_target` (403) — передать ключ нельзя: у нового владельца нет нужного права (или доступа) в одной из компаний ключа\n- `invalid_allowed_ips` (400) — в allowed_ips ключа — не IP-адрес и не подсеть CIDR; какая запись — в сообщении\n- `transfer_target_not_admin` (400) — передать ключ можно только владельцу или админу этой организации\n- `platform_model_not_allowed` (403) — модель сильнее потолка платформы (настройка platform.billing): вызов не сделан и ничего не списано\n- `managed_by_sso` (403) — удаление аккаунта: аккаунт ведёт организация (SSO или SCIM) — удаляет её администратор; организации — в workspaces\n- `fresh_session_required` (403) — удаление аккаунта без почты (Telegram): нужен свежий вход — выйти, войти снова и подтвердить\n- `api_key_not_allowed` (403) — действие только из кабинета (сессия), не по ключу API: удаление аккаунта\n- `not_own_key` (403) — по ключу API виден только расход самого этого ключа\n- `webhooks_not_in_plan` (403) — вебхуков нет в тарифе организации\n- `admin_2fa_required` (403) — админ-API: у администратора платформы нет второго фактора или эта сессия не подтверждена кодом приложения-аутентификатора (POST /v1/auth/two-factor/enable, затем verify-totp)\n- `two_factor_required` (403) — отключить второй фактор, показать его секрет или выпустить резервные коды — только после кода из приложения-аутентификатора в этой сессии\n- `webhooks_require_all_companies` (403) — вебхуки — только ключу на все компании организации (при выпуске ключа — 400 с тем же code)\n- `audit_requires_all_companies` (403) — журнал организации — только ключу на все компании организации\n- `policy_blocked` (403) — одобрение: организация не доверяет ИИ записывать такой документ этим способом (поле level — уровень доверия); одобрить по одному или поднять уровень\n- `onec_read_only` (403) — одобрение: у пользователя 1С из подключения нет права записи — дать права в 1С\n- `validation_failed` (400) — тело или параметры запроса не прошли проверку: что не так с каждым полем — в fields (путь, код, текст по-русски). Подсветить поля формы; общий message — над формой\n- `invalid_json` (400) — тело запроса — не JSON-объект\n- `personal_workspace` (400) — в личной организации нет сотрудников, приглашений и политик — нужна организация Team или Enterprise\n- `api_key_required` (400) — адрес только для запроса по ключу API\n- `email_code_unavailable` (400) — удаление аккаунта: у аккаунта нет почты для кода (вход через Telegram) — подтверждать свежим входом, без кода\n- `deletion_code_invalid` (400) — удаление аккаунта: неверный код из письма; сколько попыток осталось — attempts_left\n- `deletion_code_expired` (400) — удаление аккаунта: код истёк, попытки кончились или код не запрашивался — запросить новый (POST /v1/me/deletion/code)\n- `unsafe_url` (400) — адрес вебхука недопустим (внутренняя сеть, не HTTPS)\n- `idempotency_key_invalid` (400) — Idempotency-Key неверного вида\n- `payload_too_large` (413) — тело запроса (или события хука) больше допустимого; пределы — настройки платформы\n- `idempotency_key_reused` (422) — этот Idempotency-Key уже был у другого запроса — для нового действия нужен новый ключ\n- `has_blockers` (422) — одобрение: у предложения есть блокеры — сначала исправить их\n- `batch_too_large` (413) — одобрение пачкой: предложений больше предела (поля limit, requested) — разбить на части\n- `unknown_kind` (400) — настройки писем: такого вида уведомлений нет — взять список из GET /v1/me/notifications\n- `kind_locked` (400) — настройки писем: этот вид (безопасность и аккаунт) выключить нельзя — переключатель неактивен (locked)\n- `onec_rejected` (400) — одобрение: 1С отклонила документ (причина — в message): исправить в 1С или построить предложение заново\n- `proposal_not_found` (404) — предложения с таким id нет в компании\n- `export_link_expired` (404) — ссылка на архив выгрузки истекла или неверна — получить новую: GET /v1/me/export\n- `batch_not_found` (404) — одобрение пачкой: задания с таким batch_id нет (или в нём нет предложений)\n- `idempotency_in_progress` (409) — первый запрос с этим Idempotency-Key ещё выполняется — подождать и повторить, придёт тот же ответ\n- `idempotency_response_not_kept` (409) — запрос с этим Idempotency-Key уже выполнен, но копия ответа не хранится (в нём персональные данные): результат — по ссылке в ответе (dialog_url) или в списке; статус первого ответа — original_status\n- `idempotency_response_too_large` (409) — запрос с этим Idempotency-Key уже выполнен, но ответ слишком большой, чтобы повторить его целиком: результат — в списке; статус первого ответа — original_status\n- `sole_owner` (409) — удаление аккаунта: вы единственный владелец организации с другими участниками (workspaces) — передать владение (POST /v1/workspaces/{ws}/ownership) или удалить организацию\n- `account_deletion_in_progress` (409) — удаление аккаунта: фон уже стирает аккаунт — новый код и подтверждение не принимаются, отменить нельзя\n- `wrong_status` (409) — предложение уже не в том состоянии (поле status — нынешнее): обновить его\n- `wrong_state` (409) — запуск автоматизации уже не в том состоянии (поле state — нынешнее)\n- `dialog_closed` (409) — разговор закрыт (поле reason — почему): начать новый\n- `dialog_id_taken` (409) — разговор с таким dialog_id уже есть — для нового прислать другой id или не присылать его\n- `turn_in_progress` (409) — в разговоре уже идёт ход ИИ (поле turn — его номер): дождаться его конца или остановить\n- `turn_superseded` (409) — читаемый ход уже закончился и идёт следующий (поле turn) — читать его с начала\n- `dialog_changed` (409) — разговор только что изменился в другом окне или на другом сервере Tungo — открыть его заново (GET …/chat/{id}) и повторить\n- `already_answered` (409) — на этот вопрос ИИ уже ответили (поле turn — ход с ответом)\n- `question_stale` (409) — вопрос ИИ устарел (в разговоре уже другой вопрос или его нет) — обновить разговор\n- `dismissed` (409) — вопрос ИИ закрыт без ответа — написать обычное сообщение\n- `job_running` (409) — задание (пачка) ещё идёт — дождаться отчёта; поле batch_id\n- `payload_changed` (409) — одобрение: документ изменился после превью — построить предложение заново\n- `onec_conflict` (409) — одобрение: 1С отказала из-за конфликта (объект занят или изменён) — повторить позже\n- `onec_not_found` (409) — одобрение: в 1С нет объекта, на который ссылается документ — построить предложение заново\n- `plan_limit_reached` (429) — лимит окна тарифа исчерпан; resets_at и Retry-After — когда обновится. Показать время; если в message предложено доп. использование — дать кнопку включить\n- `rate_limited` (429) — слишком часто (по ключу API, уведомления ePay с одного адреса, попытки кода второго фактора) — подождать Retry-After секунд\n- `concurrent_turns_limit` (429) — по ключу API уже идёт предельное число ходов ИИ одновременно — дождаться окончания\n- `api_keys_limit` (429) — в организации предельное число действующих ключей API — отозвать ненужные\n- `webhook_endpoints_limit` (429) — предельное число адресов вебхуков — удалить ненужные\n- `export_too_soon` (429) — выгрузку данных можно запрашивать не чаще раза в сутки: next_request_at и Retry-After — когда можно снова\n- `hook_rate_limited` (429) — приём событий хука: больше automations.hook_events_per_minute в минуту — повторить через Retry-After секунд\n- `lago_unavailable` (503) — админка, тариф целиком: Lago не настроен или не ответил (сеть, 5xx) — правила не изменены, повторить позже\n- `model_price_missing` (503) — у модели ИИ не задана цена — сбой настройки платформы, ничего не списано; повторить позже\n- `data_export_disabled` (503) — выгрузка данных на сервере не настроена (поддержка Tungo)\n- `webhooks_disabled` (503) — вебхуки на сервере не настроены\n- `webhooks_unavailable` (503) — служба доставки вебхуков временно недоступна\n- `model_not_configured` (503) — сервис модели ИИ не настроен на сервере — повторить позже (Retry-After)\n- `write_unknown` (503) — одобрение: исход записи в 1С неизвестен (связь оборвалась) — проверить документ в 1С по метке (поле marker); повтор безопасен (retry_safe); слишком ранний повтор в 1С не пишет — подождать retry_after секунд (Retry-After)\n- `onec_unavailable` (503) — 1С сейчас не отвечает — повторить позже (Retry-After)\n- `onec_check_busy` (503) — проверка связи 1С: сервер сейчас проверяет слишком много подключений — повторить через Retry-After секунд\n- `onec_failed` (503) — записать документ в 1С не удалось по неизвестной причине — повторить позже\n- `journal_unavailable` (503) — журнал решений недоступен — пачка не одобрена, повторить позже\n- `hook_secret_unavailable` (503) — приём событий хука: секрет подписи сейчас не открыть — отправителю повторить доставку позже\n- `secret_box_missing` (503) — на сервере не задан ключ шифрования настроек — секрет подписи хука сохранить нельзя (поддержка Tungo)\n- `not_personal` (409) — перевод в команду: организация уже не личная — обновить экран\n- `subscription_blocks_conversion` (409) — перевод в команду: действует подписка для одного человека — сначала отменить её и дождаться конца периода\n- `subscription_kind_mismatch` (409) — админка: действующая подписка оформлена на другой вид организации — вид не меняется, пока она идёт\n- `enterprise_features_active` (409) — админка: у организации подключены SSO или SCIM — сначала отключить, потом снимать Enterprise\n- `too_many_members_for_personal` (409) — админка: в личной организации один человек — сначала убрать остальных участников\n- `open_debt` (409) — есть неоплаченный счёт — сначала оплатить; в плане удаления этот же код лежит в blockers\n- `active_work` (409) — в организации идут ходы ИИ или автоматизации — дождаться окончания и повторить; в плане удаления этот же код лежит в blockers\n- `deletion_already_scheduled` (409) — удаление организации уже запланировано — показать дату из плана\n- `deletion_purging` (409) — очистка организации уже идёт — отменить её нельзя\n- `workspace_deleting` (409) — админка: организация удаляется по просьбе владельца — блок удаления снимает только отмена удаления\n- `invitation_not_pending` (409) — приглашение принято, отозвано или истекло — письмо не отправить, пригласить заново\n- `last_owner` (409) — это последний владелец организации — сначала передать владение другому участнику\n- `seats_by_contract` (409) — места Enterprise — по договору, карта и докупка не работают: обратиться к менеджеру\n- `no_subscription` (409) — нет действующей подписки — сначала оформить тариф\n- `not_per_seat` (409) — этот тариф не считает оплату за место — докупка не нужна, предел мест показан в ответе GET …/seats\n- `subscription_ended` (409) — возобновление: период отменённой подписки уже закончился — ничего не списано, оформить тариф заново (повторный PUT — обычное оформление)\n- `subscription_busy` (409) — подписка уже меняется другим запросом (отмена или возобновление) — обновить экран через несколько секунд\n- `subscription_ending` (409) — подписка отменена и закончится в конце периода — места не докупаются и не сокращаются\n- `seats_unpaid_debt` (409) — подписка просрочена — сначала оплатить счёт; участники остаются, новых приглашать нельзя\n- `idempotency_conflict` (409) — докупка: этот ключ уже использован с другим числом мест — для новой покупки нужен новый ключ\n- `seat_quote_changed` (409) — докупка: сумма изменилась (другой день или новая цена), деньги не списаны — показать новую сумму из поля и спросить снова\n- `no_paid_seats` (409) — оплаченных мест ещё нет — сокращать нечего\n- `seats_below_occupied` (409) — занято больше мест, чем просите оставить — сначала убрать участников или отозвать приглашения\n- `not_enterprise` (409) — админка: места по договору есть только у Enterprise — сначала поставить вид\n- `per_seat_plan_change` (409) — смена тарифа с оплатой за место не делается сразу: Lago взял бы плату за места дважды. Отменить и оформить новый с конца периода\n- `confirm_name_mismatch` (400) — удаление организации: название введено неверно — ввести точно как в плане удаления\n- `below_min_seats` (400) — на этом тарифе мест меньше нельзя: минимум — min_seats тарифа\n- `seats_over_max` (400) — мест больше предела одной организации (team.limits.max_seats) — обратиться в поддержку\n- `seats_above_paid` (400) — PUT …/seats только сокращает; новые места — через POST …/seats с оплатой\n- `onec_check_running` (429) — проверка связи 1С уже идёт у этой компании, у вас (другая компания) или у двух других компаний организации — дождаться её итога и повторить (Retry-After)\n- `invitation_resend_too_soon` (429) — письмо с приглашением уже отправлено только что — подождать Retry-After секунд\n- `seats_exhausted` (429) — свободные места закончились: докупите места или освободите их, отозвав приглашение\n- `seat_price_unknown` (503) — цена места сейчас неизвестна (тариф не прочитан или настроен неверно), деньги не списаны — повторить позже\n- `otp_mail_failed` (503) — письмо с кодом входа не отправлено: попробуйте позже\n- `seat_period_unknown` (503) — не удалось сверить период подписки с биллингом: деньги не списаны, попробуйте позже\n\nНезнакомый code — вести себя по type.","example":"balance_exhausted","uniqueKey":"error.code","typeLabel":"string"},"permission":{"type":"string","description":"При code = missing_permission — какого права не хватает: права в компании (company.read, company.manage, company.members.manage, onec.connect, proposals.create, proposals.approve, chat.use, audit.read, automations.manage) или права только ключа API (automations.read, webhooks.manage). Показать «нужно право …» и предложить попросить админа (или выпустить ключ с этим правом).","example":"proposals.approve","uniqueKey":"error.permission","typeLabel":"string"},"resets_at":{"type":"string","format":"date-time","description":"Когда ограничение снимется само — ISO 8601, UTC. Есть у plan_limit_reached (конец окна тарифа) и у месячных потолков (workspace_cap_reached, company_cap_reached, member_cap_reached, key_cap_reached, platform_cap_reached — 1-е число, 00:00 по Алматы). Показать в местном времени: «Лимит обновится в 14:30». Нет поля — само не пройдёт.","example":"2026-11-01T19:00:00.000Z","uniqueKey":"error.resets_at","typeLabel":"string\u003cdate-time>"},"allowed_methods":{"type":"array","items":{"type":"string","enum":["email_otp","google","apple","telegram","sso"],"uniqueKey":"error.allowed_methods.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"При code = login_method_not_allowed — какими способами входа организация пускает к своим данным: email_otp — код из почты, google, apple, telegram, sso — SSO организации. Предложить выйти и войти одним из них.","uniqueKey":"error.allowed_methods","typeLabel":"enum\u003cstring>[]"},"role":{"type":"string","description":"При code = role_above_yours — ключ роли в компании, которую нельзя выдать или снять (например chief_accountant).","uniqueKey":"error.role","typeLabel":"string"},"permissions":{"type":"array","items":{"type":"string","uniqueKey":"error.permissions.items.[INDEX]","typeLabel":"string"},"description":"При code = role_above_yours — права этой роли, которых нет у того, кто выдаёт. Показать списком: «у роли есть права, которых нет у вас: …».","uniqueKey":"error.permissions","typeLabel":"string[]"},"fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string","description":"Путь к полю через точку, как в теле запроса или имени параметра: `name`, `lines.0.amount`. Пустая строка — всё тело (не объект, лишние поля).","example":"bin","isRequired":true,"uniqueKey":"error.fields.items.[INDEX].path","typeLabel":"string"},"code":{"type":"string","enum":["invalid_type","too_small","too_big","invalid_format","invalid_value","not_multiple_of","unrecognized_keys","invalid_union","invalid_key","invalid_element","custom"],"description":"Что не так: invalid_type — не тот тип или поле не передано; too_small / too_big — короче/меньше или длиннее/больше допустимого; invalid_format — неверный вид (почта, дата, шаблон); invalid_value — значения нет среди допустимых; not_multiple_of — не кратно; unrecognized_keys — лишние поля; invalid_union — не подходит ни один вид; invalid_key / invalid_element — неверный ключ или элемент; custom — своё правило ручки","example":"invalid_format","isRequired":true,"uniqueKey":"error.fields.items.[INDEX].code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Текст для человека по-русски — показать под полем","example":"БИН/ИИН — 12 цифр","isRequired":true,"uniqueKey":"error.fields.items.[INDEX].message","typeLabel":"string"}},"required":["path","code","message"],"description":"Ошибка одного поля запроса","uniqueKey":"error.fields.items.[INDEX]","typeLabel":"object"},"description":"При code = validation_failed — ошибки по полям, в порядке проверки; у одного поля может быть несколько.","uniqueKey":"error.fields","typeLabel":"object[]"}},"required":["type","message"],"additionalProperties":{"oneOf":[{}],"uniqueKey":"error.additionalProperties","typeLabel":"any"},"description":"Что пошло не так. Все 503 — с заголовком Retry-After (через сколько секунд повторить). Кроме описанных, у отдельных ручек бывают свои поля рядом с code (например status у wrong_status, state у wrong_state, reason у dialog_closed) — они описаны у этих ручек.","isRequired":true,"uniqueKey":"error","typeLabel":"object"},"request_id":{"oneOf":[{"type":"string","description":"Номер запроса (тот же, что в заголовке x-request-id). Показывать мелко рядом с ошибкой с кнопкой «скопировать»: по нему поддержка находит запрос в журнале. null — номер не успел появиться (очень ранний отказ).","example":"req_4f9c2a7e1b3d4c5a8e6f7a9b0c1d2e3f","isRequired":true,"uniqueKey":"request_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"Номер запроса (тот же, что в заголовке x-request-id). Показывать мелко рядом с ошибкой с кнопкой «скопировать»: по нему поддержка находит запрос в журнале. null — номер не успел появиться (очень ранний отказ).","example":"req_4f9c2a7e1b3d4c5a8e6f7a9b0c1d2e3f","isRequired":true,"uniqueKey":"request_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"request_id","typeLabel":"string | null"}},"required":["type","error","request_id"],"description":"Тело любой ошибки API (статусы 4xx и 5xx): `{\"type\":\"error\",\"error\":{\"type\":\"…\",\"code\":\"…\",\"message\":\"…\"},\"request_id\":\"…\"}`. Интерфейс ветвится по error.type и error.code, человеку показывает error.message и request_id.","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"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":"\u003cstring>","permissions":["\u003cstring>"],"fields":[{"path":"bin","code":"invalid_format","message":"БИН/ИИН — 12 цифр"}]},"request_id":"req_4f9c2a7e1b3d4c5a8e6f7a9b0c1d2e3f"}}},"exampleType":"generated"}},"headers":{"x-request-id":{"description":"Номер запроса (тот же, что request_id в теле ошибки) — назвать в обращении в поддержку. Его всегда создаёт сервер: присланный клиентом x-request-id номером не становится","schema":{"type":"string","example":"req_3f2a9c0d1e4b4c5d8e7f6a5b4c3d2e1f"}},"x-ratelimit-limit":{"description":"Только при входе по ключу API: сколько запросов можно в текущем окне — самый тесный предел из ключа и организации","schema":{"type":"integer"}},"x-ratelimit-remaining":{"description":"Только при входе по ключу API: сколько запросов осталось по этому пределу в текущем окне","schema":{"type":"integer"}},"x-ratelimit-reset":{"description":"Только при входе по ключу API: секунд до нового окна этого предела","schema":{"type":"integer"}}},"exampleType":"generated"},"0bf96aca-4c13-4fe0-810d-9e9678656dbc":{"description":"Предел (частота, окно тарифа, число объектов) — см. Retry-After и error.resets_at (error.type: limit_error)","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","enum":["error"],"description":"Всегда «error»: так тело ошибки отличается от обычного ответа.","isRequired":true,"uniqueKey":"type","typeLabel":"enum\u003cstring>"},"error":{"type":"object","properties":{"type":{"type":"string","enum":["invalid_request_error","authentication_error","payment_required_error","permission_error","not_found_error","conflict_error","gone_error","limit_error","api_error","unavailable_error"],"description":"Вид ошибки — по нему ветвится клиент (не по тексту message). Статус HTTP у вида один, кроме invalid_request_error:\n- `invalid_request_error` (400) — запрос неверен: поле не прошло проверку, неверный формат, действие сейчас недопустимо. Показать message рядом с формой; повтор без исправления не поможет. Обычно 400; 413 и 422 — у кодов, где это сказано в списке code.\n- `authentication_error` (401) — нет входа: сессия закончилась, cookie нет, ключ API неверен, отозван или истёк. Кабинет — отправить на страницу входа; по ключу — проверить ключ (см. code).\n- `payment_required_error` (402) — нужны деньги или решение владельца/админа организации: ждать бесполезно. Показать message и кнопку действия по code (оформить тариф, пополнить баланс, поднять потолок); без code — не оплачено подключение компании.\n- `permission_error` (403) — нельзя: не хватает права или роли, организация заблокирована, вход не тем способом. Показать message (в нём сказано, к кому обратиться); детали — в code и полях рядом.\n- `not_found_error` (404) — нет такого объекта — или он чужой: чужие организации, компании и записи тоже отвечают 404, чтобы не раскрывать, что они есть. Показать «не найдено» и вернуть к списку.\n- `conflict_error` (409) — состояние не позволяет: уже сделано, уже идёт другое действие, версия устарела. Перечитать объект, обновить экран и показать message.\n- `gone_error` (410) — объекта больше нет: разговор не найден или истёк (вопрос в чате, ответ на вопрос ИИ, подсчёт токенов — начать новый разговор), ход потерян при перезапуске сервера, ссылка привязки программы устарела или уже использована (code connector_link_gone). Повторять незачем.\n- `limit_error` (429) — предел: частота запросов, окно тарифа, число объектов или мест. Если есть заголовок Retry-After или resets_at — пройдёт само, показать, когда; иначе нужно освободить место (удалить лишнее) или сменить тариф.\n- `api_error` (500) — сбой на нашей стороне. Показать message и request_id (для поддержки); повторить позже.\n- `unavailable_error` (503) — временно недоступно (внешний сервис, ИИ, настройка сервера). Повторить позже; если повторяется — сообщить request_id в поддержку.","example":"payment_required_error","isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Готовый текст для человека по-русски: что случилось, что делать и к кому обратиться. Показывать как есть; не разбирать — формулировки меняются.","example":"Баланс доп. использования закончился — пополнить его или включить автопополнение могут владелец и админ workspace.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"code":{"type":"string","description":"Уточнение вида: по нему выбирается действие интерфейса (кнопка «Пополнить», «Войти иначе»…). Нет поля — хватает type и message. Известные коды:\n- `sso_domain_taken` (409) — домен SSO уже подтверждён другой организацией\n- `sso_last_verified_domain` (409) — включён обязательный вход, а это последний подтверждённый домен — сначала выключить обязательный вход\n- `sso_login_required` (400) — включить обязательный вход можно только из сессии, открытой через SSO этой организации\n- `domain_verification_failed` (400) — запись DNS для домена не найдена или не совпала — проверить и повторить\n- `oidc_openid_scope_required` (400) — в scopes сервера входа OIDC нет openid — добавить её: без неё вход через SSO не пройдёт\n- `enterprise_only` (403) — возможность есть только на тарифе Enterprise\n- `groups_limit` (429) — достигнут предел групп в организации\n- `custom_roles_limit` (429) — достигнут предел своих ролей в организации\n- `group_managed_by_directory` (409) — группа из каталога: название и состав меняются только там\n- `group_member_not_in_workspace` (400) — в группу можно добавить только сотрудника этой организации\n- `role_above_ceiling` (400) — роль даёт права выше потолка организации\n- `unknown_model` (400) — такой модели нет — список в available_models\n- `price_required` (400) — админка, тариф целиком: у платного тарифа нужна цена (price)\n- `lago_rejected` (409) — админка, тариф целиком: Lago отказал по существу (4xx, текст Lago в message) — правила не изменены, повтор без правки не поможет\n- `price_mismatch` (400) — админка, тариф целиком: цена не сходится с правилами (место без per_seat, per_seat без цены места, цена у бесплатного)\n- `model_not_allowed` (403) — политика организации не разрешает эту модель, а подходящей разрешённой нет — админу дополнить список\n- `retention_too_short` (400) — срок хранения меньше наименьшего\n- `audit_export_range` (400) — неверный период выгрузки журнала: конец раньше начала или период слишком длинный\n- `compliance_disabled` (403) — адрес для проверок выключен — владелец включает его в настройке\n- `missing_credentials` (401) — нет ни cookie сессии, ни ключа API — войти или передать x-api-key\n- `link_revoked` (401) — вход в Tungo из 1С больше не действует (вышли, отключили на сайте, вошли в той же базе заново, компания или человек заблокированы) — 1С просит войти заново\n- `login_denied` (403) — вход из 1С отклонён на сайте Tungo — 1С показывает отказ\n- `code_expired` (410) — код входа из 1С устарел или уже использован — 1С просит новый код\n- `code_gone` (410) — код входа из 1С уже подтверждён, отклонён или устарел — на сайте подтверждать нечего\n- `invalid_api_key` (401) — ключ API неверен (опечатка или удалён)\n- `key_revoked` (401) — ключ API отозван (при правке ключа — 409 с тем же code: отозванный ключ не меняется)\n- `key_expired` (401) — срок ключа API истёк — сменить секрет (POST …/api-keys/{id}/roll: срок начнётся заново) или выпустить новый (при правке срока — 409 с тем же code: PATCH истёкший ключ не оживляет)\n- `key_disabled` (401) — ключ API выключен — включить может автор ключа или владелец организации (POST …/api-keys/{id}/enable)\n- `key_creator_lost_access` (401) — тот, кто выпустил ключ, больше не владелец/админ организации — ключ недействителен\n- `user_banned` (401) — вход в аккаунт закрыт администратором Tungo — только поддержка Tungo\n- `onboarding_unpaid` (402) — подключение компании к ИИ-бухгалтеру не оплачено (разовый платёж): владельцу/админу организации — «Оплатить» в настройках компании; остальным — сообщить им\n- `onboarding_pending` (402) — оплата подключения компании ещё проходит в банке — ИИ заработает после подтверждения; опрашивать состояние подключения\n- `no_active_plan` (402) — нет действующей подписки (не оформлена, закончилась, первая оплата не прошла или ждёт 3-D Secure). Владельцу/админу — кнопка в настройки оплаты; остальным — «обратитесь к владельцу организации». Что именно случилось — в message\n- `balance_exhausted` (402) — баланс доп. использования кончился. Владельцу/админу — «Пополнить баланс» или включить автопополнение; остальным — сообщить им\n- `workspace_cap_reached` (402) — достигнут месячный потолок доп. использования организации. resets_at — 1-е число следующего месяца, 00:00 по Алматы; раньше — если админ поднимет потолок\n- `report_busy` (429) — сейчас собирается много отчётов команды: повторить через время из Retry-After\n- `report_timeout` (503) — отчёт команды не успел собраться: сократить период или выбрать разбивку по месяцам\n- `company_cap_reached` (402) — достигнут месячный потолок доп. использования компании. Письмо владельцу и админам уже отправлено. resets_at — 1-е число; раньше — если админ поднимет потолок (PUT /v1/workspaces/{ws}/team/company-caps/{co})\n- `member_cap_reached` (402) — достигнут личный месячный потолок доп. использования сотрудника. resets_at — 1-е число; раньше — если админ поднимет его потолок\n- `key_cap_reached` (402) — достигнут месячный потолок расхода ключа API (или остаток меньше оценки одного вызова). resets_at — 1-е число\n- `platform_balance_exhausted` (402) — баланс платформы пуст: вызов по ключу или автоматизация не сделаны. Пополнить — POST /v1/workspaces/{ws}/platform/purchases или автопополнением\n- `platform_cap_reached` (402) — достигнут месячный потолок трат платформы. resets_at — 1-е число следующего месяца, 00:00 по Алматы; раньше — поднять потолок в PUT /v1/workspaces/{ws}/platform/account\n- `platform_disabled` (402) — платформа выключена в организации: вызовы по ключам и автоматизации остановлены. Включить — PUT /v1/workspaces/{ws}/platform/account\n- `free_plan_chat_only` (402) — бесплатный тариф: пачки из кабинета только на платных тарифах. Ключам API и автоматизациям тариф не нужен\n- `free_limit_unavailable` (402) — бесплатный лимит этой учётной записи не положен (проверка регистрации или решение администратора) — оформить тариф\n- `plan_company_limit` (402) — в организации уже столько компаний не в архиве, сколько разрешает тариф (max_companies в GET /v1/plans; limit и plan_code — в ответе): новую не завести и из архива не вернуть. Убрать лишнюю в архив или перейти на тариф больше\n- `effort_not_in_plan` (402) — поле effort в чате на тарифе без выбора усилия (max_effort тарифа null, например бесплатный): ход не начат. Прислать вопрос без effort или оформить платный тариф\n- `model_not_in_plan` (402) — модель сильнее потолка тарифа (plans.model_ceiling): вызов не сделан; более сильные модели — на платных тарифах\n- `missing_permission` (403) — не хватает права в компании (или у ключа API); какого — в поле permission\n- `login_method_not_allowed` (403) — организация пускает к своим данным только после входа другим способом; какими — в allowed_methods. Предложить выйти и войти так\n- `ip_not_allowed` (403) — ключ API не принимает запросы с этого адреса — поправить allowed_ips ключа (PATCH …/api-keys/{id}) или вызывать с разрешённого адреса\n- `key_write_limit` (403) — запись в 1С по ключу API — сверх его пределов (сумма на документ или в день, виды документов) или правило автоодобрения шире пределов ключа; в сообщении — что и на сколько\n- `human_only` (403) — это решение принимает только человек в кабинете Tungo, не ключ API: например, отклонить «не знаем, записан ли» на снимке базы без проверки 1С (confirm_unknown_write)\n- `autonomy_raise_requires_session` (403) — поднять уровень доверия ИИ или потолки компании можно только владельцу или админу организации из кабинета; ключом API — только понизить\n- `id_path_required` (400) — для автоодобрения по хуку задайте хуку id_path — путь к номеру операции в теле события: без него повтор доставки нельзя отличить от новой операции\n- `directbank_rule_exists` (400) — у компании уже есть сценарий с правилом для выписки DirectBank — правило выписки одно на компанию\n- `event_not_found` (404) — события нет в этой компании или оно удалено по сроку хранения — для пробного прогона выберите событие посвежее\n- `event_body_unavailable` (409) — тело события зашифровано, а ключ шифрования на сервере сменился — прогнать сценарий на нём нельзя\n- `scenario_steps_required` (409) — у сценария цепочка шагов, а в замене (PUT) нет ни steps, ни output: передайте steps явно, иначе замена молча убрала бы цепочку\n- `scenario_output_required` (409) — у сценария форма итога, а в замене (PUT) нет ни steps, ни output: передайте output явно (null — снять форму)\n- `automation_queue_full` (429) — у компании слишком много запусков в очереди: повторите позже (событие хука отправитель повторит сам)\n- `restarting` (503) — сервис перезапускается: новый ход не начат — повторите через Retry-After\n- `company_suspended` (403) — работа с компанией приостановлена (решение платформы или оплаты); карточка видна, работать, править и архивировать нельзя (архив — 409 с тем же code)\n- `company_archived` (403) — компания в архиве: карточка видна, работать с ней нельзя. Вернуть — POST /v1/companies/{company_id}/unarchive (владелец компании или владелец/админ организации)\n- `workspace_blocked` (403) — организация заблокирована администратором платформы — только поддержка Tungo\n- `untrusted_origin` (403) — запрос пришёл не со страницы Tungo (защита от подделки запросов) — открыть кабинет по обычному адресу; для /admin/* — только со страниц ADMIN_ORIGINS\n- `cors_not_supported` (403) — вызов API из чужого браузерного кода (CORS) не поддерживается: ключ API — секрет сервера\n- `api_keys_disabled_by_policy` (403) — политика организации запрещает ключи API\n- `owner_role_reserved` (403) — владельца компании назначает, меняет и снимает только владелец или админ организации\n- `role_above_yours` (403) — у выдаваемой (или снимаемой) роли есть права, которых нет у вас; роль — в поле role, лишние права — в permissions\n- `not_key_creator` (403) — менять компании, права, срок и секрет ключа, снимать и поднимать его пределы записи в 1С может только тот, кто его выпустил (ужесточить пределы может любой админ)\n- `transfer_wider_than_target` (403) — передать ключ нельзя: у нового владельца нет нужного права (или доступа) в одной из компаний ключа\n- `invalid_allowed_ips` (400) — в allowed_ips ключа — не IP-адрес и не подсеть CIDR; какая запись — в сообщении\n- `transfer_target_not_admin` (400) — передать ключ можно только владельцу или админу этой организации\n- `platform_model_not_allowed` (403) — модель сильнее потолка платформы (настройка platform.billing): вызов не сделан и ничего не списано\n- `managed_by_sso` (403) — удаление аккаунта: аккаунт ведёт организация (SSO или SCIM) — удаляет её администратор; организации — в workspaces\n- `fresh_session_required` (403) — удаление аккаунта без почты (Telegram): нужен свежий вход — выйти, войти снова и подтвердить\n- `api_key_not_allowed` (403) — действие только из кабинета (сессия), не по ключу API: удаление аккаунта\n- `not_own_key` (403) — по ключу API виден только расход самого этого ключа\n- `webhooks_not_in_plan` (403) — вебхуков нет в тарифе организации\n- `admin_2fa_required` (403) — админ-API: у администратора платформы нет второго фактора или эта сессия не подтверждена кодом приложения-аутентификатора (POST /v1/auth/two-factor/enable, затем verify-totp)\n- `two_factor_required` (403) — отключить второй фактор, показать его секрет или выпустить резервные коды — только после кода из приложения-аутентификатора в этой сессии\n- `webhooks_require_all_companies` (403) — вебхуки — только ключу на все компании организации (при выпуске ключа — 400 с тем же code)\n- `audit_requires_all_companies` (403) — журнал организации — только ключу на все компании организации\n- `policy_blocked` (403) — одобрение: организация не доверяет ИИ записывать такой документ этим способом (поле level — уровень доверия); одобрить по одному или поднять уровень\n- `onec_read_only` (403) — одобрение: у пользователя 1С из подключения нет права записи — дать права в 1С\n- `validation_failed` (400) — тело или параметры запроса не прошли проверку: что не так с каждым полем — в fields (путь, код, текст по-русски). Подсветить поля формы; общий message — над формой\n- `invalid_json` (400) — тело запроса — не JSON-объект\n- `personal_workspace` (400) — в личной организации нет сотрудников, приглашений и политик — нужна организация Team или Enterprise\n- `api_key_required` (400) — адрес только для запроса по ключу API\n- `email_code_unavailable` (400) — удаление аккаунта: у аккаунта нет почты для кода (вход через Telegram) — подтверждать свежим входом, без кода\n- `deletion_code_invalid` (400) — удаление аккаунта: неверный код из письма; сколько попыток осталось — attempts_left\n- `deletion_code_expired` (400) — удаление аккаунта: код истёк, попытки кончились или код не запрашивался — запросить новый (POST /v1/me/deletion/code)\n- `unsafe_url` (400) — адрес вебхука недопустим (внутренняя сеть, не HTTPS)\n- `idempotency_key_invalid` (400) — Idempotency-Key неверного вида\n- `payload_too_large` (413) — тело запроса (или события хука) больше допустимого; пределы — настройки платформы\n- `idempotency_key_reused` (422) — этот Idempotency-Key уже был у другого запроса — для нового действия нужен новый ключ\n- `has_blockers` (422) — одобрение: у предложения есть блокеры — сначала исправить их\n- `batch_too_large` (413) — одобрение пачкой: предложений больше предела (поля limit, requested) — разбить на части\n- `unknown_kind` (400) — настройки писем: такого вида уведомлений нет — взять список из GET /v1/me/notifications\n- `kind_locked` (400) — настройки писем: этот вид (безопасность и аккаунт) выключить нельзя — переключатель неактивен (locked)\n- `onec_rejected` (400) — одобрение: 1С отклонила документ (причина — в message): исправить в 1С или построить предложение заново\n- `proposal_not_found` (404) — предложения с таким id нет в компании\n- `export_link_expired` (404) — ссылка на архив выгрузки истекла или неверна — получить новую: GET /v1/me/export\n- `batch_not_found` (404) — одобрение пачкой: задания с таким batch_id нет (или в нём нет предложений)\n- `idempotency_in_progress` (409) — первый запрос с этим Idempotency-Key ещё выполняется — подождать и повторить, придёт тот же ответ\n- `idempotency_response_not_kept` (409) — запрос с этим Idempotency-Key уже выполнен, но копия ответа не хранится (в нём персональные данные): результат — по ссылке в ответе (dialog_url) или в списке; статус первого ответа — original_status\n- `idempotency_response_too_large` (409) — запрос с этим Idempotency-Key уже выполнен, но ответ слишком большой, чтобы повторить его целиком: результат — в списке; статус первого ответа — original_status\n- `sole_owner` (409) — удаление аккаунта: вы единственный владелец организации с другими участниками (workspaces) — передать владение (POST /v1/workspaces/{ws}/ownership) или удалить организацию\n- `account_deletion_in_progress` (409) — удаление аккаунта: фон уже стирает аккаунт — новый код и подтверждение не принимаются, отменить нельзя\n- `wrong_status` (409) — предложение уже не в том состоянии (поле status — нынешнее): обновить его\n- `wrong_state` (409) — запуск автоматизации уже не в том состоянии (поле state — нынешнее)\n- `dialog_closed` (409) — разговор закрыт (поле reason — почему): начать новый\n- `dialog_id_taken` (409) — разговор с таким dialog_id уже есть — для нового прислать другой id или не присылать его\n- `turn_in_progress` (409) — в разговоре уже идёт ход ИИ (поле turn — его номер): дождаться его конца или остановить\n- `turn_superseded` (409) — читаемый ход уже закончился и идёт следующий (поле turn) — читать его с начала\n- `dialog_changed` (409) — разговор только что изменился в другом окне или на другом сервере Tungo — открыть его заново (GET …/chat/{id}) и повторить\n- `already_answered` (409) — на этот вопрос ИИ уже ответили (поле turn — ход с ответом)\n- `question_stale` (409) — вопрос ИИ устарел (в разговоре уже другой вопрос или его нет) — обновить разговор\n- `dismissed` (409) — вопрос ИИ закрыт без ответа — написать обычное сообщение\n- `job_running` (409) — задание (пачка) ещё идёт — дождаться отчёта; поле batch_id\n- `payload_changed` (409) — одобрение: документ изменился после превью — построить предложение заново\n- `onec_conflict` (409) — одобрение: 1С отказала из-за конфликта (объект занят или изменён) — повторить позже\n- `onec_not_found` (409) — одобрение: в 1С нет объекта, на который ссылается документ — построить предложение заново\n- `plan_limit_reached` (429) — лимит окна тарифа исчерпан; resets_at и Retry-After — когда обновится. Показать время; если в message предложено доп. использование — дать кнопку включить\n- `rate_limited` (429) — слишком часто (по ключу API, уведомления ePay с одного адреса, попытки кода второго фактора) — подождать Retry-After секунд\n- `concurrent_turns_limit` (429) — по ключу API уже идёт предельное число ходов ИИ одновременно — дождаться окончания\n- `api_keys_limit` (429) — в организации предельное число действующих ключей API — отозвать ненужные\n- `webhook_endpoints_limit` (429) — предельное число адресов вебхуков — удалить ненужные\n- `export_too_soon` (429) — выгрузку данных можно запрашивать не чаще раза в сутки: next_request_at и Retry-After — когда можно снова\n- `hook_rate_limited` (429) — приём событий хука: больше automations.hook_events_per_minute в минуту — повторить через Retry-After секунд\n- `lago_unavailable` (503) — админка, тариф целиком: Lago не настроен или не ответил (сеть, 5xx) — правила не изменены, повторить позже\n- `model_price_missing` (503) — у модели ИИ не задана цена — сбой настройки платформы, ничего не списано; повторить позже\n- `data_export_disabled` (503) — выгрузка данных на сервере не настроена (поддержка Tungo)\n- `webhooks_disabled` (503) — вебхуки на сервере не настроены\n- `webhooks_unavailable` (503) — служба доставки вебхуков временно недоступна\n- `model_not_configured` (503) — сервис модели ИИ не настроен на сервере — повторить позже (Retry-After)\n- `write_unknown` (503) — одобрение: исход записи в 1С неизвестен (связь оборвалась) — проверить документ в 1С по метке (поле marker); повтор безопасен (retry_safe); слишком ранний повтор в 1С не пишет — подождать retry_after секунд (Retry-After)\n- `onec_unavailable` (503) — 1С сейчас не отвечает — повторить позже (Retry-After)\n- `onec_check_busy` (503) — проверка связи 1С: сервер сейчас проверяет слишком много подключений — повторить через Retry-After секунд\n- `onec_failed` (503) — записать документ в 1С не удалось по неизвестной причине — повторить позже\n- `journal_unavailable` (503) — журнал решений недоступен — пачка не одобрена, повторить позже\n- `hook_secret_unavailable` (503) — приём событий хука: секрет подписи сейчас не открыть — отправителю повторить доставку позже\n- `secret_box_missing` (503) — на сервере не задан ключ шифрования настроек — секрет подписи хука сохранить нельзя (поддержка Tungo)\n- `not_personal` (409) — перевод в команду: организация уже не личная — обновить экран\n- `subscription_blocks_conversion` (409) — перевод в команду: действует подписка для одного человека — сначала отменить её и дождаться конца периода\n- `subscription_kind_mismatch` (409) — админка: действующая подписка оформлена на другой вид организации — вид не меняется, пока она идёт\n- `enterprise_features_active` (409) — админка: у организации подключены SSO или SCIM — сначала отключить, потом снимать Enterprise\n- `too_many_members_for_personal` (409) — админка: в личной организации один человек — сначала убрать остальных участников\n- `open_debt` (409) — есть неоплаченный счёт — сначала оплатить; в плане удаления этот же код лежит в blockers\n- `active_work` (409) — в организации идут ходы ИИ или автоматизации — дождаться окончания и повторить; в плане удаления этот же код лежит в blockers\n- `deletion_already_scheduled` (409) — удаление организации уже запланировано — показать дату из плана\n- `deletion_purging` (409) — очистка организации уже идёт — отменить её нельзя\n- `workspace_deleting` (409) — админка: организация удаляется по просьбе владельца — блок удаления снимает только отмена удаления\n- `invitation_not_pending` (409) — приглашение принято, отозвано или истекло — письмо не отправить, пригласить заново\n- `last_owner` (409) — это последний владелец организации — сначала передать владение другому участнику\n- `seats_by_contract` (409) — места Enterprise — по договору, карта и докупка не работают: обратиться к менеджеру\n- `no_subscription` (409) — нет действующей подписки — сначала оформить тариф\n- `not_per_seat` (409) — этот тариф не считает оплату за место — докупка не нужна, предел мест показан в ответе GET …/seats\n- `subscription_ended` (409) — возобновление: период отменённой подписки уже закончился — ничего не списано, оформить тариф заново (повторный PUT — обычное оформление)\n- `subscription_busy` (409) — подписка уже меняется другим запросом (отмена или возобновление) — обновить экран через несколько секунд\n- `subscription_ending` (409) — подписка отменена и закончится в конце периода — места не докупаются и не сокращаются\n- `seats_unpaid_debt` (409) — подписка просрочена — сначала оплатить счёт; участники остаются, новых приглашать нельзя\n- `idempotency_conflict` (409) — докупка: этот ключ уже использован с другим числом мест — для новой покупки нужен новый ключ\n- `seat_quote_changed` (409) — докупка: сумма изменилась (другой день или новая цена), деньги не списаны — показать новую сумму из поля и спросить снова\n- `no_paid_seats` (409) — оплаченных мест ещё нет — сокращать нечего\n- `seats_below_occupied` (409) — занято больше мест, чем просите оставить — сначала убрать участников или отозвать приглашения\n- `not_enterprise` (409) — админка: места по договору есть только у Enterprise — сначала поставить вид\n- `per_seat_plan_change` (409) — смена тарифа с оплатой за место не делается сразу: Lago взял бы плату за места дважды. Отменить и оформить новый с конца периода\n- `confirm_name_mismatch` (400) — удаление организации: название введено неверно — ввести точно как в плане удаления\n- `below_min_seats` (400) — на этом тарифе мест меньше нельзя: минимум — min_seats тарифа\n- `seats_over_max` (400) — мест больше предела одной организации (team.limits.max_seats) — обратиться в поддержку\n- `seats_above_paid` (400) — PUT …/seats только сокращает; новые места — через POST …/seats с оплатой\n- `onec_check_running` (429) — проверка связи 1С уже идёт у этой компании, у вас (другая компания) или у двух других компаний организации — дождаться её итога и повторить (Retry-After)\n- `invitation_resend_too_soon` (429) — письмо с приглашением уже отправлено только что — подождать Retry-After секунд\n- `seats_exhausted` (429) — свободные места закончились: докупите места или освободите их, отозвав приглашение\n- `seat_price_unknown` (503) — цена места сейчас неизвестна (тариф не прочитан или настроен неверно), деньги не списаны — повторить позже\n- `otp_mail_failed` (503) — письмо с кодом входа не отправлено: попробуйте позже\n- `seat_period_unknown` (503) — не удалось сверить период подписки с биллингом: деньги не списаны, попробуйте позже\n\nНезнакомый code — вести себя по type.","example":"balance_exhausted","uniqueKey":"error.code","typeLabel":"string"},"permission":{"type":"string","description":"При code = missing_permission — какого права не хватает: права в компании (company.read, company.manage, company.members.manage, onec.connect, proposals.create, proposals.approve, chat.use, audit.read, automations.manage) или права только ключа API (automations.read, webhooks.manage). Показать «нужно право …» и предложить попросить админа (или выпустить ключ с этим правом).","example":"proposals.approve","uniqueKey":"error.permission","typeLabel":"string"},"resets_at":{"type":"string","format":"date-time","description":"Когда ограничение снимется само — ISO 8601, UTC. Есть у plan_limit_reached (конец окна тарифа) и у месячных потолков (workspace_cap_reached, company_cap_reached, member_cap_reached, key_cap_reached, platform_cap_reached — 1-е число, 00:00 по Алматы). Показать в местном времени: «Лимит обновится в 14:30». Нет поля — само не пройдёт.","example":"2026-11-01T19:00:00.000Z","uniqueKey":"error.resets_at","typeLabel":"string\u003cdate-time>"},"allowed_methods":{"type":"array","items":{"type":"string","enum":["email_otp","google","apple","telegram","sso"],"uniqueKey":"error.allowed_methods.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"При code = login_method_not_allowed — какими способами входа организация пускает к своим данным: email_otp — код из почты, google, apple, telegram, sso — SSO организации. Предложить выйти и войти одним из них.","uniqueKey":"error.allowed_methods","typeLabel":"enum\u003cstring>[]"},"role":{"type":"string","description":"При code = role_above_yours — ключ роли в компании, которую нельзя выдать или снять (например chief_accountant).","uniqueKey":"error.role","typeLabel":"string"},"permissions":{"type":"array","items":{"type":"string","uniqueKey":"error.permissions.items.[INDEX]","typeLabel":"string"},"description":"При code = role_above_yours — права этой роли, которых нет у того, кто выдаёт. Показать списком: «у роли есть права, которых нет у вас: …».","uniqueKey":"error.permissions","typeLabel":"string[]"},"fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string","description":"Путь к полю через точку, как в теле запроса или имени параметра: `name`, `lines.0.amount`. Пустая строка — всё тело (не объект, лишние поля).","example":"bin","isRequired":true,"uniqueKey":"error.fields.items.[INDEX].path","typeLabel":"string"},"code":{"type":"string","enum":["invalid_type","too_small","too_big","invalid_format","invalid_value","not_multiple_of","unrecognized_keys","invalid_union","invalid_key","invalid_element","custom"],"description":"Что не так: invalid_type — не тот тип или поле не передано; too_small / too_big — короче/меньше или длиннее/больше допустимого; invalid_format — неверный вид (почта, дата, шаблон); invalid_value — значения нет среди допустимых; not_multiple_of — не кратно; unrecognized_keys — лишние поля; invalid_union — не подходит ни один вид; invalid_key / invalid_element — неверный ключ или элемент; custom — своё правило ручки","example":"invalid_format","isRequired":true,"uniqueKey":"error.fields.items.[INDEX].code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Текст для человека по-русски — показать под полем","example":"БИН/ИИН — 12 цифр","isRequired":true,"uniqueKey":"error.fields.items.[INDEX].message","typeLabel":"string"}},"required":["path","code","message"],"description":"Ошибка одного поля запроса","uniqueKey":"error.fields.items.[INDEX]","typeLabel":"object"},"description":"При code = validation_failed — ошибки по полям, в порядке проверки; у одного поля может быть несколько.","uniqueKey":"error.fields","typeLabel":"object[]"}},"required":["type","message"],"additionalProperties":{"oneOf":[{}],"uniqueKey":"error.additionalProperties","typeLabel":"any"},"description":"Что пошло не так. Все 503 — с заголовком Retry-After (через сколько секунд повторить). Кроме описанных, у отдельных ручек бывают свои поля рядом с code (например status у wrong_status, state у wrong_state, reason у dialog_closed) — они описаны у этих ручек.","isRequired":true,"uniqueKey":"error","typeLabel":"object"},"request_id":{"oneOf":[{"type":"string","description":"Номер запроса (тот же, что в заголовке x-request-id). Показывать мелко рядом с ошибкой с кнопкой «скопировать»: по нему поддержка находит запрос в журнале. null — номер не успел появиться (очень ранний отказ).","example":"req_4f9c2a7e1b3d4c5a8e6f7a9b0c1d2e3f","isRequired":true,"uniqueKey":"request_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"Номер запроса (тот же, что в заголовке x-request-id). Показывать мелко рядом с ошибкой с кнопкой «скопировать»: по нему поддержка находит запрос в журнале. null — номер не успел появиться (очень ранний отказ).","example":"req_4f9c2a7e1b3d4c5a8e6f7a9b0c1d2e3f","isRequired":true,"uniqueKey":"request_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"request_id","typeLabel":"string | null"}},"required":["type","error","request_id"],"description":"Тело любой ошибки API (статусы 4xx и 5xx): `{\"type\":\"error\",\"error\":{\"type\":\"…\",\"code\":\"…\",\"message\":\"…\"},\"request_id\":\"…\"}`. Интерфейс ветвится по error.type и error.code, человеку показывает error.message и request_id.","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"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":"\u003cstring>","permissions":["\u003cstring>"],"fields":[{"path":"bin","code":"invalid_format","message":"БИН/ИИН — 12 цифр"}]},"request_id":"req_4f9c2a7e1b3d4c5a8e6f7a9b0c1d2e3f"}}},"exampleType":"generated"}},"headers":{"x-request-id":{"description":"Номер запроса (тот же, что request_id в теле ошибки) — назвать в обращении в поддержку. Его всегда создаёт сервер: присланный клиентом x-request-id номером не становится","schema":{"type":"string","example":"req_3f2a9c0d1e4b4c5d8e7f6a5b4c3d2e1f"}},"x-ratelimit-limit":{"description":"Только при входе по ключу API: сколько запросов можно в текущем окне — самый тесный предел из ключа и организации","schema":{"type":"integer"}},"x-ratelimit-remaining":{"description":"Только при входе по ключу API: сколько запросов осталось по этому пределу в текущем окне","schema":{"type":"integer"}},"x-ratelimit-reset":{"description":"Только при входе по ключу API: секунд до нового окна этого предела","schema":{"type":"integer"}},"Retry-After":{"description":"Через сколько секунд повторить запрос (отказ пройдёт сам); нет — ждать бесполезно, смотреть error.code","schema":{"type":"integer","minimum":1}}},"exampleType":"generated"},"07309174-e160-4174-85b7-673f9a2180ed":{"description":"Временно недоступно — повторить позже (error.type: unavailable_error)","content":{"application/json":{"schema":{"type":"object","properties":{"type":{"type":"string","enum":["error"],"description":"Всегда «error»: так тело ошибки отличается от обычного ответа.","isRequired":true,"uniqueKey":"type","typeLabel":"enum\u003cstring>"},"error":{"type":"object","properties":{"type":{"type":"string","enum":["invalid_request_error","authentication_error","payment_required_error","permission_error","not_found_error","conflict_error","gone_error","limit_error","api_error","unavailable_error"],"description":"Вид ошибки — по нему ветвится клиент (не по тексту message). Статус HTTP у вида один, кроме invalid_request_error:\n- `invalid_request_error` (400) — запрос неверен: поле не прошло проверку, неверный формат, действие сейчас недопустимо. Показать message рядом с формой; повтор без исправления не поможет. Обычно 400; 413 и 422 — у кодов, где это сказано в списке code.\n- `authentication_error` (401) — нет входа: сессия закончилась, cookie нет, ключ API неверен, отозван или истёк. Кабинет — отправить на страницу входа; по ключу — проверить ключ (см. code).\n- `payment_required_error` (402) — нужны деньги или решение владельца/админа организации: ждать бесполезно. Показать message и кнопку действия по code (оформить тариф, пополнить баланс, поднять потолок); без code — не оплачено подключение компании.\n- `permission_error` (403) — нельзя: не хватает права или роли, организация заблокирована, вход не тем способом. Показать message (в нём сказано, к кому обратиться); детали — в code и полях рядом.\n- `not_found_error` (404) — нет такого объекта — или он чужой: чужие организации, компании и записи тоже отвечают 404, чтобы не раскрывать, что они есть. Показать «не найдено» и вернуть к списку.\n- `conflict_error` (409) — состояние не позволяет: уже сделано, уже идёт другое действие, версия устарела. Перечитать объект, обновить экран и показать message.\n- `gone_error` (410) — объекта больше нет: разговор не найден или истёк (вопрос в чате, ответ на вопрос ИИ, подсчёт токенов — начать новый разговор), ход потерян при перезапуске сервера, ссылка привязки программы устарела или уже использована (code connector_link_gone). Повторять незачем.\n- `limit_error` (429) — предел: частота запросов, окно тарифа, число объектов или мест. Если есть заголовок Retry-After или resets_at — пройдёт само, показать, когда; иначе нужно освободить место (удалить лишнее) или сменить тариф.\n- `api_error` (500) — сбой на нашей стороне. Показать message и request_id (для поддержки); повторить позже.\n- `unavailable_error` (503) — временно недоступно (внешний сервис, ИИ, настройка сервера). Повторить позже; если повторяется — сообщить request_id в поддержку.","example":"payment_required_error","isRequired":true,"uniqueKey":"error.type","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Готовый текст для человека по-русски: что случилось, что делать и к кому обратиться. Показывать как есть; не разбирать — формулировки меняются.","example":"Баланс доп. использования закончился — пополнить его или включить автопополнение могут владелец и админ workspace.","isRequired":true,"uniqueKey":"error.message","typeLabel":"string"},"code":{"type":"string","description":"Уточнение вида: по нему выбирается действие интерфейса (кнопка «Пополнить», «Войти иначе»…). Нет поля — хватает type и message. Известные коды:\n- `sso_domain_taken` (409) — домен SSO уже подтверждён другой организацией\n- `sso_last_verified_domain` (409) — включён обязательный вход, а это последний подтверждённый домен — сначала выключить обязательный вход\n- `sso_login_required` (400) — включить обязательный вход можно только из сессии, открытой через SSO этой организации\n- `domain_verification_failed` (400) — запись DNS для домена не найдена или не совпала — проверить и повторить\n- `oidc_openid_scope_required` (400) — в scopes сервера входа OIDC нет openid — добавить её: без неё вход через SSO не пройдёт\n- `enterprise_only` (403) — возможность есть только на тарифе Enterprise\n- `groups_limit` (429) — достигнут предел групп в организации\n- `custom_roles_limit` (429) — достигнут предел своих ролей в организации\n- `group_managed_by_directory` (409) — группа из каталога: название и состав меняются только там\n- `group_member_not_in_workspace` (400) — в группу можно добавить только сотрудника этой организации\n- `role_above_ceiling` (400) — роль даёт права выше потолка организации\n- `unknown_model` (400) — такой модели нет — список в available_models\n- `price_required` (400) — админка, тариф целиком: у платного тарифа нужна цена (price)\n- `lago_rejected` (409) — админка, тариф целиком: Lago отказал по существу (4xx, текст Lago в message) — правила не изменены, повтор без правки не поможет\n- `price_mismatch` (400) — админка, тариф целиком: цена не сходится с правилами (место без per_seat, per_seat без цены места, цена у бесплатного)\n- `model_not_allowed` (403) — политика организации не разрешает эту модель, а подходящей разрешённой нет — админу дополнить список\n- `retention_too_short` (400) — срок хранения меньше наименьшего\n- `audit_export_range` (400) — неверный период выгрузки журнала: конец раньше начала или период слишком длинный\n- `compliance_disabled` (403) — адрес для проверок выключен — владелец включает его в настройке\n- `missing_credentials` (401) — нет ни cookie сессии, ни ключа API — войти или передать x-api-key\n- `link_revoked` (401) — вход в Tungo из 1С больше не действует (вышли, отключили на сайте, вошли в той же базе заново, компания или человек заблокированы) — 1С просит войти заново\n- `login_denied` (403) — вход из 1С отклонён на сайте Tungo — 1С показывает отказ\n- `code_expired` (410) — код входа из 1С устарел или уже использован — 1С просит новый код\n- `code_gone` (410) — код входа из 1С уже подтверждён, отклонён или устарел — на сайте подтверждать нечего\n- `invalid_api_key` (401) — ключ API неверен (опечатка или удалён)\n- `key_revoked` (401) — ключ API отозван (при правке ключа — 409 с тем же code: отозванный ключ не меняется)\n- `key_expired` (401) — срок ключа API истёк — сменить секрет (POST …/api-keys/{id}/roll: срок начнётся заново) или выпустить новый (при правке срока — 409 с тем же code: PATCH истёкший ключ не оживляет)\n- `key_disabled` (401) — ключ API выключен — включить может автор ключа или владелец организации (POST …/api-keys/{id}/enable)\n- `key_creator_lost_access` (401) — тот, кто выпустил ключ, больше не владелец/админ организации — ключ недействителен\n- `user_banned` (401) — вход в аккаунт закрыт администратором Tungo — только поддержка Tungo\n- `onboarding_unpaid` (402) — подключение компании к ИИ-бухгалтеру не оплачено (разовый платёж): владельцу/админу организации — «Оплатить» в настройках компании; остальным — сообщить им\n- `onboarding_pending` (402) — оплата подключения компании ещё проходит в банке — ИИ заработает после подтверждения; опрашивать состояние подключения\n- `no_active_plan` (402) — нет действующей подписки (не оформлена, закончилась, первая оплата не прошла или ждёт 3-D Secure). Владельцу/админу — кнопка в настройки оплаты; остальным — «обратитесь к владельцу организации». Что именно случилось — в message\n- `balance_exhausted` (402) — баланс доп. использования кончился. Владельцу/админу — «Пополнить баланс» или включить автопополнение; остальным — сообщить им\n- `workspace_cap_reached` (402) — достигнут месячный потолок доп. использования организации. resets_at — 1-е число следующего месяца, 00:00 по Алматы; раньше — если админ поднимет потолок\n- `report_busy` (429) — сейчас собирается много отчётов команды: повторить через время из Retry-After\n- `report_timeout` (503) — отчёт команды не успел собраться: сократить период или выбрать разбивку по месяцам\n- `company_cap_reached` (402) — достигнут месячный потолок доп. использования компании. Письмо владельцу и админам уже отправлено. resets_at — 1-е число; раньше — если админ поднимет потолок (PUT /v1/workspaces/{ws}/team/company-caps/{co})\n- `member_cap_reached` (402) — достигнут личный месячный потолок доп. использования сотрудника. resets_at — 1-е число; раньше — если админ поднимет его потолок\n- `key_cap_reached` (402) — достигнут месячный потолок расхода ключа API (или остаток меньше оценки одного вызова). resets_at — 1-е число\n- `platform_balance_exhausted` (402) — баланс платформы пуст: вызов по ключу или автоматизация не сделаны. Пополнить — POST /v1/workspaces/{ws}/platform/purchases или автопополнением\n- `platform_cap_reached` (402) — достигнут месячный потолок трат платформы. resets_at — 1-е число следующего месяца, 00:00 по Алматы; раньше — поднять потолок в PUT /v1/workspaces/{ws}/platform/account\n- `platform_disabled` (402) — платформа выключена в организации: вызовы по ключам и автоматизации остановлены. Включить — PUT /v1/workspaces/{ws}/platform/account\n- `free_plan_chat_only` (402) — бесплатный тариф: пачки из кабинета только на платных тарифах. Ключам API и автоматизациям тариф не нужен\n- `free_limit_unavailable` (402) — бесплатный лимит этой учётной записи не положен (проверка регистрации или решение администратора) — оформить тариф\n- `plan_company_limit` (402) — в организации уже столько компаний не в архиве, сколько разрешает тариф (max_companies в GET /v1/plans; limit и plan_code — в ответе): новую не завести и из архива не вернуть. Убрать лишнюю в архив или перейти на тариф больше\n- `effort_not_in_plan` (402) — поле effort в чате на тарифе без выбора усилия (max_effort тарифа null, например бесплатный): ход не начат. Прислать вопрос без effort или оформить платный тариф\n- `model_not_in_plan` (402) — модель сильнее потолка тарифа (plans.model_ceiling): вызов не сделан; более сильные модели — на платных тарифах\n- `missing_permission` (403) — не хватает права в компании (или у ключа API); какого — в поле permission\n- `login_method_not_allowed` (403) — организация пускает к своим данным только после входа другим способом; какими — в allowed_methods. Предложить выйти и войти так\n- `ip_not_allowed` (403) — ключ API не принимает запросы с этого адреса — поправить allowed_ips ключа (PATCH …/api-keys/{id}) или вызывать с разрешённого адреса\n- `key_write_limit` (403) — запись в 1С по ключу API — сверх его пределов (сумма на документ или в день, виды документов) или правило автоодобрения шире пределов ключа; в сообщении — что и на сколько\n- `human_only` (403) — это решение принимает только человек в кабинете Tungo, не ключ API: например, отклонить «не знаем, записан ли» на снимке базы без проверки 1С (confirm_unknown_write)\n- `autonomy_raise_requires_session` (403) — поднять уровень доверия ИИ или потолки компании можно только владельцу или админу организации из кабинета; ключом API — только понизить\n- `id_path_required` (400) — для автоодобрения по хуку задайте хуку id_path — путь к номеру операции в теле события: без него повтор доставки нельзя отличить от новой операции\n- `directbank_rule_exists` (400) — у компании уже есть сценарий с правилом для выписки DirectBank — правило выписки одно на компанию\n- `event_not_found` (404) — события нет в этой компании или оно удалено по сроку хранения — для пробного прогона выберите событие посвежее\n- `event_body_unavailable` (409) — тело события зашифровано, а ключ шифрования на сервере сменился — прогнать сценарий на нём нельзя\n- `scenario_steps_required` (409) — у сценария цепочка шагов, а в замене (PUT) нет ни steps, ни output: передайте steps явно, иначе замена молча убрала бы цепочку\n- `scenario_output_required` (409) — у сценария форма итога, а в замене (PUT) нет ни steps, ни output: передайте output явно (null — снять форму)\n- `automation_queue_full` (429) — у компании слишком много запусков в очереди: повторите позже (событие хука отправитель повторит сам)\n- `restarting` (503) — сервис перезапускается: новый ход не начат — повторите через Retry-After\n- `company_suspended` (403) — работа с компанией приостановлена (решение платформы или оплаты); карточка видна, работать, править и архивировать нельзя (архив — 409 с тем же code)\n- `company_archived` (403) — компания в архиве: карточка видна, работать с ней нельзя. Вернуть — POST /v1/companies/{company_id}/unarchive (владелец компании или владелец/админ организации)\n- `workspace_blocked` (403) — организация заблокирована администратором платформы — только поддержка Tungo\n- `untrusted_origin` (403) — запрос пришёл не со страницы Tungo (защита от подделки запросов) — открыть кабинет по обычному адресу; для /admin/* — только со страниц ADMIN_ORIGINS\n- `cors_not_supported` (403) — вызов API из чужого браузерного кода (CORS) не поддерживается: ключ API — секрет сервера\n- `api_keys_disabled_by_policy` (403) — политика организации запрещает ключи API\n- `owner_role_reserved` (403) — владельца компании назначает, меняет и снимает только владелец или админ организации\n- `role_above_yours` (403) — у выдаваемой (или снимаемой) роли есть права, которых нет у вас; роль — в поле role, лишние права — в permissions\n- `not_key_creator` (403) — менять компании, права, срок и секрет ключа, снимать и поднимать его пределы записи в 1С может только тот, кто его выпустил (ужесточить пределы может любой админ)\n- `transfer_wider_than_target` (403) — передать ключ нельзя: у нового владельца нет нужного права (или доступа) в одной из компаний ключа\n- `invalid_allowed_ips` (400) — в allowed_ips ключа — не IP-адрес и не подсеть CIDR; какая запись — в сообщении\n- `transfer_target_not_admin` (400) — передать ключ можно только владельцу или админу этой организации\n- `platform_model_not_allowed` (403) — модель сильнее потолка платформы (настройка platform.billing): вызов не сделан и ничего не списано\n- `managed_by_sso` (403) — удаление аккаунта: аккаунт ведёт организация (SSO или SCIM) — удаляет её администратор; организации — в workspaces\n- `fresh_session_required` (403) — удаление аккаунта без почты (Telegram): нужен свежий вход — выйти, войти снова и подтвердить\n- `api_key_not_allowed` (403) — действие только из кабинета (сессия), не по ключу API: удаление аккаунта\n- `not_own_key` (403) — по ключу API виден только расход самого этого ключа\n- `webhooks_not_in_plan` (403) — вебхуков нет в тарифе организации\n- `admin_2fa_required` (403) — админ-API: у администратора платформы нет второго фактора или эта сессия не подтверждена кодом приложения-аутентификатора (POST /v1/auth/two-factor/enable, затем verify-totp)\n- `two_factor_required` (403) — отключить второй фактор, показать его секрет или выпустить резервные коды — только после кода из приложения-аутентификатора в этой сессии\n- `webhooks_require_all_companies` (403) — вебхуки — только ключу на все компании организации (при выпуске ключа — 400 с тем же code)\n- `audit_requires_all_companies` (403) — журнал организации — только ключу на все компании организации\n- `policy_blocked` (403) — одобрение: организация не доверяет ИИ записывать такой документ этим способом (поле level — уровень доверия); одобрить по одному или поднять уровень\n- `onec_read_only` (403) — одобрение: у пользователя 1С из подключения нет права записи — дать права в 1С\n- `validation_failed` (400) — тело или параметры запроса не прошли проверку: что не так с каждым полем — в fields (путь, код, текст по-русски). Подсветить поля формы; общий message — над формой\n- `invalid_json` (400) — тело запроса — не JSON-объект\n- `personal_workspace` (400) — в личной организации нет сотрудников, приглашений и политик — нужна организация Team или Enterprise\n- `api_key_required` (400) — адрес только для запроса по ключу API\n- `email_code_unavailable` (400) — удаление аккаунта: у аккаунта нет почты для кода (вход через Telegram) — подтверждать свежим входом, без кода\n- `deletion_code_invalid` (400) — удаление аккаунта: неверный код из письма; сколько попыток осталось — attempts_left\n- `deletion_code_expired` (400) — удаление аккаунта: код истёк, попытки кончились или код не запрашивался — запросить новый (POST /v1/me/deletion/code)\n- `unsafe_url` (400) — адрес вебхука недопустим (внутренняя сеть, не HTTPS)\n- `idempotency_key_invalid` (400) — Idempotency-Key неверного вида\n- `payload_too_large` (413) — тело запроса (или события хука) больше допустимого; пределы — настройки платформы\n- `idempotency_key_reused` (422) — этот Idempotency-Key уже был у другого запроса — для нового действия нужен новый ключ\n- `has_blockers` (422) — одобрение: у предложения есть блокеры — сначала исправить их\n- `batch_too_large` (413) — одобрение пачкой: предложений больше предела (поля limit, requested) — разбить на части\n- `unknown_kind` (400) — настройки писем: такого вида уведомлений нет — взять список из GET /v1/me/notifications\n- `kind_locked` (400) — настройки писем: этот вид (безопасность и аккаунт) выключить нельзя — переключатель неактивен (locked)\n- `onec_rejected` (400) — одобрение: 1С отклонила документ (причина — в message): исправить в 1С или построить предложение заново\n- `proposal_not_found` (404) — предложения с таким id нет в компании\n- `export_link_expired` (404) — ссылка на архив выгрузки истекла или неверна — получить новую: GET /v1/me/export\n- `batch_not_found` (404) — одобрение пачкой: задания с таким batch_id нет (или в нём нет предложений)\n- `idempotency_in_progress` (409) — первый запрос с этим Idempotency-Key ещё выполняется — подождать и повторить, придёт тот же ответ\n- `idempotency_response_not_kept` (409) — запрос с этим Idempotency-Key уже выполнен, но копия ответа не хранится (в нём персональные данные): результат — по ссылке в ответе (dialog_url) или в списке; статус первого ответа — original_status\n- `idempotency_response_too_large` (409) — запрос с этим Idempotency-Key уже выполнен, но ответ слишком большой, чтобы повторить его целиком: результат — в списке; статус первого ответа — original_status\n- `sole_owner` (409) — удаление аккаунта: вы единственный владелец организации с другими участниками (workspaces) — передать владение (POST /v1/workspaces/{ws}/ownership) или удалить организацию\n- `account_deletion_in_progress` (409) — удаление аккаунта: фон уже стирает аккаунт — новый код и подтверждение не принимаются, отменить нельзя\n- `wrong_status` (409) — предложение уже не в том состоянии (поле status — нынешнее): обновить его\n- `wrong_state` (409) — запуск автоматизации уже не в том состоянии (поле state — нынешнее)\n- `dialog_closed` (409) — разговор закрыт (поле reason — почему): начать новый\n- `dialog_id_taken` (409) — разговор с таким dialog_id уже есть — для нового прислать другой id или не присылать его\n- `turn_in_progress` (409) — в разговоре уже идёт ход ИИ (поле turn — его номер): дождаться его конца или остановить\n- `turn_superseded` (409) — читаемый ход уже закончился и идёт следующий (поле turn) — читать его с начала\n- `dialog_changed` (409) — разговор только что изменился в другом окне или на другом сервере Tungo — открыть его заново (GET …/chat/{id}) и повторить\n- `already_answered` (409) — на этот вопрос ИИ уже ответили (поле turn — ход с ответом)\n- `question_stale` (409) — вопрос ИИ устарел (в разговоре уже другой вопрос или его нет) — обновить разговор\n- `dismissed` (409) — вопрос ИИ закрыт без ответа — написать обычное сообщение\n- `job_running` (409) — задание (пачка) ещё идёт — дождаться отчёта; поле batch_id\n- `payload_changed` (409) — одобрение: документ изменился после превью — построить предложение заново\n- `onec_conflict` (409) — одобрение: 1С отказала из-за конфликта (объект занят или изменён) — повторить позже\n- `onec_not_found` (409) — одобрение: в 1С нет объекта, на который ссылается документ — построить предложение заново\n- `plan_limit_reached` (429) — лимит окна тарифа исчерпан; resets_at и Retry-After — когда обновится. Показать время; если в message предложено доп. использование — дать кнопку включить\n- `rate_limited` (429) — слишком часто (по ключу API, уведомления ePay с одного адреса, попытки кода второго фактора) — подождать Retry-After секунд\n- `concurrent_turns_limit` (429) — по ключу API уже идёт предельное число ходов ИИ одновременно — дождаться окончания\n- `api_keys_limit` (429) — в организации предельное число действующих ключей API — отозвать ненужные\n- `webhook_endpoints_limit` (429) — предельное число адресов вебхуков — удалить ненужные\n- `export_too_soon` (429) — выгрузку данных можно запрашивать не чаще раза в сутки: next_request_at и Retry-After — когда можно снова\n- `hook_rate_limited` (429) — приём событий хука: больше automations.hook_events_per_minute в минуту — повторить через Retry-After секунд\n- `lago_unavailable` (503) — админка, тариф целиком: Lago не настроен или не ответил (сеть, 5xx) — правила не изменены, повторить позже\n- `model_price_missing` (503) — у модели ИИ не задана цена — сбой настройки платформы, ничего не списано; повторить позже\n- `data_export_disabled` (503) — выгрузка данных на сервере не настроена (поддержка Tungo)\n- `webhooks_disabled` (503) — вебхуки на сервере не настроены\n- `webhooks_unavailable` (503) — служба доставки вебхуков временно недоступна\n- `model_not_configured` (503) — сервис модели ИИ не настроен на сервере — повторить позже (Retry-After)\n- `write_unknown` (503) — одобрение: исход записи в 1С неизвестен (связь оборвалась) — проверить документ в 1С по метке (поле marker); повтор безопасен (retry_safe); слишком ранний повтор в 1С не пишет — подождать retry_after секунд (Retry-After)\n- `onec_unavailable` (503) — 1С сейчас не отвечает — повторить позже (Retry-After)\n- `onec_check_busy` (503) — проверка связи 1С: сервер сейчас проверяет слишком много подключений — повторить через Retry-After секунд\n- `onec_failed` (503) — записать документ в 1С не удалось по неизвестной причине — повторить позже\n- `journal_unavailable` (503) — журнал решений недоступен — пачка не одобрена, повторить позже\n- `hook_secret_unavailable` (503) — приём событий хука: секрет подписи сейчас не открыть — отправителю повторить доставку позже\n- `secret_box_missing` (503) — на сервере не задан ключ шифрования настроек — секрет подписи хука сохранить нельзя (поддержка Tungo)\n- `not_personal` (409) — перевод в команду: организация уже не личная — обновить экран\n- `subscription_blocks_conversion` (409) — перевод в команду: действует подписка для одного человека — сначала отменить её и дождаться конца периода\n- `subscription_kind_mismatch` (409) — админка: действующая подписка оформлена на другой вид организации — вид не меняется, пока она идёт\n- `enterprise_features_active` (409) — админка: у организации подключены SSO или SCIM — сначала отключить, потом снимать Enterprise\n- `too_many_members_for_personal` (409) — админка: в личной организации один человек — сначала убрать остальных участников\n- `open_debt` (409) — есть неоплаченный счёт — сначала оплатить; в плане удаления этот же код лежит в blockers\n- `active_work` (409) — в организации идут ходы ИИ или автоматизации — дождаться окончания и повторить; в плане удаления этот же код лежит в blockers\n- `deletion_already_scheduled` (409) — удаление организации уже запланировано — показать дату из плана\n- `deletion_purging` (409) — очистка организации уже идёт — отменить её нельзя\n- `workspace_deleting` (409) — админка: организация удаляется по просьбе владельца — блок удаления снимает только отмена удаления\n- `invitation_not_pending` (409) — приглашение принято, отозвано или истекло — письмо не отправить, пригласить заново\n- `last_owner` (409) — это последний владелец организации — сначала передать владение другому участнику\n- `seats_by_contract` (409) — места Enterprise — по договору, карта и докупка не работают: обратиться к менеджеру\n- `no_subscription` (409) — нет действующей подписки — сначала оформить тариф\n- `not_per_seat` (409) — этот тариф не считает оплату за место — докупка не нужна, предел мест показан в ответе GET …/seats\n- `subscription_ended` (409) — возобновление: период отменённой подписки уже закончился — ничего не списано, оформить тариф заново (повторный PUT — обычное оформление)\n- `subscription_busy` (409) — подписка уже меняется другим запросом (отмена или возобновление) — обновить экран через несколько секунд\n- `subscription_ending` (409) — подписка отменена и закончится в конце периода — места не докупаются и не сокращаются\n- `seats_unpaid_debt` (409) — подписка просрочена — сначала оплатить счёт; участники остаются, новых приглашать нельзя\n- `idempotency_conflict` (409) — докупка: этот ключ уже использован с другим числом мест — для новой покупки нужен новый ключ\n- `seat_quote_changed` (409) — докупка: сумма изменилась (другой день или новая цена), деньги не списаны — показать новую сумму из поля и спросить снова\n- `no_paid_seats` (409) — оплаченных мест ещё нет — сокращать нечего\n- `seats_below_occupied` (409) — занято больше мест, чем просите оставить — сначала убрать участников или отозвать приглашения\n- `not_enterprise` (409) — админка: места по договору есть только у Enterprise — сначала поставить вид\n- `per_seat_plan_change` (409) — смена тарифа с оплатой за место не делается сразу: Lago взял бы плату за места дважды. Отменить и оформить новый с конца периода\n- `confirm_name_mismatch` (400) — удаление организации: название введено неверно — ввести точно как в плане удаления\n- `below_min_seats` (400) — на этом тарифе мест меньше нельзя: минимум — min_seats тарифа\n- `seats_over_max` (400) — мест больше предела одной организации (team.limits.max_seats) — обратиться в поддержку\n- `seats_above_paid` (400) — PUT …/seats только сокращает; новые места — через POST …/seats с оплатой\n- `onec_check_running` (429) — проверка связи 1С уже идёт у этой компании, у вас (другая компания) или у двух других компаний организации — дождаться её итога и повторить (Retry-After)\n- `invitation_resend_too_soon` (429) — письмо с приглашением уже отправлено только что — подождать Retry-After секунд\n- `seats_exhausted` (429) — свободные места закончились: докупите места или освободите их, отозвав приглашение\n- `seat_price_unknown` (503) — цена места сейчас неизвестна (тариф не прочитан или настроен неверно), деньги не списаны — повторить позже\n- `otp_mail_failed` (503) — письмо с кодом входа не отправлено: попробуйте позже\n- `seat_period_unknown` (503) — не удалось сверить период подписки с биллингом: деньги не списаны, попробуйте позже\n\nНезнакомый code — вести себя по type.","example":"balance_exhausted","uniqueKey":"error.code","typeLabel":"string"},"permission":{"type":"string","description":"При code = missing_permission — какого права не хватает: права в компании (company.read, company.manage, company.members.manage, onec.connect, proposals.create, proposals.approve, chat.use, audit.read, automations.manage) или права только ключа API (automations.read, webhooks.manage). Показать «нужно право …» и предложить попросить админа (или выпустить ключ с этим правом).","example":"proposals.approve","uniqueKey":"error.permission","typeLabel":"string"},"resets_at":{"type":"string","format":"date-time","description":"Когда ограничение снимется само — ISO 8601, UTC. Есть у plan_limit_reached (конец окна тарифа) и у месячных потолков (workspace_cap_reached, company_cap_reached, member_cap_reached, key_cap_reached, platform_cap_reached — 1-е число, 00:00 по Алматы). Показать в местном времени: «Лимит обновится в 14:30». Нет поля — само не пройдёт.","example":"2026-11-01T19:00:00.000Z","uniqueKey":"error.resets_at","typeLabel":"string\u003cdate-time>"},"allowed_methods":{"type":"array","items":{"type":"string","enum":["email_otp","google","apple","telegram","sso"],"uniqueKey":"error.allowed_methods.items.[INDEX]","typeLabel":"enum\u003cstring>"},"description":"При code = login_method_not_allowed — какими способами входа организация пускает к своим данным: email_otp — код из почты, google, apple, telegram, sso — SSO организации. Предложить выйти и войти одним из них.","uniqueKey":"error.allowed_methods","typeLabel":"enum\u003cstring>[]"},"role":{"type":"string","description":"При code = role_above_yours — ключ роли в компании, которую нельзя выдать или снять (например chief_accountant).","uniqueKey":"error.role","typeLabel":"string"},"permissions":{"type":"array","items":{"type":"string","uniqueKey":"error.permissions.items.[INDEX]","typeLabel":"string"},"description":"При code = role_above_yours — права этой роли, которых нет у того, кто выдаёт. Показать списком: «у роли есть права, которых нет у вас: …».","uniqueKey":"error.permissions","typeLabel":"string[]"},"fields":{"type":"array","items":{"type":"object","properties":{"path":{"type":"string","description":"Путь к полю через точку, как в теле запроса или имени параметра: `name`, `lines.0.amount`. Пустая строка — всё тело (не объект, лишние поля).","example":"bin","isRequired":true,"uniqueKey":"error.fields.items.[INDEX].path","typeLabel":"string"},"code":{"type":"string","enum":["invalid_type","too_small","too_big","invalid_format","invalid_value","not_multiple_of","unrecognized_keys","invalid_union","invalid_key","invalid_element","custom"],"description":"Что не так: invalid_type — не тот тип или поле не передано; too_small / too_big — короче/меньше или длиннее/больше допустимого; invalid_format — неверный вид (почта, дата, шаблон); invalid_value — значения нет среди допустимых; not_multiple_of — не кратно; unrecognized_keys — лишние поля; invalid_union — не подходит ни один вид; invalid_key / invalid_element — неверный ключ или элемент; custom — своё правило ручки","example":"invalid_format","isRequired":true,"uniqueKey":"error.fields.items.[INDEX].code","typeLabel":"enum\u003cstring>"},"message":{"type":"string","description":"Текст для человека по-русски — показать под полем","example":"БИН/ИИН — 12 цифр","isRequired":true,"uniqueKey":"error.fields.items.[INDEX].message","typeLabel":"string"}},"required":["path","code","message"],"description":"Ошибка одного поля запроса","uniqueKey":"error.fields.items.[INDEX]","typeLabel":"object"},"description":"При code = validation_failed — ошибки по полям, в порядке проверки; у одного поля может быть несколько.","uniqueKey":"error.fields","typeLabel":"object[]"}},"required":["type","message"],"additionalProperties":{"oneOf":[{}],"uniqueKey":"error.additionalProperties","typeLabel":"any"},"description":"Что пошло не так. Все 503 — с заголовком Retry-After (через сколько секунд повторить). Кроме описанных, у отдельных ручек бывают свои поля рядом с code (например status у wrong_status, state у wrong_state, reason у dialog_closed) — они описаны у этих ручек.","isRequired":true,"uniqueKey":"error","typeLabel":"object"},"request_id":{"oneOf":[{"type":"string","description":"Номер запроса (тот же, что в заголовке x-request-id). Показывать мелко рядом с ошибкой с кнопкой «скопировать»: по нему поддержка находит запрос в журнале. null — номер не успел появиться (очень ранний отказ).","example":"req_4f9c2a7e1b3d4c5a8e6f7a9b0c1d2e3f","isRequired":true,"uniqueKey":"request_id.oneOf.0","typeLabel":"string"},{"type":"null","description":"Номер запроса (тот же, что в заголовке x-request-id). Показывать мелко рядом с ошибкой с кнопкой «скопировать»: по нему поддержка находит запрос в журнале. null — номер не успел появиться (очень ранний отказ).","example":"req_4f9c2a7e1b3d4c5a8e6f7a9b0c1d2e3f","isRequired":true,"uniqueKey":"request_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"request_id","typeLabel":"string | null"}},"required":["type","error","request_id"],"description":"Тело любой ошибки API (статусы 4xx и 5xx): `{\"type\":\"error\",\"error\":{\"type\":\"…\",\"code\":\"…\",\"message\":\"…\"},\"request_id\":\"…\"}`. Интерфейс ветвится по error.type и error.code, человеку показывает error.message и request_id.","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"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":"\u003cstring>","permissions":["\u003cstring>"],"fields":[{"path":"bin","code":"invalid_format","message":"БИН/ИИН — 12 цифр"}]},"request_id":"req_4f9c2a7e1b3d4c5a8e6f7a9b0c1d2e3f"}}},"exampleType":"generated"}},"headers":{"x-request-id":{"description":"Номер запроса (тот же, что request_id в теле ошибки) — назвать в обращении в поддержку. Его всегда создаёт сервер: присланный клиентом x-request-id номером не становится","schema":{"type":"string","example":"req_3f2a9c0d1e4b4c5d8e7f6a5b4c3d2e1f"}},"x-ratelimit-limit":{"description":"Только при входе по ключу API: сколько запросов можно в текущем окне — самый тесный предел из ключа и организации","schema":{"type":"integer"}},"x-ratelimit-remaining":{"description":"Только при входе по ключу API: сколько запросов осталось по этому пределу в текущем окне","schema":{"type":"integer"}},"x-ratelimit-reset":{"description":"Только при входе по ключу API: секунд до нового окна этого предела","schema":{"type":"integer"}}},"exampleType":"generated"}},"security":{"9457915c-d16e-460c-9cb4-4876a5afd6f2":{"session":{"type":"apiKey","in":"cookie","name":"tungo.session_token","description":"Сессия кабинета: cookie ставит вход через /v1/auth/* (Better Auth), браузер шлёт её сам — фронтенду кабинета ничего добавлять не нужно (fetch с credentials: 'include'). За HTTPS имя cookie — __Secure-tungo.session_token. Сессия кончилась — 401 authentication_error: отправить на вход.","scopes":[],"schemeName":"session"}},"83b136c9-8942-4d1d-a135-6984372ffca9":{"apiKey":{"type":"apiKey","in":"header","name":"x-api-key","description":"Ключ API организации: `x-api-key: tg_…`. Для серверных интеграций, не для кабинета: ключ — секрет, из браузера его не слать (CORS закрыт). Какие адреса пускают по ключу — x-api-key-access у операции.","scopes":[],"schemeName":"apiKey"}},"87ddddea-52e9-4fb3-a64d-828e9d20832a":{"bearerKey":{"type":"http","scheme":"bearer","bearerFormat":"tg_…","description":"Тот же ключ API другим заголовком: `Authorization: Bearer tg_…`.","scopes":[],"schemeName":"bearerKey"}}},"servers":{"c389c850-4818-4663-a4a8-1bad0282721d":{"url":"https://api.tungo.kz","description":"Адрес API Tungo"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"apiKey","in":"cookie","name":"tungo.session_token","description":"Сессия кабинета: cookie ставит вход через /v1/auth/* (Better Auth), браузер шлёт её сам — фронтенду кабинета ничего добавлять не нужно (fetch с credentials: 'include'). За HTTPS имя cookie — __Secure-tungo.session_token. Сессия кончилась — 401 authentication_error: отправить на вход.","scopes":[],"schemeName":"session"},"schema":{"title":"tungo.session_token","type":"string","description":"Сессия кабинета: cookie ставит вход через /v1/auth/* (Better Auth), браузер шлёт её сам — фронтенду кабинета ничего добавлять не нужно (fetch с credentials: 'include'). За HTTPS имя cookie — __Secure-tungo.session_token. Сессия кончилась — 401 authentication_error: отправить на вход.","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"session","name":"tungo.session_token"}],"title":"session"},{"schemes":[{"scheme":{"type":"apiKey","in":"header","name":"x-api-key","description":"Ключ API организации: `x-api-key: tg_…`. Для серверных интеграций, не для кабинета: ключ — секрет, из браузера его не слать (CORS закрыт). Какие адреса пускают по ключу — x-api-key-access у операции.","scopes":[],"schemeName":"apiKey"},"schema":{"title":"x-api-key","type":"string","description":"Ключ API организации: `x-api-key: tg_…`. Для серверных интеграций, не для кабинета: ключ — секрет, из браузера его не слать (CORS закрыт). Какие адреса пускают по ключу — x-api-key-access у операции.","isRequired":true,"typeLabel":"string","deprecated":false},"schemeName":"apiKey","name":"x-api-key"}],"title":"apiKey"},{"schemes":[{"scheme":{"type":"http","scheme":"bearer","bearerFormat":"tg_…","description":"Тот же ключ API другим заголовком: `Authorization: Bearer tg_…`.","scopes":[],"schemeName":"bearerKey"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Тот же ключ API другим заголовком: `Authorization: Bearer tg_…`.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"bearerKey","name":"Authorization"}],"title":"bearerKey"}]},"originalFileLocation":"https://api.tungo.kz/v1/openapi.json"},"subdomain":"tungo-ai","siteName":"Tungo","title":"Сообщение ИИ-бухгалтеру (ход потоком SSE) - Tungo","navMaps":{"firstHrefInVersion":{"Русский":{"href":"/api-reference/ии-бухгалтер:-чат/сообщение-ии-бухгалтеру-ход-потоком-sse","matchLevel":0},"Қазақша":{"href":"/api-reference/ии-бухгалтер:-чат/сообщение-ии-бухгалтеру-ход-потоком-sse","matchLevel":0}},"firstHrefInLanguage":{"ru":{"href":"/api-reference/ии-бухгалтер:-чат/сообщение-ии-бухгалтеру-ход-потоком-sse","matchLevel":0}}},"lastModified":"2026-11-11T22:37:20.655Z","originalFileLocation":"api-reference/ии-бухгалтер:-чат/сообщение-ии-бухгалтеру-ход-потоком-sse.mdx","locale":"ru"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Агентный цикл над 1С компании. Записи в 1С здесь нет: документы попадают в очередь предложений. Отказы: 402 — ИИ компании не подключён (не оплачено подключение); 409 — идёт предыдущий ход или разговор закрыт (error.code = dialog_closed); 410 — разговор не найден или истёк, начните новый; 429 — кончился лимит тарифа; 503 — сервис модели не настроен. Повтор с тем же Idempotency-Key: ход закончен — его итог JSON (ChatTurnResult, Idempotent-Replayed: true), ход ещё идёт — 409 idempotency_in_progress с error.dialog_id, error.turn_no и error.events_url для переподключения (Last-Event-ID). Idempotency-Key: повтор с тем же ключом и тем же телом отдаёт прежний ответ (статус и тело) с заголовком Idempotent-Replayed: true и ничего не делает второй раз; тот же ключ с другим адресом или телом — 422 (error.code = idempotency_key_reused); первый запрос с этим ключом ещё идёт — 409 (error.code = idempotency_in_progress). Запоминается только удачный ответ (2xx): после отказа повтор с тем же ключом выполнится заново. Ключ живёт сутки (настройка idempotency.keys), область — организация и тот, кто прислал (ключ API или человек). Доступ: chat.use. Доступно по ключу API.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Tungo\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/tungo-ai/-uR9GpSNzhPlx0_i/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/tungo-ai/-uR9GpSNzhPlx0_i/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/tungo-ai/-uR9GpSNzhPlx0_i/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/tungo-ai/-uR9GpSNzhPlx0_i/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/tungo-ai/-uR9GpSNzhPlx0_i/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/tungo-ai/-uR9GpSNzhPlx0_i/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/tungo-ai/-uR9GpSNzhPlx0_i/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/tungo-ai/-uR9GpSNzhPlx0_i/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/tungo-ai/-uR9GpSNzhPlx0_i/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Сообщение ИИ-бухгалтеру (ход потоком SSE) - Tungo\">\u003cmeta data-mint-head property=\"og:description\" content=\"Агентный цикл над 1С компании. Записи в 1С здесь нет: документы попадают в очередь предложений. Отказы: 402 — ИИ компании не подключён (не оплачено подключение); 409 — идёт предыдущий ход или разговор закрыт (error.code = dialog_closed); 410 — разговор не найден или истёк, начните новый; 429 — кончился лимит тарифа; 503 — сервис модели не настроен. Повтор с тем же Idempotency-Key: ход закончен — его итог JSON (ChatTurnResult, Idempotent-Replayed: true), ход ещё идёт — 409 idempotency_in_progress с error.dialog_id, error.turn_no и error.events_url для переподключения (Last-Event-ID). Idempotency-Key: повтор с тем же ключом и тем же телом отдаёт прежний ответ (статус и тело) с заголовком Idempotent-Replayed: true и ничего не делает второй раз; тот же ключ с другим адресом или телом — 422 (error.code = idempotency_key_reused); первый запрос с этим ключом ещё идёт — 409 (error.code = idempotency_in_progress). Запоминается только удачный ответ (2xx): после отказа повтор с тем же ключом выполнится заново. Ключ живёт сутки (настройка idempotency.keys), область — организация и тот, кто прислал (ключ API или человек). Доступ: chat.use. Доступно по ключу API.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Tungo\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://tungo-ai.mintlify.app/api-reference/ии-бухгалтер:-чат/сообщение-ии-бухгалтеру-ход-потоком-sse\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://tungo-ai.mintlify.site/_mintlify/api/og/v2?division=%D0%98%D0%98-%D0%B1%D1%83%D1%85%D0%B3%D0%B0%D0%BB%D1%82%D0%B5%D1%80%3A+%D1%87%D0%B0%D1%82\u0026amp;title=%D0%A1%D0%BE%D0%BE%D0%B1%D1%89%D0%B5%D0%BD%D0%B8%D0%B5+%D0%98%D0%98-%D0%B1%D1%83%D1%85%D0%B3%D0%B0%D0%BB%D1%82%D0%B5%D1%80%D1%83+%28%D1%85%D0%BE%D0%B4+%D0%BF%D0%BE%D1%82%D0%BE%D0%BA%D0%BE%D0%BC+SSE%29\u0026amp;description=%D0%90%D0%B3%D0%B5%D0%BD%D1%82%D0%BD%D1%8B%D0%B9+%D1%86%D0%B8%D0%BA%D0%BB+%D0%BD%D0%B0%D0%B4+1%D0%A1+%D0%BA%D0%BE%D0%BC%D0%BF%D0%B0%D0%BD%D0%B8%D0%B8.+%D0%97%D0%B0%D0%BF%D0%B8%D1%81%D0%B8+%D0%B2+1%D0%A1+%D0%B7%D0%B4%D0%B5%D1%81%D1%8C+%D0%BD%D0%B5%D1%82%3A+%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D1%8B+%D0%BF%D0%BE%D0%BF%D0%B0%D0%B4%D0%B0%D1%8E%D1%82+%D0%B2+%D0%BE%D1%87%D0%B5%D1%80%D0%B5%D0%B4%D1%8C+%D0%BF%D1%80%D0%B5%D0%B4%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B9.+%D0%9E%D1%82%D0%BA%D0%B0%D0%B7%D1%8B%3A+402+%E2%80%94+%D0%98%D0%98+%D0%BA%D0%BE%D0%BC%D0%BF%D0%B0%D0%BD%D0%B8%D0%B8+%D0%BD%D0%B5+%D0%BF%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D1%91%D0%BD+%28%D0%BD%D0%B5+%D0%BE%D0%BF%D0%BB%D0%B0%D1%87%D0%B5%D0%BD%D0%BE+%D0%BF%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5%29\u0026amp;theme=dfce91326f5ce74a967be081\u0026amp;signature=8eb15f719287c08ef40081280f50f412b211fe48d6babed3cde8f4d585077839\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Сообщение ИИ-бухгалтеру (ход потоком SSE) - Tungo\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Агентный цикл над 1С компании. Записи в 1С здесь нет: документы попадают в очередь предложений. Отказы: 402 — ИИ компании не подключён (не оплачено подключение); 409 — идёт предыдущий ход или разговор закрыт (error.code = dialog_closed); 410 — разговор не найден или истёк, начните новый; 429 — кончился лимит тарифа; 503 — сервис модели не настроен. Повтор с тем же Idempotency-Key: ход закончен — его итог JSON (ChatTurnResult, Idempotent-Replayed: true), ход ещё идёт — 409 idempotency_in_progress с error.dialog_id, error.turn_no и error.events_url для переподключения (Last-Event-ID). Idempotency-Key: повтор с тем же ключом и тем же телом отдаёт прежний ответ (статус и тело) с заголовком Idempotent-Replayed: true и ничего не делает второй раз; тот же ключ с другим адресом или телом — 422 (error.code = idempotency_key_reused); первый запрос с этим ключом ещё идёт — 409 (error.code = idempotency_in_progress). Запоминается только удачный ответ (2xx): после отказа повтор с тем же ключом выполнится заново. Ключ живёт сутки (настройка idempotency.keys), область — организация и тот, кто прислал (ключ API или человек). Доступ: chat.use. Доступно по ключу API.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://tungo-ai.mintlify.site/_mintlify/api/og/v2?division=%D0%98%D0%98-%D0%B1%D1%83%D1%85%D0%B3%D0%B0%D0%BB%D1%82%D0%B5%D1%80%3A+%D1%87%D0%B0%D1%82\u0026amp;title=%D0%A1%D0%BE%D0%BE%D0%B1%D1%89%D0%B5%D0%BD%D0%B8%D0%B5+%D0%98%D0%98-%D0%B1%D1%83%D1%85%D0%B3%D0%B0%D0%BB%D1%82%D0%B5%D1%80%D1%83+%28%D1%85%D0%BE%D0%B4+%D0%BF%D0%BE%D1%82%D0%BE%D0%BA%D0%BE%D0%BC+SSE%29\u0026amp;description=%D0%90%D0%B3%D0%B5%D0%BD%D1%82%D0%BD%D1%8B%D0%B9+%D1%86%D0%B8%D0%BA%D0%BB+%D0%BD%D0%B0%D0%B4+1%D0%A1+%D0%BA%D0%BE%D0%BC%D0%BF%D0%B0%D0%BD%D0%B8%D0%B8.+%D0%97%D0%B0%D0%BF%D0%B8%D1%81%D0%B8+%D0%B2+1%D0%A1+%D0%B7%D0%B4%D0%B5%D1%81%D1%8C+%D0%BD%D0%B5%D1%82%3A+%D0%B4%D0%BE%D0%BA%D1%83%D0%BC%D0%B5%D0%BD%D1%82%D1%8B+%D0%BF%D0%BE%D0%BF%D0%B0%D0%B4%D0%B0%D1%8E%D1%82+%D0%B2+%D0%BE%D1%87%D0%B5%D1%80%D0%B5%D0%B4%D1%8C+%D0%BF%D1%80%D0%B5%D0%B4%D0%BB%D0%BE%D0%B6%D0%B5%D0%BD%D0%B8%D0%B9.+%D0%9E%D1%82%D0%BA%D0%B0%D0%B7%D1%8B%3A+402+%E2%80%94+%D0%98%D0%98+%D0%BA%D0%BE%D0%BC%D0%BF%D0%B0%D0%BD%D0%B8%D0%B8+%D0%BD%D0%B5+%D0%BF%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D1%91%D0%BD+%28%D0%BD%D0%B5+%D0%BE%D0%BF%D0%BB%D0%B0%D1%87%D0%B5%D0%BD%D0%BE+%D0%BF%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5%29\u0026amp;theme=dfce91326f5ce74a967be081\u0026amp;signature=8eb15f719287c08ef40081280f50f412b211fe48d6babed3cde8f4d585077839\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/tungo-ai/-uR9GpSNzhPlx0_i/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Tungo\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#1b1b1b\">\u003clink data-mint-head rel=\"canonical\" href=\"https://tungo-ai.mintlify.app/api-reference/ии-бухгалтер:-чат/сообщение-ии-бухгалтеру-ход-потоком-sse\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/%D0%B8%D0%B8-%D0%B1%D1%83%D1%85%D0%B3%D0%B0%D0%BB%D1%82%D0%B5%D1%80%3A-%D1%87%D0%B0%D1%82/%D1%81%D0%BE%D0%BE%D0%B1%D1%89%D0%B5%D0%BD%D0%B8%D0%B5-%D0%B8%D0%B8-%D0%B1%D1%83%D1%85%D0%B3%D0%B0%D0%BB%D1%82%D0%B5%D1%80%D1%83-%D1%85%D0%BE%D0%B4-%D0%BF%D0%BE%D1%82%D0%BE%D0%BA%D0%BE%D0%BC-sse.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://tungo-ai.mintlify.app/#organization\",\"name\":\"Tungo\",\"url\":\"https://tungo-ai.mintlify.app\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/tungo-ai/Rh5Iy_fOmTN2xA57/logo/light.svg?fit=max\u0026auto=format\u0026n=Rh5Iy_fOmTN2xA57\u0026q=85\u0026s=01cf341ba8b8a958a335b86c62038dd6\"}},{\"@type\":\"WebSite\",\"@id\":\"https://tungo-ai.mintlify.app#website\",\"name\":\"Tungo\",\"url\":\"https://tungo-ai.mintlify.app\",\"publisher\":{\"@id\":\"https://tungo-ai.mintlify.app/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://tungo-ai.mintlify.app/api-reference/%D0%B8%D0%B8-%D0%B1%D1%83%D1%85%D0%B3%D0%B0%D0%BB%D1%82%D0%B5%D1%80:-%D1%87%D0%B0%D1%82/%D1%81%D0%BE%D0%BE%D0%B1%D1%89%D0%B5%D0%BD%D0%B8%D0%B5-%D0%B8%D0%B8-%D0%B1%D1%83%D1%85%D0%B3%D0%B0%D0%BB%D1%82%D0%B5%D1%80%D1%83-%D1%85%D0%BE%D0%B4-%D0%BF%D0%BE%D1%82%D0%BE%D0%BA%D0%BE%D0%BC-sse#webpage\",\"url\":\"https://tungo-ai.mintlify.app/api-reference/%D0%B8%D0%B8-%D0%B1%D1%83%D1%85%D0%B3%D0%B0%D0%BB%D1%82%D0%B5%D1%80:-%D1%87%D0%B0%D1%82/%D1%81%D0%BE%D0%BE%D0%B1%D1%89%D0%B5%D0%BD%D0%B8%D0%B5-%D0%B8%D0%B8-%D0%B1%D1%83%D1%85%D0%B3%D0%B0%D0%BB%D1%82%D0%B5%D1%80%D1%83-%D1%85%D0%BE%D0%B4-%D0%BF%D0%BE%D1%82%D0%BE%D0%BA%D0%BE%D0%BC-sse\",\"name\":\"Сообщение ИИ-бухгалтеру (ход потоком SSE)\",\"description\":\"Агентный цикл над 1С компании. Записи в 1С здесь нет: документы попадают в очередь предложений. Отказы: 402 — ИИ компании не подключён (не оплачено подключение); 409 — идёт предыдущий ход или разговор закрыт (error.code = dialog_closed); 410 — разговор не найден или истёк, начните новый; 429 — кончился лимит тарифа; 503 — сервис модели не настроен. Повтор с тем же Idempotency-Key: ход закончен — его итог JSON (ChatTurnResult, Idempotent-Replayed: true), ход ещё идёт — 409 idempotency_in_progress с error.dialog_id, error.turn_no и error.events_url для переподключения (Last-Event-ID). Idempotency-Key: повтор с тем же ключом и тем же телом отдаёт прежний ответ (статус и тело) с заголовком Idempotent-Replayed: true и ничего не делает второй раз; тот же ключ с другим адресом или телом — 422 (error.code = idempotency_key_reused); первый запрос с этим ключом ещё идёт — 409 (error.code = idempotency_in_progress). Запоминается только удачный ответ (2xx): после отказа повтор с тем же ключом выполнится заново. Ключ живёт сутки (настройка idempotency.keys), область — организация и тот, кто прислал (ключ API или человек). Доступ: chat.use. Доступно по ключу API.\",\"dateModified\":\"2026-11-11T22:37:20.655Z\",\"isPartOf\":{\"@id\":\"https://tungo-ai.mintlify.app#website\"},\"breadcrumb\":{\"@id\":\"https://tungo-ai.mintlify.app/api-reference/%D0%B8%D0%B8-%D0%B1%D1%83%D1%85%D0%B3%D0%B0%D0%BB%D1%82%D0%B5%D1%80:-%D1%87%D0%B0%D1%82/%D1%81%D0%BE%D0%BE%D0%B1%D1%89%D0%B5%D0%BD%D0%B8%D0%B5-%D0%B8%D0%B8-%D0%B1%D1%83%D1%85%D0%B3%D0%B0%D0%BB%D1%82%D0%B5%D1%80%D1%83-%D1%85%D0%BE%D0%B4-%D0%BF%D0%BE%D1%82%D0%BE%D0%BA%D0%BE%D0%BC-sse#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://tungo-ai.mintlify.app/api-reference/%D0%B8%D0%B8-%D0%B1%D1%83%D1%85%D0%B3%D0%B0%D0%BB%D1%82%D0%B5%D1%80:-%D1%87%D0%B0%D1%82/%D1%81%D0%BE%D0%BE%D0%B1%D1%89%D0%B5%D0%BD%D0%B8%D0%B5-%D0%B8%D0%B8-%D0%B1%D1%83%D1%85%D0%B3%D0%B0%D0%BB%D1%82%D0%B5%D1%80%D1%83-%D1%85%D0%BE%D0%B4-%D0%BF%D0%BE%D1%82%D0%BE%D0%BA%D0%BE%D0%BC-sse#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Справочник API\",\"item\":\"https://tungo-ai.mintlify.app/api-reference/%D0%B0%D0%BA%D0%BA%D0%B0%D1%83%D0%BD%D1%82/%D0%BC%D0%BE%D0%B8-%D0%BE%D1%80%D0%B3%D0%B0%D0%BD%D0%B8%D0%B7%D0%B0%D1%86%D0%B8%D0%B8-workspace-%D1%81-%D0%BF%D1%83%D0%B1%D0%BB%D0%B8%D1%87%D0%BD%D1%8B%D0%BC%D0%B8-id-ws_%E2%80%A6\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"ИИ-бухгалтер: чат\",\"item\":\"https://tungo-ai.mintlify.app/api-reference/%D0%B8%D0%B8-%D0%B1%D1%83%D1%85%D0%B3%D0%B0%D0%BB%D1%82%D0%B5%D1%80:-%D1%87%D0%B0%D1%82/%D1%81%D0%B2%D0%BE%D0%B8-%D1%80%D0%B0%D0%B7%D0%B3%D0%BE%D0%B2%D0%BE%D1%80%D1%8B-%D0%B2-%D0%BA%D0%BE%D0%BC%D0%BF%D0%B0%D0%BD%D0%B8%D0%B8-%D1%81%D0%B2%D0%B5%D0%B6%D0%B8%D0%B5-%D1%81%D0%B2%D0%B5%D1%80%D1%85%D1%83\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Сообщение ИИ-бухгалтеру (ход потоком SSE)\",\"item\":\"https://tungo-ai.mintlify.app/api-reference/%D0%B8%D0%B8-%D0%B1%D1%83%D1%85%D0%B3%D0%B0%D0%BB%D1%82%D0%B5%D1%80:-%D1%87%D0%B0%D1%82/%D1%81%D0%BE%D0%BE%D0%B1%D1%89%D0%B5%D0%BD%D0%B8%D0%B5-%D0%B8%D0%B8-%D0%B1%D1%83%D1%85%D0%B3%D0%B0%D0%BB%D1%82%D0%B5%D1%80%D1%83-%D1%85%D0%BE%D0%B4-%D0%BF%D0%BE%D1%82%D0%BE%D0%BA%D0%BE%D0%BC-sse\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://tungo-ai.mintlify.app/api-reference/%D0%B8%D0%B8-%D0%B1%D1%83%D1%85%D0%B3%D0%B0%D0%BB%D1%82%D0%B5%D1%80:-%D1%87%D0%B0%D1%82/%D1%81%D0%BE%D0%BE%D0%B1%D1%89%D0%B5%D0%BD%D0%B8%D0%B5-%D0%B8%D0%B8-%D0%B1%D1%83%D1%85%D0%B3%D0%B0%D0%BB%D1%82%D0%B5%D1%80%D1%83-%D1%85%D0%BE%D0%B4-%D0%BF%D0%BE%D1%82%D0%BE%D0%BA%D0%BE%D0%BC-sse#apireference\",\"headline\":\"Сообщение ИИ-бухгалтеру (ход потоком SSE)\",\"name\":\"Сообщение ИИ-бухгалтеру (ход потоком SSE)\",\"description\":\"Агентный цикл над 1С компании. Записи в 1С здесь нет: документы попадают в очередь предложений. Отказы: 402 — ИИ компании не подключён (не оплачено подключение); 409 — идёт предыдущий ход или разговор закрыт (error.code = dialog_closed); 410 — разговор не найден или истёк, начните новый; 429 — кончился лимит тарифа; 503 — сервис модели не настроен. Повтор с тем же Idempotency-Key: ход закончен — его итог JSON (ChatTurnResult, Idempotent-Replayed: true), ход ещё идёт — 409 idempotency_in_progress с error.dialog_id, error.turn_no и error.events_url для переподключения (Last-Event-ID). Idempotency-Key: повтор с тем же ключом и тем же телом отдаёт прежний ответ (статус и тело) с заголовком Idempotent-Replayed: true и ничего не делает второй раз; тот же ключ с другим адресом или телом — 422 (error.code = idempotency_key_reused); первый запрос с этим ключом ещё идёт — 409 (error.code = idempotency_in_progress). Запоминается только удачный ответ (2xx): после отказа повтор с тем же ключом выполнится заново. Ключ живёт сутки (настройка idempotency.keys), область — организация и тот, кто прислал (ключ API или человек). Доступ: chat.use. Доступно по ключу API.\",\"url\":\"https://tungo-ai.mintlify.app/api-reference/%D0%B8%D0%B8-%D0%B1%D1%83%D1%85%D0%B3%D0%B0%D0%BB%D1%82%D0%B5%D1%80:-%D1%87%D0%B0%D1%82/%D1%81%D0%BE%D0%BE%D0%B1%D1%89%D0%B5%D0%BD%D0%B8%D0%B5-%D0%B8%D0%B8-%D0%B1%D1%83%D1%85%D0%B3%D0%B0%D0%BB%D1%82%D0%B5%D1%80%D1%83-%D1%85%D0%BE%D0%B4-%D0%BF%D0%BE%D1%82%D0%BE%D0%BA%D0%BE%D0%BC-sse\",\"mainEntityOfPage\":{\"@id\":\"https://tungo-ai.mintlify.app/api-reference/%D0%B8%D0%B8-%D0%B1%D1%83%D1%85%D0%B3%D0%B0%D0%BB%D1%82%D0%B5%D1%80:-%D1%87%D0%B0%D1%82/%D1%81%D0%BE%D0%BE%D0%B1%D1%89%D0%B5%D0%BD%D0%B8%D0%B5-%D0%B8%D0%B8-%D0%B1%D1%83%D1%85%D0%B3%D0%B0%D0%BB%D1%82%D0%B5%D1%80%D1%83-%D1%85%D0%BE%D0%B4-%D0%BF%D0%BE%D1%82%D0%BE%D0%BA%D0%BE%D0%BC-sse#webpage\"},\"dateModified\":\"2026-11-11T22:37:20.655Z\",\"publisher\":{\"@id\":\"https://tungo-ai.mintlify.app/#organization\"},\"isPartOf\":{\"@id\":\"https://tungo-ai.mintlify.app#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Tungo\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"Tungo\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/api-reference/%D0%B8%D0%B8-%D0%B1%D1%83%D1%85%D0%B3%D0%B0%D0%BB%D1%82%D0%B5%D1%80%3A-%D1%87%D0%B0%D1%82/%D1%81%D0%BE%D0%BE%D0%B1%D1%89%D0%B5%D0%BD%D0%B8%D0%B5-%D0%B8%D0%B8-%D0%B1%D1%83%D1%85%D0%B3%D0%B0%D0%BB%D1%82%D0%B5%D1%80%D1%83-%D1%85%D0%BE%D0%B4-%D0%BF%D0%BE%D1%82%D0%BE%D0%BA%D0%BE%D0%BC-sse.md","siteName":"Tungo","nav":{"global":null,"languages":[{"language":"ru","versions":[{"version":"Русский","default":true,"tabs":[{"tab":"Главная","pages":[{"title":"Главная","href":""}]},{"tab":"Начало","pages":[{"title":"Начало","href":"/start/quickstart"}]},{"tab":"Подключение 1С","pages":[{"title":"Подключение 1С","href":"/1c/overview"}]},{"tab":"ИИ-бухгалтер","pages":[{"title":"ИИ-бухгалтер","href":"/assistant/ask"}]},{"tab":"Тарифы и оплата","pages":[{"title":"Тарифы и оплата","href":"/billing/plans"}]},{"tab":"Аккаунт и команда","pages":[{"title":"Аккаунт и команда","href":"/account/sign-in"}]},{"tab":"Решение проблем","pages":[{"title":"Решение проблем","href":"/help/sign-in"}]},{"tab":"Платформа","pages":[{"title":"Платформа","href":"/platform/overview"}]},{"tab":"API","groups":[{"group":"Справочник API","pages":[{"group":"Аккаунт","pages":[{"title":"Мои организации (workspace) с публичными id ws_…","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/workspaces","href":"/api-reference/аккаунт/мои-организации-workspace-с-публичными-id-ws_…"}]},{"group":"Компании","pages":[{"title":"Мои компании во всех workspace","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/companies","href":"/api-reference/компании/мои-компании-во-всех-workspace"},{"title":"Компания","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/companies/{co}","href":"/api-reference/компании/компания"}]},{"group":"Биллинг","pages":[{"title":"Привязать карту (форма ePay)","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json post /v1/workspaces/{ws}/billing/card-sessions","href":"/api-reference/биллинг/привязать-карту-форма-epay"},{"title":"Привязанные карты","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/workspaces/{ws}/billing/payment-methods","href":"/api-reference/биллинг/привязанные-карты"},{"title":"Отвязать карту","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json delete /v1/workspaces/{ws}/billing/payment-methods/{pm}","href":"/api-reference/биллинг/отвязать-карту"},{"title":"Оплатить на форме ePay (с 3-D Secure)","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json post /v1/workspaces/{ws}/billing/payments/{id}/pay-form","href":"/api-reference/биллинг/оплатить-на-форме-epay-с-3-d-secure"}]},{"group":"Тарифы и расход","pages":[{"title":"Цены моделей","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/usage-rates","href":"/api-reference/тарифы-и-расход/цены-моделей"}]},{"group":"Платформа: баланс и расход","pages":[{"title":"Счёт платформы","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/workspaces/{ws}/platform/account","href":"/api-reference/платформа:-баланс-и-расход/счёт-платформы"},{"title":"Настройки платформы","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json put /v1/workspaces/{ws}/platform/account","href":"/api-reference/платформа:-баланс-и-расход/настройки-платформы"},{"title":"Пополнить баланс платформы","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json post /v1/workspaces/{ws}/platform/purchases","href":"/api-reference/платформа:-баланс-и-расход/пополнить-баланс-платформы"},{"title":"Движения баланса платформы","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/workspaces/{ws}/platform/ledger","href":"/api-reference/платформа:-баланс-и-расход/движения-баланса-платформы"},{"title":"Расход платформы","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/workspaces/{ws}/platform/usage","href":"/api-reference/платформа:-баланс-и-расход/расход-платформы"},{"title":"Журнал действий организации","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/workspaces/{ws}/platform/audit","href":"/api-reference/платформа:-баланс-и-расход/журнал-действий-организации"},{"title":"Журнал запросов по ключам","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/workspaces/{ws}/platform/requests","href":"/api-reference/платформа:-баланс-и-расход/журнал-запросов-по-ключам"},{"title":"Пределы платформы и сколько осталось","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/workspaces/{ws}/platform/limits","href":"/api-reference/платформа:-баланс-и-расход/пределы-платформы-и-сколько-осталось"}]},{"group":"Ключи API","pages":[{"title":"Кому можно передать ключ","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/workspaces/{ws}/api-keys/people","href":"/api-reference/ключи-api/кому-можно-передать-ключ"},{"title":"Ключи API (без секретов)","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/workspaces/{ws}/api-keys","href":"/api-reference/ключи-api/ключи-api-без-секретов"},{"title":"Выпустить ключ","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json post /v1/workspaces/{ws}/api-keys","href":"/api-reference/ключи-api/выпустить-ключ"},{"title":"Ключ","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/workspaces/{ws}/api-keys/{id}","href":"/api-reference/ключи-api/ключ"},{"title":"Отозвать ключ (сразу и навсегда)","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json delete /v1/workspaces/{ws}/api-keys/{id}","href":"/api-reference/ключи-api/отозвать-ключ-сразу-и-навсегда"},{"title":"Изменить ключ: имя, срок, месячный потолок, компании и права","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json patch /v1/workspaces/{ws}/api-keys/{id}","href":"/api-reference/ключи-api/изменить-ключ:-имя-срок-месячный-потолок-компании-и-права"},{"title":"Сменить секрет ключа","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json post /v1/workspaces/{ws}/api-keys/{id}/roll","href":"/api-reference/ключи-api/сменить-секрет-ключа"},{"title":"Передать ключ другому владельцу или админу","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json post /v1/workspaces/{ws}/api-keys/{id}/transfer","href":"/api-reference/ключи-api/передать-ключ-другому-владельцу-или-админу"},{"title":"Выключить ключ (можно включить обратно)","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json post /v1/workspaces/{ws}/api-keys/{id}/disable","href":"/api-reference/ключи-api/выключить-ключ-можно-включить-обратно"},{"title":"Включить выключенный ключ","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json post /v1/workspaces/{ws}/api-keys/{id}/enable","href":"/api-reference/ключи-api/включить-выключенный-ключ"},{"title":"Расход ключа за период","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/workspaces/{ws}/api-keys/{id}/usage","href":"/api-reference/ключи-api/расход-ключа-за-период"},{"title":"Ключ, по которому пришёл запрос (кто я)","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/api-key","href":"/api-reference/ключи-api/ключ-по-которому-пришёл-запрос-кто-я"},{"title":"Расход ключа, по которому пришёл запрос","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/api-key/usage","href":"/api-reference/ключи-api/расход-ключа-по-которому-пришёл-запрос"}]},{"group":"Вебхуки","pages":[{"title":"Какие события бывают","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/workspaces/{ws}/webhooks/event-types","href":"/api-reference/вебхуки/какие-события-бывают"},{"title":"Счётчик событий месяца","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/workspaces/{ws}/webhooks/usage","href":"/api-reference/вебхуки/счётчик-событий-месяца"},{"title":"Адреса вебхуков","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/workspaces/{ws}/webhooks/endpoints","href":"/api-reference/вебхуки/адреса-вебхуков"},{"title":"Завести адрес","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json post /v1/workspaces/{ws}/webhooks/endpoints","href":"/api-reference/вебхуки/завести-адрес"},{"title":"Адрес","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/workspaces/{ws}/webhooks/endpoints/{id}","href":"/api-reference/вебхуки/адрес"},{"title":"Удалить адрес","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json delete /v1/workspaces/{ws}/webhooks/endpoints/{id}","href":"/api-reference/вебхуки/удалить-адрес"},{"title":"Поменять адрес","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json patch /v1/workspaces/{ws}/webhooks/endpoints/{id}","href":"/api-reference/вебхуки/поменять-адрес"},{"title":"Секрет подписи адреса","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/workspaces/{ws}/webhooks/endpoints/{id}/secret","href":"/api-reference/вебхуки/секрет-подписи-адреса"},{"title":"Новый секрет подписи","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json post /v1/workspaces/{ws}/webhooks/endpoints/{id}/secret/rotate","href":"/api-reference/вебхуки/новый-секрет-подписи"},{"title":"Пробное событие на адрес","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json post /v1/workspaces/{ws}/webhooks/endpoints/{id}/test","href":"/api-reference/вебхуки/пробное-событие-на-адрес"},{"title":"Попытки доставки на адрес","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/workspaces/{ws}/webhooks/endpoints/{id}/attempts","href":"/api-reference/вебхуки/попытки-доставки-на-адрес"},{"title":"Отправленные события","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/workspaces/{ws}/webhooks/messages","href":"/api-reference/вебхуки/отправленные-события"},{"title":"Попытки доставки события","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/workspaces/{ws}/webhooks/messages/{id}/attempts","href":"/api-reference/вебхуки/попытки-доставки-события"},{"title":"Отправить событие на адрес ещё раз","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json post /v1/workspaces/{ws}/webhooks/messages/{id}/resend","href":"/api-reference/вебхуки/отправить-событие-на-адрес-ещё-раз"},{"title":"Proposalawaiting approval","version":null,"deprecated":null,"openapi":"https://api.tungo.kz/v1/openapi.json webhook proposal.awaiting_approval","href":"/api-reference/вебхуки/proposalawaiting_approval"},{"title":"Proposalwritten","version":null,"deprecated":null,"openapi":"https://api.tungo.kz/v1/openapi.json webhook proposal.written","href":"/api-reference/вебхуки/proposalwritten"},{"title":"Proposalfailed","version":null,"deprecated":null,"openapi":"https://api.tungo.kz/v1/openapi.json webhook proposal.failed","href":"/api-reference/вебхуки/proposalfailed"},{"title":"Paymentsucceeded","version":null,"deprecated":null,"openapi":"https://api.tungo.kz/v1/openapi.json webhook payment.succeeded","href":"/api-reference/вебхуки/paymentsucceeded"},{"title":"Paymentfailed","version":null,"deprecated":null,"openapi":"https://api.tungo.kz/v1/openapi.json webhook payment.failed","href":"/api-reference/вебхуки/paymentfailed"},{"title":"Automationruncompleted","version":null,"deprecated":null,"openapi":"https://api.tungo.kz/v1/openapi.json webhook automation.run.completed","href":"/api-reference/вебхуки/automationruncompleted"},{"title":"Automationrunfailed","version":null,"deprecated":null,"openapi":"https://api.tungo.kz/v1/openapi.json webhook automation.run.failed","href":"/api-reference/вебхуки/automationrunfailed"},{"title":"Esfincomingreceived","version":null,"deprecated":null,"openapi":"https://api.tungo.kz/v1/openapi.json webhook esf.incoming.received","href":"/api-reference/вебхуки/esfincomingreceived"},{"title":"Bank statementreceived","version":null,"deprecated":null,"openapi":"https://api.tungo.kz/v1/openapi.json webhook bank_statement.received","href":"/api-reference/вебхуки/bank_statementreceived"},{"title":"Proposalrejected","version":null,"deprecated":null,"openapi":"https://api.tungo.kz/v1/openapi.json webhook proposal.rejected","href":"/api-reference/вебхуки/proposalrejected"},{"title":"Batchcompleted","version":null,"deprecated":null,"openapi":"https://api.tungo.kz/v1/openapi.json webhook batch.completed","href":"/api-reference/вебхуки/batchcompleted"},{"title":"Batchfailed","version":null,"deprecated":null,"openapi":"https://api.tungo.kz/v1/openapi.json webhook batch.failed","href":"/api-reference/вебхуки/batchfailed"},{"title":"Automationwrite unknown","version":null,"deprecated":null,"openapi":"https://api.tungo.kz/v1/openapi.json webhook automation.write_unknown","href":"/api-reference/вебхуки/automationwrite_unknown"},{"title":"Automationrunnotice","version":null,"deprecated":null,"openapi":"https://api.tungo.kz/v1/openapi.json webhook automation.run.notice","href":"/api-reference/вебхуки/automationrunnotice"},{"title":"Chatturncompleted","version":null,"deprecated":null,"openapi":"https://api.tungo.kz/v1/openapi.json webhook chat.turn.completed","href":"/api-reference/вебхуки/chatturncompleted"},{"title":"Platformbalance low","version":null,"deprecated":null,"openapi":"https://api.tungo.kz/v1/openapi.json webhook platform.balance_low","href":"/api-reference/вебхуки/platformbalance_low"},{"title":"Platformbalance exhausted","version":null,"deprecated":null,"openapi":"https://api.tungo.kz/v1/openapi.json webhook platform.balance_exhausted","href":"/api-reference/вебхуки/platformbalance_exhausted"},{"title":"Platformcap threshold reached","version":null,"deprecated":null,"openapi":"https://api.tungo.kz/v1/openapi.json webhook platform.cap_threshold_reached","href":"/api-reference/вебхуки/platformcap_threshold_reached"},{"title":"Onecconnectionchanged","version":null,"deprecated":null,"openapi":"https://api.tungo.kz/v1/openapi.json webhook onec.connection.changed","href":"/api-reference/вебхуки/onecconnectionchanged"},{"title":"Api keyexpiring","version":null,"deprecated":null,"openapi":"https://api.tungo.kz/v1/openapi.json webhook api_key.expiring","href":"/api-reference/вебхуки/api_keyexpiring"},{"title":"Api keycap reached","version":null,"deprecated":null,"openapi":"https://api.tungo.kz/v1/openapi.json webhook api_key.cap_reached","href":"/api-reference/вебхуки/api_keycap_reached"},{"title":"Ping","version":null,"deprecated":null,"openapi":"https://api.tungo.kz/v1/openapi.json webhook ping","href":"/api-reference/вебхуки/ping"}]},{"group":"ИИ-бухгалтер: чат","pages":[{"title":"Свои разговоры в компании, свежие сверху","description":"Только свои: чужие разговоры не видны никому, даже владельцу. Старые стираются по сроку хранения. Страницы курсором; идущие разговоры — наверху первой страницы.\n\nДоступ: chat.use.\n\nДоступно по ключу API.","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/companies/{co}/chat","href":"/api-reference/ии-бухгалтер:-чат/свои-разговоры-в-компании-свежие-сверху"},{"title":"Сообщение ИИ-бухгалтеру (ход потоком SSE)","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json post /v1/companies/{co}/chat","href":"/api-reference/ии-бухгалтер:-чат/сообщение-ии-бухгалтеру-ход-потоком-sse"},{"title":"Разговор целиком","description":"Та же форма сообщений, что клиент собирает из живого потока. От идущего хода — вопрос последним сообщением с pending: true.\n\nДоступ: chat.use.\n\nДоступно по ключу API.","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/companies/{co}/chat/{id}","href":"/api-reference/ии-бухгалтер:-чат/разговор-целиком"},{"title":"Стереть свой разговор","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json delete /v1/companies/{co}/chat/{id}","href":"/api-reference/ии-бухгалтер:-чат/стереть-свой-разговор"},{"title":"Переименовать свой разговор","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json patch /v1/companies/{co}/chat/{id}","href":"/api-reference/ии-бухгалтер:-чат/переименовать-свой-разговор"},{"title":"Ответ на уточняющий вопрос ИИ (событие choice)","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json post /v1/companies/{co}/chat/{id}/answer","href":"/api-reference/ии-бухгалтер:-чат/ответ-на-уточняющий-вопрос-ии-событие-choice"},{"title":"Переподключиться к идущему ходу","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/companies/{co}/chat/{id}/events","href":"/api-reference/ии-бухгалтер:-чат/переподключиться-к-идущему-ходу"},{"title":"Сколько токенов и денег займёт вопрос, не задавая его","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json post /v1/companies/{co}/chat/count-tokens","href":"/api-reference/ии-бухгалтер:-чат/сколько-токенов-и-денег-займёт-вопрос-не-задавая-его"},{"title":"Остановить ход или закрыть открытый вопрос","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json post /v1/companies/{co}/chat/{id}/stop","href":"/api-reference/ии-бухгалтер:-чат/остановить-ход-или-закрыть-открытый-вопрос"}]},{"group":"ИИ-бухгалтер: предложения","pages":[{"title":"Очередь предложений","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/companies/{co}/proposals","href":"/api-reference/ии-бухгалтер:-предложения/очередь-предложений"},{"title":"Карточка предложения","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/companies/{co}/proposals/{id}","href":"/api-reference/ии-бухгалтер:-предложения/карточка-предложения"},{"title":"Одобрить и записать в 1С","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json post /v1/companies/{co}/proposals/{id}/approve","href":"/api-reference/ии-бухгалтер:-предложения/одобрить-и-записать-в-1с"},{"title":"Отклонить с причиной","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json post /v1/companies/{co}/proposals/{id}/reject","href":"/api-reference/ии-бухгалтер:-предложения/отклонить-с-причиной"},{"title":"Одобрить пачку предложений","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json post /v1/companies/{co}/proposals/approve-batch","href":"/api-reference/ии-бухгалтер:-предложения/одобрить-пачку-предложений"}]},{"group":"ИИ-бухгалтер: лента","pages":[{"title":"Лента компании","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/companies/{co}/feed","href":"/api-reference/ии-бухгалтер:-лента/лента-компании"},{"title":"Новые события ленты потоком SSE","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/companies/{co}/feed/events","href":"/api-reference/ии-бухгалтер:-лента/новые-события-ленты-потоком-sse"}]},{"group":"ИИ-бухгалтер: пачки","pages":[{"title":"Разобрать банковскую выписку в предложения","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json post /v1/companies/{co}/batch/bank-statement","href":"/api-reference/ии-бухгалтер:-пачки/разобрать-банковскую-выписку-в-предложения"},{"title":"Поступления по непривязанным входящим ЭСФ","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json post /v1/companies/{co}/batch/esf-purchases","href":"/api-reference/ии-бухгалтер:-пачки/поступления-по-непривязанным-входящим-эсф"},{"title":"Свои задания и выписки дня, свежие сверху","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/companies/{co}/batch","href":"/api-reference/ии-бухгалтер:-пачки/свои-задания-и-выписки-дня-свежие-сверху"},{"title":"Задание с отчётом","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/companies/{co}/batch/{id}","href":"/api-reference/ии-бухгалтер:-пачки/задание-с-отчётом"},{"title":"Сводка задания для «Одобрить и отправить в 1С»","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/companies/{co}/batch/{id}/summary","href":"/api-reference/ии-бухгалтер:-пачки/сводка-задания-для-«одобрить-и-отправить-в-1с»"},{"title":"Прогресс задания потоком SSE","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/companies/{co}/batch/{id}/events","href":"/api-reference/ии-бухгалтер:-пачки/прогресс-задания-потоком-sse"},{"title":"Остановить задание","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json post /v1/companies/{co}/batch/{id}/stop","href":"/api-reference/ии-бухгалтер:-пачки/остановить-задание"},{"title":"Выписки DirectBank по дням","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/companies/{co}/statements","href":"/api-reference/ии-бухгалтер:-пачки/выписки-directbank-по-дням"},{"title":"Опросить DirectBank сейчас","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json post /v1/companies/{co}/statements/directbank","href":"/api-reference/ии-бухгалтер:-пачки/опросить-directbank-сейчас"}]},{"group":"ЭСФ","pages":[{"title":"Реализации без действующего ЭСФ","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/companies/{co}/esf/outgoing","href":"/api-reference/эсф/реализации-без-действующего-эсф"},{"title":"Входящие ЭСФ и поступления в 1С","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/companies/{co}/esf/incoming","href":"/api-reference/эсф/входящие-эсф-и-поступления-в-1с"}]},{"group":"Формы","pages":[{"title":"Налоговые формы года","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/companies/{co}/forms","href":"/api-reference/формы/налоговые-формы-года"},{"title":"Посчитать форму","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/companies/{co}/forms/build","href":"/api-reference/формы/посчитать-форму"},{"title":"Файл формы для КНП ИСНА","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/companies/{co}/forms/isna","href":"/api-reference/формы/файл-формы-для-кнп-исна"},{"title":"Примечания к финотчётности","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/companies/{co}/forms/notes","href":"/api-reference/формы/примечания-к-финотчётности"},{"title":"Чего не хватает в 1С","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/companies/{co}/forms/data-gaps","href":"/api-reference/формы/чего-не-хватает-в-1с"}]},{"group":"1С","pages":[{"title":"Состояние подключения к 1С (без настроек и секретов)","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/companies/{co}/onec/status","href":"/api-reference/1с/состояние-подключения-к-1с-без-настроек-и-секретов"}]},{"group":"Автоматизации","pages":[{"title":"Принять событие по адресу хука","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json post /hooks/{token}","href":"/api-reference/автоматизации/принять-событие-по-адресу-хука"},{"title":"Хуки компании","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/companies/{co}/automations/hooks","href":"/api-reference/автоматизации/хуки-компании"},{"title":"Завести хук","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json post /v1/companies/{co}/automations/hooks","href":"/api-reference/автоматизации/завести-хук"},{"title":"Хук","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/companies/{co}/automations/hooks/{id}","href":"/api-reference/автоматизации/хук"},{"title":"Удалить хук","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json delete /v1/companies/{co}/automations/hooks/{id}","href":"/api-reference/автоматизации/удалить-хук"},{"title":"Изменить хук","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json patch /v1/companies/{co}/automations/hooks/{id}","href":"/api-reference/автоматизации/изменить-хук"},{"title":"Новый токен хука","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json post /v1/companies/{co}/automations/hooks/{id}/rotate","href":"/api-reference/автоматизации/новый-токен-хука"},{"title":"Пробное событие хука","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json post /v1/companies/{co}/automations/hooks/{id}/test","href":"/api-reference/автоматизации/пробное-событие-хука"},{"title":"Сценарии компании","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/companies/{co}/automations/scenarios","href":"/api-reference/автоматизации/сценарии-компании"},{"title":"Завести сценарий","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json post /v1/companies/{co}/automations/scenarios","href":"/api-reference/автоматизации/завести-сценарий"},{"title":"Сценарий","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/companies/{co}/automations/scenarios/{id}","href":"/api-reference/автоматизации/сценарий"},{"title":"Заменить сценарий","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json put /v1/companies/{co}/automations/scenarios/{id}","href":"/api-reference/автоматизации/заменить-сценарий"},{"title":"Удалить сценарий","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json delete /v1/companies/{co}/automations/scenarios/{id}","href":"/api-reference/автоматизации/удалить-сценарий"},{"title":"Включить или выключить сценарий","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json patch /v1/companies/{co}/automations/scenarios/{id}","href":"/api-reference/автоматизации/включить-или-выключить-сценарий"},{"title":"Запустить сценарий вручную или на прошлом событии","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json post /v1/companies/{co}/automations/scenarios/{id}/run","href":"/api-reference/автоматизации/запустить-сценарий-вручную-или-на-прошлом-событии"},{"title":"Журнал запусков","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/companies/{co}/automations/runs","href":"/api-reference/автоматизации/журнал-запусков"},{"title":"Запуск","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/companies/{co}/automations/runs/{id}","href":"/api-reference/автоматизации/запуск"},{"title":"Повторить упавший запуск","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json post /v1/companies/{co}/automations/runs/{id}/retry","href":"/api-reference/автоматизации/повторить-упавший-запуск"},{"title":"Отменить запуск","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json post /v1/companies/{co}/automations/runs/{id}/cancel","href":"/api-reference/автоматизации/отменить-запуск"},{"title":"Пауза автоматизаций компании","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/companies/{co}/automations/state","href":"/api-reference/автоматизации/пауза-автоматизаций-компании"},{"title":"Поставить на паузу или снять паузу","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json put /v1/companies/{co}/automations/state","href":"/api-reference/автоматизации/поставить-на-паузу-или-снять-паузу"},{"title":"Доверие ИИ в компании","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/companies/{co}/autonomy","href":"/api-reference/автоматизации/доверие-ии-в-компании"},{"title":"Изменить доверие ИИ в компании","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json put /v1/companies/{co}/autonomy","href":"/api-reference/автоматизации/изменить-доверие-ии-в-компании"}]}]}]}]},{"version":"Қазақша","tabs":[{"tab":"Басты бет","pages":[{"title":"Басты бет","href":"/kk"}]},{"tab":"Бастау","pages":[{"title":"Бастау","href":"/kk/start/quickstart"}]},{"tab":"1С қосу","pages":[{"title":"1С қосу","href":"/kk/1c/overview"}]},{"tab":"ЖИ-бухгалтер","pages":[{"title":"ЖИ-бухгалтер","href":"/kk/assistant/ask"}]},{"tab":"Тарифтер және төлем","pages":[{"title":"Тарифтер және төлем","href":"/kk/billing/plans"}]},{"tab":"Аккаунт және команда","pages":[{"title":"Аккаунт және команда","href":"/kk/account/sign-in"}]},{"tab":"Мәселелерді шешу","pages":[{"title":"Мәселелерді шешу","href":"/kk/help/sign-in"}]},{"tab":"Платформа","pages":[{"title":"Платформа","href":"/kk/platform/overview"}]},{"tab":"API","groups":[{"group":"API анықтамалығы","pages":[{"group":"Аккаунт","pages":[{"title":"Мои организации (workspace) с публичными id ws_…","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/workspaces","href":"/api-reference/аккаунт/мои-организации-workspace-с-публичными-id-ws_…"}]},{"group":"Компании","pages":[{"title":"Мои компании во всех workspace","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/companies","href":"/api-reference/компании/мои-компании-во-всех-workspace"},{"title":"Компания","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/companies/{co}","href":"/api-reference/компании/компания"}]},{"group":"Биллинг","pages":[{"title":"Привязать карту (форма ePay)","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json post /v1/workspaces/{ws}/billing/card-sessions","href":"/api-reference/биллинг/привязать-карту-форма-epay"},{"title":"Привязанные карты","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/workspaces/{ws}/billing/payment-methods","href":"/api-reference/биллинг/привязанные-карты"},{"title":"Отвязать карту","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json delete /v1/workspaces/{ws}/billing/payment-methods/{pm}","href":"/api-reference/биллинг/отвязать-карту"},{"title":"Оплатить на форме ePay (с 3-D Secure)","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json post /v1/workspaces/{ws}/billing/payments/{id}/pay-form","href":"/api-reference/биллинг/оплатить-на-форме-epay-с-3-d-secure"}]},{"group":"Тарифы и расход","pages":[{"title":"Цены моделей","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/usage-rates","href":"/api-reference/тарифы-и-расход/цены-моделей"}]},{"group":"Платформа: баланс и расход","pages":[{"title":"Счёт платформы","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/workspaces/{ws}/platform/account","href":"/api-reference/платформа:-баланс-и-расход/счёт-платформы"},{"title":"Настройки платформы","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json put /v1/workspaces/{ws}/platform/account","href":"/api-reference/платформа:-баланс-и-расход/настройки-платформы"},{"title":"Пополнить баланс платформы","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json post /v1/workspaces/{ws}/platform/purchases","href":"/api-reference/платформа:-баланс-и-расход/пополнить-баланс-платформы"},{"title":"Движения баланса платформы","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/workspaces/{ws}/platform/ledger","href":"/api-reference/платформа:-баланс-и-расход/движения-баланса-платформы"},{"title":"Расход платформы","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/workspaces/{ws}/platform/usage","href":"/api-reference/платформа:-баланс-и-расход/расход-платформы"},{"title":"Журнал действий организации","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/workspaces/{ws}/platform/audit","href":"/api-reference/платформа:-баланс-и-расход/журнал-действий-организации"},{"title":"Журнал запросов по ключам","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/workspaces/{ws}/platform/requests","href":"/api-reference/платформа:-баланс-и-расход/журнал-запросов-по-ключам"},{"title":"Пределы платформы и сколько осталось","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/workspaces/{ws}/platform/limits","href":"/api-reference/платформа:-баланс-и-расход/пределы-платформы-и-сколько-осталось"}]},{"group":"Ключи API","pages":[{"title":"Кому можно передать ключ","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/workspaces/{ws}/api-keys/people","href":"/api-reference/ключи-api/кому-можно-передать-ключ"},{"title":"Ключи API (без секретов)","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/workspaces/{ws}/api-keys","href":"/api-reference/ключи-api/ключи-api-без-секретов"},{"title":"Выпустить ключ","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json post /v1/workspaces/{ws}/api-keys","href":"/api-reference/ключи-api/выпустить-ключ"},{"title":"Ключ","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/workspaces/{ws}/api-keys/{id}","href":"/api-reference/ключи-api/ключ"},{"title":"Отозвать ключ (сразу и навсегда)","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json delete /v1/workspaces/{ws}/api-keys/{id}","href":"/api-reference/ключи-api/отозвать-ключ-сразу-и-навсегда"},{"title":"Изменить ключ: имя, срок, месячный потолок, компании и права","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json patch /v1/workspaces/{ws}/api-keys/{id}","href":"/api-reference/ключи-api/изменить-ключ:-имя-срок-месячный-потолок-компании-и-права"},{"title":"Сменить секрет ключа","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json post /v1/workspaces/{ws}/api-keys/{id}/roll","href":"/api-reference/ключи-api/сменить-секрет-ключа"},{"title":"Передать ключ другому владельцу или админу","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json post /v1/workspaces/{ws}/api-keys/{id}/transfer","href":"/api-reference/ключи-api/передать-ключ-другому-владельцу-или-админу"},{"title":"Выключить ключ (можно включить обратно)","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json post /v1/workspaces/{ws}/api-keys/{id}/disable","href":"/api-reference/ключи-api/выключить-ключ-можно-включить-обратно"},{"title":"Включить выключенный ключ","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json post /v1/workspaces/{ws}/api-keys/{id}/enable","href":"/api-reference/ключи-api/включить-выключенный-ключ"},{"title":"Расход ключа за период","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/workspaces/{ws}/api-keys/{id}/usage","href":"/api-reference/ключи-api/расход-ключа-за-период"},{"title":"Ключ, по которому пришёл запрос (кто я)","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/api-key","href":"/api-reference/ключи-api/ключ-по-которому-пришёл-запрос-кто-я"},{"title":"Расход ключа, по которому пришёл запрос","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/api-key/usage","href":"/api-reference/ключи-api/расход-ключа-по-которому-пришёл-запрос"}]},{"group":"Вебхуки","pages":[{"title":"Какие события бывают","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/workspaces/{ws}/webhooks/event-types","href":"/api-reference/вебхуки/какие-события-бывают"},{"title":"Счётчик событий месяца","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/workspaces/{ws}/webhooks/usage","href":"/api-reference/вебхуки/счётчик-событий-месяца"},{"title":"Адреса вебхуков","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/workspaces/{ws}/webhooks/endpoints","href":"/api-reference/вебхуки/адреса-вебхуков"},{"title":"Завести адрес","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json post /v1/workspaces/{ws}/webhooks/endpoints","href":"/api-reference/вебхуки/завести-адрес"},{"title":"Адрес","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/workspaces/{ws}/webhooks/endpoints/{id}","href":"/api-reference/вебхуки/адрес"},{"title":"Удалить адрес","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json delete /v1/workspaces/{ws}/webhooks/endpoints/{id}","href":"/api-reference/вебхуки/удалить-адрес"},{"title":"Поменять адрес","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json patch /v1/workspaces/{ws}/webhooks/endpoints/{id}","href":"/api-reference/вебхуки/поменять-адрес"},{"title":"Секрет подписи адреса","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/workspaces/{ws}/webhooks/endpoints/{id}/secret","href":"/api-reference/вебхуки/секрет-подписи-адреса"},{"title":"Новый секрет подписи","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json post /v1/workspaces/{ws}/webhooks/endpoints/{id}/secret/rotate","href":"/api-reference/вебхуки/новый-секрет-подписи"},{"title":"Пробное событие на адрес","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json post /v1/workspaces/{ws}/webhooks/endpoints/{id}/test","href":"/api-reference/вебхуки/пробное-событие-на-адрес"},{"title":"Попытки доставки на адрес","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/workspaces/{ws}/webhooks/endpoints/{id}/attempts","href":"/api-reference/вебхуки/попытки-доставки-на-адрес"},{"title":"Отправленные события","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/workspaces/{ws}/webhooks/messages","href":"/api-reference/вебхуки/отправленные-события"},{"title":"Попытки доставки события","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/workspaces/{ws}/webhooks/messages/{id}/attempts","href":"/api-reference/вебхуки/попытки-доставки-события"},{"title":"Отправить событие на адрес ещё раз","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json post /v1/workspaces/{ws}/webhooks/messages/{id}/resend","href":"/api-reference/вебхуки/отправить-событие-на-адрес-ещё-раз"},{"title":"Proposalawaiting approval","version":null,"deprecated":null,"openapi":"https://api.tungo.kz/v1/openapi.json webhook proposal.awaiting_approval","href":"/api-reference/вебхуки/proposalawaiting_approval"},{"title":"Proposalwritten","version":null,"deprecated":null,"openapi":"https://api.tungo.kz/v1/openapi.json webhook proposal.written","href":"/api-reference/вебхуки/proposalwritten"},{"title":"Proposalfailed","version":null,"deprecated":null,"openapi":"https://api.tungo.kz/v1/openapi.json webhook proposal.failed","href":"/api-reference/вебхуки/proposalfailed"},{"title":"Paymentsucceeded","version":null,"deprecated":null,"openapi":"https://api.tungo.kz/v1/openapi.json webhook payment.succeeded","href":"/api-reference/вебхуки/paymentsucceeded"},{"title":"Paymentfailed","version":null,"deprecated":null,"openapi":"https://api.tungo.kz/v1/openapi.json webhook payment.failed","href":"/api-reference/вебхуки/paymentfailed"},{"title":"Automationruncompleted","version":null,"deprecated":null,"openapi":"https://api.tungo.kz/v1/openapi.json webhook automation.run.completed","href":"/api-reference/вебхуки/automationruncompleted"},{"title":"Automationrunfailed","version":null,"deprecated":null,"openapi":"https://api.tungo.kz/v1/openapi.json webhook automation.run.failed","href":"/api-reference/вебхуки/automationrunfailed"},{"title":"Esfincomingreceived","version":null,"deprecated":null,"openapi":"https://api.tungo.kz/v1/openapi.json webhook esf.incoming.received","href":"/api-reference/вебхуки/esfincomingreceived"},{"title":"Bank statementreceived","version":null,"deprecated":null,"openapi":"https://api.tungo.kz/v1/openapi.json webhook bank_statement.received","href":"/api-reference/вебхуки/bank_statementreceived"},{"title":"Proposalrejected","version":null,"deprecated":null,"openapi":"https://api.tungo.kz/v1/openapi.json webhook proposal.rejected","href":"/api-reference/вебхуки/proposalrejected"},{"title":"Batchcompleted","version":null,"deprecated":null,"openapi":"https://api.tungo.kz/v1/openapi.json webhook batch.completed","href":"/api-reference/вебхуки/batchcompleted"},{"title":"Batchfailed","version":null,"deprecated":null,"openapi":"https://api.tungo.kz/v1/openapi.json webhook batch.failed","href":"/api-reference/вебхуки/batchfailed"},{"title":"Automationwrite unknown","version":null,"deprecated":null,"openapi":"https://api.tungo.kz/v1/openapi.json webhook automation.write_unknown","href":"/api-reference/вебхуки/automationwrite_unknown"},{"title":"Automationrunnotice","version":null,"deprecated":null,"openapi":"https://api.tungo.kz/v1/openapi.json webhook automation.run.notice","href":"/api-reference/вебхуки/automationrunnotice"},{"title":"Chatturncompleted","version":null,"deprecated":null,"openapi":"https://api.tungo.kz/v1/openapi.json webhook chat.turn.completed","href":"/api-reference/вебхуки/chatturncompleted"},{"title":"Platformbalance low","version":null,"deprecated":null,"openapi":"https://api.tungo.kz/v1/openapi.json webhook platform.balance_low","href":"/api-reference/вебхуки/platformbalance_low"},{"title":"Platformbalance exhausted","version":null,"deprecated":null,"openapi":"https://api.tungo.kz/v1/openapi.json webhook platform.balance_exhausted","href":"/api-reference/вебхуки/platformbalance_exhausted"},{"title":"Platformcap threshold reached","version":null,"deprecated":null,"openapi":"https://api.tungo.kz/v1/openapi.json webhook platform.cap_threshold_reached","href":"/api-reference/вебхуки/platformcap_threshold_reached"},{"title":"Onecconnectionchanged","version":null,"deprecated":null,"openapi":"https://api.tungo.kz/v1/openapi.json webhook onec.connection.changed","href":"/api-reference/вебхуки/onecconnectionchanged"},{"title":"Api keyexpiring","version":null,"deprecated":null,"openapi":"https://api.tungo.kz/v1/openapi.json webhook api_key.expiring","href":"/api-reference/вебхуки/api_keyexpiring"},{"title":"Api keycap reached","version":null,"deprecated":null,"openapi":"https://api.tungo.kz/v1/openapi.json webhook api_key.cap_reached","href":"/api-reference/вебхуки/api_keycap_reached"},{"title":"Ping","version":null,"deprecated":null,"openapi":"https://api.tungo.kz/v1/openapi.json webhook ping","href":"/api-reference/вебхуки/ping"}]},{"group":"ИИ-бухгалтер: чат","pages":[{"title":"Свои разговоры в компании, свежие сверху","description":"Только свои: чужие разговоры не видны никому, даже владельцу. Старые стираются по сроку хранения. Страницы курсором; идущие разговоры — наверху первой страницы.\n\nДоступ: chat.use.\n\nДоступно по ключу API.","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/companies/{co}/chat","href":"/api-reference/ии-бухгалтер:-чат/свои-разговоры-в-компании-свежие-сверху"},{"title":"Сообщение ИИ-бухгалтеру (ход потоком SSE)","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json post /v1/companies/{co}/chat","href":"/api-reference/ии-бухгалтер:-чат/сообщение-ии-бухгалтеру-ход-потоком-sse"},{"title":"Разговор целиком","description":"Та же форма сообщений, что клиент собирает из живого потока. От идущего хода — вопрос последним сообщением с pending: true.\n\nДоступ: chat.use.\n\nДоступно по ключу API.","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/companies/{co}/chat/{id}","href":"/api-reference/ии-бухгалтер:-чат/разговор-целиком"},{"title":"Стереть свой разговор","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json delete /v1/companies/{co}/chat/{id}","href":"/api-reference/ии-бухгалтер:-чат/стереть-свой-разговор"},{"title":"Переименовать свой разговор","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json patch /v1/companies/{co}/chat/{id}","href":"/api-reference/ии-бухгалтер:-чат/переименовать-свой-разговор"},{"title":"Ответ на уточняющий вопрос ИИ (событие choice)","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json post /v1/companies/{co}/chat/{id}/answer","href":"/api-reference/ии-бухгалтер:-чат/ответ-на-уточняющий-вопрос-ии-событие-choice"},{"title":"Переподключиться к идущему ходу","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/companies/{co}/chat/{id}/events","href":"/api-reference/ии-бухгалтер:-чат/переподключиться-к-идущему-ходу"},{"title":"Сколько токенов и денег займёт вопрос, не задавая его","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json post /v1/companies/{co}/chat/count-tokens","href":"/api-reference/ии-бухгалтер:-чат/сколько-токенов-и-денег-займёт-вопрос-не-задавая-его"},{"title":"Остановить ход или закрыть открытый вопрос","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json post /v1/companies/{co}/chat/{id}/stop","href":"/api-reference/ии-бухгалтер:-чат/остановить-ход-или-закрыть-открытый-вопрос"}]},{"group":"ИИ-бухгалтер: предложения","pages":[{"title":"Очередь предложений","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/companies/{co}/proposals","href":"/api-reference/ии-бухгалтер:-предложения/очередь-предложений"},{"title":"Карточка предложения","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/companies/{co}/proposals/{id}","href":"/api-reference/ии-бухгалтер:-предложения/карточка-предложения"},{"title":"Одобрить и записать в 1С","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json post /v1/companies/{co}/proposals/{id}/approve","href":"/api-reference/ии-бухгалтер:-предложения/одобрить-и-записать-в-1с"},{"title":"Отклонить с причиной","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json post /v1/companies/{co}/proposals/{id}/reject","href":"/api-reference/ии-бухгалтер:-предложения/отклонить-с-причиной"},{"title":"Одобрить пачку предложений","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json post /v1/companies/{co}/proposals/approve-batch","href":"/api-reference/ии-бухгалтер:-предложения/одобрить-пачку-предложений"}]},{"group":"ИИ-бухгалтер: лента","pages":[{"title":"Лента компании","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/companies/{co}/feed","href":"/api-reference/ии-бухгалтер:-лента/лента-компании"},{"title":"Новые события ленты потоком SSE","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/companies/{co}/feed/events","href":"/api-reference/ии-бухгалтер:-лента/новые-события-ленты-потоком-sse"}]},{"group":"ИИ-бухгалтер: пачки","pages":[{"title":"Разобрать банковскую выписку в предложения","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json post /v1/companies/{co}/batch/bank-statement","href":"/api-reference/ии-бухгалтер:-пачки/разобрать-банковскую-выписку-в-предложения"},{"title":"Поступления по непривязанным входящим ЭСФ","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json post /v1/companies/{co}/batch/esf-purchases","href":"/api-reference/ии-бухгалтер:-пачки/поступления-по-непривязанным-входящим-эсф"},{"title":"Свои задания и выписки дня, свежие сверху","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/companies/{co}/batch","href":"/api-reference/ии-бухгалтер:-пачки/свои-задания-и-выписки-дня-свежие-сверху"},{"title":"Задание с отчётом","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/companies/{co}/batch/{id}","href":"/api-reference/ии-бухгалтер:-пачки/задание-с-отчётом"},{"title":"Сводка задания для «Одобрить и отправить в 1С»","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/companies/{co}/batch/{id}/summary","href":"/api-reference/ии-бухгалтер:-пачки/сводка-задания-для-«одобрить-и-отправить-в-1с»"},{"title":"Прогресс задания потоком SSE","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/companies/{co}/batch/{id}/events","href":"/api-reference/ии-бухгалтер:-пачки/прогресс-задания-потоком-sse"},{"title":"Остановить задание","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json post /v1/companies/{co}/batch/{id}/stop","href":"/api-reference/ии-бухгалтер:-пачки/остановить-задание"},{"title":"Выписки DirectBank по дням","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/companies/{co}/statements","href":"/api-reference/ии-бухгалтер:-пачки/выписки-directbank-по-дням"},{"title":"Опросить DirectBank сейчас","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json post /v1/companies/{co}/statements/directbank","href":"/api-reference/ии-бухгалтер:-пачки/опросить-directbank-сейчас"}]},{"group":"ЭСФ","pages":[{"title":"Реализации без действующего ЭСФ","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/companies/{co}/esf/outgoing","href":"/api-reference/эсф/реализации-без-действующего-эсф"},{"title":"Входящие ЭСФ и поступления в 1С","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/companies/{co}/esf/incoming","href":"/api-reference/эсф/входящие-эсф-и-поступления-в-1с"}]},{"group":"Формы","pages":[{"title":"Налоговые формы года","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/companies/{co}/forms","href":"/api-reference/формы/налоговые-формы-года"},{"title":"Посчитать форму","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/companies/{co}/forms/build","href":"/api-reference/формы/посчитать-форму"},{"title":"Файл формы для КНП ИСНА","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/companies/{co}/forms/isna","href":"/api-reference/формы/файл-формы-для-кнп-исна"},{"title":"Примечания к финотчётности","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/companies/{co}/forms/notes","href":"/api-reference/формы/примечания-к-финотчётности"},{"title":"Чего не хватает в 1С","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/companies/{co}/forms/data-gaps","href":"/api-reference/формы/чего-не-хватает-в-1с"}]},{"group":"1С","pages":[{"title":"Состояние подключения к 1С (без настроек и секретов)","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/companies/{co}/onec/status","href":"/api-reference/1с/состояние-подключения-к-1с-без-настроек-и-секретов"}]},{"group":"Автоматизации","pages":[{"title":"Принять событие по адресу хука","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json post /hooks/{token}","href":"/api-reference/автоматизации/принять-событие-по-адресу-хука"},{"title":"Хуки компании","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/companies/{co}/automations/hooks","href":"/api-reference/автоматизации/хуки-компании"},{"title":"Завести хук","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json post /v1/companies/{co}/automations/hooks","href":"/api-reference/автоматизации/завести-хук"},{"title":"Хук","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/companies/{co}/automations/hooks/{id}","href":"/api-reference/автоматизации/хук"},{"title":"Удалить хук","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json delete /v1/companies/{co}/automations/hooks/{id}","href":"/api-reference/автоматизации/удалить-хук"},{"title":"Изменить хук","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json patch /v1/companies/{co}/automations/hooks/{id}","href":"/api-reference/автоматизации/изменить-хук"},{"title":"Новый токен хука","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json post /v1/companies/{co}/automations/hooks/{id}/rotate","href":"/api-reference/автоматизации/новый-токен-хука"},{"title":"Пробное событие хука","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json post /v1/companies/{co}/automations/hooks/{id}/test","href":"/api-reference/автоматизации/пробное-событие-хука"},{"title":"Сценарии компании","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/companies/{co}/automations/scenarios","href":"/api-reference/автоматизации/сценарии-компании"},{"title":"Завести сценарий","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json post /v1/companies/{co}/automations/scenarios","href":"/api-reference/автоматизации/завести-сценарий"},{"title":"Сценарий","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/companies/{co}/automations/scenarios/{id}","href":"/api-reference/автоматизации/сценарий"},{"title":"Заменить сценарий","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json put /v1/companies/{co}/automations/scenarios/{id}","href":"/api-reference/автоматизации/заменить-сценарий"},{"title":"Удалить сценарий","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json delete /v1/companies/{co}/automations/scenarios/{id}","href":"/api-reference/автоматизации/удалить-сценарий"},{"title":"Включить или выключить сценарий","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json patch /v1/companies/{co}/automations/scenarios/{id}","href":"/api-reference/автоматизации/включить-или-выключить-сценарий"},{"title":"Запустить сценарий вручную или на прошлом событии","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json post /v1/companies/{co}/automations/scenarios/{id}/run","href":"/api-reference/автоматизации/запустить-сценарий-вручную-или-на-прошлом-событии"},{"title":"Журнал запусков","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/companies/{co}/automations/runs","href":"/api-reference/автоматизации/журнал-запусков"},{"title":"Запуск","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/companies/{co}/automations/runs/{id}","href":"/api-reference/автоматизации/запуск"},{"title":"Повторить упавший запуск","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json post /v1/companies/{co}/automations/runs/{id}/retry","href":"/api-reference/автоматизации/повторить-упавший-запуск"},{"title":"Отменить запуск","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json post /v1/companies/{co}/automations/runs/{id}/cancel","href":"/api-reference/автоматизации/отменить-запуск"},{"title":"Пауза автоматизаций компании","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/companies/{co}/automations/state","href":"/api-reference/автоматизации/пауза-автоматизаций-компании"},{"title":"Поставить на паузу или снять паузу","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json put /v1/companies/{co}/automations/state","href":"/api-reference/автоматизации/поставить-на-паузу-или-снять-паузу"},{"title":"Доверие ИИ в компании","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json get /v1/companies/{co}/autonomy","href":"/api-reference/автоматизации/доверие-ии-в-компании"},{"title":"Изменить доверие ИИ в компании","deprecated":null,"version":null,"openapi":"https://api.tungo.kz/v1/openapi.json put /v1/companies/{co}/autonomy","href":"/api-reference/автоматизации/изменить-доверие-ии-в-компании"}]}]}]}]}]}]},"basePath":"","title":"Сообщение ИИ-бухгалтеру (ход потоком SSE) - Tungo","buildId":"dpl_DqYu5MPb49gWBBbUGgpHQUmCHY3P","deploymentId":"dpl_DqYu5MPb49gWBBbUGgpHQUmCHY3P","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-CybtLBIt.js","utils-BMLj2fvV.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-B6In562Y.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-Dr8Mfhp9.js","snippetPresets-2rmQvMVl.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","ApiExamples-WMqJYdZj.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-CJ-MlPHu.js","shallow-dY3TMRCk.js","getApiPlaygroundDisplay-v-1B2bKm.js","CodeSnippet-BDhiTB7U.js","CodeSnippets-D9hnzQcS.js","Page-C4GwDT3_.js","getPastedJson-Th2V45jI.js","icon-BQXch1W9.js","MethodPill-BCqUneP3.js","DuplicateIcon-Q_-bhurZ.js","createIcon-DUjLHRqp.js","DynamicMarkdown-B-f2cqXQ.js","SectionHeading-Da5NsV4v.js","axios-vUo_bRtp.js","Markdown-D13FWkIM.js","clsx-D3Isdib3.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-C-XZBk9h.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink--qIqmmVG.js"]}