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
Python SDK của Mage là client mã nguồn mở chính thức cho Mage API, được phát hành với tên mage-space. Cài đặt bằng "pip install mage-space", đặ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 Python 3.10 trở lên, và mỗi lần tạo đều được trả bằng Gems.
3.10+
Python
httpx
HTTP client
28
Mô hình có định kiểu
MIT
Mã nguồn mở
Thiết lập
Thêm mage-space vào dự án của bạn.
pip install mage-spaceTạ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.
from mage_space import Mage
mage = Mage() # reads MAGE_API_KEY
request = mage.run("mango", {
"prompt": "Editorial portrait in soft daylight, 35mm film look",
"aspect_ratio": "4:5",
"model_id": "mango-v3",
})
print(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.
from mage_space import Mage
mage = Mage() # reads MAGE_API_KEY
submitted = mage.generate("cherry", {
"prompt": "Waves rolling onto a black sand beach at sunset",
"resolution": "720p",
"duration": "5",
})
final = mage.requests.wait(
submitted["request_id"],
timeout=900,
on_update=lambda request: print(request["status"]),
)from mage_space import Mage
mage = Mage() # reads MAGE_API_KEY
clip = mage.uploads.upload("clip.mp4") # a path, bytes, or a binary file
mage.run("cherry", {
"prompt": "Restyle this clip as a watercolor painting",
"videos": [clip["url"]],
})from mage_space import Mage
mage = Mage() # reads MAGE_API_KEY
mage.characters.create(
name="Ana",
handle="ana",
image="https://example.com/ana.png",
)
mage.run("mango", {"prompt": "@ana walking through a night market"})from mage_space import Mage, MageAPIError, MageGenerationError
mage = Mage() # reads MAGE_API_KEY
try:
mage.run("mango", {"prompt": "A lighthouse at night"})
except MageAPIError as error:
if error.code == "insufficient_gems":
print("Gems needed:", error.body["error"]["gems_required"])
else:
raise
except MageGenerationError as error:
print("No output:", error.code)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.
Mage và AsyncMage có chung mọi phương thức. Client bất đồng bộ phù hợp với máy chủ web, notebook và các pipeline chạy nhiều lượt tạo cùng lúc.
Mỗi mô hình có một TypedDict, chẳng hạn MangoConfig, được tạo từ tài liệu tham khảo API. Chú thích cấu hình bằng nó và trình kiểm tra kiểu sẽ kiểm tra các trường giúp bạn.
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 một đường dẫn, bytes hoặc tệp dung lượng 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
Có. AsyncMage có các phương thức giống Mage, dùng với await, và hoạt động như một async context manager.
Python 3.10 trở lên. Phụ thuộc duy nhất là httpx và typing-extensions.
Có. Dùng Mage trong script và notebook, hoặc AsyncMage với asyncio để chạy nhiều lượt tạo cùng lúc. Tài khoản có thể chạy tối đa 20 lượt tạo đồng thời.
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.