ارسال و پیگیری پردازش
هر کار ناهمگام است: ارسال میکنید، شناسه میگیرید، و نتیجه را با وبهوک یا polling دنبال میکنید.
برآورد هزینه
قبل از اجرا ببینید چقدر خرج میشود — این تماس هیچ هزینهای ندارد.
const est = await client.jobs.estimate('face-swap');
// { tool: 'face-swap', credits: 10, balance: 250, affordable: true }
// ویدیو بر اساس ثانیه محاسبه میشود
const v = await client.jobs.estimate('video-face-swap', { seconds: 30 });آپلود فایل
یک بار آپلود کنید و شناسه را در چند کار مختلف استفاده کنید — نیازی به ارسال دوبارهٔ همان فایل نیست.
// مسیر فایل، Buffer، Blob یا stream — همه پذیرفته میشوند
const asset = await client.files.upload('./photo.jpg');
// همان فایل، سه کار مختلف
await client.jobs.create('face-enhance', { target_id: asset.id });
await client.jobs.create('colorizer', { target_id: asset.id });
await client.jobs.create('bg-removal', { target_id: asset.id });ارسال کار
// ارسال و برگشت فوری
const job = await client.jobs.create('face-swap',
{ target_id: asset.id },
{ idempotencyKey: `order-${orderId}` }, // اکیداً توصیه میشود
);
// یا: ارسال + انتظار تا پایان
const done = await client.jobs.run('face-swap',
{ target_id: asset.id },
{ onProgress: (j) => console.log(j.progress) },
);Idempotency-Key بگذارید. اگر پاسخ به شما نرسد و دوباره بفرستید، همان کار قبلی برمیگردد و اعتبار دوباره کسر نمیشود.
وضعیتها
pendingثبت شده، هنوز شروع نشده.queuedدر صف پردازش.processingدر حال انجام — درصد پیشرفت در progress.completedتمام شد؛ خروجی آمادهٔ دانلود است.failedناموفق — اعتبار بازگردانده شده.cancelledلغو شده — اعتبار بازگردانده شده.سه وضعیت آخر پایانیاند — پس از آنها هیچ تغییری رخ نمیدهد.
دریافت خروجی
// ذخیره روی دیسک (stream — برای ویدیوی بزرگ هم امن است)
await client.jobs.download(job.id, './result.jpg');
// یا بایتها
const buf = await client.jobs.content(job.id);
// یا stream مستقیم به پاسخ HTTP
import { Readable } from 'node:stream';
Readable.fromWeb(await client.jobs.stream(job.id)).pipe(res);فهرست و صفحهبندی
// یک صفحه
const page = await client.jobs.list({ page: 1, limit: 20, status: 'completed' });
// یا همهٔ صفحات، خودکار
for await (const job of client.jobs.iterate({ status: 'completed' })) {
console.log(job.id);
}لغو
js
await client.jobs.cancel(job.id); // اعتبار بازمیگردد