@acedatacloud/sdk é o SDK oficial TypeScript / JavaScript da Ace Data Cloud, que encapsula todos os serviços em api.acedata.cloud em métodos tipados como client.openai.chat.completions.create(...), client.images.generate(...), client.search.google(...), etc., com suporte a fluxo SSE, retry backoff e exceções tipadas.
Pode ser usado em Node.js, Deno, Bun e navegadores modernos (com bundler).
Endereço do código-fonte e do pacote:
- Repositório do SDK: https://github.com/AceDataCloud/SDK
- npm SDK: https://www.npmjs.com/package/@acedatacloud/sdk
Instalação
- A versão do pacote é
2026.504.2(CalVer, 2ª revisão da 504ª semana ISO de 2026). AceDataCloudé a classe principal usada para construir o cliente, acessível a partir da exportação padrão.
Preparar o Token da API
Consulte Visão Geral do SDK - Solicitar Token da API para obter o token e, em seguida,export no shell:
apiToken, o SDK irá ler automaticamente a variável de ambiente ACEDATACLOUD_API_TOKEN. Se sua variável de ambiente já tiver ACEDATACLOUD_API_KEY (convenção do repositório do projeto), você pode passá-la explicitamente: new AceDataCloud({ apiToken: process.env.ACEDATACLOUD_API_KEY }).
Exemplo 1: chat.completions (não em fluxo)
id chatcmpl-DldCcLvkTFaioST8e6SjOl0wJScQAé o ID de resposta compatível com OpenAI, que pode ser encontrado no console Histórico de Uso.content ADC_TS_SDK_OKé o identificador fixo retornado pelo modelo, provando que a resposta não foi alterada pelo SDK.- Uma conclusão de chat consome cerca de 22 tokens, cobrados de acordo com o preço do gpt-4o-mini.
- O SDK declara a resposta como
Record<string, unknown>, que em tempo de execução é um objeto JSON; acessos por ponto como.id/.choices[0].message.contentfuncionam em.mjs, Node REPL, Bun; em projetos TypeScript estritos, pode ser necessário usar(res as any).idou desativarnoImplicitAnyno tsconfig.
Exemplo 2: chat.completions (fluxo SSE)
Ao ativarstream: true, create retorna um iterador assíncrono, onde cada quadro é um ChatCompletionChunk.
- O atraso do primeiro quadro de 2481 ms é o tempo que o modelo levou para gerar o primeiro token; os 12 quadros subsequentes chegaram todos em 135 ms.
- Os 13 quadros juntos formam
"1 2 3 4 5", cada token em um quadro separado + o último quadro comfinish_reason. - O fluxo não consome menos tokens do que o não fluxo, mas o atraso do primeiro token é significativamente reduzido, adequado para interfaces de usuário em tempo real.
Exemplo 3: images.generate (NanoBanana)
client.images.generate({ provider: 'nano-banana', ... }) retorna diretamente de forma síncrona, não é necessário passar o parâmetro wait — a API NanoBanana gera de forma síncrona.
image_urlé um endereço estável no CDN, que pode ser usado diretamente em<img src />ou para download.- A maior parte do tempo de 16,6 segundos é gasto na inferência do modelo, o custo do SDK local é desprezível.
trace_idé o ID de solicitação atribuído pela plataforma; se houver problemas, forneça esse ID ao suporte para localização rápida.- Para serviços assíncronos (Midjourney, Sora, Veo, etc.), é necessário fazer polling com TaskHandle, consulte Polling de Tarefas do SDK e Respostas em Fluxo.
Exemplo 4: Tratamento de Erros Tipados
O SDK lançará erros como subclasses específicas (comoAuthenticationError, BadRequestError, RateLimitError, InternalServerError, APIConnectionError, etc.) com base no status HTTP, permitindo ramificações precisas com instanceof.
- 401 mapeado automaticamente para
AuthenticationError, o código de negócios pode usarinstanceofpara ramificações precisas. code: invalid_tokenvem do PlatformGateway, facilitando a comparação com os logs do backend.- Da mesma forma, 429 →
RateLimitError, 400 →BadRequestError, 5xx →InternalServerError.
Exemplo 5: Roteamento de múltiplos modelos
O mesmo cliente pode alternar livremente entre vários serviços, desde que o nome do modelo seja o mesmo.- Um código, um token, cobre quatro tipos de serviços de modelos: OpenAI / Google / DeepSeek / xAI.
gemini-2.5-flashdesta vez não retornouADC_OK, é uma diferença no estilo de saída do modelo — o SDK não silenciou nada, transmitindo fielmente as palavras do modelo para o negócio.- O preço é cobrado de acordo com o preço real do token de cada um, o caminho passa apenas uma vez pelo PlatformGateway.
Exemplo 6: Pesquisa no Google
- Uma única solicitação obteve 10 resultados orgânicos, o nome do campo é
organic(nãoorganic_results). - A pesquisa foi realizada através do Serviço Serp, cobrada por solicitação.
- A mesma instância do cliente pode tanto fazer chat quanto pesquisar, um único token é suficiente.
Opções de configuração
Uso no navegador
@acedatacloud/sdk é um pacote ESM + ISO (homogêneo), que pode ser importado diretamente em navegadores modernos com bundler. Atenção: não codifique o token da API diretamente no código do frontend. Recomenda-se no frontend:
- Usar X402
paymentHandler— a carteira do usuário paga por USDC por solicitação, sem necessidade de token. - Ou usar o SDK no seu próprio servidor, o navegador apenas chama seu backend.
Avançado: Polling de tarefas e resposta em streaming
- Serviços de tarefas (Midjourney, Sora, Veo, Suno): use
TaskHandlepara polling, detalhes de unidade, tempo limite e repetição veja SDK Polling de Tarefas e Streaming. - Chat em streaming: o exemplo 2 desta página já demonstrou; áudio / vídeo em streaming também é suportado.
Avançado: Ganchos de pagamento X402
Se você não quiser solicitar um token de API e quiser pagar por solicitação na blockchain, pode usarpaymentHandler:
createX402PaymentHandlerno lado TypeScript aceita{ network, evmProvider, evmAddress, preferScheme? }(rede EVM) ou{ network: 'solana', solanaWallet }(Solana). No servidor Node, quando não háwindow.ethereum, use ocreateWalletClientdoviem(baseado em chave privada) para encapsular um provedor compatível com EIP-1193 e passe-o; detalhes e resultados reais na blockchain veja SDK + Ganchos de Pagamento X402.

