Перейти до вмісту

Mage SDK · TypeScript

Mage TypeScript SDK

Генеруйте зображення, відео й аудіо з Node.js за допомогою типізованих конфігурацій для кожної моделі Mage. Один виклик надсилає запит, чекає й повертає результат.

npm install @mage-space/sdk

Коротко

Mage TypeScript SDK — це офіційний клієнт із відкритим кодом для Mage API, опублікований як @mage-space/sdk. Установіть його командою "npm install @mage-space/sdk", задайте MAGE_API_KEY і викличте mage.run з id моделі та конфігурацією, щоб отримати готові зображення, відео чи аудіо від будь-якої з 28 моделей. Він працює на Node.js 20.19 або новішій версії, а також у будь-якому серверному середовищі з fetch, і кожна генерація оплачується в Gems.

  • 20.19+Node.js
  • 0Залежності під час виконання
  • 28Типізовані моделі
  • MITВідкритий код

Налаштування

Установіть TypeScript SDK і запустіть модель

  1. Установіть пакет

    Додайте @mage-space/sdk до свого проєкту.

    npm install @mage-space/sdk
  2. Задайте API-ключ

    Створіть ключ у розділі API → API Keys на mage.space і експортуйте його. Клієнт читає MAGE_API_KEY.

    export MAGE_API_KEY="mage_sk_..."
  3. Згенеруйте

    Викличте run з id моделі та її конфігурацією. Він дочекається результату й поверне його; вихідний файл буде в 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 з рекомендованою затримкою (backoff) і повертає завершений запит із 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 МБ і повертає його URL.
mage.characters / mage.referencesПоказує, створює та видаляє збережених персонажів і референси.
mage.account.get()Ваш баланс Gems.
mage.architectures.list()Актуальний каталог моделей із параметрами та цінами.

Моделі

Почніть із цих моделей

  • Зображення · від 37 Gems

    Guava API

    Фотореалізм, який не відрізниш від справжнього фото

  • Зображення · від 135 Gems

    Mango API

    Наша флагманська лінійка моделей для зображень

  • Зображення · від 51 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 і новіші можуть підключати його через require() і з CommonJS.
Чи працює TypeScript SDK з Next.js?
Так, у серверному коді, наприклад в обробниках маршрутів і серверних діях. SDK побудований на fetch і стандартних вебAPI, як-от AbortSignal, тож інші серверні середовища з fetch теж мають працювати, хоча CI тестує його на Node.js.
Чи безкоштовні й відкриті SDK Mage?
Так. SDK і вузли ComfyUI мають ліцензію MIT та доступні на GitHub, а встановити їх можна безкоштовно. Ви платите лише за генерації, які запускаєте, у Gems за ціною, указаною для кожної моделі.
Чи працюють нові моделі Mage зі старішою версією SDK?
Так. Передайте id нової моделі рядком, і вона запрацює: SDK перевіряє конфігурацію за полями, спільними для всіх моделей. Бот оновлює типи щоразу, коли змінюється довідник API, тож нові моделі отримують власні типи в наступному релізі.
Як SDK уникають подвійної оплати за повторний запит?
Кожен запит містить Idempotency-Key. SDK створює новий ключ для кожного виклику й використовує його повторно, коли сам повторює цей виклик, тож повторне надсилання повертає початковий запит і не стягує плату.
Чи стабільні SDK?
Вони в бета-версії 0.x, тож другорядна версія ще може їх змінити. Версії самого API ведуться окремо, і в межах v1 він залишається стабільним.
Скільки коштує Mage API?
Жодної підписки чи щомісячної плати. Кожна генерація оплачується в Gems за ціною моделі, а 1000 Gems коштують $1 у стандартному пакеті. На сторінці кожної моделі вказана ціна за стандартних налаштувань, а у відповіді на запит показано точну суму списання. Якщо генерація не вдалася, кошти повертаються; якщо її заблокувала політика щодо контенту Mage — ні. Запит, на який не вистачає балансу, відхиляється ще до будь-якого списання.
Чи потрібна підписка на Mage, щоб користуватися API?
Ні. API працює лише на Gems. Плани підписки та безлімітна генерація в застосунку не поширюються на API-запити, тож його може викликати будь-який акаунт Mage з Gems.
Чи можна використовувати результати API в комерційних цілях?
Так. Контент, створений у Mage, зокрема через API та MCP-сервер, можна використовувати в комерційних цілях. Вказувати авторство бажано, але не обов’язково.

Створюй з Mage

Один акаунт, один баланс Gems, усі моделі. Плати лише за те, що генеруєш.