---
title: "List this account’s bulk jobs"
method: GET
path: "/v1/vat/bulk"
tags: ["VAT validation"]
---

# List this account’s bulk jobs

`GET /v1/vat/bulk`

## Request

- Base URL: `https://api.vatnode.dev`
- URL: `https://api.vatnode.dev/v1/vat/bulk`
- Auth: HTTP bearer

## Query parameters

- `page` integer
- `limit` integer

## Response `200`

Jobs newest first.

- BulkJobPage
  - `items` BulkJob[], required
    - `jobId` string, uuid, required
    - `status` 'queued' | 'processing' | 'finished' | 'cancelled' | 'failed', required: `finished` means every position has an answer – including positions that answered with an error. It is not a claim that every VAT ID was successfully validated; read `summary`. `cancelled` means the job stopped early: positions it had already answered keep their results, the rest stay `pending` and unbilled. `failed` also means the job stopped early, for a reason of its own rather than a stop it was asked for; `errorCode` says which. Positions are treated exactly as under `cancelled`. All three are terminal. Branch on the terminal set, not on `finished` alone, so a job that ends any other way does not leave a poller running until the job expires.
    - `totalItems` integer, required
    - `processedItems` integer, required
    - `summary` object, required
      - `valid` integer, required
      - `invalid` integer, required
      - `errors` integer, required: Positions that carry an `error` object.
    - `createdAt` string, date-time, required
    - `startedAt` string, date-time, nullable
    - `finishedAt` string, date-time, nullable
    - `cancelRequestedAt` string, date-time, nullable: When a cancel was first requested; the job may still be stopping. A `cancelled` job can have this `null` – it was stopped by something other than a cancel request, and `errorCode` says what.
    - `expiresAt` string, date-time, required: When the job and its positions are deleted (30 days after submission). The underlying checks remain in your check history.
    - `errorCode` string, nullable: Why the job ended the way it did, when that needs saying. `null` for an ordinary run and for a cancel you requested. `API_KEY_REVOKED` means the API key the job was submitted with was revoked while it was running, so it stopped where it stood.
  - `total` integer, required
  - `page` integer, required
  - `pages` integer, required

## Other responses

- `400`: The request body, query string or path parameters failed structural validation (wrong type, missing required field, out-of-range length, malformed enum, etc.). Returns the standard error envelope with code `INVALID_REQUEST`. This is distinct from a semantically well-formed request that is rejected later (e.g. `INVALID_FORMAT` for a VAT ID that parses but is not a valid VAT number).
- `401`: Missing or invalid API key.

---

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