> ## Documentation Index
> Fetch the complete documentation index at: https://docs.acedata.cloud/llms.txt
> Use this file to discover all available pages before exploring further.

# Subir archivos al CDN de la plataforma AceDataCloud

> Platform API guide - Ace Data Cloud

Sube archivos locales al CDN de la plataforma AceDataCloud para obtener una URL de acceso público (con el estilo `https://cdn.acedata.cloud/xxxxxx.png`), que puede utilizarse inmediatamente en parámetros como `image_url`, `reference_url` y otros de interfaces de negocio (como Midjourney, Suno y Flux).

Escenarios aplicables:

* Antes de llamar a Midjourney `/midjourney/imagine`, primero sube la imagen de referencia al CDN para obtener la URL.
* Almacena en caché el video generado en el paso anterior para usarlo como entrada en el siguiente paso.
* Aloja temporalmente los materiales subidos por los usuarios para evitar implementar tu propio S3.

> ℹ️ Esta interfaz pertenece a la **API de administración de la plataforma AceDataCloud**, con el prefijo unificado `https://platform.acedata.cloud/api/v1/`.

## Resumen de la interfaz

| Elemento | Contenido |
| - | - |
| Método | `POST` |
| URL | `https://platform.acedata.cloud/api/v1/files/` |
| Autenticación | ✅ Se requiere token de cuenta |
| Content-Type | `multipart/form-data` (**no es JSON**) |

## Instrucciones de autenticación (cómo obtener el token de cuenta)

Encabezado de la solicitud:

```http theme={null}
Authorization: Bearer ${PLATFORM_TOKEN}
```

Método de obtención: inicia sesión en la [plataforma AceDataCloud](https://platform.acedata.cloud) → [consola de Account Token](https://platform.acedata.cloud/console/platform-tokens) → haz clic en el botón «Crear». Consulta los detalles en [Administrar tokens de cuenta de la plataforma AceDataCloud](https://platform.acedata.cloud/documents/platform-token).

## Cuerpo de la solicitud (multipart/form-data)

| Campo | Tipo | Obligatorio | Descripción |
| - | - | - | - |
| `file` | file | ✅ | Flujo de archivo binario. **El límite predeterminado por archivo es de 100 MB** |

## Ejemplos de solicitud

### cURL

```shell theme={null}
curl -X POST 'https://platform.acedata.cloud/api/v1/files/' \
  -H 'accept: application/json' \
  -H "authorization: Bearer ${PLATFORM_TOKEN}" \
  -F 'file=@./photo.jpg'
```

### Python

```python theme={null}
import os
import requests

PLATFORM_TOKEN = os.environ["PLATFORM_TOKEN"]

with open("photo.jpg", "rb") as f:
    resp = requests.post(
        "https://platform.acedata.cloud/api/v1/files/",
        headers={
            "accept": "application/json",
            "authorization": f"Bearer {PLATFORM_TOKEN}",
        },
        files={"file": ("photo.jpg", f, "image/jpeg")},
        timeout=60,
    )

data = resp.json()
print(f"✅ 上传成功：{data['file_url']}")
# 直接用于其他业务接口：
# requests.post("https://api.acedata.cloud/midjourney/imagine",
#     json={"prompt": "...", "image_urls": [data["file_url"]]}, ...)
```

### Node.js

```javascript theme={null}
const fs = require('fs')
const FormData = require('form-data')

const form = new FormData()
form.append('file', fs.createReadStream('./photo.jpg'))

const r = await fetch('https://platform.acedata.cloud/api/v1/files/', {
  method: 'POST',
  headers: {
    authorization: `Bearer ${process.env.PLATFORM_TOKEN}`,
    ...form.getHeaders(),
  },
  body: form,
})
const data = await r.json()
console.log('CDN URL:', data.file_url)
```

## Ejemplo de respuesta (HTTP 200)

```json theme={null}
{
  "file_url": "https://cdn.acedata.cloud/qrd7gw.jpg"
}
```

Simplemente toma el campo `file_url` y úsalo en otras interfaces de negocio; la URL del CDN es actualmente de acceso público y no requiere autenticación; no la consideres una promesa de archivo permanente.

## Descripción de los campos de respuesta

| Campo | Tipo | Descripción |
| - | - | - |
| `file_url` | string | URL de acceso al CDN |

## Manejo de errores

| HTTP | Ejemplo de respuesta | Significado |
| - | - | - |
| 400 | `{"error":"No file provided"}` | No se adjuntó el campo `file` o el nombre del campo es incorrecto |
| 401 | Respuesta de error de autenticación DRF | Falta el token de cuenta o se utilizó uno no válido |
| 413 | `{"error":"File too large","max_bytes":...}` | El archivo supera los 100 MB (valor predeterminado) |

## Consejos prácticos

* **Subir imágenes como imágenes de referencia**: los `image_urls` de Midjourney, `image_url` de Flux y `reference_url` de Veo aceptan URL de CDN, y **no** aceptan base64. Obtener primero la URL mediante esta interfaz es una práctica habitual.
* **No subas datos sensibles**: la URL devuelta es de acceso público; el período de conservación está sujeto a la política de almacenamiento actual de la plataforma; para el archivado a largo plazo, utiliza tu propio almacenamiento de objetos.
* **Carga masiva**: controla la concurrencia y configura un tiempo de espera para cada carga; el rendimiento depende del tamaño de los archivos y del entorno de red.

## Interfaces relacionadas

* [Obtener la lista de servicios de la plataforma AceDataCloud](https://platform.acedata.cloud/documents/platform-service-list) — encuentra servicios de negocio que acepten entradas de URL
* [Crear credenciales de API de la plataforma AceDataCloud](https://platform.acedata.cloud/documents/platform-credential-create) — después de subir, normalmente el siguiente paso es crear credenciales para llamar a las interfaces de negocio


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.