---
title: "POST /v1/verify"
method: POST
path: "/v1/verify"
tags: ["Verification"]
---

# POST /v1/verify

`POST /v1/verify`

Verify a business entity by name in a specific jurisdiction. Returns verification results synchronously if available within timeout, or a job ID for async retrieval via GET /v1/verify/status/:jobId. Charges credits based on tier: quick (1 credit), deep (15 credits), deep + force_refresh (25 credits). The response includes `full_verification_available` indicating whether deep verification is supported for the jurisdiction. When deep is not available, a `reason` object is returned. When webhook_url is provided, the result is delivered as a POST request to that URL once the async job completes, fails, or is refunded.

## Headers

- `idempotency-key` string

## Request body

- object
  - `entity_name` string, required — The business name to verify, e.g. "Acme Corporation"
  - `jurisdiction` string, required — Jurisdiction code, e.g. "us-fl" for Florida or "gb" for Great Britain
  - `entity_type` 'llc' | 'corporation' | 'lp' | 'llp' | 'sole_proprietorship' | 'nonprofit' | 'general_partnership' | 'other' — Optional entity type filter to narrow results
  - `verification_level` 'quick' | 'deep' — Verification tier: "quick" (1 credit) returns existence + status. "deep" (15 credits) returns full entity details including officers, registered agent, formation date, and filing history. Deep is only available in a subset of jurisdictions; requesting deep where unavailable returns a quick result with a reason.
  - `force_refresh` boolean — If true, returns the most current result instead of a previously stored one. Applies to deep verification only (cost: 25 credits instead of 15); ignored on quick verifications.
  - `webhook_url` string, uri — Optional URL to receive webhook notifications when the async job completes, fails, or is refunded. Must be a publicly reachable http(s) URL.

## Response `200`

Default Response

- object
  - `status` string, required — Job status: "completed" (sync result) or "pending" (async — poll via GET /v1/verify/status/:jobId)
  - `verification_level` 'quick' | 'deep', required — The tier at which verification was performed. May differ from the requested level if deep was requested but not available for this jurisdiction.
  - `full_verification_available` boolean, required — Whether deep verification is available for this jurisdiction
  - `reason` object — Present when full_verification_available is false, explaining the tier result
    - `code` 'jurisdiction_quick_only', required — Reason code for tier availability
    - `message` string, required — Human-readable explanation
  - `data` unknown
  - `job_id` string — Job ID for async polling, present when status is "pending"
  - `entity_id` string — Cached entity ID, present when a match was found
  - `cached` boolean, required — Whether the result was served from cache
  - `credits_charged` number, required — Number of credits deducted for this request

## Other responses

- `202` — Default Response
- `400` — Default Response
- `409` — Default Response

---

[API](https://skmtc.net/bizverify/apis/bizverify-api.md) · [All operations](https://skmtc.net/bizverify/apis/bizverify-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/bizverify/bizverify-api/versions/47b91ca07384/schema)
