Build with Vyavsay
Turn a business's Google Maps link into a website written from its reviews, edit it, export it and connect its domain, from your own code or from an AI agent. The same API answers which loan schemes a business qualifies for and when its GST is due, from the rules.
Before you start
- A key acts for the account that made it, and only that account. Send it in an
Api-Keyheader. - Most of the API needs a paid plan. Your account and plan, the upgrade link, and the scheme and filing-date checks work on any plan.
- Everything has the limits it has on vyavsay.ai, plus a cap on requests per hour. A
429says when to try again; a402says which plan a feature needs. - A generated site is a private draft. Only the owner can publish it, from vyavsay.ai, after verifying the Google listing.
Connect an AI agent (MCP)
The MCP server is at https://vyavsay.ai/mcp (Streamable HTTP). In Claude Code:
claude mcp add --transport http vyavsay https://vyavsay.ai/mcp \ --header "Api-Key: vy_your_key"
In other clients that read an MCP config file:
{
"mcpServers": {
"vyavsay": {
"type": "http",
"url": "https://vyavsay.ai/mcp",
"headers": { "Api-Key": "vy_your_key" }
}
}
}40 tools
- generate_site
- Build a website for a business written from its reviews: from its Google Maps link (a preview that cannot be published), or with source google_business_profile and no link, from every review on the Business Profile its owner has connected (publishable). Returns a generation at once; poll get_generation until status is ready (then outputs.site_slug) or failed. The site is a private draft until the owner publishes it.
- create_client
- For agencies: create a business for a client who has not signed up yet (you own it until they claim it). Pass external_ref (your own id for the client): calling again with the same one returns the same client. place_id is the client's Google listing, used later to verify and publish.
- list_clients
- For agencies: your clients with status (unclaimed, claimed, verified, live), latest site and generation. Page with after = the previous response's next.
- create_claim_invite
- For agencies: a one-time link (valid 14 days) for the client to claim the business you made for them, after which you manage it and they own it. Send the link yourself. agency_name is shown to the client.
- delete_client
- For agencies: delete a client nobody has claimed yet, with its drafts and photos. Use it when the business opts out (preview.removed_by_business). A claimed client can't be deleted by you; leave it instead.
- get_capabilities
- What Vyavsay can build and what you have left: site tiers, themes, pages, languages, templates, the exact content shape of every section type for compose_site, live features, your plan and remaining allowances, and agency rate limits. Call this before composing a site.
- get_client_page
- The client's free page (vyavsay.ai/b/<slug>) as saved, or a draft to start from.
- save_client_page
- Save the client's free page as a draft (published stays false: only the owner publishes). page has slug, display_name, tagline, description, area, whatsapp, phone, email, hours, address, theme (clean, warm, bold), offerings [{name, price}].
- get_plan_link
- A link for the client to buy their own plan, which keeps their website online. Grants nothing by itself; ready is false until the client has claimed the business.
- list_events
- For agencies: what happened to your clients since the cursor `after` (the previous call's `next`), oldest first: client.created, generation.ready/failed, preview.viewed/expired/removed_by_business, claim.invite_opened/accepted/declined, listing.verified, site.published/unpublished, coverage.changed, manager.removed, client.deleted. Dedupe on id.
- create_preview_share
- A private link to a draft website made with compose_site, for the business to see before it is published. Returns url (shown once) and expires_at; days 1-30, default 14. made_by is shown on the page. Sites built from Google can't be shared.
- get_preview_share
- Whether a preview link was opened (views), when it ends, and its status: live, expired, revoked, or removed (the business ended it: treat as a no).
- revoke_preview_share
- End a preview link now.
- compose_site
- Create a draft website from content you write, for a business with no reviews to build from. sections is a list of {type, page?, content}: types hero, about, offerings, location, advantages, popular_items, special_touches, tips, faq, team, timetable, amenities, gallery, offers. No testimonials, ratings or claims of rank (best, No. 1). Pass place_id (the business's Google listing) so the owner can verify it and publish. Returns the draft's slug.
- analyze_reviews
- What customers praise and complain about, from the latest review analysis of the business's site. Every line cites the reviews it rests on. Run generate_site first if there is none.
- set_section_image
- Add an uploaded photo (upload_image) to a section, after the photos it already has.
- connect_domain
- Connect www.yourdomain.in to a site's business. Returns the DNS record to add; then call verify_domain.
- account_info
- The account's plan and what is left of it this period. Works on any plan.
- create_subscription_checkout
- A link for the account's owner to open and pay for a plan in the browser. Works on any plan.
- list_businesses
- The account's businesses, with their saved profile facts.
- get_business
- One business's profile.
- create_business
- Add a business by name; any other profile field (city, state, sector, ...) may be given too.
- update_business
- Change profile fields of a business (only the fields given).
- get_generation
- A generation's status, progress and, when ready, the site's slug.
- list_sites
- Every site on the account, the free page included.
- get_site
- A site as it would be published: settings and visible sections.
- delete_site
- Delete a generated site (not the free page). Cannot be undone.
- export_site
- A site as one HTML file, Markdown or JSON (Business and Agency plans).
- list_sections
- A site's sections, in order, with ids, content and photos.
- get_section
- One section.
- update_section
- Replace a section's content (same shape as get_section returns), show or hide it, set its photos (upload ids, in order), or its layout (get_capabilities → site.section_layouts lists the types with a choice).
- update_site_style
- Change a site's style (theme: one of get_capabilities → site.themes for its tier), its layout choices (design: any of site.design's keys, e.g. {"hero": "split", "width": "wide"}; keys left out keep their value), and on Premium its brand colour (#rrggbb) and logo (an upload id).
- upload_image
- Upload a JPEG, PNG or WebP to a site, as base64. Metadata such as location is stripped.
- list_uploads
- A site's uploaded photos.
- delete_upload
- Delete an uploaded photo.
- add_domain
- Connect www.yourdomain.in to a business; returns the DNS record to add.
- verify_domain
- Check whether the DNS record is in place and the certificate issued.
- remove_domain
- Disconnect the business's custom domain.
- check_schemes
- Eligibility for MUDRA, PMEGP and CGTMSE (and Stand-Up India, now closed), from rules in code with the date they were checked. Free on every plan.
- filing_calendar
- GST, TDS, PF, ESI, advance-tax and ITR due dates for a business's profile. Free on every plan.
REST API
Base URL https://vyavsay.ai/api. Check your key:
curl https://vyavsay.ai/api/v1/account \ -H "Api-Key: vy_your_key"
From a Google Maps link to a website file:
POST /api/v1/businesses {"name": "Annapoorna Family Restaurant"}
POST /api/v1/businesses/{id}/generations {"link": "https://maps.app.goo.gl/…"}
GET /api/v1/generations/{generation_id} poll until "status": "ready"
GET /api/v1/sites/{site_slug}/export?format=html41 endpoints
| GET | /v1/account | Your account id, plan, what is left of it this period, and what can be bought. An agency gives account_id to Vyavsay to be allowlisted. |
| POST | /v1/checkout | A link for the account's owner to open and pay in the browser. No payment is started here: paying needs the person, not the agent. |
| GET | /v1/capabilities | What Vyavsay can build and what you have left, so a client never hard-codes it: site tiers, themes, pages, languages, templates, every section's content shape (sections, for POST /businesses/{id}/sites), which features are live, your plan and remaining allowances, and the per-hour/per-day limits on agency actions. Works on any plan. |
| GET | /v1/clients | For agencies: your clients, oldest first, with status (unclaimed, claimed, verified, live) and their latest site and generation. Page with after = the previous response's next. |
| POST | /v1/clients | For agencies: a business for a client who has not signed up yet. You own it until they claim it. Pass external_ref (your own id for the client) or an Idempotency-Key header: a retry returns the same client (200) instead of a second one (201). |
| POST | /v1/clients/{business_id}/claim-invites | For agencies: a one-time link (valid 14 days) for the client to claim the business you made for them. Send it yourself; it replaces any earlier link. The client sees agency_name before accepting. |
| DELETE | /v1/claim-invites/{invite_id} | Revoke Claim Invite |
| DELETE | /v1/clients/{business_id}/manager | For agencies: stop managing a claimed client. Access ends at once. |
| DELETE | /v1/clients/{business_id} | For agencies: delete a client nobody has claimed, with its drafts and photos (e.g. after preview.removed_by_business). A claimed client is its owner's to delete: leave it with DELETE /clients/{id}/manager. |
| GET | /v1/clients/{business_id}/page | The client's free page (vyavsay.ai/b/<slug>) as saved, or a draft to start from (saved: false). |
| GET | /v1/clients/{business_id}/plan-link | A link for the client to buy their own plan, which is what keeps the website you built online. It grants nothing by itself: the client opens it signed in as themselves and pays. ready is false until they have claimed the business (until then they have no account to pay from). |
| GET | /v1/events | For agencies: what happened to your clients, oldest first, after the cursor after (the previous response's next). Poll it. Delivered at least once: dedupe on id. Types: client.created, client.deleted, generation.ready, generation.failed, preview.viewed, preview.expired, preview.removed_by_business (treat as a no), claim.invite_opened, claim.accepted, claim.declined, listing.verified, site.published, site.unpublished, coverage.changed (the client's plan), manager.removed. Kept 90 days. |
| GET | /v1/sites/{slug}/preview-shares | List Preview Shares |
| POST | /v1/sites/{slug}/preview-shares | A private link (url, shown once) to a draft website, for the business to see before it is published: vyavsay.ai/p/<token>, valid days (default 14, at most 30). Only for a site made with POST /businesses/{id}/sites (written, not built from Google). The page names the business and made_by, says it is not published, has no forms, and lets the business remove it without signing in. |
| GET | /v1/preview-shares/{share_id} | views (people, once a day each), status (live, expired, revoked, or removed: the business ended it, treat that as a no). |
| DELETE | /v1/preview-shares/{share_id} | Revoke Preview Share |
| GET | /v1/businesses | List Businesses |
| POST | /v1/businesses | Create Business |
| GET | /v1/businesses/{business_id} | Get Business |
| PATCH | /v1/businesses/{business_id} | Update Business |
| GET | /v1/businesses/{business_id}/insights | The latest review analysis for the business's site: what customers praise and complain about, each line with the reviews behind it. |
| POST | /v1/businesses/{business_id}/generations | Build a site from the business's Google Maps link. Returns at once; poll GET /v1/generations/{id} until status is ready or failed. |
| POST | /v1/businesses/{business_id}/sites | Create a publishable draft site from content you supply (sections: hero, about, offerings, location, faq, ...), for a business with no reviews to build from. No testimonials, ratings or claims of rank. Pass the listing's Google place_id so the owner can verify and publish. |
| GET | /v1/generations/{generation_id} | Get Generation |
| GET | /v1/sites | List Sites |
| GET | /v1/sites/{slug} | The site as it would be published: settings and visible sections. |
| DELETE | /v1/sites/{slug} | Delete Site |
| GET | /v1/sites/{slug}/export | Export Site |
| GET | /v1/sites/{slug}/sections | List Sections |
| GET | /v1/sites/{slug}/sections/{section_id} | Get Section |
| PATCH | /v1/sites/{slug}/sections/{section_id} | Replace a section's content, show or hide it, set its photos (upload ids, in order) or its layout (GET /v1/capabilities → section_layouts). Content is cleaned to the section's shape. |
| PATCH | /v1/sites/{slug}/settings | The site's style (theme, from GET /v1/capabilities → site.themes for its tier), its layout choices (design: any of site.design's keys; the ones left out keep their value), and on Premium the brand colour (brand_color, #rrggbb) and logo (logo_upload_id, or clear_logo). |
| GET | /v1/sites/{slug}/uploads | List Uploads |
| POST | /v1/sites/{slug}/uploads | A JPEG, PNG or WebP. Re-encoded from its pixels, so location data and other metadata never survive. |
| DELETE | /v1/uploads/{upload_id} | Delete Upload |
| GET | /v1/businesses/{business_id}/domain | Get Domain |
| POST | /v1/businesses/{business_id}/domain | Connect www.yourdomain.in; the answer says which DNS record to add. |
| DELETE | /v1/businesses/{business_id}/domain | Remove Domain |
| POST | /v1/businesses/{business_id}/domain/check | Verify Domain |
| POST | /v1/schemes/check | MUDRA, PMEGP and CGTMSE eligibility, from rules in code with the date they were last checked against the official source. Stand-Up India is answered too, as closed to new loans since 31 March 2025. |
| POST | /v1/calendar | GST, TDS, PF, ESI, advance tax and ITR due dates for this profile. |