Programmatic access to the Naybourhood buyer intelligence platform. Manage leads, score buyers, track developments, configure webhooks, and pull analytics.
Interactive API Reference
Try endpoints directly in your browser with Swagger UI
Base URL
https://app.naybourhood.ai/api/v1All API requests require a Bearer token. Create API keys in your dashboard under Settings → API Keys.
curl -X POST https://app.naybourhood.ai/api/v1/score \
-H "Authorization: Bearer nb_live_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{"lead": {"full_name": "John Smith", "email": "john@example.com"}}'API keys are shown once at creation. Store them securely. Never expose keys in client-side code.
Default: 60 requests/minute per API key. Rate limit info is returned in response headers. Each API key has granular permissions: leads_read, leads_write, developments_read, webhooks_manage, stats_read.
Response Headers
X-RateLimit-Remaining: 58X-Response-Time: 45ms429 Too Many Requests
{"error": "Rate limit exceeded..."}/api/v1/leadsList leads for your company. Supports pagination, filtering by classification/status, and search by name or email.
{
"data": [
{
"id": "uuid",
"full_name": "Sarah Chen",
"email": "sarah@example.com",
"classification": "Qualified",
"quality_score": 65,
"intent_score": 55,
"status": "Viewing Booked",
"created_at": "2026-03-01T12:00:00Z"
}
],
"meta": {
"page": 1,
"per_page": 20,
"total": 142,
"total_pages": 8
}
}* Query params: page, per_page, classification, status, search.
/api/v1/leadsCreate a new lead and automatically score them using the AI engine.
{
"full_name": "Sarah Chen",
"email": "sarah@example.com",
"phone": "+44 7700 900000",
"budget": "500000",
"payment_method": "mortgage",
"timeline": "3 months",
"purpose": "primary residence",
"location": "London",
"bedrooms": 2
}{
"id": "uuid",
"full_name": "Sarah Chen",
"email": "sarah@example.com",
"classification": "Qualified",
"quality_score": 55,
"intent_score": 45,
"confidence_score": 75,
"status": "Contact Pending",
"created_at": "2026-03-22T10:00:00Z"
}/api/v1/leads/:idRetrieve a single lead with full score breakdown.
{
"id": "uuid",
"full_name": "Sarah Chen",
"email": "sarah@example.com",
"classification": "Qualified",
"quality_score": 55,
"intent_score": 45,
"confidence_score": 75,
"score_breakdown": { ... },
"status": "Viewing Booked",
"created_at": "2026-03-01T12:00:00Z"
}/api/v1/leads/:idUpdate a lead. If financial fields change (budget, payment_method, timeline), the lead is automatically re-scored.
{
"budget": "750000",
"timeline": "immediate",
"status": "Reserved"
}{
"id": "uuid",
"full_name": "Sarah Chen",
"budget": "750000",
"classification": "Hot Lead",
"quality_score": 72,
"intent_score": 80,
"status": "Reserved"
}* Only include fields you want to change.
* Financial field changes trigger automatic re-scoring.
/api/v1/leads/:idSoft-delete a lead by setting its status to Archived. The lead data is retained.
{
"message": "Lead archived successfully"
}/api/v1/leads/:id/scoresRetrieve the score history for a lead, showing how their scores have changed over time.
{
"data": [
{
"id": "uuid",
"quality_score": 72,
"intent_score": 80,
"confidence_score": 85,
"classification": "Hot Lead",
"scored_at": "2026-03-22T10:00:00Z",
"scored_by": "api"
},
{
"id": "uuid",
"quality_score": 55,
"intent_score": 45,
"confidence_score": 75,
"classification": "Qualified",
"scored_at": "2026-03-01T12:00:00Z",
"scored_by": "api"
}
]
}/api/v1/scoreScore a single lead using the Naybourhood AI scoring engine. Pass either a buyer_id to score an existing lead, or inline lead data.
{
"lead": {
"full_name": "Sarah Chen",
"email": "sarah@example.com",
"phone": "+44 7700 900000",
"budget": "500000",
"payment_method": "mortgage",
"timeline": "3 months",
"purpose": "primary residence",
"location": "London",
"bedrooms": 2
}
}{
"quality_score": 55,
"intent_score": 45,
"confidence_score": 75,
"classification": "Nurture",
"call_priority": 4,
"call_priority_reason": "Nurture Lead - Scheduled Follow-up",
"response_time": "Within 48 hours",
"is_28_day_buyer": false,
"is_fake_lead": false,
"risk_flags": ["Mortgage not yet approved"],
"score_breakdown": { ... }
}* Alternatively pass {"buyer_id": "uuid"} to score an existing lead in your account.
* Classification values: Hot Lead, Qualified, Needs Qualification, Nurture, Low Priority, Disqualified.
/api/v1/score/batchScore up to 50 leads in a single request. Pass either an array of buyer_ids or inline lead objects.
{
"leads": [
{
"full_name": "Lead One",
"email": "one@example.com",
"budget": "750000",
"payment_method": "cash",
"timeline": "immediate"
},
{
"full_name": "Lead Two",
"email": "two@example.com",
"budget": "300000",
"timeline": "6 months"
}
]
}{
"total": 2,
"scored": 2,
"failed": 0,
"results": [
{
"index": 0,
"quality_score": 40,
"intent_score": 50,
"confidence_score": 50,
"classification": "Needs Qualification",
"call_priority": 3,
"is_28_day_buyer": true,
"is_fake_lead": false,
"risk_flags": []
},
...
]
}* Maximum 50 leads per batch request.
* Alternatively pass {"buyer_ids": ["uuid1", "uuid2"]} to score existing leads.
/api/v1/developmentsList all developments for your company.
{
"data": [
{
"id": "uuid",
"name": "Riverside Quarter",
"location": "London SE1",
"status": "Active",
"total_units": 120,
"created_at": "2026-01-15T09:00:00Z"
}
]
}/api/v1/developments/:idGet development details with aggregated lead statistics including total leads, breakdown by classification, and average scores.
{
"id": "uuid",
"name": "Riverside Quarter",
"location": "London SE1",
"status": "Active",
"total_units": 120,
"lead_stats": {
"total_leads": 84,
"by_classification": {
"Hot Lead": 12,
"Qualified": 28,
"Nurture": 30,
"Low Priority": 14
},
"avg_quality_score": 52,
"avg_intent_score": 48
}
}/api/v1/webhook/lead-createdIngest a new lead from your CRM or forms. The lead is created, auto-scored, and optionally pushed to HubSpot.
{
"full_name": "James Wilson",
"email": "james@buyer.com",
"phone": "+44 7700 900001",
"budget": "1200000",
"payment_method": "cash",
"timeline": "28 days",
"source": "Rightmove"
}{
"success": true,
"buyer_id": "uuid-of-new-lead",
"scoring": {
"quality_score": 40,
"intent_score": 50,
"confidence_score": 70,
"classification": "Hot Lead",
"call_priority": 1,
"is_28_day_buyer": true,
"is_fake_lead": false
}
}/api/v1/webhooksList your outbound webhook subscriptions.
{
"data": [
{
"id": "uuid",
"url": "https://your-app.com/webhook",
"events": ["lead.created", "lead.scored"],
"is_active": true,
"created_at": "2026-03-01T12:00:00Z"
}
]
}/api/v1/webhooksRegister a webhook URL to receive events. A signing secret is auto-generated for HMAC-SHA256 verification.
{
"url": "https://your-app.com/webhook",
"events": ["lead.created", "lead.scored", "lead.status_changed"]
}{
"id": "uuid",
"url": "https://your-app.com/webhook",
"events": ["lead.created", "lead.scored", "lead.status_changed"],
"secret": "whsec_...",
"is_active": true,
"created_at": "2026-03-22T10:00:00Z"
}* The secret is returned once at creation. Store it to verify webhook signatures.
* Outbound deliveries include X-Webhook-Signature (sha256=hex), X-Webhook-Event, and X-Webhook-Timestamp headers.
* Failed deliveries are retried up to 3 times with exponential backoff.
/api/v1/webhooks/:idRemove a webhook subscription. Events will no longer be delivered to this URL.
{
"message": "Webhook deleted"
}/api/v1/statsGet aggregated lead statistics for your company: totals, classification/status breakdown, average scores, and 7/30-day trends.
{
"total_leads": 342,
"by_classification": {
"Hot Lead": 28,
"Qualified": 95,
"Nurture": 120,
"Low Priority": 65,
"Disqualified": 34
},
"by_status": {
"Contact Pending": 80,
"Viewing Booked": 45,
"Reserved": 22,
"Sold": 18
},
"avg_quality_score": 52,
"avg_intent_score": 48,
"leads_last_7d": 23,
"leads_last_30d": 87
}| Status | Meaning | Action |
|---|---|---|
400 | Bad Request | Check request body format |
401 | Unauthorized | Check API key is valid and active |
403 | Forbidden | API key lacks required permission |
404 | Not Found | Buyer ID does not exist or not in your company |
429 | Rate Limited | Wait and retry. Default: 60 req/min |
500 | Server Error | Retry with exponential backoff |
Hot Lead
28-day buyer OR quality/intent >= 70
Qualified
Quality >= 60, intent >= 50
Needs Qualification
Confidence < 50, missing data
Nurture
Good quality but low intent
Low Priority
Quality < 40 or flagged low urgency
Disqualified
Fake lead or data mismatch
Generate a typed client from the OpenAPI spec using openapi-generator-cli.
# TypeScript
npx @openapitools/openapi-generator-cli generate \
-i https://naybourhood.ai/api/v1/openapi.json \
-g typescript-fetch \
-o ./naybourhood-sdk
# Python
npx @openapitools/openapi-generator-cli generate \
-i https://naybourhood.ai/api/v1/openapi.json \
-g python \
-o ./naybourhood-sdk-pythonNaybourhood API v1
Questions? Contact support@naybourhood.ai