---
title: "Get a backfill's progress"
method: GET
path: "/v1/jobs/{id}/progress"
tags: ["Jobs"]
---

# Get a backfill's progress

`GET /v1/jobs/{id}/progress`

## Request

- Base URL: `https://docs.grepr.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://docs.grepr.ai/v1/jobs/{id}/progress`
- Auth: one of:
  - API key in header `GREPR-API-KEY`
  - OpenID Connect (`https://grepr-prod.us.auth0.com/.well-known/openid-configuration`)

Gets what a logs backfill is doing: waiting, selecting its events with Athena, or sending them, with how many it has read and each vendor has received. Read live while the backfill runs; the final counts once it ends.

## Path parameters

- `id` string, required

## Response `200`

Progress retrieved successfully

- BackfillProgress: What a logs backfill is doing, and how far it is.
  - `bytesScanned` integer: The bytes the backfill's current query has scanned.
  - `eventsDelivered` object: The events each vendor confirmed receiving, by vendor integration id.
  - `eventsRead` integer: The events read so far.
  - `eventsTotal` integer: The events selected to send, once they are. A vendor can receive fewer, since events it already has are skipped.
  - `failureReason` string: Why the backfill failed, when it did.
  - `phase` 'PENDING' | 'WAITING' | 'STARTING' | 'FINDING_CUTOFF' | 'EXPORTING' | 'SENDING' | 'NOTHING_TO_SEND' | 'FINISHED' | 'FAILED' | 'CANCELLED' | 'DELETED', required: What the backfill is doing.
  - `selectingMillis` integer: How long the backfill's current query has queued and run.
  - `waitingReason` string: Why the backfill is waiting, when it is.

## Other responses

- `401`: Unauthorized
- `404`: No logs backfill has this id.

---

[API](https://skmtc.dev/grepr/apis/grepr-api.md) - [All operations](https://skmtc.dev/grepr/apis/grepr-api/llms.txt) - [OpenAPI document](https://skmtc.dev/grepr/apis/grepr-api/revisions/2a5ce03a0bf0?raw)
