Skip to main content
The product flow is four calls, in this order. Everything runs against the same origin as the app, so a browser session is all the credentials there are.
Three of these four need a session the app issues, and there are no public keys yet. Only the first one answers anyone. What is open today.
The TypeScript side uses @ownsi/sdk, which is typed off the server’s own routes — a renamed route is a compile error, not a runtime surprise. The curl side shows what it does underneath.
1

Read the zone before you sign anyone in

This is the only public endpoint. It streams, so the provider lands on screen before the publishing estimate does.
Two events, in this order
Knowing the provider is what lets the next screen say “in Cloudflare, go to DNS → Records” instead of “add a TXT record somewhere”.
2

Claim the domain

Now a session is required. The response carries the record to create.
Two resources, not one: a domain is a name on your account, and a claim is one attempt at proving it. @ownsi/sdk recomposes them into a sentence; over HTTP it is two calls, and the claim comes back with a verificationId — the process that will do the reading.
Over HTTP the claim carries records, an array, empty once the claim has ended. The SDK narrows it to record, one object or null.
3

Create the record in the DNS panel

Render record.host, never record.name: a copy button that hands over the fully qualified name is how people end up with domain_appended.
4

Read the verification back

ownsi runs on its own. Poll the verification, or force a run with POST /api/verifications/:id/runs.
While it is not proved you get one of two blocks, never both empty:
  • diagnosis — something about the record is wrong, and fix says what to change.
  • waitEstimate — nothing is wrong, DNS has not caught up yet. secondsRemaining is how long.
The claim ends proved the moment the verification does; read it back at GET /api/claims/:id for the date the proof is dated by.

Next

Diagnosis Payload

The field shapes behind the thirteen codes, and how to narrow on them.

Claim Flow

How the product’s own polling, states and copy are put together.