What ydomain offers developers: an HTTP API, webhook callbacks and two embed scripts.
ydomain developer documentation
Three separate things live here. They share one account and one set of listings, and nothing else: you can use any of them without the others.
| What it is | Start at | |
|---|---|---|
| API | An HTTP API you call. Manage listings, read and answer leads, manage endpoints. Needs an API key. | Authentication |
| Webhooks | Calls we make to you. A signed POST to a URL of yours whenever something changes. Needs no key. |
Events and deliveries |
| Embeds | Two script tags. Put a contact form, or the whole landing page, on a domain you own. Needs nothing at all. | Scripts |
Most integrations use two of the three: webhooks to hear that something happened, the API to read the details and act.
The API
- Base URL:
https://ydomain.com/api/v1 - Format: JSON in, JSON out. Send
Accept: application/json. - Authentication: a bearer API key on every request.
- Version:
v1. A breaking change gets a new prefix; fields are only ever added insidev1.
| Page | What is in it |
|---|---|
| Authentication | Keys, abilities, rate limits, pagination, errors |
| Domains | List, read, create, update and delete listings |
| Leads | Read enquiries, change status, reply to the buyer |
| Webhook endpoints | Create and remove endpoints over the API |
A first request
curl https://ydomain.com/api/v1/me \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Accept: application/json"
{
"data": {
"id": "01920f1a-6c4e-7a51-9d0b-4c8f2b7e1a33",
"name": "Renee de Vries",
"email": "[email protected]",
"locale": "nl",
"currency": "EUR",
"abilities": ["domains:read", "leads:read"],
"counts": {
"domains": 148,
"leads": 27
}
}
}
GET /me needs no ability beyond a valid key, so it is the quickest way to
check that a key works and to see what it is allowed to do.
Conventions
- Identifiers are UUIDv7 strings. A listing can also be addressed by its
full domain name, so
GET /domains/example.comworks as well as the id. - Timestamps are ISO 8601 with an offset:
2026-02-14T09:31:07+00:00. - Money is a number plus a separate three-letter currency, never a
formatted string.
4950and"EUR", not"€4.950". - A single record is returned under
data. A list is returned underdatawithlinksandmetabeside it. - Nothing is returned for a delete: the status is
204with an empty body. - Unknown fields in a request body are ignored, so sending a whole object back after changing one field is safe.
Webhooks
A webhook is the other direction: we POST to a URL of yours, signed, whenever
something happens on your account. Endpoints are set up under
Settings → Webhooks in the account area, or over the API.
Read Events and deliveries for the list of events, the body we send and how to verify the signature.
Embeds
Two script tags, for a domain you already own: one puts the whole landing page on it, the other puts only a contact form somewhere on your own page. No key, no account setup, nothing to configure — the script works out which listing it belongs to from the page it runs on.
Read Scripts.
Reading these docs as text
Every page is also served as Markdown, which is what you want if you are feeding this to a model or a script:
- One page:
https://ydomain.com/docs/api/domains.md - Everything at once:
https://ydomain.com/docs/llms-full.txt - The index:
https://ydomain.com/llms.txt