# Una alternativa a Perspective API que se cambia sin reescribir nada

> Perspective API cierra el 31 de diciembre de 2026. VigiMod responde a las mismas peticiones comments:analyze: cambia el host y la clave y conserva tu código. Gratis durante la beta, 26 idiomas.

Source: https://www.vigimod.com/es/perspective-api-alternative · VigiMod (https://www.vigimod.com) · 2026-11-15

Perspective API de Google deja de responder el 31 de diciembre de 2026. VigiMod responde a las mismas peticiones en la misma ruta: cambia el host y la clave, y tu código, plugin o script sigue funcionando. Gratis durante la beta, entrenado en 26 idiomas.

## Cambia el host y la clave, nada más

La misma ruta (/v1alpha1/comments:analyze), el mismo JSON de entrada y salida, la clave en ?key= como antes (o en la cabecera X-API-Key).

### Antes: Perspective API

```python
import requests

r = requests.post(
    "https://commentanalyzer.googleapis.com/v1alpha1/comments:analyze",
    params={"key": PERSPECTIVE_KEY},
    json={
        "comment": {"text": message},
        "languages": ["it"],
        "requestedAttributes": {"TOXICITY": {}, "INSULT": {}, "THREAT": {}},
    },
)
scores = {k: v["summaryScore"]["value"] for k, v in r.json()["attributeScores"].items()}
flagged = scores["TOXICITY"] >= 0.8
```

### Después: VigiMod

```python
import requests

r = requests.post(
    "https://api.vigimod.com/v1alpha1/comments:analyze",   # the only changes:
    params={"key": VIGIMOD_KEY},            # host and key
    json={
        "comment": {"text": message},
        "languages": ["it"],
        "requestedAttributes": {"TOXICITY": {}, "INSULT": {}, "THREAT": {}},
    },
)
scores = {k: v["summaryScore"]["value"] for k, v in r.json()["attributeScores"].items()}
flagged = scores["TOXICITY"] >= 0.8
```

### curl

```bash
curl -s "https://api.vigimod.com/v1alpha1/comments:analyze?key=$VIGIMOD_KEY" \
  -H "Content-Type: application/json" \
  -d '{"comment": {"text": "sei proprio un idiota"},
       "requestedAttributes": {"TOXICITY": {}, "SEVERE_TOXICITY": {}}}'

# {"attributeScores": {
#    "TOXICITY": {"summaryScore": {"value": 1.0, "type": "PROBABILITY"}},
#    "SEVERE_TOXICITY": {"summaryScore": {"value": 0.6, "type": "PROBABILITY"}}}}
# an insult: toxic, but not hate or a threat, so not severe
```

### Node.js

