Skip to content

Workflow

Bulk verification by job

Verify up to 10,000 identities, accounts or companies per job through the API, a dashboard CSV upload or Speedmap Connect.

What it does

Bulk Verification, in detail.

Up to 10,000 items

One product per job, processed concurrently with per-row idempotency, so retries are never billed twice.

CSV in, CSV out

Upload a spreadsheet, map columns, watch progress and export results in the dashboard.

A handle, never rows

The API and MCP server return a job id; results stay in GET /v1/bulk/{id}/results and the dashboard.

PII-free results

Each row carries status, match and a masked subject; open any row by reference for detail.

How it works

From request to decision.

  1. 1

    POST /v1/bulk

    Send the product and items, or upload a CSV in the dashboard.

  2. 2

    Track progress

    Poll GET /v1/bulk/{id} or wait for bulk.completed.

  3. 3

    Read results

    GET /v1/bulk/{id}/results, or export from the dashboard.

Routing and providers

Each item runs through the same engine, consent gate, rules and audit trail as a single check. Products: nin, bvn, phone, business, account and signals, plus the preview document lookups.

Use it

One request. One normalized response.

Call POST /v1/bulk through @speedmap/node, speedmap for Python, or the bulk_verify tool in Speedmap Connect.

Request
curl -X POST http://localhost:4000/v1/bulk \
  -H "Authorization: Bearer sk_test_..." \
  -H "Idempotency-Key: $(uuidgen)" \
  -H "Content-Type: application/json" \
  -d '{
  "product": "account",
  "name": "October vendor payouts",
  "items": [
    {
      "account_number": "0123456789",
      "bank_code": "058",
      "match": {
        "name": "Clarke Griffin"
      }
    }
  ]
}'
Response · 202 Accepted
{
  "id": "job_0361edf0de3af03c",
  "object": "bulk_job",
  "product": "account",
  "name": "October vendor payouts",
  "status": "running",
  "total": 1,
  "processed": 0,
  "counts": {
    "verified": 0,
    "not_found": 0,
    "failed": 0
  },
  "progress": 0,
  "mode": "sandbox",
  "created_at": "2026-10-20T12:55:01.429Z",
  "completed_at": null
}

Use cases

Where Nigerian teams use it.

Portfolio re-verification

Re-check an existing customer book after a regulatory change.

Payout batches

Verify every beneficiary account before a disbursement run.

Workforce onboarding

Verify a cohort of riders or field staff at once.

Seller audits

Re-verify every seller’s CAC status before a peak trading period.

Part of:Payments & payoutsMobility & logisticsHR & gig platformsGovernment & agencies

What you get back

The fields you will read.

  • id / status / progress

    Meaning
    queued, running or completed; processed of total, 0–100
  • counts

    Meaning
    verified, not_found and failed so far
  • results[].row

    Meaning
    Your row index
  • results[].reference_id / status / match / subject

    Meaning
    The assertion per row

Assertion tier

Rows are PII-free on every tier.

Full tier

Open any row’s reference_id directly for the record, subject to your tier.

Pricing

Each item is billed at its product’s price, exactly as a single check.

FAQ

Bulk Verification questions.

Need more detail? Read the documentation or talk to our team.

Which products support bulk?
NIN, BVN, phone, business, account and fraud signals. Face, document image and AML checks run singly or by hosted link.

Start verifying in minutes. Go live when you’re ready.

Create your account in under a minute and explore the full dashboard. We switch your workspace live after a short compliance review.