aidoom

ارسال و پیگیری پردازش

هر کار ناهمگام است: ارسال می‌کنید، شناسه می‌گیرید، و نتیجه را با وب‌هوک یا 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);   // اعتبار بازمی‌گردد