# Sube un archivo con los ajustes por defecto del servidor (URL 6 caracteres)
curl -X POST https://evogb.win/api/upload \
-F "file=@/ruta/a/tu/archivo.zip"{
"success": true,
"id": "aB3dEf",
"url": "https://files.evogb.win/aB3dEf.zip",
"name": "archivo.zip",
"extension": "zip",
"mime_type": "application/zip",
"type": "archive",
"size": "5.40 MB",
"size_bytes": 5662310,
"author": "Anónimo",
"description": "",
"protected": false,
"created_at": "2026-07-24T02:07:00.000Z",
"expires_at": null
}# Sube un archivo con auto-eliminación en 24 horas y ruta simulada
curl -X POST https://evogb.win/api/upload \
-F "file=@/ruta/a/tu/imagen.png" \
-F "urlMode=custom_path" \
-F "customPathName=app/assets" \
-F "author=MiAppBackup" \
-F "expireValue=1" \
-F "expireUnit=day"{
"success": true,
"id": "app/assets/imagen.png",
"url": "https://files.evogb.win/app/assets/imagen.png",
"name": "imagen.png",
"extension": "png",
"mime_type": "image/png",
"type": "image",
"size": "2.10 MB",
"size_bytes": 2202009,
"author": "MiAppBackup",
"description": "Backup de base de datos",
"protected": false,
"created_at": "2026-07-24T02:07:00.000Z",
"expires_at": "2026-07-25T02:07:00.000Z"
}async function uploadFile(fileInput) {
const formData = new FormData();
formData.append('file', fileInput.files[0]);
formData.append('urlMode', 'custom_name');
formData.append('author', 'UsuarioWeb');
try {
const response = await fetch('https://evogb.win/api/upload', {
method: 'POST',
body: formData
});
const data = await response.json();
if (data.success) console.log('✅ URL:', data.url);
} catch (err) {
console.error('❌ Error:', err);
}
}{
"success": true,
"id": "foto_perfil.jpg",
"url": "https://files.evogb.win/foto_perfil.jpg",
"name": "foto_perfil.jpg",
"extension": "jpg",
"mime_type": "image/jpeg",
"type": "image",
"size": "1.50 MB",
"size_bytes": 1572864,
"author": "UsuarioWeb",
"description": "",
"protected": false,
"created_at": "2026-07-24T02:07:00.000Z",
"expires_at": null
}async function uploadFromUrl(imageUrl) {
try {
const response = await fetch('https://evogb.win/api/upload', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
url: imageUrl,
author: 'UsuarioWeb'
})
});
const data = await response.json();
if (data.success) console.log('✅ URL:', data.url);
} catch (err) {
console.error('❌ Error:', err);
}
}{
"success": true,
"id": "url_imagen.png",
"url": "https://files.evogb.win/url_imagen.png",
"name": "imagen.png",
"extension": "png",
"mime_type": "image/png",
"type": "image",
"size": "1.20 MB",
"size_bytes": 1258291,
"author": "UsuarioWeb",
"description": "",
"protected": false,
"created_at": "2026-07-24T02:07:00.000Z",
"expires_at": null
}const axios = require('axios');
const FormData = require('form-data');
const fs = require('fs');
async function uploadToCDN(filePath) {
const form = new FormData();
form.append('file', fs.createReadStream(filePath));
form.append('urlMode', 'default');
const response = await axios.post('https://evogb.win/api/upload', form, {
headers: form.getHeaders()
});
return response.data.url;
}{
"success": true,
"id": "x8Yj2k.pdf",
"url": "https://files.evogb.win/x8Yj2k.pdf",
"name": "reporte_mensual.pdf",
"extension": "pdf",
"mime_type": "application/pdf",
"type": "document",
"size": "3.50 MB",
"size_bytes": 3670016,
"author": "Anónimo",
"description": "",
"protected": false,
"created_at": "2026-07-24T02:07:00.000Z",
"expires_at": null
}import requests
def upload_file(file_path):
url = "https://evogb.win/api/upload"
with open(file_path, 'rb') as f:
files = {'file': f}
data = {
'urlMode': 'custom_length',
'customLength': 10
}
response = requests.post(url, files=files, data=data)
if response.status_code == 200:
print("✅ URL:", response.json().get('url')){
"success": true,
"id": "L1nK9zQwEr.docx",
"url": "https://files.evogb.win/L1nK9zQwEr.docx",
"name": "documento_final.docx",
"extension": "docx",
"mime_type": "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
"type": "document",
"size": "1.15 MB",
"size_bytes": 1205862,
"author": "Anónimo",
"description": "",
"protected": false,
"created_at": "2026-07-24T02:07:00.000Z",
"expires_at": null
}FormData, puedes enviar cualquiera de estos parámetros y la API aplicará tus reglas de expiración, contraseñas, rutas y descripciones de forma nativa.| Key | Tipo | Requerido | Descripción y Reglas |
|---|---|---|---|
| file | File/Blob | Sí* | Archivo físico a subir. Requerido si no usas url.Límite: Máx. capacidad del server (1 GB) por archivo. |
| url | String | Sí* | URL remota para que el server la descargue e importe. Útil si quieres subir archivos directamente usando enlaces de internet. Ejemplo: https://dominio.com/img.png |
| urlMode | String | No | Define el formato del enlace final generado. Valores soportados: • default: Genera un ID aleatorio rápido de 6 caracteres.• custom_length: Genera un ID aleatorio del tamaño que indiques usando el parámetro customLength (Mínimo: 6, Máximo: 30 caracteres).• custom_name: Conserva el nombre original del archivo en la URL (los espacios en blanco se reemplazarán por guiones bajos _).• custom_path: Crea una estructura de directorios virtuales usando el parámetro customPathName. Usa el símbolo / para anidar carpetas. Permite un máximo de 7 subniveles (Ej: assets/2026/fotos/).Defecto: default |
| customLength | Number | No | Longitud del ID aleatorio. Aplica si urlMode es custom_length.Rango: 6 a 30. Defecto: 6. Ejemplo: 12 |
| charType | String | No | Filtro de caracteres para generar el ID aleatorio. Aplica únicamente cuando el enlace se genera automáticamente (modos default o custom_length).Valores soportados: • alphanumeric: Mezcla letras (mayúsculas y minúsculas) y números (Ej: aB3dEf).• letters: Usa únicamente letras (Ej: AbCdEf).• numbers: Usa únicamente números (Ej: 123456).Defecto: alphanumeric |
| customPathName | String | No | Ruta virtual anidada. Aplica si urlMode es custom_path.Límite: Máx 7 subniveles. Ejemplo: assets/2026/ |
| author | String | No | Nombre del creador o firma de tu aplicación/bot. Límite: Máx 50 caracteres. Defecto: Anónimo |
| description | String | No | Comentario o nota descriptiva adjunta al archivo. Límite: Máx 1500 caracteres. |
| expireValue | Number | No | Cantidad de tiempo que el archivo estará disponible (TTL) antes de ser eliminado automáticamente de los servidores. Reglas de uso: • Este valor es solo la cantidad; la unidad de tiempo se define en el parámetro expireUnit (minutos, días, meses, años).• Si envías 0 (o no envías el parámetro), el archivo será Permanente y no se borrará nunca.Ejemplo: Para que un archivo dure 15 días, debes enviar expireValue=15 junto con expireUnit=day.Defecto: 0 (Permanente) |
| expireUnit | String | No | Unidad de medida de tiempo que acompaña al parámetro expireValue. Valores soportados: • min: Minutos.• day: Días.• month: Meses (se calcula como bloques de 30 días).• year: Años (se calcula como 365 días).Nota: Este parámetro es ignorado si expireValue se envía como 0 (permanente).Defecto: day |
| password | String | No | Contraseña para asegurar tu archivo. Al enviarla, el acceso público se bloquea instantáneamente. Para descargarlo o leer sus metadatos mediante la API, se deberá proveer esta misma clave (vía Cookie, Parámetro URL o Header oculto). ¡Atención: No existe mecanismo de recuperación! Si olvidas la clave, perderás el acceso al archivo para siempre. Ejemplo: S3cr3t_20%2483! |
| unlockDurationValue | Number | No | Define la duración de la "sesión desbloqueada" en el navegador del usuario final. ¿Cómo funciona? Cuando un usuario ingresa la contraseña correctamente en la web, el servidor le otorga una Cookie de acceso temporal. Este valor define cuántas unidades de tiempo durará esa Cookie antes de caducar y volver a pedirle la contraseña. Ejemplo: Si envías 7, la sesión durará 7 unidades de tiempo (definidas en el parámetro unlockDurationUnit el tiempo).Rango: Mayor o igual a 1. Defecto: 7 |
| unlockDurationUnit | String | No | Unidad de medida de tiempo que acompaña al parámetro unlockDurationValue. Valores soportados: • hour: Horas.• day: Días.• month: Meses.• year: Años.Ejemplo de uso: Si envías unlockDurationValue=12 y unlockDurationUnit=hour, el usuario podrá descargar el archivo las veces que quiera sin ingresar la clave durante 12 horas.Defecto: day |
# Descarga un archivo directamente usando su URL pública
curl -X GET https://evogb.win/htIvGc.webp -o imagen.webp# Obtiene la estructura JSON completa de una carpeta (Evogb Share)
# Usa la ruta /f/ seguida del ID de la carpeta y terminando en /api
curl -X GET https://evogb.win/f/w0sw9o/api{
"success": true,
"data": {
"id": "w0sw9o",
"name": "Archivos del Proyecto Alpha",
"type": "folder",
"protected": false,
"auto_delete": true,
"created_at": "2026-07-24T02:07:00.000Z",
"expires_at": "2026-07-31T02:07:00.000Z",
"file_count": 1,
"folder_count": 1,
"total_items": 2,
"structure": {
"files": [
{
"id": "htIvGc.pdf",
"url": "https://files.evogb.win/htIvGc.pdf",
"name": "presupuesto_2026.pdf",
"extension": "pdf",
"mime_type": "application/pdf",
"type": "document",
"size": "0.10 MB",
"size_bytes": 107456,
"author": "Equipo Finanzas",
"description": "Presupuesto anual aprobado.",
"protected": false,
"created_at": "2026-07-24T02:07:00.000Z",
"expires_at": "2026-07-31T02:07:00.000Z"
}
],
"subfolders": {
"f-1": {
"id": "f-1",
"name": "Recursos Gráficos",
"type": "folder",
"protected": false,
"auto_delete": true,
"created_at": "2026-07-24T02:07:00.000Z",
"expires_at": "2026-07-31T02:07:00.000Z",
"file_count": 1,
"folder_count": 0,
"total_items": 1,
"structure": {
"files": [
{
"id": "0UQNHQ.webp",
"url": "https://files.evogb.win/0UQNHQ.webp",
"name": "banner.webp",
"extension": "webp",
"mime_type": "image/webp",
"type": "image",
"size": "2.11 MB",
"size_bytes": 2212495,
"author": "Diseño UI",
"description": "Banner de marketing.",
"protected": false,
"created_at": "2026-07-24T02:07:00.000Z",
"expires_at": "2026-07-31T02:07:00.000Z"
}
],
"subfolders": {}
}
}
}
}
}
}# Ideal para scripts backend limpios. Se pasa la clave oculta en los headers.
# Aplica para descargar archivos y para leer /api/metadata/
curl -X GET https://evogb.win/aB3dEf.pdf \
-H "x-password: MiClave123" \
-o mi_archivo.pdf# Genial si quieres poner el enlace directo en un botón HTML o usar wget/curl rápido.
curl -X GET "https://evogb.win/aB3dEf.pdf?password=MiClave123" \
-o mi_archivo.pdfasync function getFileMetadata(fileId) {
try {
const response = await fetch(`https://evogb.win/api/metadata/${fileId}`);
const meta = await response.json();
if (meta.success) {
console.log(`Nombre: ${meta.data.name}`);
console.log(`Tamaño: ${meta.data.size}`);
console.log(`Metadata: ${JSON.stringify(meta.data, null, 2)}`);
} else if (meta.protected) {
console.error('Bloqueado:', meta.message);
}
} catch (err) {
console.error('❌ Error:', err);
}
}{
"success": true,
"data": {
"id": "aB3dEf",
"url": "https://files.evogb.win/aB3dEf.pdf",
"name": "documento_importante.pdf",
"extension": "pdf",
"mime_type": "application/pdf",
"type": "document",
"size": "1.95 MB",
"size_bytes": 2048576,
"author": "UsuarioWeb",
"description": "Reporte del proyecto.",
"protected": false,
"created_at": "2026-07-24T02:07:00.000Z",
"expires_at": "2026-07-31T02:07:00.000Z"
}
}# Si el archivo NO tiene contraseña, esto devolverá el JSON completo:
curl -X GET https://evogb.win/api/metadata/aB3dEf.pdf# Si el archivo TIENE contraseña, envíala en el header para revelar sus datos.
curl -X GET https://evogb.win/api/metadata/aB3dEf \
-H "x-password: MiClave123"{
"success": false,
"protected": true,
"isFolder": false,
"message": "Este archivo está protegido. Ingresa la contraseña para visualizar su contenido."
}| Key (JSON) | Tipo | Descripción Técnica |
|---|---|---|
| id | String | Identificador único del archivo alojado. |
| url | String | Enlace directo real y público al archivo original. |
| name | String | Nombre original del archivo al momento de subirlo. |
| extension | String | Extensión del archivo (ej. pdf, png). |
| mime_type | String | Tipo de contenido técnico (ej. application/pdf). |
| type | String | Categoría estandarizada (image, video, document, code, archive, other). |
| size | String | Tamaño legible formateado (ej. 2.50 MB). |
| size_bytes | Number | Tamaño exacto del archivo en bytes. |
| author | String | Etiqueta o autor personalizado asignado. |
| description | String | Comentario o nota adjunta al archivo. |
| protected | Boolean | Indica si el archivo o la carpeta están protegidos con contraseña. |
| created_at | String | Fecha de subida en formato ISO 8601 (UTC). |
| expires_at | String / Null | Fecha exacta de eliminación (ISO 8601) si tiene auto-eliminación, o null. |
async function getServerStats() {
try {
const response = await fetch('https://evogb.win/api/stats');
const stats = await response.json();
console.log(`Archivos Subidos: ${stats.total_files}`);
console.log(`Archivos Protegidos: ${stats.protected_files}`);
} catch (err) {
console.error('❌ Error obteniendo stats:', err);
}
}{
"max_upload_mb": 75,
"total_storage_gb": 1000,
"total_files": 59,
"used_bytes": 21474836,
"success_count": 59,
"error_count": 4,
"uploads_today": 14,
"uploads_30_days": 29,
"visitors": 285,
"uploaders": 7,
"auto_delete": 0,
"total_get": 9636,
"total_post": 201,
"blocked_ips": 0,
"total_qrs": 31,
"total_shortlinks": 8,
"total_folders": 7,
"auto_delete_folders": 7,
"protected_files": 2,
"protected_folders": 0
}# Solicita las estadísticas globales del servidor en formato JSON
curl -X GET https://evogb.win/api/stats| Key (JSON) | Tipo | Descripción Técnica |
|---|---|---|
| max_upload_mb | Number | Límite máximo permitido de subida por archivo (MB). |
| total_storage_gb | Number | Capacidad total del disco global (GB). |
| total_files | Number | Cantidad total de archivos alojados. |
| used_bytes | Number | Total de bytes exactos consumidos en la nube. |
| uploads_today | Number | Archivos subidos hoy. |
| uploads_30_days | Number | Archivos subidos en los últimos 30 días. |
| visitors | Number | Visitantes (IPs únicas). |
| uploaders | Number | IPs distintas que han procesado una subida. |
| auto_delete | Number | Archivos con un TTL activo listos para borrarse. |
| total_get / total_post | Number | Peticiones procesadas por la red. |
| success_count / error_count | Number | Conteo de subidas exitosas y errores del servidor. |
| total_qrs / total_shortlinks | Number | Cantidad de Códigos QR y Enlaces Acortados generados. |
| total_folders | Number | Total de Carpetas (Evogb Share) creadas. |
| protected_files | Number | Total de archivos asegurados con contraseña. |
| protected_folders | Number | Total de carpetas (Evogb Share) aseguradas con contraseña. |
El proyecto se mantiene vivo gracias al apoyo de nuestra comunidad. Tu donación nos ayuda a cubrir los costos de los servidores, desarrollar nuevas herramientas y garantizar que siga siendo GRATIS y de alta velocidad. ¡Anímate a formar parte del crecimiento de Evogb Suite!
Descubre nuestro servicio especializado en almacenamiento y gestión de archivos. Optimizado para ofrecerte el mejor control sobre tu contenido estático en la red global con características premium.
Al utilizar la red de almacenamiento y distribución de Evogb Storage, aceptas cumplir con estas políticas diseñadas para mantener la plataforma segura, libre y veloz.
Servicio gratuito de almacenamiento seguro y accesible globalmente. No requiere registro, el contenido es público y se distribuye mediante enlaces directos.
Permitimos múltiples subidas simultáneas, peticiones GET/POST ilimitadas y la integración vía API. Se admite contenido legal, incluyendo material para adultos (NSFW).
Tolerancia CERO con CSAM (será reportado de inmediato al NCMEC). Prohibido alojar malware, phishing, o contenido ilegal como violencia sexual explícita.
Si el rendimiento global se ve comprometido, aplicaremos reguladores temporales de velocidad o limitaremos las subidas por usuario visitante para evitar caídas del servicio.
Empleamos Inteligencia Artificial para auditar archivos. Nos reservamos el derecho de eliminar material potencialmente peligroso y bloquear la IP infractora sin aviso.
Evogb actúa exclusivamente como intermediario técnico. El usuario asume total responsabilidad legal e intelectual sobre el material subido o distribuido en nuestra red.
Como plataforma cien por ciento gratuita, no podemos garantizar un 100% de uptime. Pueden ocurrir mantenimientos de red o interrupciones temporales imprevistas.
Evogb no se hace responsable por la pérdida de datos, interrupción de tus proyectos de software ni daños a terceros. Utilizas la plataforma bajo tu propio riesgo.
Nos reservamos el derecho de modificar la API, alterar las características del almacenamiento, aplicar nuevos límites o actualizar estos términos en cualquier momento.
Podemos suspender tu acceso, someter tu IP a una lista negra global o eliminar todo tu contenido si determinamos un abuso flagrante de los recursos o normativas.
Para consultas técnicas, problemas con la API, peticiones DMCA o cuestiones legales, comunícate directamente a nuestro correo de soporte: [email protected].
¿Encontraste archivos con malware, phishing o violaciones graves? Repórtalos a nuestro correo para realizar una mitigación y borrado inmediato del contenido de la red.
Nuestra herramienta Evogb Share te permite agrupar decenas de archivos en una sola "carpeta virtual". Es ideal para compartir proyectos enteros. Puedes proteger estas carpetas con contraseñas que bloquean el acceso tanto a la estructura (API) como a las descargas directas individuales de la misma.
Al configurar una contraseña, bloqueas instantáneamente el acceso público al archivo. Tú eres el único responsable de esta clave. No existen mecanismos de recuperación. Si olvidas la clave, perderás el acceso.