# Verify Domain Claim

> POST /domains/:domain_id/claim/verify — trigger DNS verification for a domain claim.

`POST /domains/:domain_id/claim/verify`

Starts an **asynchronous verification process** for a domain claim. SendPing checks the claim’s TXT record and, once it resolves, transfers the domain to your account. Add the TXT record returned by [Claim Domain](https://www.sendping.co/docs/api/domains-claim) before calling this, then poll [Get Domain Claim](https://www.sendping.co/docs/api/domains-get-claim) to follow the `status`.

> **Note:** After the claim completes, the domain is transferred to your account as a **brand-new domain with its own DKIM keys** — the previous account’s DNS records can’t be reused. Fetch it with [Retrieve a domain](https://www.sendping.co/docs/api/domains-get), publish the new DKIM record(s), then run [Verify a domain](https://www.sendping.co/docs/api/domains-verify) to finish setup before sending.

**Path parameters**

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `domain_id` | string | Yes | The placeholder domain id returned when the claim was created. |

**Node.js**

```js
import { SendPing } from 'sendping';

const mb = new SendPing('mb_xxxxxxxxx');

const { data, error } = await mb.domains.verifyClaim('d91cd9bd-1176-453e-8fc1-35364d380206');
console.log({ data, error });
```

**Ruby**

```ruby
require "sendping"

SendPing.api_key = "mb_xxxxxxxxx"

SendPing::Domains.verify_claim("d91cd9bd-1176-453e-8fc1-35364d380206")
```

**PHP**

```php
<?php
require 'vendor/autoload.php';

use SendPing\SendPing;

$sendping = SendPing::client('mb_xxxxxxxxx');

$sendping->domains->verifyClaim('d91cd9bd-1176-453e-8fc1-35364d380206');
```

**Python**

```python
import sendping

sendping.api_key = "mb_xxxxxxxxx"

sendping.Domains.verify_claim("d91cd9bd-1176-453e-8fc1-35364d380206")
```

**Go**

```go
import "github.com/shekhu10/sendping-sdks/sendping-go"

client := sendping.NewClient("mb_xxxxxxxxx")

claim, err := client.Domains.VerifyClaim("d91cd9bd-1176-453e-8fc1-35364d380206")
```

**Rust**

```rust
use sendping::SendPing;

let mb = SendPing::new("mb_xxxxxxxxx");

let _claim = mb.domains.verify_claim("d91cd9bd-1176-453e-8fc1-35364d380206").await?;
```

**Java**

```java
import co.sendping.SendPing;
import co.sendping.SendPingResponse;

SendPing sendping = new SendPing("mb_xxxxxxxxx");

SendPingResponse response = sendping.domains().verifyClaim("d91cd9bd-1176-453e-8fc1-35364d380206");
```

**.NET**

```csharp
using SendPing;

ISendPing sendping = SendPingClient.Create("mb_xxxxxxxxx");

var resp = await sendping.DomainVerifyClaimAsync("d91cd9bd-1176-453e-8fc1-35364d380206");
```

**cURL**

```bash
curl -X POST 'https://www.sendping.co/api/domains/d91cd9bd-1176-453e-8fc1-35364d380206/claim/verify' \
  -H 'Authorization: Bearer mb_xxxxxxxxx'
```

**CLI**

```bash
sendping domains claim verify d91cd9bd-1176-453e-8fc1-35364d380206
```

### Response

```json
{
  "object": "domain_claim",
  "id": "dacf4072-4119-4d88-932f-6c6126d3a9d1",
  "name": "yourdomain.com",
  "status": "pending",
  "domain_id": "d91cd9bd-1176-453e-8fc1-35364d380206",
  "region": "us-east-1",
  "record": {
    "type": "TXT",
    "name": "yourdomain.com",
    "value": "sendping-domain-verification=3f8a1c2d4e5b6a7f8091a2b3c4d5e6f7",
    "ttl": "Auto"
  },
  "blocked_reason": null,
  "failure_reason": null,
  "created_at": "2026-06-16T17:12:02.059Z",
  "expires_at": "2026-06-23T17:12:02.059Z"
}
```

Errors: `not_found` if the claim does not exist or is not yours, and `plan_limit_reached` (402) when completing the claim would exceed your plan's domain limit — the claim stays `pending` and never flips until you upgrade, so handle this status explicitly instead of polling forever. See [Errors](https://www.sendping.co/docs/api/errors).
