# Verify Address Ownership

<mark style="color:yellow;">`POST`</mark> /api/v2/analytics/verification/chains/{chain}/addresses/{address}

### Overview

The Address Ownership Verification process allows a Virtual Asset Service Provider (VASP) to confirm that a user owns or controls a specified self-hosted (non-custodial) wallet address. This is achieved through a secure signature process facilitated by Ospree.

{% hint style="success" %}
This feature requires activation by our team. Please contact us at <sales@ospree.io>.
{% endhint %}

For specific API integration flows, see:

* [Self-Hosted Wallet Deposit](https://docs.ospree.io/api-integration-flows#self-hosted-wallet-deposit)
* [Self-Hosted Wallet Withdrawal](https://docs.ospree.io/api-integration-flows#self-hosted-wallet-withdrawal)

### Step-by-Step

{% stepper %}
{% step %}
**Verification Request**

The VASP initiates the process by calling:\
POST /api/v2/analytics/verification/chains/{chain}/addresses/{address}\
The request must include the blockchain network identifier (chain) and the user’s wallet address (address).&#x20;

{% hint style="success" %}
Note: This verification process supports the following blockchain networks: EVM-compatible chains, Solana, and Bitcoin.
{% endhint %}
{% endstep %}

{% step %}
**Secure Link Generation**

Ospree generates a unique, secure verification link. This link enables the user to prove ownership by signing a verification message. The link is returned to the VASP in the API response.
{% endstep %}

{% step %}
**Link Distribution**

The VASP delivers the verification link to the user via its preferred communication channel (e.g., email, SMS, or in-app message).
{% endstep %}

{% step %}
**User Verification**

The user accesses the link and signs a verification message with their wallet. This signature confirms they control the private key associated with the wallet address.
{% endstep %}

{% step %}
**Verification Confirmation**

Ospree verifies the signature and confirms ownership. The result is sent to the VASP through the configured webhook endpoint.
{% endstep %}
{% endstepper %}

Path Parameters

| Name      | Type   | Description                                                                                                    | Required |
| --------- | ------ | -------------------------------------------------------------------------------------------------------------- | -------- |
| `chain`   | string | Blockchain network name. Example: <mark style="color:orange;">`bitcoin`</mark>                                 | True     |
| `address` | string | Unique blockchain identifier. Example: <mark style="color:orange;">`1JjYpRXfPntVEJqAjxsYmvFjjJBdJyaJ2k`</mark> | True     |

Sample Request

{% tabs %}
{% tab title="REQUEST" %}

```json
curl -X POST https://sandbox.ospree.io/api/v2/analytics/verification/chains/bitcoin/addresses/1Q8QR5k32hexiMQnRgkJ6fmmjn5fMWhdv9

-h 'Content-Type: application/json' \
-h 'Accept: application/json' \
-h 'Authorization: ••••••' \
```

{% endtab %}
{% endtabs %}

{% tabs %}
{% tab title="RESPONSE" %}

```json
{
  "status": "success",
  "data": {
    "link": "app.ospree.io/address/verification/HkVXKYpdGKSXK_l9Ss1YmG_xen6wrOhLKsSHBogVuJ-HDe4F4GxiOTsWCMfJOCrVHFgJQaQ-x4cZUg6rtFXporrR8_smWuWXM2_yxVFom9PJA-3HyN4rxkXuG9qzjYkPYv9zYF0fLvo8_du3RmKuGPdH0Keq_IIMp2iCAOUQOk-KCyBzoDWQ13dizcTkgmOX8Nm53iJUPDSJV-d7SOplD5ngzWGDH9nFY0DdoqIujfLh5rAFDGsvPHpXp7YSaFyt",
  }
}
```

{% endtab %}
{% endtabs %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.ospree.io/ospree-api/blockchain-analytics/verify-address-ownership.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
