Skip to main content
@acedatacloud/sdk är Ace Data Clouds officiella TypeScript / JavaScript SDK, som kapslar in alla tjänster på api.acedata.cloud i typade metoder som client.openai.chat.completions.create(...), client.images.generate(...), client.search.google(...) med inbyggd SSE-strömning, återförsök med backoff och typade undantag. Det kan användas i Node.js, Deno, Bun och moderna webbläsare (med bundler). Källkod och paketadress:

Installation

Om du behöver betala på X402-kedjan (utan API-tokenväg), installera en till:
Versionkontrollutdata för ett rent npm-projekt:
Resultatförklaring:
  • Paketversionen är 2026.504.2 (CalVer, den 504:e ISO-veckan 2026, den 2:a revisionen).
  • AceDataCloud är huvudklassen för att konstruera klienten, som kan nås från standardexporten.

Förbered API-token

Referera till SDK-översikt - Ansök om API-token för att få token, och exportera den i shell:
När du konstruerar klienten, om du inte anger apiToken, kommer SDK automatiskt att läsa ACEDATACLOUD_API_TOKEN miljövariabeln. Om din miljö redan har ACEDATACLOUD_API_KEY (projektets föreskrift), kan du explicit ange: new AceDataCloud({ apiToken: process.env.ACEDATACLOUD_API_KEY }).

Exempel 1: chat.completions (icke-strömmande)

Programresultat:
Resultatförklaring:
  • id chatcmpl-DldCcLvkTFaioST8e6SjOl0wJScQA är OpenAI-kompatibel svar-ID, som kan hittas i konsolens användningshistorik.
  • content ADC_TS_SDK_OK är den verkliga fasta identifieraren som modellen returnerade, vilket bevisar att svaret inte har manipulerats av SDK.
  • En chat completion förbrukar cirka 22 token, baserat på gpt-4o-mini:s enhetskostnad.
  • SDK deklarerar svaret som Record<string, unknown>, och vid körning är det ett JSON-objekt; punktåtkomst som .id / .choices[0].message.content fungerar i .mjs, Node REPL, Bun; strikt TypeScript-projekt kan behöva (res as any).id eller stänga av noImplicitAny i tsconfig.

Exempel 2: chat.completions (SSE-strömmande)

Genom att öppna stream: true returnerar create en asynkron iterator, där varje ram är en ChatCompletionChunk.
Programresultat:
Resultatförklaring:
  • Första ramens fördröjning på 2481 ms är tiden det tog för modellen att generera den första token; de följande 12 ramarna kom alla inom 135 ms.
  • 13 ramar tillsammans ger "1 2 3 4 5", där varje token är en egen ram + den sista ramen har finish_reason.
  • Strömmande är inte mer token-effektivt än icke-strömmande, men fördröjningen för första token är betydligt lägre, vilket är lämpligt för realtidsanvändargränssnitt.

Exempel 3: images.generate (NanoBanana)

client.images.generate({ provider: 'nano-banana', ... }) returnerar direkt synkront, behöver inte ange wait-parametern — NanoBanana API är i sig synkront.
Programresultat:
Resultatförklaring:
  • image_url är en stabil adress på CDN, som kan användas direkt med <img src /> eller laddas ner.
  • Under 16,6 sekunder är det mesta av tiden modellens inferens, och lokala SDK-kostnader kan ignoreras.
  • trace_id är en begäran-ID som tilldelas av plattformen; om det uppstår problem kan du ge detta ID till kundsupport för snabbast möjliga lokalisering.
  • För asynkrona tjänster (Midjourney, Sora, Veo etc.) krävs TaskHandle-polling, se SDK-uppgiftspolling och strömmande svar.

Exempel 4: Typad felhantering

SDK kommer att kasta fel som specifika underklasser (AuthenticationError / BadRequestError / RateLimitError / InternalServerError / APIConnectionError etc.) baserat på HTTP-status, vilket gör att du kan använda instanceof för att exakt grena.
Programresultat:
Resultatförklaring:
  • 401 automatiskt mappas till AuthenticationError, affärskoden kan använda instanceof för exakt grening.
  • code: invalid_token kommer från PlatformGateway, vilket underlättar jämförelse med backend-loggar.
  • På samma sätt 429 → RateLimitError, 400 → BadRequestError, 5xx → InternalServerError.

Exempel 5: Flera modellrutter

Samma klient kan fritt växla mellan flera tjänster, så länge modellnamnen är desamma.
Programresultat:
Resultatförklaring:
  • En kod, en token, täcker OpenAI / Google / DeepSeek / xAI fyra typer av modellservicer.
  • gemini-2.5-flash returnerade inte ADC_OK denna gång, vilket beror på modellens egna utdata stilskillnader - SDK har inte tyst tagit bort något, utan har troget vidarebefordrat modellens ord till affären.
  • Priserna debiteras baserat på varje modells verkliga token-pris, vägen passerar bara en gång genom PlatformGateway.

Exempel 6: Google Sök

Programresultat:
Resultatförklaring:
  • En begäran ger 10 organiska resultat, fältnamnet organic (inte organic_results).
  • Sökningen går genom Serp-tjänsten och debiteras per gång.
  • Samma klientinstans kan både chatta och söka, en token räcker.

Konfigurationsalternativ

Användning i webbläsare

@acedatacloud/sdk är ett ESM + ISO (isomorfiskt) paket, som kan importeras direkt i moderna webbläsare med bundler. Observera: hårdkoda inte API-token i frontend-koden. Rekommenderas för frontend:
  1. Använd X402 paymentHandler - användarplånbok betalar per gång med USDC, ingen token behövs.
  2. Eller använd SDK på din egen server, webbläsaren anropar bara din egen backend.

Avancerat: Uppgiftspolling och strömmande svar

  • Tjänster av uppgiftstyp (Midjourney, Sora, Veo, Suno): använd TaskHandle för polling, enheter, timeout och omförsöksdetaljer se SDK uppgiftspolling och strömmande svar.
  • Strömmande chat: exempel 2 på denna sida har visat; strömmande ljud / video stöds också.

Avancerat: X402 betalningshook

Om du inte vill ansöka om API-token och vill betala per gång på kedjan, kan du använda paymentHandler:
createX402PaymentHandler accepterar i TypeScript { network, evmProvider, evmAddress, preferScheme? } (EVM-kedja) eller { network: 'solana', solanaWallet } (Solana). Node-servern har inte window.ethereum, använd då viem’s createWalletClient (baserat på privat nyckel) för att kapsla in en EIP-1193 kompatibel provider och skicka in den; detaljerad metod och verkliga resultat på kedjan se SDK + X402 betalningshook.

Hur man ser kvarvarande saldo

Genom Ace Data Cloud-konsolen - Applista kan du se det aktuella kontots kvarvarande saldo. Genom Ace Data Cloud-konsolen - Användningshistorik kan du se all användningshistorik och avgiftsdetaljer.

Lär dig mer