SDK
TypeScript SDK
Официальный TypeScript SDK Clipia (npm clipia-ai 1.5.0) — установка, очередь генераций, каталог и оценка цены, проверка вебхуков, ошибки и CLI clipia.
Официальный TypeScript-клиент Clipia публикуется в npm как clipia-ai. Он работает на глобальном fetch (Node.js 18+), собран в ESM и CommonJS, поставляется с типами и командой clipia для терминала. Клиент покрывает очередь генераций (queue.submit, queue.status, queue.result), высокоуровневый subscribe, каталог моделей с оценкой цены и данные аккаунта.
Пакет и точки входа
Пакет называется clipia-ai, текущая версия — 1.5.0. Импорт клиента — из clipia-ai, отдельная лёгкая точка для проверки вебхуков — clipia-ai/webhook. Единственная зависимость времени выполнения, commander, нужна только CLI. Базовый URL — https://api.clipia.ai.
Быстрый старт
Установка
npm i clipia-aiКлиент
Ключ — серверный секрет. Храните его в переменной окружения CLIPIA_KEY:
import { createClient } from 'clipia-ai';
const clipia = createClient({ apiKey: process.env.CLIPIA_KEY! });createClient принимает apiKey, необязательный baseUrl (только https://), необязательную реализацию fetch, а также maxRetries (сколько раз queue.submit повторяет временный сбой, по умолчанию 2; 0 отключает повторы) и retryDelayMs (базовая пауза между повторами, по умолчанию 500 мс). Ключ отправляется в заголовке Authorization: Bearer.
Генерация с ожиданием результата
subscribe ставит задачу в очередь и опрашивает статус, пока она не завершится:
const out = await clipia.subscribe('nano-banana-2', {
input: { prompt: 'неоновый город под дождём, кинематографичный свет' },
onQueueUpdate: (s) => console.log(s.status),
pollIntervalMs: 1000, // по умолчанию
timeoutMs: 600000, // по умолчанию
});
if (out.status === 'COMPLETED') {
console.log(out.output?.images?.[0]?.url); // ссылка на готовое изображение
console.log(out.cost); // стоимость в кредитах
} else {
console.error(out.error?.code, out.error?.message);
}subscribe возвращает результат и при FAILED, поэтому проверяйте status. Кратковременные ошибки опроса (сеть, 429, 5xx) клиент повторяет сам, учитывая Retry-After. Если задача не завершилась за timeoutMs, выбрасывается ClipiaApiError с кодом subscribe_timeout; задача при этом продолжает выполняться, и её можно забрать по request_id.
Ручное управление очередью
const job = await clipia.queue.submit('nano-banana-2', {
input: { prompt: '...' },
webhookUrl: 'https://example.com/clipia-webhook', // необязательно
});
const status = await clipia.queue.status(job.request_id);
const result = await clipia.queue.result(job.request_id);
// result.pending === true, пока задача в IN_QUEUE или IN_PROGRESSВсе методы принимают необязательный AbortSignal для отмены HTTP-запроса: queue.status(id, signal), а в submit и subscribe — поле signal. В версии 1.5 собственного таймаута на один HTTP-запрос у клиента нет: зависшее соединение держит вызов, пока не сработает ваш сигнал, поэтому в серверном коде передавайте AbortSignal.timeout(30_000) или похожий.
Ключ идемпотентности
На каждый вызов queue.submit SDK генерирует новый Idempotency-Key (UUID v4) и сам повторяет временные сбои — ошибку сети, 429, 500, 502, 503, 504 — до maxRetries раз с тем же ключом, учитывая Retry-After: внутренний повтор не создаст вторую задачу. Но новый вызов submit в вашем коде получает новый ключ. Чтобы ваш собственный повтор попал в ту же задачу, передайте idempotencyKey и используйте его при повторе — см. «Идемпотентность».
Каталог, цена и аккаунт
const { data } = await clipia.models.list();
const model = await clipia.models.get('nano-banana-2');
const { credits } = await clipia.models.estimate('nano-banana-2', {
prompt: 'неоновый город под дождём',
});
const account = await clipia.account.get();
// { account_id, balance: { credits }, usage_30d: { requests, credits_spent } }В models.list() могут прийти LLM-модели без slug — см. «Каталог моделей». Сумму estimate возвращает в кредитах до запуска, ничего не списывая.
Проигнорированные параметры
Если в input есть ключ, который модель не применит (опечатка, параметр другой модели), queue.submit и models.estimate принимают запрос как обычно, а ключ возвращают в warnings — по элементу на каждый. Когда все параметры приняты, поля в ответе нет.
// job — ответ queue.submit из раздела «Ручное управление очередью»
for (const w of job.warnings ?? []) {
console.warn(w.code, w.parameter, w.message);
// unknown_parameter aspect_ration Parameter "aspect_ration" is not recognized and was ignored. …
}
// То же до запуска: оценка ничего не списывает
const estimate = await clipia.models.estimate('nano-banana-2', { prompt: '...' });
console.log(estimate.warnings); // undefined — все параметры принятыТип InputWarning и поле warnings описаны в SDK начиная с версии 1.5.0. subscribe возвращает итог генерации, предупреждений в нём нет: чтобы их прочитать, вызывайте queue.submit или models.estimate. Значения code и остальные правила — в разделе «Проигнорированные параметры».
Проверка вебхуков
import { verifyWebhookSignature } from 'clipia-ai/webhook';
const ok = verifyWebhookSignature({
secret: process.env.CLIPIA_WEBHOOK_SECRET!,
headers: req.headers,
body: rawBody, // сырое тело запроса, до JSON.parse
// toleranceSeconds: 300 — по умолчанию
});Функция возвращает true или false. Секрет вебхуков свой у каждого API-ключа — см. «Вебхуки».
Обработка ошибок
Любой ответ не из диапазона 2xx превращается в ClipiaApiError с полями status, code, type, message и, если сервер прислал Retry-After, retryAfterMs. Сбой сети даёт status: 0 и code: "network_error".
import { ClipiaApiError } from 'clipia-ai';
try {
await clipia.queue.submit('nano-banana-2', { input: { prompt: '...' } });
} catch (e) {
if (e instanceof ClipiaApiError) {
console.error(e.status, e.code, e.type, e.message);
}
}Коды ошибок — на странице «Ошибки».
CLI
Пакет ставит команду clipia. Ключ берётся из переменной CLIPIA_KEY или флага --key; флаг виден в списке процессов, поэтому на общих машинах используйте переменную.
export CLIPIA_KEY=clipia_test_...
npx clipia models # каталог
npx clipia models nano-banana-2 # схема одной модели
npx clipia estimate nano-banana-2 --input '{"prompt":"кот"}'
npx clipia generate nano-banana-2 --input '{"prompt":"кот"}' --wait
npx clipia status <request_id>
npx clipia result <request_id>
npx clipia accountУ generate есть флаги --webhook <url> и --idempotency-key <key> (один ключ на повторные запуски одной и той же задачи), у всех команд — --base-url <url>.
Песочница
Ключ с префиксом clipia_test_ возвращает заготовленный результат мгновенно и без списания кредитов — удобно для тестов и CI. Подробнее — в разделе «Песочница».
Инструменты MCP
Параметры 10 базовых и 5 дополнительных инструментов Clipia MCP, модели по умолчанию, slug с косой чертой и семь служебных инструментов карточек.
Python SDK
Официальный Python SDK Clipia (PyPI clipia 1.5.0) — клиенты Clipia и AsyncClipia, очередь генераций, каталог и оценка цены, проверка вебхуков и ошибки.