---
title: "Confirm an owner claim"
method: POST
path: "/owner-claim/{token}/confirm"
tags: ["Owner Claim"]
---

# Confirm an owner claim

`POST /owner-claim/{token}/confirm`

## Request

- Base URL: `https://api.faireplace.com/api`
- URL: `https://api.faireplace.com/api/owner-claim/{token}/confirm`
- Auth: HTTP bearer

Finalizes an owner claim: links `owner.auth_user_id` to the currently
authenticated account and marks the claim session as consumed.

## Authentication
Unlike the `GET` above, this endpoint **requires authentication**
(Bearer JWT, `properties:read` permission). The user must be logged in;
the confirmation matches the authenticated account against the claim
initiator. The token is still read from the URL path.

## Body
The request body may be empty: the confirmation is derived from the JWT
and the path token.

## Example
```bash
curl -X POST https://api.faireplace.com/api/owner-claim/3f8b1c2d-...-9a0e/confirm \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'
```

**Response**:
```json
{
  "owner_id": "550e8400-e29b-41d4-a716-446655440000",
  "claimed_at": "2026-06-20T14:30:00Z"
}
```

## Path parameters

- `token` string, required

## Request body

- ConfirmOwnerClaimBody: Body for the confirm endpoint. An empty body is accepted: the confirmation is derived from the authenticated JWT and the token in the path. The optional field exists only to allow forward-compatible extension (e.g. consent flags).

## Response `200`

Claim confirmed and linked to the authenticated account.

- ConfirmOwnerClaimResponse: Response after a guest claim has been confirmed and linked to the current account.
  - `owner_id` string, uuid, required: Identifier of the owner that is now linked to the authenticated account.
  - `claimed_at` string, date-time, required: Timestamp at which the claim was confirmed.

## Other responses

- `400`: Validation error on the claim.
- `401`: Unauthorized
- `403`: The authenticated user is not allowed to confirm this claim (generic message).
- `404`: Token invalid, not found, or malformed (generic, anti-oracle).
- `409`: Conflict: the owner has already been claimed.
- `410`: The claim has expired or has already been used.
- `500`: Internal error (no infra details leaked).
- `502`: Downstream notifier/service unavailable.

---

[API](https://skmtc.dev/faireplace/apis/faireplace-property-management-api.md) · [All operations](https://skmtc.dev/faireplace/apis/faireplace-property-management-api/llms.txt) · [OpenAPI document](https://skmtc.dev/faireplace/apis/faireplace-property-management-api/revisions/69de39762919?raw)
