EraseText
un eliminador de texto AI especializado para fotos y gráficos
Documentación
El mismo modelo especializado de borrado de texto que All text y Select en el editor. Autentícate con una clave API desde Account → Developer. Las llamadas consumen créditos API prepagados (escalera abajo) o los créditos mensuales de un plan en Pricing.
URL base
https://api.erasetext.com/v1
Cada ruta a continuación es relativa a esta base. Solo HTTPS. OpenAPI: /openapi.json.
Autenticación
X-Api-Key: et_…
Crear tu primera clave otorga una prueba única de 50 créditos API — 50 llamadas, sin tarjeta. Después, una clave gasta primero tus créditos API prepagados y luego los créditos mensuales del plan.
Demos en navegador / HTML
Una página web debe llamar a la API HTTP, no a MCP JSON-RPC. MCP es para entornos de agentes (Cursor, Claude Desktop). Desde un navegador, POST multipart FormData con el campo image_file o image. CORS está abierto — sin proxy. La autenticación puede ser X-Api-Key o Authorization: Bearer et_…. Playground funcional: api.erasetext.com/demo.
const body = new FormData();
body.append("image_file", file); // a File from <input type="file">
const res = await fetch("https://api.erasetext.com/v1/erase", {
method: "POST",
headers: { "X-Api-Key": "et_…" },
body,
});
const blob = await res.blob();
// Loose alias AIs often generate — JSON { output_url } data URL for <img>
// POST https://erasetext.com/api/mcp/erase (also api.erasetext.com/api/mcp/erase)
MCP
Los agentes pueden llamar a la misma ruta de borrado a través de MCP. El servidor es Streamable HTTP en https://api.erasetext.com/mcp. Envía el mismo X-Api-Key (o Authorization: Bearer et_…). erase_text gasta 1 crédito al tener éxito; get_account, el handshake y el listado de herramientas son gratuitos. Los fallos no se cobran.
{
"mcpServers": {
"erasetext": {
"url": "https://api.erasetext.com/mcp",
"headers": { "X-Api-Key": "et_…" }
}
}
}
Cursor, Claude Desktop y otros clientes que hablan MCP remoto con cabeceras funcionan hoy. Los conectores OAuth alojados no están disponibles — usa una clave API. Manifiesto: /.well-known/mcp.json.
Cuánto cuesta una llamada
Cada /erase exitoso gasta 1 crédito — un precio fijo, sin importar el tamaño de la imagen o el formato de salida. Los fallos no se cobran, y tampoco GET /account.
POST /erase
Multipart o JSON. Devuelve bytes de imagen por defecto.
image_fileoimage_url— obligatoriomask_file/mask_url— opcional; omítelo para detección de todo el textoformat=webp|png|jpg— webp por defectoresolution— objetivo de borde corto para el modelo, limitado a 256–1024, 512 por defectopaste_back—truepor defecto; conserva los píxeles originales fuera del área borradareturn_boxes=1— cuadriláteros OCR enX-Ocr-Boxes. Solo se aplica cuando no envías máscara, ya que es cuando se ejecuta la detecciónresponse=json— devuelve JSON con base64 en lugar de bytes sin procesar
Polaridad de la máscara: el blanco (cualquier valor de canal superior a 127) marca qué borrar, el negro conserva. Envíala con la misma relación de aspecto que la imagen. Omite la máscara y la detección construye una para cada texto que encuentre.
curl -X POST \
-H "X-Api-Key: et_…" \
-F "[email protected]" \
"https://api.erasetext.com/v1/erase" \
-o out.webp
El cuerpo JSON acepta las mismas banderas pero diferentes campos de imagen — image_url o image_file_b64 (y mask_url / mask_file_b64):
curl -X POST \
-H "X-Api-Key: et_…" \
-H "Content-Type: application/json" \
-d '{"image_url":"https://…/photo.jpg","response":"json"}' \
"https://api.erasetext.com/v1/erase"
Respuesta
Bytes de imagen sin procesar con el Content-Type correspondiente, más estas cabeceras:
X-Credits-Charged— siempre 1 al tener éxitoX-Credits-Remaining— saldo de API y web después de la llamadaX-RateLimit-Limit,X-RateLimit-Remaining,X-RateLimit-Reset(segundos Unix)X-Ocr-Boxes— cuadriláteros JSON, solo conreturn_boxes=1
Con response=json el cuerpo lleva la misma información en su lugar:
{
"image_base64": "…",
"content_type": "image/webp",
"credits_charged": 1,
"credits_remaining": 199,
"ocr_boxes": null
}
GET /account
curl -H "X-Api-Key: et_…" \
"https://api.erasetext.com/v1/account"
Devuelve los saldos de API y web, tu plan y el recuento de llamadas y créditos gastados de este mes UTC. Nunca gasta un crédito, así que es seguro consultarlo antes de un lote.
Límites de velocidad
Se cuentan por clave API en una ventana deslizante de 60 segundos. Las solicitudes que superan el límite devuelven 429 con Retry-After; el límite sigue el plan de la cuenta propietaria de la clave, y los créditos prepagados no lo aumentan.
| Plan | Solicitudes / minuto |
|---|---|
| Gratis | 6 |
| Lite | 30 |
| Pro | 120 |
| Volume+ | 300 |
¿Necesitas más rendimiento que Volume+? Háblanos.
Límites y tiempos
- La imagen y la máscara deben tener entre 32 bytes y 25 MB, ya sea subidas o obtenidas desde una URL. JPEG, PNG y WebP son los formatos de entrada seguros.
/erasees síncrono: mantiene la conexión hasta que la imagen está lista. Permite hasta 90 segundos — pasado ese tiempo obtienes504y no se te cobra. Aún no hay modo de callback ni de sondeo, así que establece un tiempo de espera del cliente superior a 90s y reintenta toda la llamada.- Una llamada típica tarda unos segundos; un arranque en frío del modelo es el caso lento que cubre el tiempo de espera. La concurrencia está limitada por tu límite de velocidad, así que reparte un lote a lo largo del minuto en lugar de dispararlo todo a la vez.
- Nada de lo que envíes se guarda en la ruta de API — los bytes se procesan en vuelo y el resultado se devuelve en la respuesta. Solo el editor web almacena subidas, y esas caducan después de una hora.
- El prefijo
/v1es el contrato: los campos solo se añaden, nunca se eliminan ni se cambian de tipo. Los cambios disruptivos se publicarían con un prefijo nuevo.
Starter
Prueba la API a tarifas de volumen.
$26
1.200 créditos API · nunca caducan
$0.022 / crédito
Growth
Pipelines de catálogo estables.
$66
5.000 créditos API · nunca caducan
$0.013 / crédito
Scale
Equipos de producto y medios.
$199
20.000 créditos API · nunca caducan
$0.010 / crédito
Paquete de volumen
Precio unitario más bajo.
$666
100.000 créditos API · nunca caducan
$0.007 / crédito
¿Usas más de 100.000 créditos al mes? Háblanos para una tarifa dedicada.
Errores
Cada fallo tiene forma JSON { "error": "…", "code": "…" }. Ramifica según code, no según el texto. Algunos códigos añaden campos — 402 lleva required y balance, 429 lleva retryAfter.
| Estado | código | Cuándo |
|---|---|---|
| 400 | bad_request | Sin imagen, base64 ilegible, Content-Type incorrecto, archivo fuera de los límites de tamaño, URL no obtenible o parámetro retirado (size, engine) |
| 401 | invalid_api_key | Clave faltante, desconocida o revocada |
| 402 | insufficient_credits | El saldo de API y web juntos no pueden cubrir la llamada |
| 404 | not_found | Ruta desconocida |
| 405 | method_not_allowed | Ruta correcta, método incorrecto — /erase es solo POST |
| 429 | rate_limit | Superado el límite de solicitudes por minuto por clave |
| 429 | busy | El backend de borrado está saturado, no tú — retrocede y reintenta |
| 500 | internal | Fallo inesperado — seguro reintentar una vez |
| 502 | erase_failed | El modelo rechazó o falló el trabajo — no se cobra |
| 503 | misconfigured | Problema de configuración del servidor; reintentar no ayudará |
| 504 | timeout | El modelo no terminó en 90s — no se cobra, reintenta |