Create WordPress demo sites with custom themes via API
Enter API key and click Refresh
Base URL: https://demo-api.agents.instawp.net
Auth: X-API-Key header
POST /api/demo — Create demo site (async)
POST /api/demo/sync — Create demo site (sync, blocks until done)
GET /api/demo/:jobId — Check job status
GET /api/demo — List recent jobs
GET /health — Health check
Request body (POST):
{
"theme_url": "https://..../theme.zip", // required
"snapshot_slug": "master-snapshot-gpt", // optional (default: master-snapshot-gpt)
"plan_id": 8, // optional (default: 8 = Starter)
"site_name": "my-demo", // optional
"theme_slug": "my-theme" // optional (auto-detected from ZIP)
}
Async response (202):
{
"success": true,
"job_id": "uuid",
"status_url": "/api/demo/uuid"
}
Completed job response:
{
"success": true,
"job": {
"id": "uuid",
"status": "completed",
"data": {
"site_id": 12345,
"site_url": "https://abc123.instawp.site",
"wp_admin_url": "https://abc123.instawp.site/wp-admin/",
"theme_slug": "my-theme"
}
}
}
Sync response (200):
{
"success": true,
"data": {
"site_id": 12345,
"site_url": "https://abc123.instawp.site",
"wp_admin_url": "https://abc123.instawp.site/wp-admin/",
"theme_slug": "my-theme"
}
}
cURL Examples:
# Async
curl -X POST https://demo-api.agents.instawp.net/api/demo \
-H "X-API-Key: YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"theme_url":"https://example.com/theme.zip"}'
# Sync (waits up to 3 min)
curl -X POST https://demo-api.agents.instawp.net/api/demo/sync \
-H "X-API-Key: YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{"theme_url":"https://example.com/theme.zip"}'