Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.vh3.ai/llms.txt

Use this file to discover all available pages before exploring further.

Search

The Search endpoints let you find relevant past jobs, outcomes, and intake records by describing what you’re looking for in natural language. The platform uses hybrid search — combining semantic (meaning-based) and BM25 (keyword) retrieval — to surface relevant results even when terminology differs.

POST /search/outcomes

Search across AI-enriched job outcomes. This is the primary search endpoint for finding jobs by what happened, what was done, or what the result was. Request body:
FieldTypeRequiredDescription
company_idstringYesYour tenant identifier
api_keystringYesYour tenant API key
query_textstringYesNatural language search query
limitintegerNoMax results to return (default: 10)
type_idstringNoFilter by job type
category_idstringNoFilter by job category
resource_idstringNoFilter by engineer/resource
contact_idstringNoFilter by customer contact
site_keystringNoFilter by site
cleanupbooleanNoWhether to clean the results metadata
curl -X POST "https://api.vh3connect.io/api:kP8T1CK7/search/outcomes" \
  -H "Content-Type: application/json" \
  -d '{
    "company_id": "your-company-id",
    "api_key": "your-api-key",
    "query_text": "air conditioning unit not cooling",
    "limit": 5
  }'

POST /search/intake

Search across raw job intake text — the original fault descriptions as entered by dispatchers or customers. Request body:
FieldTypeRequiredDescription
company_idstringYesYour tenant identifier
api_keystringYesYour tenant API key
query_textstringYesNatural language search query
limitintegerNoMax results to return (default: 10)
curl -X POST "https://api.vh3connect.io/api:kP8T1CK7/search/intake" \
  -H "Content-Type: application/json" \
  -d '{
    "company_id": "your-company-id",
    "api_key": "your-api-key",
    "query_text": "heating system tripping",
    "limit": 5
  }'

POST /search/intake/enriched

Semantic search over job intake text with Neo4j graph enrichment — returns richer context by joining graph relationships to each result. Request body:
FieldTypeRequiredDescription
company_idstringYesYour tenant identifier
api_keystringYesYour tenant API key
query_textstringYesNatural language search query
limitintegerNoMax results to return
curl -X POST "https://api.vh3connect.io/api:kP8T1CK7/search/intake/enriched" \
  -H "Content-Type: application/json" \
  -d '{
    "company_id": "your-company-id",
    "api_key": "your-api-key",
    "query_text": "fire alarm fault",
    "limit": 5
  }'

GET /search/autocomplete

Fuzzy / phonetic / email-aware lookup across contacts, persons (site contacts and account holders), engineers, jobs, and taxonomy entities. Returns results grouped by entity type plus a flat results[] array for back-compat. Query parameters:
ParamTypeRequiredDescription
company_idstringYesYour tenant identifier
api_keystringYesYour tenant API key
qstringYesSearch text — name, postcode, email address, UUID personId, phone, reference, or numeric id
limitintegerNoMax results per group (default 10, max 50)
typesstringNoComma-separated entity filter: contact,person,engineer,job,job_type,job_category,contact_group,resource_group
Search capabilities:
  • Name / phoneticSmyth finds Smith; PureGym finds Pure Gym
  • Email — type a full or partial email (ric@vezzahub.com, ric@) to find the matching person directly. Results carry matchedVia: "email".
  • UUID / personId — paste a standard UUID to resolve the person directly via their ids array. Returns matchedVia: "person_id" with score 1.0.
  • Postcode — UK postcodes with or without a space (NN10 5AB / NN105AB)
  • Reference — job reference or order number prefix
  • Numeric id — bare integer resolves contactId, resourceId, or jobId
curl -G "https://api.vh3connect.io/api:kP8T1CK7/search/autocomplete" \
  --data-urlencode "company_id=your-company-id" \
  --data-urlencode "api_key=your-api-key" \
  --data-urlencode "q=ric@vezzahub.com" \
  --data-urlencode "limit=10"
The response groups results under groups.contacts, groups.people, groups.engineers, groups.jobs, groups.jobTypes, groups.jobCategories, groups.contactGroups, and groups.resourceGroups. Each result includes a matchedVia field indicating why it was returned (name, email, person_id, postcode, phonetic, reference, id, site_bridge, etc.).

POST /search/summary-sections

Search across report summary sections — useful for finding previously generated intelligence summaries. Request body:
FieldTypeRequiredDescription
company_idstringYesYour tenant identifier
api_keystringYesYour tenant API key
query_textstringYesSearch query
limitintegerNoMax results (default: 10)
curl -X POST "https://api.vh3connect.io/api:kP8T1CK7/search/summary-sections" \
  -H "Content-Type: application/json" \
  -d '{
    "company_id": "your-company-id",
    "api_key": "your-api-key",
    "query_text": "HVAC performance Q3",
    "limit": 5
  }'