# Polling an item connector's execution status


## Steps

### 1. Setup SDK

Setup the PluggyClient with your application credentials.

### 2. Start polling status

Since `UPDATING` status means that the connection is syncing with the provider, you should start fetching in intervals to get the new item status.

### 3. Return item

Return the item with the new status. See more information about item statuses [here](https://docs.pluggy.ai/docs/item-lifecycle).

## Code

```typescript
import { Item, PluggyClient } from 'pluggy-sdk'

function sleep(ms: number): Promise<void> {
  return new Promise(resolve => {
    setTimeout(resolve, ms)
  })
}

const { CLIENT_ID = '', CLIENT_SECRET = '' } = process.env

const client = new PluggyClient({
  clientId: CLIENT_ID,
  clientSecret: CLIENT_SECRET,
})

async function waitForItemExecutionFinish(itemId: string): Promise<Item> {
  // poll item status, until it's connection finishes
  let item = await client.fetchItem(itemId)
  console.log(`Item status: ${item.status}, execution status: ${item.executionStatus}`)

  while (item.status === 'UPDATING') {
    // wait a few seconds before next request (to prevent 429 error response)
    await sleep(2000)

    // retrieve item status
    item = await client.fetchItem(item.id)
    console.log(`Item status: ${item.status}, execution status: ${item.executionStatus}`)
  }

	// item's connection has finished, check the result to act on it
  // (item.status may be: 'LOGIN_ERROR', 'OUTDATED', 'WAITING_USER_INPUT', or 'UPDATED')
  // see docs for more info: https://docs.pluggy.ai/docs/item-lifecycle
  return item
}

const item = await waitForItemExecutionFinish('my-item-id-1234')

console.log('Item status polling finished, result:', item)
```

### Example Response

```json
{
  "id": "2242624c...",
  "connector": {},
  "createdAt": "2022-10-20T13:38:04.056Z",
  "updatedAt": "2022-10-21T04:18:08.000Z",
  "status": "UPDATED",
  "executionStatus": "SUCCESS",
  "lastUpdatedAt": "2022-10-21T04:18:08.000Z",
  "webhookUrl": null,
  "error": null,
  "clientUserId": null,
  "statusDetail": null,
  "parameter": null
}
```
