FurniOpsDocs
API referenceBrand

Claim a brand

Asks FurniOps to let the organisation speak for a brand: a listed profile (profile), whose catalogue then moves to the organisation without copying anything, or its own profile, which then becomes verified. FurniOps gathers the evidence on the profile's website domain at once: a domain the organisation verified by DNS (strongest) and members whose verified address is at the domain. An invitation from FurniOps and a trademark registration add to it. Staff decide every claim, after re-checking the evidence. One claim may be pending at a time (409 otherwise), and a listed profile can be claimed only while the organisation's own catalogue is empty (409). Owners and admins only; never an API key or an AI agent.

POST/v1/brand/claims

Asks FurniOps to let the organisation speak for a brand: a listed profile (profile), whose catalogue then moves to the organisation without copying anything, or its own profile, which then becomes verified. FurniOps gathers the evidence on the profile's website domain at once: a domain the organisation verified by DNS (strongest) and members whose verified address is at the domain. An invitation from FurniOps and a trademark registration add to it. Staff decide every claim, after re-checking the evidence. One claim may be pending at a time (409 otherwise), and a listed profile can be claimed only while the organisation's own catalogue is empty (409). Owners and admins only; never an API key or an AI agent.

Authorization

apiKey
AuthorizationBearer <token>

An API key (fo_live_… / fo_test_…) as a bearer token

In: header

Header Parameters

FurniOps-Version?string

Dated API version; pinned per organisation on first use and overridable per request

Value in

  • "2026-10-01"
  • "2026-10-04"
FurniOps-Mode?string

The data the request acts on: test is the organisation's sandbox. An OAuth token picks it (live by default); an API key's mode is fixed, and naming the other one is refused

Value in

  • "live"
  • "test"
Idempotency-Key*string

Unique key for this operation, reused on retries (24 h)

Length1 <= length <= 257
FurniOps-Dry-Run?string

Preview the write and change nothing: true answers the would-be response, explain a Preview (application/vnd.furniops.preview+json)

Value in

  • "true"
  • "explain"

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

A claim. Evidence on the brand's domain (a DNS record, members' verified addresses) is gathered when it is filed

Response Body

application/json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

application/problem+json

curl -X POST "https://example.com/v1/brand/claims" \  -H "Idempotency-Key: string" \  -H "Content-Type: application/json" \  -d '{}'
{  "object": "vendor_claim",  "id": "string",  "kind": "listed",  "profile": {    "object": "vendor_profile",    "id": "string",    "name": "string",    "slug": "string",    "brands": [      "string"    ],    "website_domain": "string",    "status": "unclaimed",    "verified": true,    "verified_at": "2019-08-24T14:15:22Z",    "catalogue": "string",    "created_at": "2019-08-24T14:15:22Z"  },  "status": "pending",  "evidence": [    {      "kind": "dns",      "strength": "strong",      "domain": "string",      "org_domain": "string",      "verified_at": "2019-08-24T14:15:22Z",      "last_checked_at": "2019-08-24T14:15:22Z",      "captured_at": "2019-08-24T14:15:22Z"    }  ],  "strength": "strong",  "note": "string",  "message": "string",  "filed_by": "string",  "created_at": "2019-08-24T14:15:22Z",  "checked_at": "2019-08-24T14:15:22Z",  "decided_at": "2019-08-24T14:15:22Z"}