# Detectar prosa que suena a IA (/es/api/admin/deslop)

<!-- agent-signals: reading_time_min: 4 · est_tokens: 2269 · updated: 2026-07-30 -->
Related: [Activar automatización](/es/api/automations/trigger.md), [Crear mensaje de assistant](/es/api/assistant/create-assistant-message-v2.md)

Este endpoint analiza una página de documentación en busca de prosa generada por IA y devuelve los pasajes marcados con reescrituras humanas sugeridas.

Autentícate con una [clave de API de administrador](/es/api/introduction#admin-api-key).

<div id="credits">
  ## Créditos [#créditos]
</div>

* Consume 1 crédito de IA por página comprobada.
* Las páginas con menos de 50 palabras se omiten y no se cobran. La respuesta devuelve `skipped: "too_short"` con `creditsCharged: 0`.
* Si la detección no está disponible temporalmente, el endpoint devuelve `503` y no se cobra ningún crédito.
* El endpoint acepta hasta 30 solicitudes por minuto por dirección IP del cliente.

<div id="response">
  ## Respuesta [#respuesta]
</div>

Las páginas comprobadas devuelven un veredicto (`predictionShort`), fracciones de IA y humana, y un arreglo `windows` de pasajes marcados. Cada window incluye un rango de líneas y puede incluir de una a tres reescrituras sugeridas.

<div id="usage">
  ## Uso [#uso]
</div>

```bash
curl -X POST https://api.mintlify.com/v1/deslop/{projectId} \
  -H "Authorization: Bearer mint_xxxxx" \
  -H "Content-Type: application/json" \
  -d '{
    "path": "guides/quickstart.mdx",
    "content": "# Quickstart\n\nWelcome to our comprehensive documentation..."
  }'
```

`POST /v1/deslop/{projectId}`

Analiza una página en busca de prosa generada por IA y devuelve los pasajes marcados con reescrituras sugeridas. Consume un crédito de IA por página comprobada. Omite las páginas con menos de 50 palabras. Limitado a 30 solicitudes por minuto por dirección IP del cliente.

## OpenAPI

```json
{
  "security": [
    {
      "bearerAuth": []
    }
  ],
  "parameters": [
    {
      "name": "projectId",
      "in": "path",
      "required": true,
      "schema": {
        "type": "string"
      },
      "description": "El ID de tu proyecto. Se puede copiar desde la página de [claves de API](https://app.mintlify.com/settings/organization/api-keys) en tu panel de control."
    }
  ],
  "requestBody": {
    "required": true,
    "content": {
      "application/json": {
        "schema": {
          "type": "object",
          "required": [
            "path",
            "content"
          ],
          "properties": {
            "path": {
              "type": "string",
              "minLength": 1,
              "description": "Ruta de la página relativa al repositorio, utilizada solo para informes."
            },
            "content": {
              "type": "string",
              "maxLength": 1000000,
              "description": "El contenido MDX o Markdown sin procesar de la página que se va a comprobar."
            }
          }
        }
      }
    }
  },
  "responses": {
    "200": {
      "description": "La página se comprobó, o se omitió porque era demasiado corta.",
      "content": {
        "application/json": {
          "schema": {
            "type": "object",
            "required": [
              "path",
              "skipped",
              "creditsCharged"
            ],
            "properties": {
              "path": {
                "type": "string",
                "description": "La ruta proveniente de la solicitud."
              },
              "skipped": {
                "type": "string",
                "nullable": true,
                "enum": [
                  "too_short",
                  null
                ],
                "description": "Motivo por el que se omitió la página, o null cuando la página se comprobó. `too_short` significa que la página tenía menos de 50 palabras de prosa y no se cobró."
              },
              "predictionShort": {
                "type": "string",
                "enum": [
                  "AI",
                  "AI-Assisted",
                  "Human",
                  "Mixed"
                ],
                "description": "Veredicto general de la página. Presente solo cuando la página se comprobó."
              },
              "fractionAi": {
                "type": "number",
                "description": "Fracción de la página detectada como generada por IA (0-1)."
              },
              "fractionAiAssisted": {
                "type": "number",
                "description": "Fracción detectada como asistida por IA (0-1)."
              },
              "fractionHuman": {
                "type": "number",
                "description": "Fracción detectada como escrita por humanos (0-1)."
              },
              "windows": {
                "type": "array",
                "description": "Pasajes marcados (no humanos). Presente solo cuando la página se comprobó.",
                "items": {
                  "type": "object",
                  "required": [
                    "text",
                    "label",
                    "aiAssistanceScore",
                    "startLine",
                    "endLine"
                  ],
                  "properties": {
                    "text": {
                      "type": "string",
                      "description": "El texto del pasaje marcado."
                    },
                    "label": {
                      "type": "string",
                      "description": "Etiqueta de detección para el pasaje, por ejemplo `AI-Generated`."
                    },
                    "aiAssistanceScore": {
                      "type": "number",
                      "description": "Puntuación de asistencia por IA para el pasaje (0-1)."
                    },
                    "confidence": {
                      "description": "Confianza de la detección, devuelta como una etiqueta como `High` o un valor numérico.",
                      "oneOf": [
                        {
                          "type": "string"
                        },
                        {
                          "type": "number"
                        }
                      ]
                    },
                    "startLine": {
                      "type": "integer",
                      "description": "Línea de inicio del pasaje en el contenido original (índice basado en 1)."
                    },
                    "endLine": {
                      "type": "integer",
                      "description": "Línea final del pasaje en el contenido original (índice basado en 1)."
                    },
                    "rewrites": {
                      "type": "array",
                      "description": "Reescrituras humanas sugeridas del pasaje.",
                      "items": {
                        "type": "object",
                        "required": [
                          "text",
                          "rationale"
                        ],
                        "properties": {
                          "text": {
                            "type": "string",
                            "description": "El pasaje reescrito."
                          },
                          "rationale": {
                            "type": "string",
                            "description": "Por qué la reescritura suena más humana."
                          }
                        }
                      }
                    }
                  }
                }
              },
              "creditsCharged": {
                "type": "integer",
                "description": "Créditos de IA cobrados por esta solicitud (0 cuando se omite)."
              }
            }
          }
        }
      }
    },
    "400": {
      "description": "Cuerpo de la solicitud no válido.",
      "content": {
        "application/json": {
          "schema": {
            "type": "object",
            "properties": {
              "error": {
                "type": "string",
                "description": "Mensaje de error."
              }
            }
          }
        }
      }
    },
    "402": {
      "description": "Créditos de IA insuficientes.",
      "content": {
        "application/json": {
          "schema": {
            "type": "object",
            "properties": {
              "error": {
                "type": "string",
                "description": "Mensaje de error."
              }
            }
          }
        }
      }
    },
    "429": {
      "description": "Se ha superado el límite de tasa.",
      "content": {
        "text/plain": {
          "schema": {
            "type": "string",
            "example": "Demasiadas solicitudes, inténtalo de nuevo más tarde."
          }
        }
      }
    },
    "500": {
      "description": "Se produjo un error inesperado al procesar la página."
    },
    "503": {
      "description": "La detección no está disponible temporalmente. No se cobra ningún crédito.",
      "content": {
        "application/json": {
          "schema": {
            "type": "object",
            "properties": {
              "error": {
                "type": "string",
                "description": "Mensaje de error."
              }
            }
          }
        }
      }
    }
  }
}
```
