# Wait for a result

Most images convert in seconds, a few take minutes. Pick the way to wait that fits your program.

| Way | How | Best for |
| --- | --- | --- |
| In the call | `POST /v1/vectorize` with `wait` (0 to 60 s, 30 by default): `200` with the files, else `202` | Scripts, the CLI, most apps |
| The SDKs | `vectorize()` waits through a `202` for you | Node.js and Python |
| Polling | `GET /v1/conversions/{id}` every few seconds until `status` ends | Jobs and queues |
| Events | `GET /v1/conversions/{id}/events`: Server-Sent Events, one per change | A page showing progress |
| Webhooks | We POST to your server when it ends | Servers; nothing to keep open |

## The statuses

`waiting` (in line behind your other conversions), `queued`, `processing`, then one of `completed`, `failed`, `expired` or `canceled`. The last four never change again.

## A 202, by hand

```bash
# 202: the conversion finishes by itself. Read it until it ends.
curl https://api.vecsnap.com/v1/conversions/$ID -H "Authorization: Bearer $VECSNAP_API_KEY"
# then its file
curl "https://api.vecsnap.com/v1/conversions/$ID/download?format=web" -H "Authorization: Bearer $VECSNAP_API_KEY"
```

> **Retry with the same key.** Send an `Idempotency-Key` on every POST. A request sent again with the same key and the same image is the same conversion, never a second charge.

---
This page: https://vecsnap.com/docs/wait-for-a-result
