Verify Policy (Sync)
POST /api/v1/verify
Validates a policy number against format patterns, the FCA register, and country-specific databases. Costs 1 credit on success.
Request body
| Parameter | Type | Required | Description |
|---|---|---|---|
policy_number | string | ✓ | The policy number to verify |
country | string | ✓ | ISO code: UK, DE, FR |
insurance_type | string | ✓ | motor, travel, or health |
provider | string | Insurer name — improves confidence |
Response
| Field | Type | Description |
|---|---|---|
status | string | verified, inconclusive, or unverified |
confidence_score | number | 0.0–1.0. Above 0.7 is a strong match. |
verification_sources | array | Checks that ran: format, fca_register, registry |
insurer | object | Matched FCA-registered insurer. Null if not found. |
flags | array | Warning flags, e.g. expired, sanctioned |
credits_charged | integer | 1 on success, 0 on inconclusive/error |
processed_in_ms | integer | Server-side processing time |
Examples
curl -X POST https://policynumbers.com/api/v1/verify \
-H "Authorization: Bearer pk_live_xxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{"policy_number":"AXK12345678","country":"UK","insurance_type":"motor","provider":"AXA"}'
200 OK
{
"status": "verified",
"confidence_score": 0.96,
"verification_sources": ["format", "fca_register", "registry"],
"insurer": { "name": "AXA Insurance UK plc", "reference": "202312", "regulated": "YES", "authorised": true },
"flags": [],
"credits_charged": 1,
"processed_in_ms": 312
}
400 Missing field
{ "error": "missing_required_fields", "detail": "Required fields missing: insurance_type" }
402 No credits
{ "error": "insufficient_credits", "detail": "Credit balance is 0." }