Một lệnh gọi, có ngay kết quả
run gửi yêu cầu tạo, polling theo backoff mà API khuyến nghị và trả về yêu cầu đã hoàn tất cùng result.url.
Xem nhanh
SDK TypeScript của Mage là ứng dụng khách chính thức, mã nguồn mở cho API Mage, được phát hành với tên @mage-space/sdk. Cài đặt bằng "npm install @mage-space/sdk", đặt MAGE_API_KEY, rồi gọi mage.run với id mô hình và một cấu hình để nhận ảnh, video hoặc âm thanh hoàn chỉnh từ bất kỳ mô hình nào trong 28 mô hình. SDK chạy trên Node.js 20.19 trở lên, hoặc bất kỳ môi trường chạy phía máy chủ nào có fetch, và mọi lượt tạo đều được trả bằng Gems.
20.19+
Node.js
0
Phụ thuộc lúc chạy
28
Mô hình có định kiểu
MIT
Mã nguồn mở
Thiết lập
Thêm @mage-space/sdk vào dự án của bạn.
npm install @mage-space/sdkTạo khóa tại API → API Keys trên mage.space rồi export khóa đó. Ứng dụng khách sẽ đọc MAGE_API_KEY.
export MAGE_API_KEY="mage_sk_..."Gọi run với id mô hình và cấu hình của nó. Lệnh sẽ chờ kết quả rồi trả về; đầu ra nằm ở 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);Ví dụ
Mỗi ví dụ đều bắt đầu từ một ứng dụng khách đọc 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;
}
}Vì sao nên dùng SDK
run gửi yêu cầu tạo, polling theo backoff mà API khuyến nghị và trả về yêu cầu đã hoàn tất cùng result.url.
Mỗi lần gửi đều kèm một idempotency key. Lỗi mạng và lỗi máy chủ được thử lại với backoff, và lần gửi được thử lại sẽ không bị tính phí thêm.
Các tệp quá lớn cho data URL sẽ đi qua signed upload, còn ticket, PUT và bước kiểm tra kích thước đã có SDK lo.
Khi API từ chối, bạn nhận được HTTP status, mã lỗi và request id; lần tạo thất bại hoặc bị hủy và lỗi hết thời gian chờ đều có loại lỗi riêng.
MangoConfig, CherryConfig và các kiểu còn lại được tạo từ tài liệu tham khảo API, nên trình soạn thảo sẽ gợi ý các trường và bắt lỗi tùy chọn không hợp lệ.
ESM, không có phụ thuộc lúc chạy. SDK dùng fetch tích hợp sẵn của Node.js và mọi lệnh gọi đều nhận một AbortSignal.
Tham khảo
Cùng một bộ phương thức dùng cho mọi mô hình; mô hình là đối số đầu tiên.
| Phương thức | Chức năng |
|---|---|
| mage.run(model, config) | Gửi một lượt tạo, chờ hoàn tất và trả về yêu cầu đã hoàn thành. |
| mage.generate(model, config) | Gửi một lượt tạo và trả về yêu cầu ngay lập tức. |
| mage.requests.get / cancel / wait | Xem, dừng hoặc chờ một yêu cầu theo id. |
| mage.uploads.upload(data) | Tải lên tệp tối đa 100 MB và trả về URL của tệp. |
| mage.characters / mage.references | Liệt kê, tạo và xóa các nhân vật và ảnh tham chiếu đã lưu. |
| mage.account.get() | Số dư Gems của bạn. |
| mage.architectures.list() | Danh mục mô hình trực tiếp kèm tùy chọn và giá. |
Mô hình
Ảnh · từ 37 Gems
Chân thực đến mức như ảnh chụp thật
Ảnh · từ 135 Gems
Dòng mô hình ảnh chủ lực của chúng tôi
Ảnh · từ 68 Gems
Chữ sắc nét, dễ đọc, lên đến 4K
Video · từ 618 Gems
Dòng mô hình video chủ lực của chúng tôi
Video · từ 245 Gems
Đủ mọi tính năng video, với mức giá dễ chịu hơn
Âm thanh · từ 19 Gems
Giọng nói, nhạc và hiệu ứng âm thanh từ một prompt
FAQ
Không. Khóa API sẽ tiêu tốn Gems của bạn, vì vậy hãy giữ nó trên máy chủ của bạn. API không gửi header CORS, nên trình duyệt không thể gọi trực tiếp; hãy gọi backend của chính bạn và để backend đó dùng SDK.
Gói này chỉ hỗ trợ ESM. Từ Node.js 20.19 trở lên, bạn cũng có thể dùng require() để nạp nó từ CommonJS.
Có, trong mã phía máy chủ như route handler và server action. SDK được xây dựng trên fetch và các Web API chuẩn như AbortSignal, nên các môi trường chạy phía máy chủ khác có fetch cũng nên hoạt động, dù CI chỉ kiểm thử trên Node.js.
Có. SDK và các node ComfyUI được cấp phép MIT trên GitHub, và việc cài đặt hoàn toàn miễn phí. Bạn chỉ trả tiền cho những lượt tạo mà bạn chạy, bằng Gems, theo giá niêm yết của từng mô hình.
Có. Chỉ cần truyền id của mô hình mới dưới dạng chuỗi là chạy được; SDK sẽ kiểm tra cấu hình dựa trên các trường mà mọi mô hình đều có. Một bot sẽ cập nhật các kiểu dữ liệu mỗi khi tài liệu tham khảo API thay đổi, nên mô hình mới sẽ có kiểu dữ liệu riêng ở bản phát hành kế tiếp.
Mỗi lượt gửi đều kèm một Idempotency-Key. SDK tạo khóa mới cho mỗi lệnh gọi và dùng lại khóa đó khi tự thử lại lệnh gọi ấy, nên lượt gửi được thử lại sẽ trả về yêu cầu ban đầu và không bị tính phí.
SDK đang ở giai đoạn beta với phiên bản 0.x, nên phiên bản phụ vẫn có thể thay đổi chúng. Bản thân API được đánh phiên bản riêng và vẫn ổn định trong v1.
Không có gói đăng ký hay phí hàng tháng. Mỗi lượt tạo được trả bằng Gems theo giá niêm yết của mô hình, và 1.000 Gems có giá 1 $ với gói tiêu chuẩn. Trang của từng mô hình đều ghi giá theo cài đặt mặc định, và mỗi phản hồi đều cho biết chính xác khoản đã tính. Lượt tạo bị lỗi sẽ được hoàn lại; lượt bị chặn bởi chính sách nội dung của Mage thì không. Yêu cầu vượt quá số dư của bạn sẽ bị từ chối trước khi tính bất kỳ khoản phí nào.
Không. API chỉ chạy bằng Gems. Các gói thành viên và quyền tạo không giới hạn trong ứng dụng không áp dụng cho các yêu cầu API, nên bất kỳ tài khoản Mage nào có Gems đều có thể gọi API.
Có. Bạn có thể dùng nội dung tạo bằng Mage, kể cả qua API và máy chủ MCP, cho mục đích thương mại. Ghi nguồn thì chúng tôi rất trân trọng nhưng không bắt buộc.
Một tài khoản, một số dư Gems, mọi mô hình. Bạn chỉ trả tiền cho những gì mình tạo.