Mage SDK · TypeScript

Mage TypeScript SDK

在 Node.js 中生成圖片、影片與音訊,每個 Mage 模型都有型別化設定。一次呼叫即可提交、等待並取得結果。

取得 API 金鑰閱讀 TypeScript 指南GitHub 原始碼
npm install @mage-space/sdk

重點速覽

Mage TypeScript SDK 是 Mage API 的官方開源用戶端,套件名稱為 @mage-space/sdk。執行 "npm install @mage-space/sdk" 安裝,設定 MAGE_API_KEY,再以模型 id 與設定呼叫 mage.run,就能從 28 款模型中取得完成的圖片、影片或音訊。它可在 Node.js 20.19 以上版本,或任何支援 fetch 的伺服器執行環境中運作,每次生成皆以 Gems 付費。

設定

安裝 TypeScript SDK 並執行模型

  1. 安裝套件

    將 @mage-space/sdk 加入你的專案。

    npm install @mage-space/sdk
  2. 設定 API 金鑰

    在 mage.space 的 API → API Keys 建立金鑰,並匯出為環境變數。用戶端會讀取 MAGE_API_KEY。

    export MAGE_API_KEY="mage_sk_..."
  3. 開始生成

    以模型 id 與其設定呼叫 run。它會等待結果並回傳,輸出內容位於 result.url。

    import Mage from '@mage-space/sdk';
    
    const mage = new Mage(); // reads MAGE_API_KEY
    
    const request = await mage.run('mango', {
      prompt: 'Editorial portrait in soft daylight, 35mm film look',
      aspect_ratio: '4:5',
      model_id: 'mango-v3',
    });
    
    console.log(request.result.url);

範例

TypeScript SDK 實際應用

每個範例都從讀取 MAGE_API_KEY 的用戶端開始。

先提交,稍後再等待
import Mage from '@mage-space/sdk';

const mage = new Mage(); // reads MAGE_API_KEY

const submitted = await mage.generate('cherry', {
  prompt: 'Waves rolling onto a black sand beach at sunset',
  resolution: '720p',
  duration: '5',
});

const final = await mage.requests.wait(submitted.request_id, {
  timeout: 15 * 60_000,
  onUpdate: (request) => console.log(request.status),
});
上傳檔案
import { readFile } from 'node:fs/promises';
import Mage from '@mage-space/sdk';

const mage = new Mage(); // reads MAGE_API_KEY

const clip = await mage.uploads.upload(await readFile('clip.mp4'), {
  contentType: 'video/mp4',
});

await mage.run('cherry', {
  prompt: 'Restyle this clip as a watercolor painting',
  videos: [clip.url],
});
使用已儲存的角色
import Mage from '@mage-space/sdk';

const mage = new Mage(); // reads MAGE_API_KEY

await mage.characters.create({
  name: 'Ana',
  handle: 'ana',
  image: 'https://example.com/ana.png',
});

await mage.run('mango', { prompt: '@ana walking through a night market' });
處理錯誤
import Mage, { MageAPIError, MageGenerationError } from '@mage-space/sdk';

const mage = new Mage(); // reads MAGE_API_KEY

try {
  await mage.run('mango', { prompt: 'A lighthouse at night' });
} catch (error) {
  if (error instanceof MageAPIError && error.code === 'insufficient_gems') {
    // Top up Gems, then try again.
  } else if (error instanceof MageGenerationError) {
    console.log('No output:', error.code);
  } else {
    throw error;
  }
}

為什麼選擇 SDK

SDK 幫你處理的事

一次呼叫,直接拿到成品

run 會送出生成請求,依 API 建議的退避間隔進行輪詢,最後回傳已完成的請求,並附上 result.url。

重試也不會重複扣款

每次送出都帶有冪等鍵。遇到網路錯誤與伺服器錯誤時會以退避方式重試,重試送出的請求絕不會再次收費。

一次呼叫完成上傳

太大而無法使用 data URL 的檔案會改走簽署上傳,票證、PUT 請求與大小檢查都由 SDK 代為處理。

清楚的錯誤訊息

API 拒絕請求時會附上 HTTP 狀態碼、錯誤代碼與請求 ID;生成失敗、被取消或逾時,也各有專屬的錯誤類型。

每個模型都有型別

MangoConfig、CherryConfig 等型別皆由 API 參考文件自動產生,因此編輯器能補全欄位,並攔截無效的選項。

