# Verify ownership

`POST /app/assets/{id}/ownership/verify`

Looks for the DNS TXT record or the HTTP file now. The first successful proof starts the asset's first scan; 422 when neither is found.

Scope: `assets:write`.

## Parameters

- `id` (path, integer, required)

## Example

```bash
curl -X POST "https://api.fortwatch.ai/app/assets/42/ownership/verify" \
  -H "Authorization: Bearer $FORTWATCH_API_KEY"
```

## Response 200

The request succeeded.

- `verified` (boolean, required)
- `method` (object | null, required)
- `alreadyVerified` (boolean, required)
- `scan` (object, required)
  - `id` (number, required)
  - `assetId` (number, required)
  - `status` (string, required)
  - `createdAt` (string (date-time), required)
  - `startedAt` (string (date-time) | null, required)
  - `jobsTotal` (number, required)
  - `jobsDone` (number, required)

```json
{
  "verified": true,
  "method": {},
  "alreadyVerified": true,
  "scan": {
    "id": 42,
    "assetId": 42,
    "status": "string",
    "createdAt": "2026-10-16T12:00:00.000Z",
    "startedAt": "2026-10-16T12:00:00.000Z",
    "jobsTotal": 1,
    "jobsDone": 1
  }
}
```

## Errors

- 400: The request is not valid: a field is missing or has the wrong shape (the message names it).
- 401: No valid credentials: the API key or access token is missing, revoked or expired (INVALID_API_KEY, INVALID_TOKEN).
- 403: Not allowed: the key or token lacks this scope (SCOPE_REQUIRED), the route is dashboard-only (SESSION_REQUIRED), or a plan limit applies.
- 404: Not found in your workspace.
- 429: Too many requests (RATE_LIMITED): wait the seconds Retry-After gives.
