# Batch verify

> Verify up to 100 companies in one synchronous call, with per-item results and errors.

Canonical: https://corpoapi.com/endpoints/batch-verify

## Integration

`POST /v1/verify/batch`

Example request: `{ "items": [ { "jurisdiction": "se", "company_number": "5567370431" }, { "jurisdiction": "se", "company_number": "0000000000" } ] }`

Response: Per-item results and errors for up to 100 items, returned synchronously in the HTTP response.

Webhook: none. Batches return synchronously in the HTTP response.

## API reference

`POST /v1/verify/batch with { "items": [ { "jurisdiction": "se", "company_number": "5567370431" }, { "jurisdiction": "se", "company_number": "0000000000" } ] }`

```json
{
  "id": "job_01M52TPX5N4CCZGEZ1ZCT0D6QM",
  "status": "completed",
  "created_at": "2026-10-16T17:03:46.721810Z",
  "completed_at": "2026-10-16T17:03:46.869022Z",
  "counts": {
    "total": 2,
    "done": 2,
    "verified": 1,
    "partial": 0,
    "mismatch": 0,
    "not_found": 1,
    "ambiguous": 0,
    "errors": 0
  },
  "charge_usd": "0.00",
  "results": [
    {
      "index": 0,
      "result": {
        "result": "verified",
        "company": {
          "id": "co_sea81b5ad3d15a050b79a96d8b",
          "jurisdiction": "se",
          "company_number": "5567370431",
          "legal_name": "Klarna Bank AB",
          "display_name": null,
          "name_translit": "Klarna Bank AB",
          "legal_form": {
            "code": "AB-ORGFO",
            "elf_code": "se_aktiebolag",
            "label": "Aktiebolag"
          },
          "status": "active",
          "status_date": null,
          "registration_date": "1930-11-24",
          "dissolution_date": null,
          "address": {
            "line1": "ARSC, DC24000",
            "city": "GÖTEBORG",
            "postcode": "40508",
            "region": null,
            "country": "SE",
            "raw": "ARSC, DC24000  GÖTEBORG 40508 SE-LAND"
          },
          "officers_availability": "gated",
          "identifiers": [
            {
              "scheme": "SE-ORGNR",
              "value": "5567370431",
              "is_primary": true,
              "valid_check": true
            },
            {
              "scheme": "EU-VAT",
              "value": "SE556737043101",
              "is_primary": false,
              "valid_check": true
            }
          ],
          "other_names": [
            {
              "name": "Klarna Bank AB",
              "kind": "translated",
              "start_date": "1998-02-12",
              "end_date": null
            }
          ],
          "activities": [
            {
              "scheme": "SNI-2025",
              "code": "70200",
              "description": null,
              "is_primary": true
            },
            {
              "scheme": "SNI-2025",
              "code": "78100",
              "description": null,
              "is_primary": false
            },
            {
              "scheme": "SNI-2025",
              "code": "85594",
              "description": null,
              "is_primary": false
            }
          ],
          "officers": []
        },
        "candidates": [],
        "checks": [],
        "reference": null
      },
      "error": null
    },
    {
      "index": 1,
      "result": {
        "result": "not_found",
        "company": null,
        "candidates": [],
        "checks": [],
        "reference": null
      },
      "error": null
    }
  ],
  "pagination": {
    "limit": 2,
    "next_cursor": null,
    "has_more": false,
    "total_estimate": 2,
    "returned": 2
  }
}
```

Example response. Source metadata omitted for clarity.

| Status | Code | When |
| --- | --- | --- |
| 413 | `batch_too_large` | More than 100 items were sent. A synchronous batch takes up to 100 items. |
| 422 | `invalid_parameter` | An item is missing its jurisdiction or fails validation. |
| 429 | `rate_limited` | A rate limit window is exceeded. A batch counts as one request. |
| 402 | `free_tier_exhausted` | The free tier is used up and no payment method is set. |

Price: $0.01 per verified company.

## One call for a whole book

Send a list of companies to check, for example a customer book to re-verify or a vendor list from a spreadsheet. A batch of up to 100 items returns in the response, with a result for each item.

- Up to 100 items per call
- Per-item results and errors
- Billed per item, like single verifies

## Know the cost before you send it

Each item is priced like a single verify, and the starter allowance applies across the whole batch. The same company is billed at most once a day across every endpoint, so re-checking a book with the same items does not multiply your bill.

- Per-item pricing, same as verify
- Free tier applies to the whole batch
- Daily dedup per company

## FAQ

### How big can a batch be?

Up to 100 items, returned synchronously in the HTTP response, so one call checks a whole page of a supplier or customer list.

### How is a batch billed?

Per item, exactly like a single verify: $0.01 after the starter allowance. The free tier covers the first 100 starter calls, whether they come in one call or many.

### Does a batch count as one request against my rate limit?

Yes. A batch call counts as one request, not one per item, but each item that returns a company is still one billable verified company.