零相依

採用 ESM 格式,沒有任何執行階段相依套件。使用 Node.js 內建的 fetch,每次呼叫都能傳入 AbortSignal。

參考

TypeScript SDK 速覽

同一組方法適用於所有模型;模型是第一個引數。

方法功能
mage.run(model, config)提交生成、等待完成,並回傳已完成的請求。
mage.generate(model, config)提交生成,並立即回傳請求。
mage.requests.get / cancel / wait依 id 讀取、停止或等待請求。
mage.uploads.upload(data)上傳最大 100 MB 的檔案,並回傳其 URL。
mage.characters / mage.references列出、建立與刪除已儲存的角色與參考圖。
mage.account.get()你的 Gems 餘額。
mage.architectures.list()即時模型目錄,包含選項與價格。

模型

從這些模型開始

圖片 · 每次 37 Gems 起

Guava API

擬真度媲美實拍照片

圖片 · 每次 135 Gems 起

Mango API

我們的旗艦圖片系列

圖片 · 每次 68 Gems 起

Nano Banana 2 API

文字銳利清晰,最高支援 4K

影片 · 每次 618 Gems 起

Cherry API

我們的旗艦影片系列

影片 · 每次 245 Gems 起

Lemon API

完整影片功能,價格更親民

音訊 · 每次 19 Gems 起

Seed Audio API

一個提示詞,生成人聲、音樂和音效

常見問題

常見問題

可以在瀏覽器中使用 Mage TypeScript SDK 嗎?

不行。API 金鑰會消耗你的 Gems,所以請只保存在你的伺服器上。API 不會傳送 CORS 標頭,因此瀏覽器無法直接呼叫;請改為呼叫你自己的後端,再由後端使用 SDK。

TypeScript SDK 支援 CommonJS 嗎?

此套件僅提供 ESM。Node.js 20.19 以上版本也能在 CommonJS 中用 require() 載入。

TypeScript SDK 可以搭配 Next.js 使用嗎?

可以,適用於伺服器端程式碼,例如 route handler 與 server action。SDK 以 fetch 和 AbortSignal 等標準 Web API 建構,因此其他支援 fetch 的伺服器執行環境應該也能運作,不過 CI 只在 Node.js 上測試。

Mage SDK 是免費且開源的嗎?

是的。SDK 與 ComfyUI 節點皆以 MIT 授權在 GitHub 上開源,安裝完全免費。你只需為實際執行的生成付費,以 Gems 依各模型標示的價格計算。

新的 Mage 模型能搭配舊版 SDK 使用嗎?

可以。將新模型的 id 以字串傳入就能執行;SDK 會依所有模型共通的欄位檢查設定。每當 API 參考文件有變動,機器人就會更新型別,所以新模型會在下一個版本附上自己的型別。

SDK 如何避免重試請求時重複扣款?

每次提交都會帶有 Idempotency-Key。SDK 會為每次呼叫產生新的金鑰,並在自行重試該次呼叫時沿用同一把金鑰,因此重試的提交會回傳原本的請求,不會再次收費。

SDK 穩定嗎?

目前處於 0.x 的 Beta 階段,次要版本仍可能更動內容。API 本身的版本另外管理,並在 v1 內保持穩定。

Mage API 的費用是多少?

沒有訂閱制,也沒有月費。每次生成都依該模型的標示價格以 Gems 支付,標準方案中 1,000 Gems 為 $1。每個模型頁面都會列出預設設定下的價格,每次回應也會顯示實際扣款金額。生成失敗會退款;但被 Mage 內容政策封鎖的不會退款。若你的餘額不足以支付請求,系統會在扣款前直接拒絕。

使用 API 需要 Mage 會員資格嗎?

不需要。API 只使用 Gems。會員方案及其應用程式內無限生成的權益不適用於 API 請求,因此任何擁有 Gems 的 Mage 帳號都能呼叫。

API 生成的內容可以商用嗎?

可以。你使用 Mage 建立的內容,包括透過 API 和 MCP 伺服器產生的內容,都可以用於商業用途。我們歡迎標示出處,但不強制要求。

開始使用 Mage 打造你的作品

一個帳號、一份 Gems 餘額,通用所有模型。只需為你生成的內容付費。

取得 API 金鑰閱讀 TypeScript 指南

相關內容