> ## Documentation Index
> Fetch the complete documentation index at: https://docs.spaceport.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# Job Monitoring

> Learn how to monitor asynchronous operations with the Spaceport SDK.

# Job Monitoring

The SDK provides utilities for monitoring asynchronous job operations with configurable timeouts and intervals:

```typescript theme={null}
import { SpaceportSDK } from '@spaceport/sdk'

async function monitorJobs() {
  const sdk = SpaceportSDK.createWithAccount(account, {
    chain: 'devnet',
    apiKey: process.env.SDK_API_KEY,
  })

  // Monitor a job with custom timeout and polling interval
  const jobStatus = await sdk.utils.pollJobStatus(jobId, {
    timeout: 300000, // 5 minutes timeout
    interval: 3000, // Poll every 3 seconds
  })

  // Handle different job statuses
  if (jobStatus.status === 'completed') {
    console.log('Job completed successfully!')

    // Handle different data structures returned by jobs
    let results: any[] = []
    if (Array.isArray(jobStatus.data)) {
      results = jobStatus.data
    } else if (jobStatus.data?.value && Array.isArray(jobStatus.data.value)) {
      results = jobStatus.data.value
    }

    console.log(`Processed ${results.length} items`)
  } else if (jobStatus.status === 'failed') {
    console.error(`Job failed: ${jobStatus.error || 'Unknown error'}`)
  }

  // Monitor multiple jobs in parallel
  const jobIds = ['job1', 'job2', 'job3']
  const jobStatuses = await Promise.all(jobIds.map((id) => sdk.utils.pollJobStatus(id)))
}
```

### Utility Methods

* **`utils.pollJobStatus(jobId, options?)`**: Monitors job status with polling
  * `jobId`: The job identifier to monitor
  * `options.timeout`: Maximum time to wait (default: 60 seconds)
  * `options.interval`: Polling interval (default: 1 second)

### Job Status Handling

Jobs can return different data structures depending on the operation:

* **Array format**: Direct array of results
* **Wrapped format**: `{ value: [...] }` containing the results array
* **Error format**: `{ error: "error message" }` for failed jobs

The polling utility automatically handles timeouts and provides detailed status information for debugging and monitoring purposes.
