GET /v1/sites/:id
Fetch full status and metadata for a single site. Use this to poll for build completion or check the current hosting state.
Cost: Free.
Request
curl https://api.warpweb.ai/v1/sites/site_8f3c2a1b-5d47-4c9e-b820-1f8a3e7d9c4f \
-H "Authorization: Bearer wpwb_sk_xxx"Response
While building:
{
"site_id": "site_8f3c2a1b-5d47-4c9e-b820-1f8a3e7d9c4f",
"status": "building",
"business_name": "Brookside Plumbing",
"business_location": "Austin, TX",
"hosting_tier": "free_subdomain",
"created_at": "2026-05-17T14:23:11Z",
"metadata": {}
}After deploy:
{
"site_id": "site_8f3c2a1b-5d47-4c9e-b820-1f8a3e7d9c4f",
"status": "live",
"deployed_url": "https://brookside-plumbing.warpweb.app",
"custom_domains": [],
"business_name": "Brookside Plumbing",
"business_location": "Austin, TX",
"hosting_tier": "free_subdomain",
"last_refreshed_at": "2026-05-17T14:24:38Z",
"form_webhook_url": null,
"created_at": "2026-05-17T14:23:11Z",
"deployed_at": "2026-05-17T14:24:38Z",
"metadata": {}
}After custom domain attach:
{
"site_id": "site_8f3c2a1b-5d47-4c9e-b820-1f8a3e7d9c4f",
"status": "live",
"deployed_url": "https://brookside-plumbing.com",
"custom_domains": ["brookside-plumbing.com", "www.brookside-plumbing.com"],
"hosting_tier": "paid_custom_domain",
"form_webhook_url": "https://api.yourapp.com/webhooks/warpweb-leads",
"subscription_active": true,
"created_at": "2026-05-17T14:23:11Z",
"deployed_at": "2026-05-17T14:24:38Z"
}Fields
| Field | Type | When present |
|---|---|---|
status | string | always — one of building, deploying, live, paused, failed. |
deployed_url | string | once status >= deploying. The canonical URL — subdomain or custom domain. |
custom_domains | string[] | once any custom domains are attached. |
business_name, business_location | string | always. The inputs you passed at create time. |
hosting_tier | string | always — free_subdomain or paid_custom_domain. |
last_refreshed_at | string | free-tier sites only. ISO 8601. See Pricing → 7-day refresh. |
form_webhook_url | string | null | the configured webhook URL, or null if forms deliver to contact_email only. |
subscription_active | boolean | paid-tier sites only. false means billing failed; site enters grace period. |
failed_reason | string | only when status = failed. One of unprocessable_business, infra_error, timeout. |
metadata | object | always. Whatever you passed at create time. |
Errors
| Status | Error | Cause |
|---|---|---|
| 404 | site_not_found | No site with that ID belongs to your account. |