No hay clave de API. Sin cuenta. No hay registro. Un POST con una imagen, y el cuerpo de respuesta es el PNG transparente terminado. Nada para registrarse y nada para esperar.
Última actualización: 1 de septiembre de 2026
Este es el mismo motor Sitio web de BGNinja se ejecuta, expuesto directamente sobre HTTP. Es libre de llamar dentro de los límites de abajo. Usted no necesita pedirnos acceso y no hay clave para rotar.
curl -s -o output.png \
-F "[email protected]" \
https://bgninja.com/api/remove
Eso es todo. output.png es su imagen con el fondo eliminado y un canal alfa donde el fondo solía ser.
| Método | POST |
|---|---|
| URL | https://bgninja.com/api/remove |
| Cuerpo | multipart/form-data |
| Autenticación | Ninguno |
| Nombre | Obligatorio | Función |
|---|---|---|
file | sí | La imagen. PNG, JPG, WEBP o HEIC. |
bg | no | Color hex sin el #Por ejemplo ffffff. Componga el corte sobre ese color plano en lugar de dejarlo transparente. Déjalo fuera por transparencia. |
src | no | Una etiqueta identificando su aplicación, por ejemplo my-plugin. Hasta 32 caracteres, letras, dígitos e hifénes. Sólo nos ayuda a ver qué integraciones se están utilizando. Cualquier otra cosa es ignorada. |
En el éxito se obtiene HTTP 200 y los bytes crudos de un PNG, con Content-Type: image/png. La llamada es sincrónica: no hay trabajo id, ninguna cola y nada que hacer. Escribe el cuerpo directamente a un archivo o dáselo a tu biblioteca de imágenes.
| Tamaño máximo de archivo | 99 MB |
|---|---|
| Resolución máxima | 30 megapíxeles |
| Ejecuciones simultáneas | 2 por dirección IP |
| Solicitudes por día | 10 gratis, se reinicia a medianoche |
Estos límites son reales y se aplican. No hay un nivel ilimitado oculto, y el resultado gratuito es la imagen en resolución completa en lugar de una vista previa reducida.
Un error vuelve como JSON con un solo error llave, no como imagen. Compruebe el código de estado antes de escribir el cuerpo a un archivo.
| Estado | Significado |
|---|---|
400 | El archivo no es una imagen que podamos leer. Formato incorrecto o los bytes están dañados. |
413 | Demasiado grande. O bien, supera los 99 MB, o tiene más de 30 megapíxeles. |
422 | No. file campo en la solicitud en absoluto. |
429 | Ya tiene dos solicitudes en curso desde esta dirección. Espere a que termine una y vuelva a intentarlo. |
$ curl -s -F "[email protected]" https://bgninja.com/api/remove
{"error":"can't read this file (TXT) — please upload a photo (JPG, PNG, WEBP, HEIC)."}
Debido a que el límite es en cuántos corren a la vez y no en un total diario, la manera correcta de manejar 429 es reiniciar la misma imagen poco después, para no retroceder por el resto del día.
import requests
with open("input.jpg", "rb") as f:
r = requests.post(
"https://bgninja.com/api/remove",
files={"file": f},
data={"src": "my-app"},
timeout=120,
)
r.raise_for_status()
open("output.png", "wb").write(r.content)
import { readFile, writeFile } from "node:fs/promises";
const body = new FormData();
body.append("file", new Blob([await readFile("input.jpg")]), "input.jpg");
body.append("src", "my-app");
const r = await fetch("https://bgninja.com/api/remove", { method: "POST", body });
if (!r.ok) throw new Error(`HTTP ${r.status}`);
await writeFile("output.png", Buffer.from(await r.arrayBuffer()));
curl -s -o output.png \
-F "[email protected]" \
-F "bg=ffffff" \
https://bgninja.com/api/remove
Se procesa en la memoria y se transmite directamente. No se guarda nada en el disco, por lo que no hay una copia almacenada en algún lugar esperando a ser eliminada o filtrada. Mantenemos un registro de la cantidad de solicitudes que recibimos y su tamaño, pero no de nada que identifique la imagen en sí.
Puede utilizar esto como base, incluso en algo por lo que cobre. Le pedimos dos cosas, aunque no las exigimos:
src etiqueta para que podamos ver que existe una integración y evitar romperla.Si estás a punto de enviar un volumen serio a través de él, di hola en el página de contacto primero. Preferiríamos oír de ti que golpearte.
No. No hay clave, ni cuenta, ni necesidad de registrarse. El punto final está abierto.
Sí, dentro de los límites anteriores. No es un ensayo y no hay tarjeta que añadir. El opcional paso eleva los límites en el sitio web; los límites de API enumerados aquí se aplican a todos.
10 solicitudes al día en el nivel libre, reasentando a medianoche. El único otro límite es dos solicitudes que se ejecutan al mismo tiempo por dirección IP.
Hoy no. El punto final devuelve el PNG compuesto. Si necesitas la máscara por su cuenta, díganos en página de contacto y lo veremos.
Es el mismo punto final que utiliza nuestro propio sitio web, por lo que no desaparecerá repentinamente. Si la estructura de la solicitud alguna vez tiene que cambiar, la forma anterior seguirá funcionando en paralelo.
Sí, dentro de los límites publicados: 99 MB y 30 megapíxeles por imagen, y dos solicitudes simultáneas por dirección IP. No hay período de prueba ni necesidad de tarjeta de crédito.
No. La llamada es síncrona; el cuerpo de la respuesta HTTP es la imagen PNG finalizada. No hay ningún ID de trabajo ni nada que consultar.
Se introducen archivos PNG, JPG, WEBP y HEIC. Se obtiene un archivo PNG con un canal alfa o un fondo plano si se introduce un color hexadecimal en el parámetro bg.
Se procesa en la memoria y se transmite directamente. No se guarda nada en el disco, por lo que no hay ninguna copia almacenada que eliminar.
La tercera solicitud que se ejecuta al mismo tiempo desde una misma dirección IP recibe un código de error HTTP 429. Espere a que finalice una de las solicitudes en curso y vuelva a intentarlo; el límite se aplica a la concurrencia, no al total diario.
Los términos de uso están en términos página, y lo que hacemos con los datos es en página de privacidad.