Sites & publication
Read business details, save a draft, and publish the reviewed website.
Start with a business
setup_business (POST /v1/businesses) creates the business and puts its site live, built from the trade's template, its name and its cities. A business created in the BenjiAds dashboard works the same way. With several businesses, name the one to edit (business_id on MCP, x-workspace on REST).
Site editing, publication, and lead capture are free. BenjiAds is free: the only money anywhere is what the business adds for its ads.
Read and update the site
curl https://api.benjiads.com/v1/site \
-H "Authorization: Bearer $BENJIADS_API_KEY"
curl -X PATCH https://api.benjiads.com/v1/site \
-H "Authorization: Bearer $BENJIADS_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: update-business-details-001" \
-d '{"displayName":"Alex Plumbing","tagline":"Local plumbing in Austin"}'The site response contains its public settings, published siteDoc, and current siteDraft. Private payment and provider account identifiers are omitted.
update_site changes business settings. Fields such as locations, links, and socials replace the supplied collection; first read the existing values to preserve items you intend to keep.
Draft, review, publish
Use save_site_draft to submit a full BenjiAds site document. Begin with the existing siteDoc or siteDraft; preserve its structure and edit the intended blocks. The shared site builder sanitizer validates the document.
Read the draft back to review it, then publish:
curl -X POST https://api.benjiads.com/v1/site/publish \
-H "Authorization: Bearer $BENJIADS_API_KEY" \
-H "Idempotency-Key: publish-reviewed-homepage-001"Publishing copies the saved draft to the published document and clears the draft. It does not purchase a domain. Domain setup remains in the dashboard.
Leads
Lead capture and lead reading are free: list_leads returns contact details in full for every workspace (gated is always false). Internal fields such as IP addresses, browser data and attribution payloads are never returned.