Skip to main content
@acedatacloud/sdk es el SDK oficial de TypeScript / JavaScript de Ace Data Cloud, que encapsula todos los servicios en api.acedata.cloud en métodos tipados como client.openai.chat.completions.create(...), client.images.generate(...), client.search.google(...), etc., con soporte para flujos SSE, reintentos con retroceso y excepciones tipadas. Se puede utilizar en Node.js, Deno, Bun y navegadores modernos (con bundler). Dirección del código fuente y del paquete:

Instalación

Si necesitas pagar en la cadena X402 (sin ruta de API Token), instala uno más:
Salida de verificación de versión de un proyecto npm limpio:
Explicación de resultados:
  • La versión del paquete es 2026.504.2 (CalVer, la segunda revisión de la semana ISO 504 del año 2026).
  • AceDataCloud es la clase principal utilizada para construir el cliente, accesible desde la exportación por defecto.

Preparar el API Token

Consulta Visión general del SDK - Solicitar API Token para obtener el token, luego en la shell export:
Al construir el cliente, si no se pasa apiToken, el SDK leerá automáticamente la variable de entorno ACEDATACLOUD_API_TOKEN. Si ya tienes ACEDATACLOUD_API_KEY en tu entorno (convenio del repositorio del proyecto), puedes pasarlo explícitamente: new AceDataCloud({ apiToken: process.env.ACEDATACLOUD_API_KEY }).

Ejemplo 1: chat.completions (no en streaming)

Resultados de la ejecución del programa:
Explicación de resultados:
  • id chatcmpl-DldCcLvkTFaioST8e6SjOl0wJScQA es el ID de respuesta compatible con OpenAI, que se puede buscar en el historial de uso en la consola.
  • content ADC_TS_SDK_OK es el identificador fijo devuelto realmente por el modelo, que prueba que la respuesta no ha sido alterada por el SDK.
  • Una finalización de chat consume aproximadamente 22 tokens, cobrando según el precio unitario de gpt-4o-mini.
  • El SDK declara la respuesta como Record<string, unknown>, en tiempo de ejecución es un objeto JSON, el acceso por puntos como .id / .choices[0].message.content funciona en .mjs, Node REPL, Bun; en proyectos estrictos de TypeScript puede ser necesario usar (res as any).id o desactivar noImplicitAny en tsconfig.

Ejemplo 2: chat.completions (streaming SSE)

Al activar stream: true, create devuelve un iterador asíncrono, donde cada marco es un ChatCompletionChunk.
Resultados de la ejecución del programa:
Explicación de resultados:
  • La latencia del primer marco de 2481 ms es el tiempo que tardó el modelo en generar el primer token; los siguientes 12 marcos llegaron todos en 135 ms.
  • Los 13 marcos juntos son "1 2 3 4 5", cada token se genera en un marco separado + el último marco incluye finish_reason.
  • El streaming no ahorra más tokens que el no streaming, pero la latencia del primer token se reduce significativamente, lo que es adecuado para interfaces de usuario en tiempo real.

Ejemplo 3: images.generate (NanoBanana)

client.images.generate({ provider: 'nano-banana', ... }) devuelve directamente de forma sincrónica, no es necesario pasar el parámetro wait — la API de NanoBanana genera de forma sincrónica.
Resultados de la ejecución del programa:
Explicación de resultados:
  • image_url es una dirección estable en el CDN, que se puede usar directamente en <img src /> o descargar.
  • En 16.6 segundos, la mayor parte del tiempo es para la inferencia del modelo, el costo del SDK local es despreciable.
  • trace_id es el ID de solicitud asignado por la plataforma, si hay un problema, proporciona este ID al servicio al cliente para una rápida localización.
  • Para servicios de tipo asíncrono (Midjourney, Sora, Veo, etc.) se necesita hacer polling de TaskHandle, consulta Polling de tareas del SDK y respuestas en streaming para más detalles.

Ejemplo 4: manejo de errores tipados

El SDK lanzará errores como subclases específicas según el estado HTTP (AuthenticationError / BadRequestError / RateLimitError / InternalServerError / APIConnectionError, etc.), que se pueden usar con instanceof para ramificaciones precisas.
Resultado de la ejecución del programa:
Descripción del resultado:
  • 401 se mapea automáticamente a AuthenticationError, el código de negocio puede usar instanceof para ramificar con precisión.
  • code: invalid_token proviene de PlatformGateway, lo que facilita la comparación con los registros del backend.
  • De manera similar, 429 → RateLimitError, 400 → BadRequestError, 5xx → InternalServerError.

Ejemplo 5: Enrutamiento de múltiples modelos

Un mismo cliente puede cambiar libremente entre múltiples servicios, siempre que el nombre del modelo sea el mismo.
Resultado de la ejecución del programa:
Descripción del resultado:
  • Un solo código, un solo token, cubre cuatro tipos de servicios de modelos: OpenAI / Google / DeepSeek / xAI.
  • gemini-2.5-flash esta vez no devolvió ADC_OK, es una diferencia en el estilo de salida del modelo: el SDK no ha silenciado nada, transmitiendo fielmente las palabras del modelo al negocio.
  • Los precios se facturan según el precio real por token de cada uno, el camino solo pasa una vez por PlatformGateway.

Ejemplo 6: Búsqueda en Google

Resultado de la ejecución del programa:
Descripción del resultado:
  • Una sola solicitud obtiene 10 resultados orgánicos, el nombre del campo es organic (no organic_results).
  • La búsqueda se realiza a través del servicio Serp, se factura por uso.
  • La misma instancia de cliente puede hacer chat y buscar, un solo token es suficiente.

Opciones de configuración

Uso en el navegador

@acedatacloud/sdk es un paquete ESM + ISO (isomórfico), se puede importar directamente en navegadores modernos con bundler. Nota: no codifiques en duro el API Token en el código del frontend. Se recomienda en el frontend:
  1. Usar X402 paymentHandler — la billetera del usuario paga por uso en USDC, sin necesidad de token.
  2. O usar el SDK en tu propio servidor, el navegador solo llama a tu backend.

Avanzado: Polling de tareas y respuestas en streaming

  • Servicios de tipo tarea (Midjourney, Sora, Veo, Suno): usar TaskHandle para hacer polling, detalles de unidad, tiempo de espera y reintentos ver SDK de polling de tareas y streaming.
  • Chat en streaming: el ejemplo 2 de esta página ya lo ha demostrado; audio / video en streaming también es compatible.

Avanzado: Ganchos de pago X402

Si no deseas solicitar un API Token y quieres pagar por uso en la cadena, puedes usar paymentHandler:
createX402PaymentHandler en el lado de TypeScript acepta { network, evmProvider, evmAddress, preferScheme? } (cadena EVM) o { network: 'solana', solanaWallet } (Solana). En el servidor Node, si no hay window.ethereum, usa viem’s createWalletClient (basado en clave privada) para envolver un proveedor compatible con EIP-1193 y luego pásalo; detalles sobre cómo hacerlo y resultados reales en la cadena ver SDK + ganchos de pago X402.

Cómo ver el saldo restante

A través de Ace Data Cloud Console - Lista de aplicaciones, puedes ver el saldo restante de la cuenta actual. A través de Ace Data Cloud Console - Historial de uso puedes ver todo el historial de uso y detalles de facturación.

Aprende más