```js
const r = await fetch(
  `https://api.vigimod.com/v1alpha1/comments:analyze?key=${process.env.VIGIMOD_KEY}`,
  {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify({
      comment: { text: message },
      requestedAttributes: { TOXICITY: {}, PROFANITY: {} },
    }),
  },
);
const { attributeScores } = await r.json();
const toxicity = attributeScores.TOXICITY.summaryScore.value;
```

## Herramientas basadas en Perspective

### Coral

Admin → Configure → Moderation → filtro de comentarios tóxicos de Perspective: pon como endpoint https://api.vigimod.com/v1alpha1 y como clave tu clave de VigiMod. Sube el timeout a 3000 ms: si la respuesta llega tarde, Coral publica el comentario sin puntuación.

### Discourse

El plugin oficial de Perspective llama directamente al host de Google y no tiene un ajuste para cambiarlo: en tu copia del plugin sustituye commentanalyzer.googleapis.com por api.vigimod.com y pon tu clave de VigiMod en perspective_google_api_key.

### Drupal, WordPress y tus propios scripts

Funciona cualquier módulo o script que permita configurar la URL de Perspective: usa https://api.vigimod.com/v1alpha1/comments:analyze con tu clave de VigiMod. Si la URL está escrita en el código, es una línea que cambiar.

## Cómo se calcula cada atributo de Perspective

| Atributo de Perspective | VigiMod usa | Nota |
|---|---|---|
| TOXICITY | toxic | Mensajes groseros, irrespetuosos o agresivos, incluidos insultos, odio y amenazas. |
| SEVERE_TOXICITY | hate, threat, toxic (como máximo 0,6) | Odio y amenazas; un mensaje solo grosero se queda por debajo de 0,7. |
| IDENTITY_ATTACK | hate | Ataques a personas por lo que son. |
| INSULT | insult | Insultos dirigidos a una persona. |
| THREAT | threat | Amenazas de violencia o daño. |
| SEXUALLY_EXPLICIT | sexual | Contenido sexual. |
| PROFANITY | regla integrada | Palabrotas y lenguaje vulgar, en cualquier idioma (también se acepta OBSCENE). |
| FLIRTATION | regla integrada | Coqueteo e insinuaciones sexuales (experimental en Perspective). |
| SPAM | advertising | Publicidad no solicitada. |
| Otros | — | ATTACK_ON_AUTHOR, INCOHERENT, INFLAMMATORY, LIKELY_TO_REJECT, UNSUBSTANTIAL y los atributos bridging devuelven un error 400 que los nombra. |

## Qué saber antes de cambiar

- Las puntuaciones vienen del modelo de VigiMod, no del de Perspective. Están reescaladas para que 0,7 sea el umbral ajustado de VigiMod para cada atributo: los umbrales entre 0,7 y 0,9 se comportan de forma sensata, pero comprueba los tuyos con unos días de mensajes reales.
- Un atributo que VigiMod no calcula da un error 400 explícito, nunca un número inventado. Se aceptan los nombres _EXPERIMENTAL.
- Se usa context.entries: los mensajes anteriores cambian las puntuaciones, así que respuestas, bromas y citas se leen con lo que vino antes.
- Los comentarios de más de 1.000 caracteres se puntúan por partes, hasta 10.000 caracteres; cada parte cuenta como un mensaje para el límite de frecuencia y spanScores da la puntuación de cada parte.
- No se guarda nada: los comentarios se puntúan y se descartan, y comments:suggestscore se acepta pero sus puntuaciones no se conservan.
- Se aceptan todos los idiomas: el modelo se entrenó en 26 y funciona mejor en inglés, italiano, español, francés, alemán y portugués.

## Cuando quieras más que Perspective

El endpoint compatible es el cambio rápido. El endpoint nativo /moderate, con la misma clave, añade:

- Reglas propias en lenguaje natural, como “Prohibido vender cuentas”, cada una con su puntuación.
- Puntuaciones de autolesión, publicidad y spam por usuario, y listas de insultos discriminatorios por categoría.
- Políticas creadas en el panel, con acciones si/entonces (borrar, timeout, ban), cola de revisión y webhooks.
- La misma privacidad: los mensajes se revisan y se descartan, no se usan para entrenar modelos.

## Migra en tres pasos

1. Crea una cuenta gratuita y una clave de API.
2. Sustituye commentanalyzer.googleapis.com por api.vigimod.com, y tu clave de Perspective por la de VigiMod.
3. Observa unos días de mensajes reales y ajusta los umbrales si hace falta.

## Preguntas

### ¿Cuándo deja de funcionar Perspective API?

Según el aviso de Jigsaw, no acepta nuevas solicitudes de acceso desde febrero de 2026 y sigue respondiendo a los usuarios existentes hasta el 31 de diciembre de 2026.

### ¿Perspective API es gratis?

Era gratuita, con una cuota por proyecto. Después del 31 de diciembre de 2026 deja de responder a todos, así que un plan gratuito ya no sirve. VigiMod es gratis durante la beta.

### ¿Qué ha sustituido a Perspective API?

Google no ha lanzado un sucesor directo. VigiMod responde a las mismas peticiones comments:analyze, así que el código hecho para Perspective sigue funcionando con un nuevo host y una nueva clave.

### ¿Tengo que cambiar mi código?

Solo el host y la clave. La petición y la respuesta tienen la misma forma; un atributo que VigiMod no calcula devuelve un error 400 que lo nombra.

### ¿Las puntuaciones son las mismas que las de Perspective?

Ningún modelo da los mismos números. Ambos devuelven una probabilidad de 0 a 1 por atributo, y las de VigiMod están reescaladas para que 0,7 sea su umbral. Comprueba tus umbrales con tus propios mensajes.

### ¿Qué idiomas admite?

Se entrenó en 26 idiomas y funciona mejor en inglés, italiano, español, francés, alemán y portugués. Se acepta cualquier código de idioma.

### ¿VigiMod es gratis?

Sí, durante la beta: todas las funciones, 120 mensajes por minuto por clave, hasta 10 claves.

Documentation: https://www.vigimod.com/en/docs#perspective · Benchmark: https://www.vigimod.com/en/benchmark · Support: support@vigimod.com
