Hosted site & custom domain
Every studio on Mr Charles can publish a website without writing anything. It renders from the data the studio already keeps up to date — rooms, prices, photos, hours, address — so there is no second place to maintain.
What the studio gets
Section titled “What the studio gets”- A page per language (Spanish, Catalan, English) with hero, rooms, gear, hours, map and contact.
- Bookings 24/7 on every room where online booking is enabled.
- Legal pages (notice, privacy, cookies) built from the legal details the studio fills in.
- A confirmation message to the guest, a notification to the studio, and a reminder 24 h before.
https://<slug>.sites.mrcharles.app, with a certificate, out of the box.
Publish it
Section titled “Publish it”-
Verify ownership. Studio dashboard → the studio must be
verified(tax id, phone code, a document showing the business name; a person reviews it). Publishing is blocked until then — the API answers403 STUDIO_NOT_VERIFIED. -
Fill the website tab. Template (
stageordaylight), colours, logo, tagline, about, gallery, WhatsApp and Instagram, legal details. -
Enable online booking per room. For each room: minimum / maximum / step duration, payment modes, deposit percentage, cancellation notice, instructions and photos. A room is only bookable when it is active, priced, has hours and is enabled.
-
Publish. The checklist (
GET /studios/{id}/site/checklist) lists what is still missing; whencanPublishis true, publishing makes the site live.
Connect a custom domain
Section titled “Connect a custom domain”-
Claim the domain in the dashboard (or
PUT /studios/{id}/site/domainwith{"domain":"studiouno.com"}). You get back the exact records to create:{"domain": "studiouno.com","cnameTarget": "sites.mrcharles.app","aRecord": "203.0.113.10","txtName": "_mrcharles-verify.studiouno.com","txtValue": "mc-verify-9f3c…"} -
Create two DNS records at your registrar:
Type Name Value TXT_mrcharles-verifythe txtValuefrom the responseCNAMEwww(or the subdomain you want)sites.mrcharles.appFor an apex domain (
studiouno.comwith nowww), use anArecord pointing ataRecordunless your DNS provider supports CNAME flattening / ALIAS. -
Verify. Press Verify (or
POST /studios/{id}/site/domain/verify). We look up the TXT record; DNS can take a few minutes, and409 DOMAIN_UNVERIFIEDjust means “not visible yet — try again”. -
Done. The certificate is issued on the first request to the new hostname.
canonicalHostin the site payload flips to your domain, and theslug.sites…address keeps working.
Reading the site from outside
Section titled “Reading the site from outside”The same payload that renders the hosted site is public, so a directory or a landing page can show live data:
# by slugcurl -s https://api.mrcharles.app/api/v1/public/sites/studio-uno-madrid
# or by hostname — useful if all you have is the domaincurl -s "https://api.mrcharles.app/api/v1/public/sites/resolve?host=studiouno.com"Both answer 404 when the site is not live. Cache for 60 s; that is what we do. Full shape in Site payload.