Describe what you want and Crevio’s AI builds, deploys, and runs a real website for you — then manage its analytics, database, secrets, domains, and deployments through the API.
A Site is an AI-built, fully-hosted website that Crevio creates from a one-paragraph brief — you describe the brand and what you sell, and an engineering agent writes the code, deploys it, and gives you back a live URL.You don’t pick a template or wire up hosting. You POST /sites with a prompt, Crevio kicks off an AI build, and you poll a Task until the site is live at a *.crevio.app subdomain. From there the API exposes the whole platform surface around the site: visitor analytics, the site’s own database, encrypted secrets (env vars), custom domains, and deployment history.Sites use the site_ prefix and have the object type site.
The prompt is a build brief — describe the brand, what you sell, and the look and feel. Crevio’s engineering agent turns it into a real codebase and deploys it. The response comes back immediately with a build_task_id you poll to watch the build.
curl -X POST https://api.crevio.co/v1/sites \ -H "Authorization: Bearer YOUR_API_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "prompt": "A clean, modern landing site for a ceramics studio called Kiln & Co. Earthy palette, hero with a newsletter signup, a shop section, and an about page. Warm and handmade feel.", "name": "Kiln & Co", "access_mode": "public" }'
import { Crevio } from "@crevio/sdk";const crevio = new Crevio({ apiKeyAuth: "YOUR_API_TOKEN" });const site = await crevio.sites.create({ prompt: "A clean, modern landing site for a ceramics studio called Kiln & Co. " + "Earthy palette, hero with a newsletter signup, a shop section, and an about page.", name: "Kiln & Co", access_mode: "public",});
Build me a website for my ceramics studio "Kiln & Co" — earthy,handmade feel, with a shop and a newsletter signup.
The response includes the build task to poll plus the addressable URLs:
A build is an engineering agent Task. Poll it until its status settles, then check the site’s is_live.
# Watch the build taskcurl https://api.crevio.co/v1/tasks/task_def456 \ -H "Authorization: Bearer YOUR_API_TOKEN"# Then confirm the site is livecurl https://api.crevio.co/v1/sites/site_abc123 \ -H "Authorization: Bearer YOUR_API_TOKEN"
Already have a codebase? Pass repository (an owner/repo you’ve connected) instead of a prompt. Crevio mounts that repo as the site’s workspace, so the engineering agent — and your build/deploy pipeline — work directly against your code.
A new site lives at https://<subdomain>.crevio.app. To put it on your own domain, attach one — either bought through Crevio or one you already own — then verify it. The full purchase-and-attach flow lives in Domains; the short version:
# Attach a domain you own (or bought via Crevio) to this sitecurl -X POST https://api.crevio.co/v1/domains/dom_abc123/assign \ -H "Authorization: Bearer YOUR_API_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "site": "site_abc123" }'# Then verify DNScurl -X POST https://api.crevio.co/v1/domains/dom_abc123/verify \ -H "Authorization: Bearer YOUR_API_TOKEN"
Once verified, the site’s domain and domain_verified fields update.
Sites get a real database. Inspect the schema and run read queries through the API — handy for letting an agent answer “how many signups this week?” without leaving Crevio.
# List the tablescurl https://api.crevio.co/v1/sites/site_abc123/db/tables \ -H "Authorization: Bearer YOUR_API_TOKEN"# Run a querycurl -X POST https://api.crevio.co/v1/sites/site_abc123/db/query \ -H "Authorization: Bearer YOUR_API_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "sql": "SELECT count(*) FROM newsletter_signups WHERE created_at > now() - interval '\''7 days'\''" }'
Sites need API keys and config — Stripe keys, a third-party token, a feature flag. Store them as encrypted secrets that are injected into the deployed worker as environment variables. Values are write-once-readable: list shows masked values, and you reveal a single secret explicitly.A secret takes a name (required), a value (required), and an optional description. The name must be uppercase letters, digits, and underscores, and cannot start with a digit.
Deploys run asynchronously. Triggering a deploy returns immediately and the build continues in the background — a single deploy can take several minutes. Poll the deployments list (or watch for the deploy to finish) rather than expecting a synchronous result. You’ll see statuses like building, live, and failed with the live URL once it’s up.