# generaltranslation: General Translation Core SDK: awaitJobs
URL: https://generaltranslation.com/en-US/docs/core/class/methods/translation/await-jobs.mdx
---
title: awaitJobs
description: API reference for the awaitJobs method to poll and wait for translation jobs to complete
---
## Overview
The `awaitJobs` method polls the status of translation jobs and resolves when all jobs have reached a terminal state (`completed`, `failed`, or `unknown`) or a timeout is reached. This is a convenience wrapper around [`checkJobStatus`](/docs/core/class/methods/translation/check-job-status) that handles polling automatically.
```typescript
const gt = new GT({ projectId: 'your-project-id', apiKey: 'your-api-key' });
const enqueueResult = await gt.enqueueFiles(uploadedFiles, {
sourceLocale: 'en',
targetLocales: ['es', 'fr'],
});
const result = await gt.awaitJobs(enqueueResult);
if (result.complete) {
console.log('All jobs finished');
} else {
console.log('Timed out — some jobs still in progress');
}
```
`complete: true` means all jobs reached a terminal state — it does **not** mean all jobs succeeded. Check individual `job.status` values to confirm success.
## Reference
### Parameters
| Name | Type | Description |
|------|------|-------------|
| `enqueueResult` | [`EnqueueFilesResult`](/docs/core/types/enqueue-files-options) | The result object returned by [`enqueueFiles`](/docs/core/class/methods/translation/enqueue-files) |
| `options?` | `AwaitJobsOptions` | Optional polling configuration |
#### AwaitJobsOptions
| Name | Type | Default | Description |
|------|------|---------|-------------|
| `pollingIntervalSeconds?` | `number` | `5` | How often to poll for status updates |
| `timeoutSeconds?` | `number` | `600` (10 min) | Maximum time to wait before resolving with current statuses |
### Returns
`Promise`
```typescript
type AwaitJobsResult = {
/** Whether all jobs reached a terminal state (not necessarily success). */
complete: boolean;
jobs: JobResult[];
};
type JobResult = {
jobId: string;
status: JobStatus;
error?: { message: string };
};
```
| Property | Type | Description |
|----------|------|-------------|
| `complete` | `boolean` | `true` if no jobs are still in progress; `false` if the timeout was reached |
| `jobs` | `JobResult[]` | Final status of each job |
| `jobs[].jobId` | `string` | The job identifier |
| `jobs[].status` | [`JobStatus`](/docs/core/class/methods/translation/check-job-status#jobstatus) | Terminal status: `'completed'`, `'failed'`, or `'unknown'` |
| `jobs[].error?` | `{ message: string }` | Error details if the job failed |
---
## Example
### Enqueue and wait for translations
```typescript title="index.ts" copy
import { GT } from 'generaltranslation';
const gt = new GT({
projectId: 'your-project-id',
apiKey: 'your-api-key',
});
// Upload and enqueue
const { uploadedFiles } = await gt.uploadSourceFiles(files, {
sourceLocale: 'en',
});
const enqueueResult = await gt.enqueueFiles(uploadedFiles, {
sourceLocale: 'en',
targetLocales: ['es', 'fr', 'de'],
});
// Wait for all jobs to finish (polls every 10s, times out after 5 min)
const result = await gt.awaitJobs(enqueueResult, {
pollingIntervalSeconds: 10,
timeoutSeconds: 300,
});
if (!result.complete) {
console.warn('Some jobs did not finish in time');
}
// Check individual results
for (const job of result.jobs) {
if (job.status === 'completed') {
console.log(`Job ${job.jobId} succeeded`);
} else if (job.status === 'failed') {
console.error(`Job ${job.jobId} failed: ${job.error?.message}`);
}
}
```
---
## Notes
* Replaces manual polling loops — no need to call `checkJobStatus` in a `while` loop yourself
* Jobs that are not found by the API are treated as `'unknown'` status
* If `enqueueResult` contains no jobs, the method resolves immediately with `{ complete: true, jobs: [] }`
* The timeout is a best-effort limit — the method will finish the current poll before resolving
## Next steps
* See [`enqueueFiles`](/docs/core/class/methods/translation/enqueue-files) to start translation jobs
* See [`checkJobStatus`](/docs/core/class/methods/translation/check-job-status) for manual status polling
* See [`downloadFile`](/docs/core/class/methods/translation/download-file) to download completed translations