From ae6be80eae643adba0fc46aca75932c4480e9a29 Mon Sep 17 00:00:00 2001 From: "mintlify[bot]" <109931778+mintlify[bot]@users.noreply.github.com> Date: Fri, 17 Jul 2026 23:27:45 +0000 Subject: [PATCH 1/4] docs: document mint deslop command --- cli/commands.mdx | 58 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) diff --git a/cli/commands.mdx b/cli/commands.mdx index 1c7c515ef6..37be001a9e 100644 --- a/cli/commands.mdx +++ b/cli/commands.mdx @@ -324,6 +324,64 @@ The overall score uses weighted scoring, so higher-impact checks contribute more --- +## `mint deslop` + +Detect AI-sounding prose in documentation pages and get humanization suggestions. Requires authentication with `mint login`. + +```bash +mint deslop [files..] [flags] +``` + +With no arguments, the command checks git-changed `.md` and `.mdx` pages (staged, unstaged, and untracked). In a docs repo with a `docs.json`, changed files are automatically filtered to the pages referenced in your navigation, so `.mintignore`d and unpublished pages are skipped. You can also pass explicit file paths or globs. + +Each page is scored on the fraction of prose that reads as AI-written. Pages that meet or exceed `--threshold` fail, and the command exits with status `1` if any page is flagged or errors. Fully-human pages never fail, even at `--threshold 0`. + +| Argument | Description | +| --- | --- | +| `files` | Optional. One or more file paths or globs to check. Defaults to git-changed pages. | + +| Flag | Description | +| --- | --- | +| `--subdomain` | Documentation subdomain. Defaults to the value set with `mint config set subdomain`. | +| `--format` | Output format: `table` (default, colored), `plain` (pipeable), or `json` (agent-friendly). | +| `--threshold` | Fail a page when its AI-written fraction meets this value. Number between `0` and `1`. Defaults to `0.5`. | +| `--fix-whitespace` | Normalize prose whitespace in the checked files before scoring. Rewrites files locally with no server call. | + +For each flagged page, the output shows the AI-written percentage, the flagged line ranges, the offending prose, and suggested rewrites you can apply. + + + Checking pages consumes AI credits. `--fix-whitespace` runs locally and does not charge credits. If the batch hits a credits or availability error, the remaining pages are skipped instead of retried. + + +### Examples + +```bash +# Check git-changed pages +mint deslop + +# Check a specific page +mint deslop docs/guide.mdx + +# Check pages by glob with agent-friendly output +mint deslop "docs/**/*.mdx" --format json + +# Fail only on the most confidently AI-written pages +mint deslop --threshold 0.8 + +# Normalize prose whitespace and re-check in one pass +mint deslop --fix-whitespace +``` + +### Fixing whitespace + +`--fix-whitespace` deterministically cleans prose whitespace in each checked file: trailing spaces, runs of blank lines, unicode and zero-width spaces, and internal double-spaces. Fenced code blocks, inline code, and frontmatter are left untouched. Because it runs locally, it is safe to include in pre-commit hooks or CI. + +### JSON output + +`--format json` writes a single JSON object to stdout with a `results` array (one entry per file, keyed by `path`) and a `summary` block. Errors are reported per file and counted in `summary.errors`. This shape is designed for agents that loop: check, rewrite flagged passages, then re-run until the command exits `0`. + +--- + ## `mint new` Create a new documentation project by picking a theme or cloning a pre-defined template from the [mintlify/templates](https://github.com/mintlify/templates) repository. From 69ce4ac3c87ab905e132f7b6970f7c5a275ecd2c Mon Sep 17 00:00:00 2001 From: "mintlify[bot]" <109931778+mintlify[bot]@users.noreply.github.com> Date: Fri, 17 Jul 2026 23:30:52 +0000 Subject: [PATCH 2/4] docs: translate mint deslop section to es, fr, and zh --- es/cli/commands.mdx | 66 +++++++++++++++++++++++++++++++++++++++++++++ fr/cli/commands.mdx | 66 +++++++++++++++++++++++++++++++++++++++++++++ zh/cli/commands.mdx | 66 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 198 insertions(+) diff --git a/es/cli/commands.mdx b/es/cli/commands.mdx index 4e68b7e81c..9ad834e2ac 100644 --- a/es/cli/commands.mdx +++ b/es/cli/commands.mdx @@ -362,6 +362,72 @@ La puntuación general utiliza puntuación ponderada, por lo que las verificacio --- +
+ ## `mint deslop` +
+ +Detecta prosa con apariencia de IA en las páginas de documentación y obtén sugerencias de humanización. Requiere autenticación con `mint login`. + +```bash +mint deslop [files..] [flags] +``` + +Sin argumentos, el comando verifica las páginas `.md` y `.mdx` modificadas en git (en staging, sin staging y sin seguimiento). En un repositorio de documentación con un `docs.json`, los archivos modificados se filtran automáticamente a las páginas referenciadas en tu navegación, por lo que se omiten las páginas en `.mintignore` y las no publicadas. También puedes pasar rutas de archivo o globs explícitos. + +Cada página recibe una puntuación según la fracción de prosa que se lee como escrita por IA. Las páginas que alcanzan o superan `--threshold` fallan, y el comando termina con estado `1` si alguna página es marcada o presenta errores. Las páginas totalmente humanas nunca fallan, incluso con `--threshold 0`. + +| Argumento | Descripción | +| --- | --- | +| `files` | Opcional. Una o más rutas de archivo o globs a verificar. Por defecto, las páginas modificadas en git. | + +| Flag | Descripción | +| --- | --- | +| `--subdomain` | Subdominio de la documentación. Por defecto, el valor establecido con `mint config set subdomain`. | +| `--format` | Formato de salida: `table` (predeterminado, con colores), `plain` (redirigible) o `json` (apto para agentes). | +| `--threshold` | Marca una página como fallida cuando su fracción de contenido escrito por IA alcanza este valor. Número entre `0` y `1`. Por defecto `0.5`. | +| `--fix-whitespace` | Normaliza los espacios en blanco de la prosa en los archivos verificados antes de puntuar. Reescribe los archivos localmente sin llamada al servidor. | + +Para cada página marcada, la salida muestra el porcentaje escrito por IA, los rangos de líneas señalados, la prosa problemática y las reescrituras sugeridas que puedes aplicar. + + + Verificar páginas consume créditos de IA. `--fix-whitespace` se ejecuta localmente y no consume créditos. Si el lote encuentra un error de créditos o de disponibilidad, las páginas restantes se omiten en lugar de reintentarse. + + +
+ ### Ejemplos +
+ +```bash +# Verificar las páginas modificadas en git +mint deslop + +# Verificar una página específica +mint deslop docs/guide.mdx + +# Verificar páginas por glob con salida apta para agentes +mint deslop "docs/**/*.mdx" --format json + +# Fallar solo en las páginas escritas por IA con mayor certeza +mint deslop --threshold 0.8 + +# Normalizar los espacios en blanco de la prosa y volver a verificar en una sola pasada +mint deslop --fix-whitespace +``` + +
+ ### Corrección de espacios en blanco +
+ +`--fix-whitespace` limpia de forma determinista los espacios en blanco de la prosa en cada archivo verificado: espacios finales, secuencias de líneas en blanco, espacios unicode y de ancho cero, y espacios dobles internos. Los bloques de código delimitados, el código en línea y el frontmatter no se modifican. Como se ejecuta localmente, es seguro incluirlo en hooks de pre-commit o en CI. + +
+ ### Salida JSON +
+ +`--format json` escribe un único objeto JSON en stdout con un arreglo `results` (una entrada por archivo, indexada por `path`) y un bloque `summary`. Los errores se reportan por archivo y se cuentan en `summary.errors`. Esta forma está diseñada para agentes que iteran: verifican, reescriben los pasajes marcados y vuelven a ejecutar hasta que el comando termine con `0`. + +--- +
## `mint new`
diff --git a/fr/cli/commands.mdx b/fr/cli/commands.mdx index 2faf3ccfd8..ea8a3d2f15 100644 --- a/fr/cli/commands.mdx +++ b/fr/cli/commands.mdx @@ -362,6 +362,72 @@ Le score global utilise une notation pondérée, de sorte que les vérifications --- +
+ ## `mint deslop` +
+ +Détecter la prose qui semble générée par IA dans les pages de documentation et obtenir des suggestions d'humanisation. Nécessite une authentification avec `mint login`. + +```bash +mint deslop [files..] [flags] +``` + +Sans argument, la commande vérifie les pages `.md` et `.mdx` modifiées dans git (indexées, non indexées et non suivies). Dans un dépôt de documentation contenant un fichier `docs.json`, les fichiers modifiés sont automatiquement filtrés pour ne conserver que les pages référencées dans votre navigation, de sorte que les pages `.mintignore`d et non publiées sont ignorées. Vous pouvez également passer des chemins de fichiers ou des globs explicites. + +Chaque page est évaluée sur la fraction de prose qui semble écrite par une IA. Les pages qui atteignent ou dépassent `--threshold` échouent, et la commande se termine avec le code de sortie `1` si une page est signalée ou en erreur. Les pages entièrement humaines n'échouent jamais, même avec `--threshold 0`. + +| Argument | Description | +| --- | --- | +| `files` | Facultatif. Un ou plusieurs chemins de fichiers ou globs à vérifier. Par défaut, les pages modifiées dans git. | + +| Flag | Description | +| --- | --- | +| `--subdomain` | Sous-domaine de la documentation. Par défaut, la valeur définie avec `mint config set subdomain`. | +| `--format` | Format de sortie : `table` (par défaut, coloré), `plain` (redirigeable) ou `json` (adapté aux agents). | +| `--threshold` | Faire échouer une page lorsque sa fraction écrite par IA atteint cette valeur. Nombre entre `0` et `1`. Par défaut `0.5`. | +| `--fix-whitespace` | Normaliser les espaces de la prose dans les fichiers vérifiés avant l'évaluation. Réécrit les fichiers localement sans appel au serveur. | + +Pour chaque page signalée, la sortie affiche le pourcentage écrit par IA, les plages de lignes signalées, la prose incriminée et des suggestions de réécriture que vous pouvez appliquer. + + + La vérification des pages consomme des crédits IA. `--fix-whitespace` s'exécute localement et ne consomme pas de crédits. Si le lot rencontre une erreur de crédits ou de disponibilité, les pages restantes sont ignorées plutôt que retentées. + + +
+ ### Exemples +
+ +```bash +# Vérifier les pages modifiées dans git +mint deslop + +# Vérifier une page spécifique +mint deslop docs/guide.mdx + +# Vérifier des pages par glob avec une sortie adaptée aux agents +mint deslop "docs/**/*.mdx" --format json + +# Ne faire échouer que les pages les plus manifestement écrites par IA +mint deslop --threshold 0.8 + +# Normaliser les espaces de la prose et revérifier en une seule passe +mint deslop --fix-whitespace +``` + +
+ ### Correction des espaces +
+ +`--fix-whitespace` nettoie de manière déterministe les espaces de la prose dans chaque fichier vérifié : espaces en fin de ligne, séries de lignes vides, espaces unicode et de largeur nulle, et doubles espaces internes. Les blocs de code délimités, le code en ligne et le frontmatter sont laissés intacts. Comme cela s'exécute localement, il est sans danger de l'inclure dans des hooks de pré-commit ou en CI. + +
+ ### Sortie JSON +
+ +`--format json` écrit un unique objet JSON sur stdout avec un tableau `results` (une entrée par fichier, indexée par `path`) et un bloc `summary`. Les erreurs sont signalées par fichier et comptabilisées dans `summary.errors`. Ce format est conçu pour les agents qui bouclent : vérifier, réécrire les passages signalés, puis relancer jusqu'à ce que la commande se termine avec `0`. + +--- +
## `mint new`
diff --git a/zh/cli/commands.mdx b/zh/cli/commands.mdx index a6045059d9..f68dd1b732 100644 --- a/zh/cli/commands.mdx +++ b/zh/cli/commands.mdx @@ -362,6 +362,72 @@ mint score docs.example.com --- +
+ ## `mint deslop` +
+ +检测文档页面中读起来像 AI 生成的文字,并给出人性化改写建议。需要使用 `mint login` 进行身份验证。 + +```bash +mint deslop [files..] [flags] +``` + +在没有参数的情况下,该命令会检查 git 中有变更的 `.md` 和 `.mdx` 页面(已暂存、未暂存和未跟踪的)。在包含 `docs.json` 的文档仓库中,变更文件会自动过滤为你的导航中引用的页面,因此会跳过 `.mintignore` 掉的页面以及未发布的页面。你也可以显式传入文件路径或通配符。 + +每个页面会根据其读起来像 AI 撰写的文字所占比例进行评分。达到或超过 `--threshold` 的页面会失败,如果有任何页面被标记或出错,命令会以状态码 `1` 退出。完全由人类撰写的页面永远不会失败,即使在 `--threshold 0` 下也是如此。 + +| 参数 | 描述 | +| --- | --- | +| `files` | 可选。要检查的一个或多个文件路径或通配符。默认为 git 中有变更的页面。 | + +| 选项 | 描述 | +| --- | --- | +| `--subdomain` | 文档子域名。默认为通过 `mint config set subdomain` 设置的值。 | +| `--format` | 输出格式:`table`(默认,带颜色)、`plain`(可管道传输)或 `json`(对代理友好)。 | +| `--threshold` | 当页面 AI 撰写文字的比例达到该值时判为失败。介于 `0` 和 `1` 之间的数字。默认为 `0.5`。 | +| `--fix-whitespace` | 在评分前规范化所检查文件中的正文空白。仅在本地重写文件,不调用服务器。 | + +对于每个被标记的页面,输出会显示 AI 撰写的百分比、被标记的行范围、有问题的文字,以及可以应用的改写建议。 + + + 检查页面会消耗 AI 额度。`--fix-whitespace` 在本地运行,不会消耗额度。如果批处理遇到额度或可用性错误,剩余页面会被跳过而不会重试。 + + +
+ ### 示例 +
+ +```bash +# 检查 git 中有变更的页面 +mint deslop + +# 检查特定页面 +mint deslop docs/guide.mdx + +# 通过通配符检查页面,并使用对代理友好的输出 +mint deslop "docs/**/*.mdx" --format json + +# 仅对最确信为 AI 撰写的页面判为失败 +mint deslop --threshold 0.8 + +# 一次性规范化正文空白并重新检查 +mint deslop --fix-whitespace +``` + +
+ ### 修复空白 +
+ +`--fix-whitespace` 会以确定性方式清理每个所检查文件中的正文空白:行尾空格、连续的空行、unicode 空格和零宽空格,以及内部的双空格。围栏代码块、行内代码和 frontmatter 不会被改动。因为它在本地运行,所以可以安全地纳入预提交钩子或 CI。 + +
+ ### JSON 输出 +
+ +`--format json` 会向 stdout 写入一个 JSON 对象,其中包含一个 `results` 数组(每个文件一个条目,以 `path` 为键)和一个 `summary` 块。错误会按文件分别报告,并计入 `summary.errors`。这种结构专为循环运行的代理设计:检查、改写被标记的段落,然后重新运行,直到该命令以 `0` 退出。 + +--- +
## `mint new`
From ace97011764f0ff13a7621166e54aad92b6a035f Mon Sep 17 00:00:00 2001 From: "mintlify[bot]" <109931778+mintlify[bot]@users.noreply.github.com> Date: Fri, 17 Jul 2026 23:46:34 +0000 Subject: [PATCH 3/4] docs: document deslop admin API endpoint --- admin-openapi.json | 196 ++++++++++++++++++++++++++++++++++++++++ api/deslop/check.mdx | 26 ++++++ cli/commands.mdx | 2 + docs.json | 7 ++ es.json | 7 ++ es/api/deslop/check.mdx | 30 ++++++ es/cli/commands.mdx | 2 + fr.json | 7 ++ fr/api/deslop/check.mdx | 30 ++++++ fr/cli/commands.mdx | 2 + zh.json | 7 ++ zh/api/deslop/check.mdx | 30 ++++++ zh/cli/commands.mdx | 2 + 13 files changed, 348 insertions(+) create mode 100644 api/deslop/check.mdx create mode 100644 es/api/deslop/check.mdx create mode 100644 fr/api/deslop/check.mdx create mode 100644 zh/api/deslop/check.mdx diff --git a/admin-openapi.json b/admin-openapi.json index b4d2f95aa3..dc5748732f 100644 --- a/admin-openapi.json +++ b/admin-openapi.json @@ -358,6 +358,202 @@ } } }, + "/v1/deslop/{projectId}": { + "post": { + "summary": "Check page for AI-sounding prose", + "description": "Scan an MDX page for AI-sounding prose and return line-mapped flagged passages with optional human-style rewrite suggestions. Pages under 50 words are skipped for free. Each checked page charges 1 AI credit from the shared AI credits pool used by the assistant.\n\nAuthenticate with an admin API key.", + "parameters": [ + { + "name": "projectId", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "Your project ID. Can be copied from the [API keys](https://app.mintlify.com/settings/organization/api-keys) page in your dashboard." + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "required": ["path", "content"], + "properties": { + "path": { + "type": "string", + "minLength": 1, + "description": "Identifier for the page being checked. Echoed back in the response and used to key results when checking multiple pages." + }, + "content": { + "type": "string", + "maxLength": 1000000, + "description": "Raw MDX or Markdown content of the page. Frontmatter, code blocks, and inline code are stripped before scoring so only prose is analyzed." + } + } + } + } + } + }, + "responses": { + "200": { + "description": "Page checked successfully. `skipped` is `null` for scored pages, or a reason string (for example, `too_short`) when the page was not scored. Scored pages include the AI-written fractions, per-window flagged passages with line ranges, and any rewrite suggestions.", + "content": { + "application/json": { + "schema": { + "oneOf": [ + { + "type": "object", + "properties": { + "path": { + "type": "string", + "description": "Echo of the `path` from the request." + }, + "skipped": { + "type": "string", + "nullable": true, + "description": "Reason the page was skipped without scoring, such as `too_short` when the page is under 50 words. `null` when the page was scored." + }, + "predictionShort": { + "type": "string", + "description": "Short label for the overall verdict. One of `Human`, `AI-Assisted`, `Mixed`, or `AI`.", + "enum": ["Human", "AI-Assisted", "Mixed", "AI"] + }, + "fractionAi": { + "type": "number", + "description": "Fraction of prose (0-1) that reads as fully AI-written." + }, + "fractionAiAssisted": { + "type": "number", + "description": "Fraction of prose (0-1) that reads as AI-assisted." + }, + "fractionHuman": { + "type": "number", + "description": "Fraction of prose (0-1) that reads as human-written." + }, + "windows": { + "type": "array", + "description": "Flagged passages with line ranges from the original page and optional rewrite suggestions.", + "items": { + "type": "object", + "properties": { + "text": { + "type": "string", + "description": "The flagged passage as it appears in the page." + }, + "label": { + "type": "string", + "description": "Passage-level verdict (for example, `AI` or `AI-Assisted`)." + }, + "aiAssistanceScore": { + "type": "number", + "description": "Score (0-1) indicating how AI-written the passage is." + }, + "confidence": { + "oneOf": [ + { "type": "string" }, + { "type": "number" } + ], + "description": "Detector confidence for this passage." + }, + "startLine": { + "type": "integer", + "description": "1-indexed start line of the passage in the original page." + }, + "endLine": { + "type": "integer", + "description": "1-indexed end line of the passage in the original page." + }, + "rewrites": { + "type": "array", + "description": "Optional human-style rewrite candidates.", + "items": { + "type": "object", + "properties": { + "text": { + "type": "string", + "description": "Suggested replacement prose." + }, + "rationale": { + "type": "string", + "description": "Short explanation of why the rewrite reads as more human." + } + } + } + } + } + } + }, + "creditsCharged": { + "type": "integer", + "description": "AI credits charged for this request. `1` for scored pages, `0` for skipped pages." + } + } + }, + { + "type": "object", + "description": "Response shape when the page was skipped without scoring.", + "properties": { + "path": { "type": "string" }, + "skipped": { + "type": "string", + "description": "Reason the page was skipped (for example, `too_short`)." + }, + "creditsCharged": { + "type": "integer", + "description": "Always `0` for skipped pages." + } + } + } + ] + } + } + } + }, + "400": { + "description": "Invalid request body. The `path` and `content` fields are required.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "402": { + "description": "Your organization is out of AI credits. Top up credits or upgrade your plan and retry.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "429": { + "description": "Rate limit exceeded.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "503": { + "description": "The AI-prose detection service or quota service is temporarily unavailable. No credits are charged. Retry with backoff.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + } + } + } + }, "/v2/agent/{projectId}/job": { "post": { "summary": "Create agent job", diff --git a/api/deslop/check.mdx b/api/deslop/check.mdx new file mode 100644 index 0000000000..a1a299f0a7 --- /dev/null +++ b/api/deslop/check.mdx @@ -0,0 +1,26 @@ +--- +title: "Check page for AI-sounding prose" +openapi: /admin-openapi.json POST /v1/deslop/{projectId} +keywords: ["deslop", "ai detection", "humanization", "prose quality"] + +--- + +This endpoint scans an MDX or Markdown page for AI-sounding prose and returns line-mapped flagged passages with optional human-style rewrite suggestions. Use it to catch AI-drafted content before it reaches production, or to run the same checks the [`mint deslop`](/cli/commands#mint-deslop) CLI runs from a CI pipeline or internal tool. + +Frontmatter, fenced code blocks, and inline code are stripped before scoring, so only prose is analyzed. + +## Credits + +Each scored page charges 1 AI credit from the shared AI credits pool used by the assistant. Pages under 50 words are settled as a free skip (`skipped: "too_short"`) before the credit check runs. + +## Usage + +```bash +curl -X POST https://api.mintlify.com/v1/deslop/{projectId} \ + -H "Authorization: Bearer mint_xxxxx" \ + -H "Content-Type: application/json" \ + -d '{ + "path": "docs/guide.mdx", + "content": "# Getting started\n\nWelcome to our platform..." + }' +``` diff --git a/cli/commands.mdx b/cli/commands.mdx index 37be001a9e..0c1be289ac 100644 --- a/cli/commands.mdx +++ b/cli/commands.mdx @@ -380,6 +380,8 @@ mint deslop --fix-whitespace `--format json` writes a single JSON object to stdout with a `results` array (one entry per file, keyed by `path`) and a `summary` block. Errors are reported per file and counted in `summary.errors`. This shape is designed for agents that loop: check, rewrite flagged passages, then re-run until the command exits `0`. +The CLI calls the same detection service exposed by the Admin API. Use the [check page for AI-sounding prose](/api/deslop/check) endpoint if you need to run these checks from a CI pipeline or internal tool without shelling out to the CLI. + --- ## `mint new` diff --git a/docs.json b/docs.json index 18a13e5e50..fa39ac8fd1 100644 --- a/docs.json +++ b/docs.json @@ -410,6 +410,13 @@ "api/assistant/get-page-content" ] }, + { + "group": "Deslop", + "icon": "sparkles", + "pages": [ + "api/deslop/check" + ] + }, { "group": "Analytics", "icon": "chart-line", diff --git a/es.json b/es.json index eb2787d5ab..b1c420c9cd 100644 --- a/es.json +++ b/es.json @@ -389,6 +389,13 @@ "es/api/assistant/get-page-content" ] }, + { + "group": "Deslop", + "icon": "sparkles", + "pages": [ + "es/api/deslop/check" + ] + }, { "group": "Analytics", "icon": "chart-line", diff --git a/es/api/deslop/check.mdx b/es/api/deslop/check.mdx new file mode 100644 index 0000000000..b103fa4192 --- /dev/null +++ b/es/api/deslop/check.mdx @@ -0,0 +1,30 @@ +--- +title: "Comprobar página en busca de prosa con estilo de IA" +openapi: /admin-openapi.json POST /v1/deslop/{projectId} +keywords: ["deslop", "detección de ia", "humanización", "calidad de la prosa"] + +--- + +Este endpoint analiza una página MDX o Markdown en busca de prosa que suene generada por IA y devuelve los pasajes marcados con sus rangos de líneas, además de sugerencias opcionales de reescritura al estilo humano. Úsalo para detectar contenido redactado por IA antes de que llegue a producción, o para ejecutar las mismas comprobaciones que hace la CLI [`mint deslop`](/es/cli/commands#mint-deslop) desde un pipeline de CI o una herramienta interna. + +El frontmatter, los bloques de código con vallas y el código en línea se eliminan antes de la puntuación, de modo que solo se analiza la prosa. + +
+ ## Créditos +
+ +Cada página puntuada consume 1 crédito de IA del grupo compartido de créditos de IA que también utiliza el asistente. Las páginas con menos de 50 palabras se saltan de forma gratuita (`skipped: "too_short"`) antes de la comprobación de créditos. + +
+ ## Uso +
+ +```bash +curl -X POST https://api.mintlify.com/v1/deslop/{projectId} \ + -H "Authorization: Bearer mint_xxxxx" \ + -H "Content-Type: application/json" \ + -d '{ + "path": "docs/guide.mdx", + "content": "# Getting started\n\nWelcome to our platform..." + }' +``` diff --git a/es/cli/commands.mdx b/es/cli/commands.mdx index 9ad834e2ac..c4616bf0cc 100644 --- a/es/cli/commands.mdx +++ b/es/cli/commands.mdx @@ -426,6 +426,8 @@ mint deslop --fix-whitespace `--format json` escribe un único objeto JSON en stdout con un arreglo `results` (una entrada por archivo, indexada por `path`) y un bloque `summary`. Los errores se reportan por archivo y se cuentan en `summary.errors`. Esta forma está diseñada para agentes que iteran: verifican, reescriben los pasajes marcados y vuelven a ejecutar hasta que el comando termine con `0`. +La CLI llama al mismo servicio de detección que expone la Admin API. Usa el endpoint [comprobar página en busca de prosa con estilo de IA](/es/api/deslop/check) si necesitas ejecutar estas comprobaciones desde un pipeline de CI o una herramienta interna sin invocar la CLI. + ---
diff --git a/fr.json b/fr.json index bde31dccfd..59e5f87281 100644 --- a/fr.json +++ b/fr.json @@ -389,6 +389,13 @@ "fr/api/assistant/get-page-content" ] }, + { + "group": "Deslop", + "icon": "sparkles", + "pages": [ + "fr/api/deslop/check" + ] + }, { "group": "Analytics", "icon": "chart-line", diff --git a/fr/api/deslop/check.mdx b/fr/api/deslop/check.mdx new file mode 100644 index 0000000000..8bfc9de7cc --- /dev/null +++ b/fr/api/deslop/check.mdx @@ -0,0 +1,30 @@ +--- +title: "Vérifier une page pour détecter la prose de style IA" +openapi: /admin-openapi.json POST /v1/deslop/{projectId} +keywords: ["deslop", "détection ia", "humanisation", "qualité de la prose"] + +--- + +Ce point de terminaison analyse une page MDX ou Markdown à la recherche de prose qui semble générée par IA et renvoie les passages signalés avec leurs plages de lignes, ainsi que des suggestions optionnelles de réécriture au style humain. Utilisez-le pour repérer le contenu rédigé par IA avant qu'il n'atteigne la production, ou pour exécuter les mêmes vérifications que la CLI [`mint deslop`](/fr/cli/commands#mint-deslop) depuis un pipeline CI ou un outil interne. + +Le frontmatter, les blocs de code délimités et le code en ligne sont supprimés avant l'évaluation, de sorte que seule la prose est analysée. + +
+ ## Crédits +
+ +Chaque page évaluée consomme 1 crédit IA du pool partagé de crédits IA également utilisé par l'assistant. Les pages de moins de 50 mots sont ignorées gratuitement (`skipped: "too_short"`) avant la vérification des crédits. + +
+ ## Utilisation +
+ +```bash +curl -X POST https://api.mintlify.com/v1/deslop/{projectId} \ + -H "Authorization: Bearer mint_xxxxx" \ + -H "Content-Type: application/json" \ + -d '{ + "path": "docs/guide.mdx", + "content": "# Getting started\n\nWelcome to our platform..." + }' +``` diff --git a/fr/cli/commands.mdx b/fr/cli/commands.mdx index ea8a3d2f15..6d21b3397f 100644 --- a/fr/cli/commands.mdx +++ b/fr/cli/commands.mdx @@ -426,6 +426,8 @@ mint deslop --fix-whitespace `--format json` écrit un unique objet JSON sur stdout avec un tableau `results` (une entrée par fichier, indexée par `path`) et un bloc `summary`. Les erreurs sont signalées par fichier et comptabilisées dans `summary.errors`. Ce format est conçu pour les agents qui bouclent : vérifier, réécrire les passages signalés, puis relancer jusqu'à ce que la commande se termine avec `0`. +La CLI appelle le même service de détection que celui exposé par l'Admin API. Utilisez le point de terminaison [vérifier une page pour détecter la prose de style IA](/fr/api/deslop/check) si vous devez exécuter ces vérifications depuis un pipeline CI ou un outil interne sans passer par la CLI. + ---
diff --git a/zh.json b/zh.json index e3837dd2f5..097f6c830b 100644 --- a/zh.json +++ b/zh.json @@ -384,6 +384,13 @@ "zh/api/assistant/get-page-content" ] }, + { + "group": "Deslop", + "icon": "sparkles", + "pages": [ + "zh/api/deslop/check" + ] + }, { "group": "数据分析", "icon": "chart-line", diff --git a/zh/api/deslop/check.mdx b/zh/api/deslop/check.mdx new file mode 100644 index 0000000000..e28f4ee897 --- /dev/null +++ b/zh/api/deslop/check.mdx @@ -0,0 +1,30 @@ +--- +title: "检查页面中的 AI 风格文案" +openapi: /admin-openapi.json POST /v1/deslop/{projectId} +keywords: ["deslop", "ai 检测", "人性化改写", "文案质量"] + +--- + +此端点会扫描 MDX 或 Markdown 页面中读起来像 AI 生成的文案,并返回按行号定位的被标记段落,同时可选地给出人类风格的改写建议。可用于在内容上线前捕获 AI 起草的内容,或从 CI 流水线或内部工具中运行与 [`mint deslop`](/zh/cli/commands#mint-deslop) CLI 相同的检查。 + +评分前会去除 frontmatter、围栏代码块和行内代码,因此仅对文案本身进行分析。 + +
+ ## 积分 +
+ +每次对一个页面评分会从与 AI 助手共享的 AI 积分池中扣除 1 个 AI 积分。少于 50 个词的页面会在积分检查之前被免费跳过 (`skipped: "too_short"`)。 + +
+ ## 使用方法 +
+ +```bash +curl -X POST https://api.mintlify.com/v1/deslop/{projectId} \ + -H "Authorization: Bearer mint_xxxxx" \ + -H "Content-Type: application/json" \ + -d '{ + "path": "docs/guide.mdx", + "content": "# Getting started\n\nWelcome to our platform..." + }' +``` diff --git a/zh/cli/commands.mdx b/zh/cli/commands.mdx index f68dd1b732..2a0c07e0c6 100644 --- a/zh/cli/commands.mdx +++ b/zh/cli/commands.mdx @@ -426,6 +426,8 @@ mint deslop --fix-whitespace `--format json` 会向 stdout 写入一个 JSON 对象,其中包含一个 `results` 数组(每个文件一个条目,以 `path` 为键)和一个 `summary` 块。错误会按文件分别报告,并计入 `summary.errors`。这种结构专为循环运行的代理设计:检查、改写被标记的段落,然后重新运行,直到该命令以 `0` 退出。 +该 CLI 调用的是与 Admin API 相同的检测服务。如果你需要在 CI 流水线或内部工具中运行这些检查而不调用 CLI,请使用 [检查页面中的 AI 风格文案](/zh/api/deslop/check) 端点。 + ---
From 133c4c76e98414b74d533d58e950bb4ad4b31327 Mon Sep 17 00:00:00 2001 From: "mintlify[bot]" <109931778+mintlify[bot]@users.noreply.github.com> Date: Fri, 17 Jul 2026 23:50:10 +0000 Subject: [PATCH 4/4] docs: translate deslop OpenAPI operation to es, fr, and zh --- es/admin-openapi.json | 196 ++++++++++++++++++++++++++++++++++++++++++ fr/admin-openapi.json | 196 ++++++++++++++++++++++++++++++++++++++++++ zh/admin-openapi.json | 196 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 588 insertions(+) diff --git a/es/admin-openapi.json b/es/admin-openapi.json index 993c9242d0..3cdb07c4f4 100644 --- a/es/admin-openapi.json +++ b/es/admin-openapi.json @@ -395,6 +395,202 @@ } } }, + "/v1/deslop/{projectId}": { + "post": { + "summary": "Analizar página en busca de prosa con apariencia de IA", + "description": "Escanea una página MDX en busca de prosa con apariencia de IA y devuelve pasajes marcados asignados a líneas, con sugerencias opcionales de reescritura con estilo humano. Las páginas con menos de 50 palabras se omiten sin costo. Cada página analizada consume 1 crédito de IA del grupo compartido de créditos de IA que utiliza el asistente.\n\nAutentícate con una clave de API de administrador.", + "parameters": [ + { + "name": "projectId", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "El ID de tu proyecto. Puedes copiarlo desde la página de [API keys](https://dashboard.mintlify.com/settings/organization/api-keys) en tu dashboard." + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "required": ["path", "content"], + "properties": { + "path": { + "type": "string", + "minLength": 1, + "description": "Identificador de la página que se está analizando. Se devuelve en la respuesta y se utiliza como clave de los resultados cuando se analizan varias páginas." + }, + "content": { + "type": "string", + "maxLength": 1000000, + "description": "Contenido MDX o Markdown sin procesar de la página. El frontmatter, los bloques de código y el código en línea se eliminan antes de la puntuación para analizar únicamente la prosa." + } + } + } + } + } + }, + "responses": { + "200": { + "description": "Página analizada correctamente. `skipped` es `null` para las páginas puntuadas, o una cadena con la razón (por ejemplo, `too_short`) cuando la página no se puntuó. Las páginas puntuadas incluyen las fracciones de contenido escrito por IA, los pasajes marcados por ventana con sus rangos de líneas y cualquier sugerencia de reescritura.", + "content": { + "application/json": { + "schema": { + "oneOf": [ + { + "type": "object", + "properties": { + "path": { + "type": "string", + "description": "Eco del `path` de la solicitud." + }, + "skipped": { + "type": "string", + "nullable": true, + "description": "Razón por la que la página se omitió sin puntuación, como `too_short` cuando la página tiene menos de 50 palabras. `null` cuando la página fue puntuada." + }, + "predictionShort": { + "type": "string", + "description": "Etiqueta corta del veredicto general. Uno de `Human`, `AI-Assisted`, `Mixed` o `AI`.", + "enum": ["Human", "AI-Assisted", "Mixed", "AI"] + }, + "fractionAi": { + "type": "number", + "description": "Fracción de la prosa (0-1) que se lee como completamente escrita por IA." + }, + "fractionAiAssisted": { + "type": "number", + "description": "Fracción de la prosa (0-1) que se lee como asistida por IA." + }, + "fractionHuman": { + "type": "number", + "description": "Fracción de la prosa (0-1) que se lee como escrita por humanos." + }, + "windows": { + "type": "array", + "description": "Pasajes marcados con rangos de líneas de la página original y sugerencias opcionales de reescritura.", + "items": { + "type": "object", + "properties": { + "text": { + "type": "string", + "description": "El pasaje marcado tal como aparece en la página." + }, + "label": { + "type": "string", + "description": "Veredicto a nivel de pasaje (por ejemplo, `AI` o `AI-Assisted`)." + }, + "aiAssistanceScore": { + "type": "number", + "description": "Puntuación (0-1) que indica qué tan escrita por IA está el pasaje." + }, + "confidence": { + "oneOf": [ + { "type": "string" }, + { "type": "number" } + ], + "description": "Confianza del detector para este pasaje." + }, + "startLine": { + "type": "integer", + "description": "Línea inicial (indexada desde 1) del pasaje en la página original." + }, + "endLine": { + "type": "integer", + "description": "Línea final (indexada desde 1) del pasaje en la página original." + }, + "rewrites": { + "type": "array", + "description": "Candidatos opcionales de reescritura con estilo humano.", + "items": { + "type": "object", + "properties": { + "text": { + "type": "string", + "description": "Prosa de reemplazo sugerida." + }, + "rationale": { + "type": "string", + "description": "Explicación breve de por qué la reescritura se lee como más humana." + } + } + } + } + } + } + }, + "creditsCharged": { + "type": "integer", + "description": "Créditos de IA cobrados por esta solicitud. `1` para páginas puntuadas, `0` para páginas omitidas." + } + } + }, + { + "type": "object", + "description": "Forma de la respuesta cuando la página se omitió sin puntuación.", + "properties": { + "path": { "type": "string" }, + "skipped": { + "type": "string", + "description": "Razón por la que la página se omitió (por ejemplo, `too_short`)." + }, + "creditsCharged": { + "type": "integer", + "description": "Siempre `0` para las páginas omitidas." + } + } + } + ] + } + } + } + }, + "400": { + "description": "Cuerpo de la solicitud no válido. Los campos `path` y `content` son obligatorios.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "402": { + "description": "Tu organización se ha quedado sin créditos de IA. Recarga créditos o mejora tu plan y vuelve a intentarlo.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "429": { + "description": "Se superó el límite de solicitudes.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "503": { + "description": "El servicio de detección de prosa con IA o el servicio de cuota no está disponible temporalmente. No se cobran créditos. Reintenta con retroceso.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + } + } + } + }, "/v2/agent/{projectId}/job": { "post": { "summary": "Crear trabajo del agente", diff --git a/fr/admin-openapi.json b/fr/admin-openapi.json index 99d7e253c5..f51874023a 100644 --- a/fr/admin-openapi.json +++ b/fr/admin-openapi.json @@ -395,6 +395,202 @@ } } }, + "/v1/deslop/{projectId}": { + "post": { + "summary": "Vérifier la présence de prose au style IA sur une page", + "description": "Analyse une page MDX pour détecter la prose au style IA et renvoie les passages signalés avec leur plage de lignes, ainsi que des suggestions optionnelles de réécriture au style humain. Les pages de moins de 50 mots sont ignorées gratuitement. Chaque page vérifiée débite 1 crédit IA du pool de crédits IA partagé utilisé par l’assistant.\n\nAuthentifiez-vous avec une clé d'API administrateur.", + "parameters": [ + { + "name": "projectId", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "L’ID de votre projet. Vous pouvez le copier depuis la page [API keys](https://app.mintlify.com/settings/organization/api-keys) de votre Dashboard." + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "required": ["path", "content"], + "properties": { + "path": { + "type": "string", + "minLength": 1, + "description": "Identifiant de la page en cours de vérification. Il est renvoyé tel quel dans la réponse et sert de clé pour les résultats lors de la vérification de plusieurs pages." + }, + "content": { + "type": "string", + "maxLength": 1000000, + "description": "Contenu MDX ou Markdown brut de la page. Le frontmatter, les blocs de code et le code en ligne sont supprimés avant l’analyse afin que seule la prose soit évaluée." + } + } + } + } + } + }, + "responses": { + "200": { + "description": "Page vérifiée avec succès. `skipped` vaut `null` pour les pages évaluées, ou une chaîne indiquant la raison (par exemple, `too_short`) lorsque la page n’a pas été évaluée. Les pages évaluées incluent les fractions de texte rédigées par IA, les passages signalés par fenêtre avec leurs plages de lignes, ainsi que d’éventuelles suggestions de réécriture.", + "content": { + "application/json": { + "schema": { + "oneOf": [ + { + "type": "object", + "properties": { + "path": { + "type": "string", + "description": "Reprise du champ `path` de la requête." + }, + "skipped": { + "type": "string", + "nullable": true, + "description": "Raison pour laquelle la page a été ignorée sans être évaluée, comme `too_short` lorsque la page fait moins de 50 mots. `null` lorsque la page a été évaluée." + }, + "predictionShort": { + "type": "string", + "description": "Libellé court du verdict global. L’une des valeurs suivantes : `Human`, `AI-Assisted`, `Mixed` ou `AI`.", + "enum": ["Human", "AI-Assisted", "Mixed", "AI"] + }, + "fractionAi": { + "type": "number", + "description": "Fraction de la prose (0-1) qui semble entièrement rédigée par IA." + }, + "fractionAiAssisted": { + "type": "number", + "description": "Fraction de la prose (0-1) qui semble assistée par IA." + }, + "fractionHuman": { + "type": "number", + "description": "Fraction de la prose (0-1) qui semble rédigée par un humain." + }, + "windows": { + "type": "array", + "description": "Passages signalés avec leurs plages de lignes dans la page d’origine et suggestions optionnelles de réécriture.", + "items": { + "type": "object", + "properties": { + "text": { + "type": "string", + "description": "Le passage signalé tel qu’il apparaît dans la page." + }, + "label": { + "type": "string", + "description": "Verdict au niveau du passage (par exemple, `AI` ou `AI-Assisted`)." + }, + "aiAssistanceScore": { + "type": "number", + "description": "Score (0-1) indiquant à quel point le passage semble rédigé par IA." + }, + "confidence": { + "oneOf": [ + { "type": "string" }, + { "type": "number" } + ], + "description": "Confiance du détecteur pour ce passage." + }, + "startLine": { + "type": "integer", + "description": "Ligne de début du passage dans la page d’origine (indexée à partir de 1)." + }, + "endLine": { + "type": "integer", + "description": "Ligne de fin du passage dans la page d’origine (indexée à partir de 1)." + }, + "rewrites": { + "type": "array", + "description": "Candidats optionnels de réécriture au style humain.", + "items": { + "type": "object", + "properties": { + "text": { + "type": "string", + "description": "Prose de remplacement suggérée." + }, + "rationale": { + "type": "string", + "description": "Courte explication de la raison pour laquelle la réécriture semble plus humaine." + } + } + } + } + } + } + }, + "creditsCharged": { + "type": "integer", + "description": "Crédits IA débités pour cette requête. `1` pour les pages évaluées, `0` pour les pages ignorées." + } + } + }, + { + "type": "object", + "description": "Structure de la réponse lorsque la page a été ignorée sans être évaluée.", + "properties": { + "path": { "type": "string" }, + "skipped": { + "type": "string", + "description": "Raison pour laquelle la page a été ignorée (par exemple, `too_short`)." + }, + "creditsCharged": { + "type": "integer", + "description": "Toujours `0` pour les pages ignorées." + } + } + } + ] + } + } + } + }, + "400": { + "description": "Corps de requête invalide. Les champs `path` et `content` sont obligatoires.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "402": { + "description": "Votre organisation n’a plus de crédits IA. Rechargez vos crédits ou passez à un forfait supérieur, puis réessayez.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "429": { + "description": "Limite de débit dépassée.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "503": { + "description": "Le service de détection de prose IA ou le service de quotas est temporairement indisponible. Aucun crédit n’est débité. Réessayez avec un backoff.", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + } + } + } + }, "/v2/agent/{projectId}/job": { "post": { "summary": "Créer une tâche d’agent", diff --git a/zh/admin-openapi.json b/zh/admin-openapi.json index 072720c9c2..26d780f41a 100644 --- a/zh/admin-openapi.json +++ b/zh/admin-openapi.json @@ -395,6 +395,202 @@ } } }, + "/v1/deslop/{projectId}": { + "post": { + "summary": "检查页面中类 AI 语气的文本", + "description": "扫描 MDX 页面中类 AI 语气的文本,并返回带行号映射的被标记段落,以及可选的更贴近人类风格的改写建议。少于 50 词的页面将被免费跳过。每次检查一个页面会从助手所使用的共享 AI 额度池中扣除 1 个 AI 额度。\n\n使用管理员 API 密钥进行身份验证。", + "parameters": [ + { + "name": "projectId", + "in": "path", + "required": true, + "schema": { + "type": "string" + }, + "description": "你的项目 ID。可从你的控制台中的 [API keys](https://app.mintlify.com/settings/organization/api-keys) 页面复制。" + } + ], + "requestBody": { + "required": true, + "content": { + "application/json": { + "schema": { + "type": "object", + "required": ["path", "content"], + "properties": { + "path": { + "type": "string", + "minLength": 1, + "description": "被检查页面的标识符。会在响应中原样返回,并在检查多个页面时用作结果的键。" + }, + "content": { + "type": "string", + "maxLength": 1000000, + "description": "页面的原始 MDX 或 Markdown 内容。在评分之前会移除 frontmatter、代码块和内联代码,因此仅分析正文文本。" + } + } + } + } + } + }, + "responses": { + "200": { + "description": "页面检查成功。对于已评分的页面,`skipped` 为 `null`;当页面未被评分时,则为一个原因字符串(例如 `too_short`)。已评分的页面包含 AI 撰写的比例、带行号范围的每个窗口的被标记段落,以及任何改写建议。", + "content": { + "application/json": { + "schema": { + "oneOf": [ + { + "type": "object", + "properties": { + "path": { + "type": "string", + "description": "原样回显请求中的 `path`。" + }, + "skipped": { + "type": "string", + "nullable": true, + "description": "页面未被评分而跳过的原因,例如页面少于 50 词时为 `too_short`。当页面已被评分时为 `null`。" + }, + "predictionShort": { + "type": "string", + "description": "整体判定的简短标签。为 `Human`、`AI-Assisted`、`Mixed` 或 `AI` 之一。", + "enum": ["Human", "AI-Assisted", "Mixed", "AI"] + }, + "fractionAi": { + "type": "number", + "description": "读起来完全由 AI 撰写的正文比例(0-1)。" + }, + "fractionAiAssisted": { + "type": "number", + "description": "读起来由 AI 辅助撰写的正文比例(0-1)。" + }, + "fractionHuman": { + "type": "number", + "description": "读起来由人类撰写的正文比例(0-1)。" + }, + "windows": { + "type": "array", + "description": "带原始页面行号范围的被标记段落,以及可选的改写建议。", + "items": { + "type": "object", + "properties": { + "text": { + "type": "string", + "description": "被标记段落在页面中的原文。" + }, + "label": { + "type": "string", + "description": "段落级别的判定(例如 `AI` 或 `AI-Assisted`)。" + }, + "aiAssistanceScore": { + "type": "number", + "description": "表示该段落 AI 撰写程度的评分(0-1)。" + }, + "confidence": { + "oneOf": [ + { "type": "string" }, + { "type": "number" } + ], + "description": "检测器对该段落的置信度。" + }, + "startLine": { + "type": "integer", + "description": "段落在原始页面中的起始行号(从 1 开始)。" + }, + "endLine": { + "type": "integer", + "description": "段落在原始页面中的结束行号(从 1 开始)。" + }, + "rewrites": { + "type": "array", + "description": "可选的人类风格改写候选。", + "items": { + "type": "object", + "properties": { + "text": { + "type": "string", + "description": "建议的替换文本。" + }, + "rationale": { + "type": "string", + "description": "对为何该改写更像人类风格的简短说明。" + } + } + } + } + } + } + }, + "creditsCharged": { + "type": "integer", + "description": "本次请求扣除的 AI 额度。已评分的页面为 `1`,被跳过的页面为 `0`。" + } + } + }, + { + "type": "object", + "description": "当页面未评分而被跳过时的响应结构。", + "properties": { + "path": { "type": "string" }, + "skipped": { + "type": "string", + "description": "页面被跳过的原因(例如 `too_short`)。" + }, + "creditsCharged": { + "type": "integer", + "description": "对于被跳过的页面始终为 `0`。" + } + } + } + ] + } + } + } + }, + "400": { + "description": "请求体无效。`path` 和 `content` 字段为必填项。", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "402": { + "description": "你的组织 AI 额度已用尽。请充值额度或升级套餐后重试。", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "429": { + "description": "超出速率限制。", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + }, + "503": { + "description": "类 AI 文本检测服务或额度服务暂时不可用。不会扣除任何额度。请使用退避策略重试。", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Error" + } + } + } + } + } + } + }, "/v2/agent/{projectId}/job": { "post": { "summary": "创建代理任务",