> For the complete documentation index, see [llms.txt](https://docs.ospree.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.ospree.io/developers/blockchain-analytics/openapi/address-verification.md).

# Address Verification

Verify ownership of a wallet address.

**Webhook delivery.** A verification that settles notifies every endpoint registered for the `ADDRESS_VERIFICATION` event family: `ADDRESS_VERIFICATION_COMPLETED` when the signature checks out, `ADDRESS_VERIFICATION_FAILED` otherwise. Delivery is **at-least-once and retried** — an endpoint that answers `5xx`, or that cannot be reached at all, is retried with exponential backoff (1s, doubling to a 120s cap) for up to 12 attempts spanning roughly 10 minutes. Every attempt of one delivery repeats the same `request_id`, so a receiver may dedupe on it. An endpoint that answers `4xx` is **not** retried: a definitive rejection cannot be changed by re-sending identical content. A delivery that exhausts the retry window is not redelivered later.

## POST /api/v2/analytics/verification/chains/{chain}/addresses/{address}

> Request Wallet Verification

```json
{"openapi":"3.1.0","info":{"title":"Ospree Address API","version":"2.0.0"},"tags":[{"name":"Address Verification","description":"Verify ownership of a wallet address.\n\n**Webhook delivery.** A verification that settles notifies every endpoint registered for the `ADDRESS_VERIFICATION` event family: `ADDRESS_VERIFICATION_COMPLETED` when the signature checks out, `ADDRESS_VERIFICATION_FAILED` otherwise. Delivery is **at-least-once and retried** — an endpoint that answers `5xx`, or that cannot be reached at all, is retried with exponential backoff (1s, doubling to a 120s cap) for up to 12 attempts spanning roughly 10 minutes. Every attempt of one delivery repeats the same `request_id`, so a receiver may dedupe on it. An endpoint that answers `4xx` is **not** retried: a definitive rejection cannot be changed by re-sending identical content. A delivery that exhausts the retry window is not redelivered later."}],"servers":[{"url":"https://dev-api.ospree.io","description":"Development"}],"security":[{"HTTPBearer":[]}],"components":{"securitySchemes":{"HTTPBearer":{"type":"http","scheme":"bearer"}},"schemas":{"RequestVerificationRequestCom":{"properties":{"email":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Email","description":"Deprecated and ignored. Ospree does not send anything to this address. The verification link is returned in the response body, and delivering it to the wallet holder is the caller's responsibility. Any value supplied is discarded rather than stored.","deprecated":true}},"type":"object","title":"RequestVerificationRequestCom"},"ApiFailResponse":{"properties":{"status":{"type":"string","title":"Status","default":"fail"},"message":{"type":"string","title":"Message"},"error_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Code","description":"Stable, machine-readable error code, e.g. `auth.unauthenticated`. Additive-only."},"data":{"anyOf":[{},{"type":"null"}],"title":"Data"}},"type":"object","required":["message"],"title":"ApiFailResponse","description":"*summary*: Api fail response model"},"ApiErrorResponse":{"properties":{"status":{"type":"string","title":"Status","default":"error"},"code":{"type":"integer","title":"Code","description":"Duplicates the HTTP status; use `error_code`. Removed in v3."},"message":{"type":"string","title":"Message"},"error_code":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Error Code","description":"Stable, machine-readable error code, e.g. `auth.unauthenticated`. Additive-only."},"data":{"anyOf":[{},{"type":"null"}],"title":"Data"}},"type":"object","required":["code","message"],"title":"ApiErrorResponse","description":"*summary*: Api error response model"}}},"paths":{"/api/v2/analytics/verification/chains/{chain}/addresses/{address}":{"post":{"tags":["Address Verification"],"summary":"Request Wallet Verification","operationId":"Request_for_wallet_verification_api_v2_analytics_verification_chains__chain__addresses__address__post","parameters":[{"name":"address","in":"path","required":true,"schema":{"type":"string","minLength":3,"title":"Address"}},{"name":"chain","in":"path","required":true,"schema":{"type":"string","minLength":3,"title":"Chain"}}],"requestBody":{"content":{"application/json":{"schema":{"anyOf":[{"$ref":"#/components/schemas/RequestVerificationRequestCom"},{"type":"null"}],"title":"Params"}}}},"responses":{"200":{"description":"A wallet-verification link was minted.","content":{"application/json":{"schema":{}}}},"401":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiFailResponse"}}}},"402":{"description":"Payment Required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiFailResponse"}}}},"422":{"description":"Unprocessable Entity - Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiFailResponse"}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiErrorResponse"}}}}}}}}}
```
