Public REST API for WebGrowly Realty. Endpoints cover leads, properties, AI chat, analytics, configuration, bulk import, and Schema.org SEO generation.
All API requests require an API key. Generate or rotate your key from the WebGrowly OS admin panel under Settings โ API.
API key format:
agos_[client_id]_[random_hash]Pass the key via either method:
x-api-key: YOUR_API_KEY?api_key=YOUR_API_KEYBase URL: https://app.webgrowly.com
Endpoints used by the official WebGrowly Realty Zapier integration.
/api/zapier/meTest authentication
Validates the API key and returns basic account info. Used by Zapier's auth-check step.
๐ API key required.
curl "https://app.webgrowly.com/api/zapier/me?api_key=YOUR_API_KEY"
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "John Doe",
"company": "Real Estate Agency",
"plan": "professional"
}/api/zapier/leadsCreate lead (Zapier)
Zapier-tailored lead creation. Supports automatic deduplication by email.
๐ API key required.
curl -X POST "https://app.webgrowly.com/api/zapier/leads" \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Jane Smith",
"email": "jane@example.com",
"phone": "+1-305-555-0100",
"source": "Zapier Integration"
}'{
"id": "lead-uuid",
"action": "created",
"lead": { "id": "lead-uuid", "name": "Jane Smith", "email": "jane@example.com" }
}Deduplication: If a lead with the same email exists, the existing lead is updated and the response indicates action: 'updated'.
Stable customer-facing endpoints under /api/v1/*. Full schemas in the OpenAPI spec linked at the top of this page.
/api/v1/leadsCreate a lead
Creates a new lead record and triggers email/SMS notifications based on your settings.
๐ API key required. Subject to monthly lead-volume usage limits.
curl -X POST "https://app.webgrowly.com/api/v1/leads" \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "John Smith",
"email": "john@example.com",
"phone": "+1-305-555-0100",
"message": "Looking for a 2BR condo in Brickell",
"source": "website_form"
}'{
"success": true,
"lead": { "id": "550e8400-e29b-41d4-a716-446655440000" }
}/api/v1/chatSend a message to the AI assistant
Sends a conversation history to the AI and returns a streaming text response. The AI extracts lead info from conversations and creates lead records automatically.
๐ API key required. Subject to monthly AI usage limits.
curl -X POST "https://app.webgrowly.com/api/v1/chat" \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"messages": [
{ "role": "user", "content": "Looking for a 2BR condo in Brickell under $800K" }
]
}'(streaming text/event-stream) data: "Hello! I'd be happy to help you find a 2-bedroom..."
/api/v1/propertiesList properties
Returns the authenticated client's properties with filters, pagination, and Schema.org SEO metadata. Filters: status, type (sale/rent), display (mobile/desktop). Supports countOnly=true for count-only queries.
๐ API key required.
curl "https://app.webgrowly.com/api/v1/properties?status=active&type=sale&limit=20" \ -H "x-api-key: YOUR_API_KEY"
/api/v1/properties/{id}Get a property by ID
Returns a single property with full Schema.org JSON-LD SEO metadata, meta tags, and breadcrumbs.
๐ API key returns the property if it belongs to the authenticated client. Without API key, returns the property only if its status is 'active'.
curl "https://app.webgrowly.com/api/v1/properties/550e8400-e29b-41d4-a716-446655440000" \ -H "x-api-key: YOUR_API_KEY"
/api/v1/propertiesCreate a property
Creates a new property listing. Required: title, price, address.
๐ API key required.
curl -X POST "https://app.webgrowly.com/api/v1/properties" \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"title": "Luxury 2BR in Brickell",
"price": 750000,
"address": "1234 Brickell Ave",
"city": "Miami",
"state": "FL",
"bedrooms": 2,
"bathrooms": 2,
"property_type": "condo",
"listing_type": "sale"
}'/api/v1/propertiesUpdate a property
Updates fields on an existing property. Required: id. Only provided fields are modified.
๐ API key required. Property must belong to the authenticated client.
curl -X PUT "https://app.webgrowly.com/api/v1/properties" \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "id": "<uuid>", "price": 725000, "status": "pending" }'/api/v1/propertiesDelete a property
Permanently deletes a property by ID. Use with caution โ this action cannot be undone.
๐ API key required. Property must belong to the authenticated client.
curl -X DELETE "https://app.webgrowly.com/api/v1/properties?id=<uuid>" \ -H "x-api-key: YOUR_API_KEY"
/api/v1/importBulk-import properties
Bulk-creates properties for the authenticated client. Properties whose mls_number already exists for the client are updated rather than duplicated.
๐ API key required. Idempotent on mls_number.
curl -X POST "https://app.webgrowly.com/api/v1/import" \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "properties": [ { "mls_number": "MLS123", "title": "...", "price": 750000, "address": "..." } ] }'{
"success": true,
"imported": 1,
"updated": 0,
"results": [{ "action": "created", "id": "<uuid>", "mls_number": "MLS123" }]
}/api/v1/analytics/trackTrack a page view or custom event
Records a page view or event (page_view, contact_click, widget_open, widget_close) with optional UTM params, referrer, and page metadata.
๐ API key required.
curl -X POST "https://app.webgrowly.com/api/v1/analytics/track" \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "event_type": "page_view", "page_url": "https://example.com/", "page_title": "Home" }'/api/v1/analytics/statsGet aggregated analytics statistics
Returns aggregated traffic, geographic, device, and UTM-source breakdowns for the requested period.
๐ API key required.
curl "https://app.webgrowly.com/api/v1/analytics/stats?period=30d" \ -H "x-api-key: YOUR_API_KEY"
/api/v1/analytics/insightsGenerate AI-powered marketing insights
Sends aggregated analytics data to an AI model and returns structured marketing recommendations: best posting times, traffic-source strategy, geographic targeting, content ideas, and a weekly action plan.
๐ API key required. Subject to monthly AI usage limits and rate limit (10/min). Max body size 100 KB.
curl -X POST "https://app.webgrowly.com/api/v1/analytics/insights" \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "analyticsData": { "total_views": 1240, "heatmap": [...], "traffic_sources": [...] }, "periodLabel": "Last 30 days" }'/api/v1/configGet widget configuration
Returns the public chat widget configuration: theme, primary color, greeting, position, AI assistant name, suggested questions, TTS/STT settings, language.
๐ API key required.
curl "https://app.webgrowly.com/api/v1/config" \ -H "x-api-key: YOUR_API_KEY"
/api/v1/seoGenerate Schema.org SEO data
Returns ready-to-use Schema.org JSON-LD and meta tags for a single property (with propertyId) or the full property catalog (with all=true).
๐ API key required.
curl "https://app.webgrowly.com/api/v1/seo?propertyId=<uuid>&includeAgent=true&includeFaq=true" \ -H "x-api-key: YOUR_API_KEY"
/api/v1/seoAI-generate optimized SEO content
Sends a property to an AI model and returns SEO-optimized meta title, meta description, keywords, image alt-texts, and optionally FAQ Q&A.
๐ API key required. Subject to rate limit (20/min) and monthly AI usage limits.
curl -X POST "https://app.webgrowly.com/api/v1/seo" \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "propertyId": "<uuid>", "locale": "en-US", "generateFaq": true }'All errors return JSON: { error: string, code?: string }.
Validation failed (missing required field, malformed payload).
Missing or invalid API key.
Resource (e.g., property) does not exist or does not belong to the authenticated client.
Request body exceeds endpoint limit (e.g., analytics/insights cap is 100 KB).
Rate limit hit (per-minute) or monthly usage limit exceeded. Response includes Retry-After header where applicable.
Unexpected server error. Retry with exponential backoff.
Per-minute rate limits are applied per API key. Responses include X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset headers.
/api/v1/analytics/insights: 10 requests/minute (AI-bound)/api/v1/seo (POST): 20 requests/minute (AI-bound)Support email: support@webgrowly.com
Admin login: app.webgrowly.com/login
OpenAPI spec: /api/v1/openapi.json (machine-readable, OpenAPI 3.1)