Developers
Read any business without an account. Writing takes a key, issued for a claimed business or for anyone who asks.
Every read is open. No key, no sign-in, and one shared rate limit so the service stays up. Writes are keyed: a bearer credential on every call, an idempotency key on every write.
Quickstart
Search costs nothing to try and needs no key.
curl "https://api.welila.com/v1/search?q=dentist"
Read one business by its slug, from a search result or the directory.
curl https://api.welila.com/v1/business/{slug}
A write takes a key as a bearer credential, and an idempotency key so a retry never doubles the change.
curl https://api.welila.com/v1/confirm \
-H "Authorization: Bearer wk_eu_live_..." \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{"business":"{slug}","fact":"{key}","value":"the value you are confirming"}'
The sandbox
Harbour Dental is the fixture business Welila's own tests and every preview build read: one business carrying all four fact states behind one response, each with the record id behind it.
{
"key": "saturday",
"label": "Saturday",
"value": "09:00 to 13:00",
"state": "confirmed_by_owner",
"readings": [
{
"source": "website",
"value": "09:00 to 13:00"
},
{
"source": "google",
"value": "09:00 to 12:00"
}
],
"record": "wl-4c2f-0828"
}
Harbour Dental ships with every preview build. Seeding it on the shared staging host has not landed, so this excerpt is the shape to build against until it does.
Keys
A key is free for a claimed business, or for anyone who asks. Write to hello@welila.com naming the business, and one is issued by hand.
Self-serve issuance from the dashboard has not landed.
Authentication
How a person signs in, and how an agent or a script is authorised to write, is at /auth.md.
Where the contract lives
The OpenAPI document is at /openapi.json and the catalogue at /.well-known/api-catalog points to it. The full reference, generated from the same document, is at /docs/reference. The current version travels in the Welila-Version header, so a change is dated, not a new path.
@welila/cli and @welila/sdk are generated from the OpenAPI document, in the repository today. Publishing them to npm has not landed.
