BlueSuite Developers
REST API v1

Leads

Leads in the BlueSuite REST API

Create a contact, optionally create and link a property, then create a request in one call. All three write scopes are required, including properties:write when no property is supplied. The response includes contact_id, property_id, request_id, and the created records.

The contact defaults to type lead unless supplied explicitly. The request's contact and property links are set from the newly created records. This flow does not deduplicate against existing contacts and is not a database transaction; inspect the workspace before retrying a failed request. For an existing customer, use the individual contact/property/request endpoints.

Example: capture an inquiry

curl 'https://my.bluesuite.app/api/v1/leads' \
  -H "Authorization: Bearer $BLUESUITE_API_KEY" \
  -H 'Content-Type: application/json' \
  -d '{"contact":{"first_name":"Jamie","last_name":"Rivera","email":"jamie@example.com"},"request":{"name":"Annual HVAC maintenance","details":"Please contact me to schedule."}}'

POST /api/v1/leads

POST /api/v1/leads

Required scopes: contacts:write, properties:write, requests:write.

JSON body

FieldType / accepted valuesRequiredDetails
contactobjectYes
contact.first_namestringNoDefault: "".
contact.last_namestringNoDefault: "".
contact.emailstring or nullNo
contact.phonestring or nullNo
contact.secondary_emailstring or nullNo
contact.secondary_phonestring or nullNo
contact.companystring or nullNo
contact.company_departmentstring or nullNo
contact.company_positionstring or nullNo
contact.title"mr", "mrs", "miss", "ms", "dr", "prof", "rev" or nullNo
contact.type"none", "customer", "lead", "former_customer", "contractor", "partner", "vendor", "other"NoDefault: "none".
contact.owner_idstring or nullNo
contact.infoJSON value or nullNo
contact.custom_fieldsJSON value or nullNo
propertyobjectNo
property.addressobjectWhen parent supplied
property.address.streetstringNoDefault: "".
property.address.street_2stringNoDefault: "".
property.address.citystringNoDefault: "".
property.address.statestringNoDefault: "".
property.address.postal_codestringNoDefault: "".
property.address.countrystringNoDefault: "".
property.property_type"single-family", "apartment", "complex", "townhouse", "land", "commercial", "other"NoDefault: "single-family".
property.role"owner", "tenant", "manager", "agent", "other"NoDefault: "owner".
requestobjectYes
request.namestring or nullNo
request.contact_idinteger or nullNo
request.property_idinteger or nullNo
request.assignee_idstring or nullNo
request.detailsstring or nullNo
request.assessmentstring or nullNo
request.requested_onstringNoPattern: ^\d{4}-\d{2}-\d{2}$.
request.status"new", "responded", "overdue", "converted", "rejected", "archived"NoDefault: "new".
request.dataJSON value or nullNo
request.custom_fieldsJSON value or nullNo

Unknown body fields are rejected. Conditional requirements are explained above.

Response

201 with { "success": true, "data": ... }. The data contains the result of the operation.

See response conventions and errors.

On this page