📘 Vista general
La API de Rediafile te permite integrar de manera segura la subida, gestión y descarga de archivos directamente desde tus propias aplicaciones. Todos los endpoints devuelven respuestas en formato JSON codificado en UTF-8.
Compatibilidad garantizada — Esta API evolucionará con el tiempo, pero ningún endpoint o valor de respuesta actual será modificado. Puedes escribir tu código de integración con total confianza.
URL Base
Requisitos técnicos
| Aspecto | Especificación |
|---|---|
| Codificación | UTF-8 obligatorio para todas las cadenas |
| Protocolo | HTTPS muy recomendado (SSL requerido) |
| Método HTTP | POST (salvo indicación contraria) |
| Formato fechas | Y-m-d H:i:s (ej: 2026-08-01 14:12:11) |
| Content-Type | application/x-www-form-urlencoded o multipart/form-data para subidas |
🚀 Inicio rápido
En 3 pasos, realiza tu primera llamada API:
Conéctate a tu cuenta Rediafile → Account Settings → API Access. Allí encontrarás Key 1 y Key 2 (64 caracteres cada una).
curl -X POST https://rediafile.com/cloud/api/v2/authorize \
-d "username=tu_usuario" \
-d "password=tu_contraseña"
curl -X POST https://rediafile.com/cloud/api/v2/account/info \
-d "access_token=TU_TOKEN" \
-d "account_id=TU_ACCOUNT_ID"
🔐 Autenticación
Todas las solicitudes API requieren un access_token y un account_id válidos. Estos se obtienen mediante el endpoint /authorize enviando tus credenciales de cuenta o tus claves API.
Sesión — El mismo
access_token puede ser reutilizado varias veces. No generes un nuevo token para cada solicitud. Los tokens expiran automáticamente después de 1 hora de inactividad.
POST /authorize
Proporciona un access_token y un account_id para realizar solicitudes posteriores.
Parámetros
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
username | string | Sí* | Nombre de usuario de la cuenta |
password | string | Sí* | Contraseña de la cuenta |
key1 | string (64) | Sí* | Clave API 1 (desde Account Settings) |
key2 | string (64) | Sí* | Clave API 2 (desde Account Settings) |
* O username/password, o key1/key2. Las claves API son recomendadas para integraciones automatizadas.
Respuesta exitosa
{
"data": {
"access_token": "X3Xp6cUcue22Q3AlpCiZz3mJQWPT2v10zZqGblSGzVIqZiMoV4ou8LeYH4SKAUL9...",
"account_id": "158642"
},
"_status": "success",
"_datetime": "2026-08-01 14:12:11"
}
Errores posibles
| Mensaje | Causa |
|---|---|
| Please provide a username. | Parámetro username faltante |
| Please provide a password. | Parámetro password faltante |
| Please provide key1. It must be 64 characters. | Clave API 1 inválida |
| Please provide key2. It must be 64 characters. | Clave API 2 inválida |
| Could not authenticate user. | Credenciales inválidas o cuenta bloqueada |
| Failed issuing access token. | Error interno de generación |
POST /disable_access_token
Desactiva un access_token activo. Opcional — los tokens expiran automáticamente después de 1 hora de inactividad.
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
access_token | string | Sí | Token a desactivar |
account_id | string | Sí | ID de la cuenta |
⚠️ Códigos de error HTTP
Los errores se devuelven mediante códigos HTTP estándar. La información adicional se incluye en el cuerpo de la respuesta en formato JSON.
| Código | Descripción | Acción recomendada |
|---|---|---|
| 400 | Bad input parameter | Verifica los parámetros enviados |
| 401 | Bad or expired token | Re-autentícate vía /authorize |
| 404 | File not found | Verifica el file_id o short_url |
| 405 | Method not expected | Usa POST (o GET si se especifica) |
| 429 | Rate limit reached | Reduce la frecuencia de las solicitudes |
| 5xx | Server error | Reintenta más tarde o contacta al soporte |
Formato de error JSON
{
"status": "error",
"response": "Could not authenticate user. The username and password may be invalid...",
"_datetime": "2026-08-01 14:12:11"
}
👤 Cuenta
POST /account/info
Proporciona los detalles de la cuenta asociada al account_id.
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
access_token | string | Sí | Token de acceso |
account_id | string | Sí | ID de la cuenta |
Respuesta
{
"data": {
"id": "158642",
"username": "admin",
"level_id": "20",
"email": "email@tusitio.com",
"lastlogindate": "2017-02-18 11:43:39",
"lastloginip": "192.168.33.1",
"status": "active",
"title": "Mr",
"firstname": "Admin",
"lastname": "User",
"languageId": "1",
"datecreated": null,
"lastPayment": "2011-12-27 13:45:22",
"paidExpiryDate": null,
"storageLimitOverride": null
},
"_status": "success",
"_datetime": "2026-08-01 14:12:11"
}
POST /account/package
Proporciona las restricciones de la cuenta heredadas del plan asociado.
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
access_token | string | Sí | Token de acceso |
account_id | string | Sí | ID de la cuenta |
Campos clave de la respuesta
| Campo | Descripción |
|---|---|
label | Nombre del plan (ej: "Premium Account") |
max_upload_size | Tamaño máximo de subida en bytes |
can_upload | 1 = subida permitida, 0 = no |
concurrent_uploads | Número máximo de subidas simultáneas |
max_remote_download_urls | URLs remotas máximas (50 por defecto) |
level_type | Tipo de cuenta ("paid user", etc.) |
📁 Archivos
POST /file/upload
Interfaz de subida de archivos. Nota: Las subidas fragmentadas (chunked) aún no son compatibles.
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
access_token | string | Sí | Token de acceso |
account_id | string | Sí | ID de la cuenta |
upload_file | file | Sí | Archivo a subir (multipart/form-data) |
folder_id | string | No | ID de la carpeta destino (raíz si vacío) |
Content-Type requerido — Para este endpoint, usa
multipart/form-data con el archivo como adjunto.
Respuesta exitosa
{
"response": "File uploaded",
"data": [{
"name": "sample4_l.jpg",
"size": "149084",
"type": "application/octet-stream",
"url": "https://rediafile.com/2Vv",
"delete_url": "https://rediafile.com/2Vv~d?41efa710444abad11a8f4b5a90e4d746",
"info_url": "https://rediafile.com/2Vv~i",
"stats_url": "https://rediafile.com/2Vv~s",
"short_url": "2Vv",
"file_id": "1253",
"unique_hash": "60b0be7e3b18de9a3f00d940a8e5a9834c6cdc0f49d40af64973be5ca504c4fd",
"url_html": "<a href=...>view sample4_l.jpg on Rediafile</a>",
"url_bbcode": "[url]https://rediafile.com/2Vv[/url]"
}],
"_status": "success",
"_datetime": "2026-08-01 14:12:11"
}
POST /file/download
Genera una URL de descarga única para un archivo.
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
access_token | string | Sí | Token de acceso |
account_id | string | Sí | ID de la cuenta |
file_id | string | Sí* | ID numérico del archivo |
short_url | string | Sí* | URL corta del archivo |
* Uno de los dos parámetros es requerido: file_id O short_url.
Respuesta
{
"data": {
"file_id": "1253",
"filename": "sample4_l.jpg",
"download_url": "https://rediafile.com/2Vv?download_token=c3e6289a23e9819d8663569da96087d0..."
},
"_status": "success",
"_datetime": "2026-08-01 14:12:11"
}
POST /file/url_upload_add
Importa un archivo desde una URL externa. Disponible solo si la descarga de URL en segundo plano está activada.
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
access_token | string | Sí | Token de acceso |
account_id | string | Sí | ID de la cuenta |
file_url_base64 | string | Sí | URL externa codificada en base64 |
folder_id | string | No | ID de la carpeta destino |
Respuesta
{
"response": "File download from URL scheduled",
"data": {
"scheduled_item_id": 52,
"url": "https://yetishare.com/_include/images/yetishare_logo.png"
},
"_status": "success",
"_datetime": "2026-08-01 14:12:11"
}
POST /file/url_upload_status
Muestra el estado de una descarga de URL programada.
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
access_token | string | Sí | Token de acceso |
account_id | string | Sí | ID de la cuenta |
scheduled_item_id | int | Sí | ID devuelto por /file/url_upload_add |
Respuesta (estado "complete")
{
"response": "Scheduled URL file download found",
"data": {
"scheduled_item_id": 51,
"status": "complete",
"created": "2024-01-25 19:34:52",
"started": "2024-01-25 20:24:53",
"finished": "2024-01-25 20:24:54",
"total_size": 17262,
"downloaded_file": {
"file_id": 11456,
"name": "file_upload_script_logo.png",
"size": 17262,
"url": "https://rediafile.com/sZG/file_upload_script_logo.png"
}
},
"_status": "success",
"_datetime": "2026-08-01 14:12:11"
}
POST /file/info
Proporciona los metadatos y URLs de un archivo.
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
access_token | string | Sí | Token de acceso |
account_id | string | Sí | ID de la cuenta |
file_id | string | Sí | ID del archivo |
POST /file/edit
Modifica los metadatos de un archivo.
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
access_token | string | Sí | Token de acceso |
account_id | string | Sí | ID de la cuenta |
file_id | string | Sí | ID del archivo a modificar |
filename | string | No | Nuevo nombre (vacío = sin cambios) |
fileType | string | No | Nuevo tipo MIME (ej: application/octet-stream) |
folder_id | string | No | Nueva carpeta padre (vacío = sin cambios) |
POST /file/delete
Elimina un archivo activo (lo mueve a la papelera).
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
access_token | string | Sí | Token de acceso |
account_id | string | Sí | ID de la cuenta |
file_id | string | Sí | ID del archivo a eliminar |
POST /file/move
Mueve un archivo a otra carpeta.
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
access_token | string | Sí | Token de acceso |
account_id | string | Sí | ID de la cuenta |
file_id | string | Sí | ID del archivo |
new_parent_folder_id | string | Sí | ID de la carpeta destino |
POST /file/copy
Copia un archivo a otra carpeta.
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
access_token | string | Sí | Token de acceso |
account_id | string | Sí | ID de la cuenta |
file_id | string | Sí | ID del archivo origen |
copy_to_folder_id | string | Sí | ID de la carpeta destino |
Respuesta
{
"response": "File successfully copyied.",
"original_file": { "data": { "id": "1162", "filename": "...", "shortUrl": "2U2" } },
"new_file": { "data": { "id": "1254", "filename": "...", "shortUrl": "2Vw" } },
"_status": "success",
"_datetime": "2026-08-01 14:12:11"
}
📂 Carpetas
POST /folder/create
Crea una nueva carpeta.
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
access_token | string | Sí | Token de acceso |
account_id | string | Sí | ID de la cuenta |
folder_name | string | Sí | Nombre de la nueva carpeta |
parent_id | string | No | ID de la carpeta padre |
is_public | int | No | 0=Privada, 1=No listada, 2=Pública (por defecto: 0) |
access_password | string (32) | No | Hash MD5 de la contraseña (32 caracteres) |
POST /folder/listing
Devuelve la lista de carpetas y archivos de una carpeta padre.
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
access_token | string | Sí | Token de acceso |
account_id | string | Sí | ID de la cuenta |
parent_folder_id | string | No | ID de la carpeta padre (vacío = raíz) |
Respuesta
{
"data": {
"folders": [ { "id": "123", "folderName": "My Folder 1", ... } ],
"files": [ { "id": "1161", "filename": "button_back.gif", "shortUrl": "2U1", ... } ]
},
"_status": "success",
"_datetime": "2026-08-01 14:12:11"
}
POST /folder/info
Proporciona la información de una carpeta específica.
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
access_token | string | Sí | Token de acceso |
account_id | string | Sí | ID de la cuenta |
parent_folder_id | string | No | ID de la carpeta |
POST /folder/edit
Modifica una carpeta existente.
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
access_token | string | Sí | Token de acceso |
account_id | string | Sí | ID de la cuenta |
folder_id | string | Sí | ID de la carpeta a modificar |
folder_name | string | No | Nuevo nombre |
parent_id | string | No | Nueva carpeta padre |
is_public | int | No | 0=Privada, 1=No listada, 2=Pública |
access_password | string (32) | No | Hash MD5 de la contraseña |
POST /folder/delete
Elimina una carpeta.
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
access_token | string | Sí | Token de acceso |
account_id | string | Sí | ID de la cuenta |
folder_id | string | Sí | ID de la carpeta a eliminar |
POST /folder/move
Mueve una carpeta a otra ubicación.
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
access_token | string | Sí | Token de acceso |
account_id | string | Sí | ID de la cuenta |
folder_id | string | Sí | ID de la carpeta a mover |
new_parent_folder_id | string | Sí | ID de la carpeta destino |
💻 Ejemplos de código
cURL — Autenticación
curl -X POST https://rediafile.com/cloud/api/v2/authorize \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "username=admin" \
-d "password=mi_contraseña"
cURL — Subida de archivo
curl -X POST https://rediafile.com/cloud/api/v2/file/upload \
-F "access_token=TU_TOKEN" \
-F "account_id=TU_ACCOUNT_ID" \
-F "upload_file=@/ruta/a/miarchivo.zip" \
-F "folder_id=123"
PHP — Subida completa
<?php
$token = 'TU_ACCESS_TOKEN';
$accountId = 'TU_ACCOUNT_ID';
$filePath = '/ruta/a/archivo.jpg';
$ch = curl_init('https://rediafile.com/cloud/api/v2/file/upload');
$postData = [
'access_token' => $token,
'account_id' => $accountId,
'upload_file' => new CURLFile($filePath)
];
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
$data = json_decode($response, true);
echo "URL: " . $data['data'][0]['url'];
curl_close($ch);
?>
Python — Descarga desde URL
import requests, base64
url = "https://rediafile.com/cloud/api/v2/file/url_upload_add"
payload = {
"access_token": "TU_TOKEN",
"account_id": "TU_ACCOUNT_ID",
"file_url_base64": base64.b64encode(b"https://example.com/image.png").decode(),
"folder_id": "123"
}
response = requests.post(url, data=payload)
print(response.json())
JavaScript (Node.js) — Lista de carpetas
const axios = require('axios');
async function listFolders() {
const res = await axios.post('https://rediafile.com/cloud/api/v2/folder/listing', {
access_token: 'TU_TOKEN',
account_id: 'TU_ACCOUNT_ID',
parent_folder_id: '' // raíz
});
console.log(res.data.data.folders);
}
listFolders();
JavaScript (Fetch) — Generar enlace de descarga
fetch('https://rediafile.com/cloud/api/v2/file/download', {
method: 'POST',
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
body: new URLSearchParams({
access_token: 'TU_TOKEN',
account_id: 'TU_ACCOUNT_ID',
file_id: '1253'
})
})
.then(r => r.json())
.then(data => console.log(data.data.download_url));
✅ Buenas prácticas
Todas las solicitudes deben pasar por HTTPS. Puedes forzar SSL en el servidor para garantizar la seguridad de los tokens y los datos.
Un access_token sigue siendo válido durante 1 hora. Almacénalo en sesión y reutilízalo para todas tus solicitudes en lugar de regenerar un token en cada llamada.
Verifica siempre _status en la respuesta JSON. En caso de error ("error"), lee el campo response para obtener el mensaje detallado.
Para /file/url_upload_add, codifica siempre la URL en base64 antes de enviarla. Usa utf-8 para todo el texto.
Las subidas fragmentadas (chunked) aún no son compatibles. Para archivos grandes, usa /file/url_upload_add o verifica max_upload_size mediante /account/package.
📊 Límites y restricciones
| Aspecto | Valor / Comportamiento |
|---|---|
| Expiración de token | 1 hora de inactividad |
| Rate limiting | HTTP 429 si se alcanza el límite |
| Subida fragmentada | No compatible actualmente |
| Subida URL remota | Máx. 50 URLs (según plan) |
| Codificación | UTF-8 obligatorio |
| Claves API | 64 caracteres exactamente |
| Contraseña de carpeta | Hash MD5, 32 caracteres |
Planes Business — Los límites de almacenamiento, tamaño de subida y ancho de banda dependen de tu plan. Consulta
/account/package para conocer tus restricciones actuales.
❓ FAQ
Conéctate a tu cuenta Rediafile → Account Settings → API Access. Verás Key 1 y Key 2. Cada clave tiene exactamente 64 caracteres.
Sí, el endpoint /authorize acepta tanto username + password como key1 + key2. Las claves API son recomendadas para integraciones automatizadas porque no cambian al modificar la contraseña.
Vuelve a llamar a /authorize para obtener un nuevo access_token. Los tokens expiran después de 1 hora de inactividad.
Usa el parámetro folder_id en /file/upload. Obtén el ID de la carpeta mediante /folder/listing.
Las subidas fragmentadas (chunked) aún no están disponibles. El tamaño máximo depende de tu plan (ver /account/package → max_upload_size). Para archivos muy grandes, usa /file/url_upload_add.
Sí, la API es compatible con todas las plataformas. Usa solicitudes HTTP POST estándar desde iOS, Android, Flutter, React Native, etc.