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 吗?

可以,用于路由处理程序和 server actions 等服务器端代码。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 测试阶段,次版本更新仍可能带来变动。API 本身单独进行版本管理,在 v1 内保持稳定。

Mage API 的费用是多少?

没有订阅,也没有月费。每次生成按对应模型的标价以 Gems 支付,标准包中 1,000 Gems 售价 $1。每个模型页面都会列出默认设置下的价格,每次响应也会返回实际扣费金额。生成失败会退还 Gems;因违反 Mage 内容政策而被拦截的则不予退还。如果你的余额不足以支付某次请求,该请求会在扣费前被拒绝。

使用 API 需要 Mage 会员吗?

不需要。API 仅使用 Gems。会员方案及其应用内无限生成权益不适用于 API 请求,因此任何有 Gems 的 Mage 账号都可以调用。

API 生成的内容可以商用吗?

可以。你用 Mage 创作的内容(包括通过 API 和 MCP 服务器生成的内容)可用于商业用途。署名我们会很感谢,但不是必须的。

用 Mage 开始开发

一个账号,一份 Gems 余额,畅用所有模型。按生成量付费,用多少付多少。

获取 API 密钥阅读 TypeScript 指南

相关内容