WebGrowly Realty โ API Documentation
Public REST API for WebGrowly Realty. Endpoints cover leads, properties, AI chat, analytics, configuration, bulk import, and Schema.org SEO generation.
Authentication
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:
- HTTP header (recommended):
x-api-key: YOUR_API_KEY - Query parameter (Zapier endpoints only):
?api_key=YOUR_API_KEY
Base URL: https://app.webgrowly.com
API-key requests are also validated against your allowed domains list (Settings โ API): calls originating from a domain not on the list are rejected with 401. Every keyed request additionally passes the per-client rate limiter (see Rate limits below).
Zapier Integration Endpoints
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.
Example request
curl "https://app.webgrowly.com/api/zapier/me?api_key=YOUR_API_KEY"
Example response
{
"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.
Example request
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"
}'Example response
{
"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'.
Public REST API (v1)
Stable customer-facing endpoints under /api/v1/*. Full schemas in the OpenAPI spec linked at the top of this page.
Leads
/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.
Example request
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"
}'Example response
{
"success": true,
"lead": { "id": "550e8400-e29b-41d4-a716-446655440000" }
}AI Chat Widget
/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.
Example request
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" }
]
}'Example response
(streaming text/event-stream) data: "Hello! I'd be happy to help you find a 2-bedroom..."
Properties
/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.
Example request
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'.
Example request
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.
Example request
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.
Example request
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.
Example request
curl -X DELETE "https://app.webgrowly.com/api/v1/properties?id=<uuid>" \ -H "x-api-key: YOUR_API_KEY"
Bulk Import
/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.
Example request
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": "..." } ] }'Example response
{
"success": true,
"imported": 1,
"updated": 0,
"results": [{ "action": "created", "id": "<uuid>", "mls_number": "MLS123" }]
}Analytics
/api/v1/analytics/trackDeliver an Analytics event
Records one idempotent Analytics v2 event from the supported taxonomy: page_view, property_view, contact_click, calculator_use, or search. Reuse the same event_id and occurred_at only when retrying the same logical action.
๐ API key required. Tenant, allowed-domain, rate-limit, and tenant-owned property checks apply.
Example request
curl -X POST "https://app.webgrowly.com/api/v1/analytics/track" \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "contract_version": 2, "event_id": "11111111-1111-4111-8111-111111111111", "occurred_at": "2026-09-05T14:30:00.000Z", "event_type": "page_view", "page_url": "https://example.com/" }'/api/v1/analytics/statsGet aggregated analytics statistics
Returns the canonical tenant Analytics v2 snapshot with tenant-local period boundaries, metric-specific comparisons, property scope, data-quality evidence, and read-only v1 aliases under the non-colliding legacy namespace.
๐ API key or authenticated CRM session required. One concrete tenant is always required; property_id, when supplied, must belong to that tenant. Supply start_date and end_date together (maximum 365 tenant-local calendar dates).
Example request
curl "https://app.webgrowly.com/api/v1/analytics/stats?start_date=2026-08-01&end_date=2026-08-30" \ -H "x-api-key: YOUR_API_KEY"
/api/v1/analytics/insightsGenerate AI-powered marketing insights
Requests evidence-bound recommendations for tenant-local dates. The server loads canonical tenant Analytics and profile data; browser-supplied analyticsData and periodLabel are rejected.
๐ API key or authenticated CRM session required, with one concrete tenant. AI consent, the 10/min recommendation limit, monthly AI cap, and an exact 8,192-byte request-body limit apply.
Example request
curl -X POST "https://app.webgrowly.com/api/v1/analytics/insights" \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "firstLocalDate": "2026-08-01", "lastLocalDate": "2026-08-30", "propertyId": null, "locale": "en", "outputLocale": "es" }'Widget Configuration
/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.
Example request
curl "https://app.webgrowly.com/api/v1/config" \ -H "x-api-key: YOUR_API_KEY"
SEO & Schema.org
/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.
Example request
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.
Example request
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 }'Error responses
All errors return JSON: { error: string, code?: string }.
400 Bad Request
Validation failed (missing required field, malformed payload).
401 Unauthorized
Missing or invalid API key.
404 Not Found
Resource (e.g., property) does not exist or does not belong to the authenticated client.
413 Payload Too Large
Request body exceeds endpoint limit (analytics/insights has an exact 8,192-byte ceiling).
429 Too Many Requests
Rate limit hit (per-minute) or monthly usage limit exceeded. Response includes Retry-After header where applicable.
500 Server Error
Unexpected server error. Retry with exponential backoff.
Rate limits & usage
Per-minute rate limits are applied per API key. Responses include X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset headers.
- Most endpoints: 60 requests/minute
/api/v1/analytics/insights: 10 requests/minute (AI-bound)/api/v1/seo(POST): 20 requests/minute (AI-bound)- Lead creation, AI requests, and similar metered actions are also subject to per-account monthly usage limits per your WebGrowly OS plan.
Support & resources
Support email: support@webgrowly.com
Admin login: app.webgrowly.com/login
OpenAPI spec: /api/v1/openapi.json (machine-readable, OpenAPI 3.1)