---
title: "Poll an export job"
method: GET
path: "/migrations/{migration_id}/exports/jobs/{job_id}"
tags: ["Exports"]
---

# Poll an export job

`GET /migrations/{migration_id}/exports/jobs/{job_id}`

## Request

- Base URL: `https://app.vern.so/api/v1`
- URL: `https://app.vern.so/api/v1/migrations/{migration_id}/exports/jobs/{job_id}`
- Auth: API key in header `x-api-key`
- TypeScript: <https://skmtc.dev/vern-so/apis/vern-api/docs/migrations/:migration_id/exports/jobs/:job_id/get.ts> (a function with typed inputs; its response is checked against the schema)

## Response `200`

Job state. `download_url` is set once `status` is `completed`, and is null again after `expires_at` (the job still answers 200).

- ExportJob
  - `job_id` string
  - `status` 'pending' | 'running' | 'completed' | 'failed'
  - `format` 'csv' | 'zip'
  - `rows_processed` integer, nullable
  - `total_rows` integer, nullable
  - `file_size` integer, nullable
  - `error` string, nullable
  - `expires_at` string
  - `download_url` string, nullable: A time-limited link, present once the job is complete.

## Other responses

- `401`: API key missing, malformed, or revoked.
- `404`: Migration or job not found.
- `429`: Rate limit hit. Counted per account (company), not per API key or IP. Each endpoint is in one class: reads 30/minute, writes 30/minute, jobs (starting an export) 15/hour, agent (starting a run, answering, submitting credentials) 30/hour. Creating a migration and starting a `generate` run also have their own 30/hour caps. A separate per-IP ceiling absorbs floods before authentication. `Retry-After` gives the seconds until the window resets, alongside `X-RateLimit-Limit`, `X-RateLimit-Remaining` and `X-RateLimit-Reset`.
- `500`: Unexpected server error.

## Changes

- **2026-11-08** `0ae6ef5f1887`: 4 info
  - added the optional property `code` to the response with the `401` status
  - added the optional property `code` to the response with the `404` status
  - added the optional property `code` to the response with the `429` status
  - added the optional property `code` to the response with the `500` status
- **2026-08-21** `f23b9ff77f72`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/vern-so/apis/vern-api/changes/migrations/:migration_id/exports/jobs/:job_id/get.md)

---

[API](https://skmtc.dev/vern-so/apis/vern-api.md) - [All operations](https://skmtc.dev/vern-so/apis/vern-api/llms.txt) - [OpenAPI document](https://skmtc.dev/vern-so/apis/vern-api/revisions/0ae6ef5f1887?raw)
