Create or update a lead
POST/leads
Creates a new lead or updates an existing one based on the provided information.
Upsert Logic:
- If
idis provided, updates the lead with that ID - If no
idbut phone/email provided, searches for existing lead by phone first, then email - If no existing lead found, creates a new lead
Response Status:
201 Createdfor new leads200 OKfor updated leads
Tags are merged (not replaced) when updating.
Body ParametersJSON
Returns
Create or update a lead
curl https://api.getrotor.com/open-api/leads \
-H 'Content-Type: application/json' \
-H "x-api-key: $ROTOR_API_KEY" \
-d '{}'{
"id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
"address_city": "address_city",
"address_country": "address_country",
"address_state": "address_state",
"address_street1": "address_street1",
"address_street2": "address_street2",
"address_zip": "address_zip",
"archived": true,
"archived_at": "2019-12-27T18:11:19.117Z",
"assigned_to": "assigned_to",
"created_at": "2019-12-27T18:11:19.117Z",
"email": "dev@stainless.com",
"follow_up_date": "2019-12-27T18:11:19.117Z",
"lead_source": "lead_source",
"location": [
0
],
"message": "Lead created successfully",
"name": "name",
"notes": "notes",
"phone": "phone",
"priority": "low",
"projected_value": 0,
"property_city": "property_city",
"property_country": "property_country",
"property_state": "property_state",
"property_street1": "property_street1",
"property_street2": "property_street2",
"property_zip": "property_zip",
"service_type": "service_type",
"source": "source",
"stage": "stage",
"status": "success",
"tags": [
"string"
],
"value_score": 0
}{
"status": "error",
"message": "Validation failed",
"errors": [
{
"field": "email",
"message": "Invalid email format"
}
]
}{
"status": "error",
"message": "Authentication required. Provide x-api-key header.",
"error_code": "AUTHENTICATION_REQUIRED"
}{
"status": "error",
"message": "Forbidden: required scope 'leads:read' not granted for this API key",
"error_code": "INSUFFICIENT_SCOPE"
}{
"status": "error",
"message": "Internal server error"
}Returns Examples
{
"id": "182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e",
"address_city": "address_city",
"address_country": "address_country",
"address_state": "address_state",
"address_street1": "address_street1",
"address_street2": "address_street2",
"address_zip": "address_zip",
"archived": true,
"archived_at": "2019-12-27T18:11:19.117Z",
"assigned_to": "assigned_to",
"created_at": "2019-12-27T18:11:19.117Z",
"email": "dev@stainless.com",
"follow_up_date": "2019-12-27T18:11:19.117Z",
"lead_source": "lead_source",
"location": [
0
],
"message": "Lead created successfully",
"name": "name",
"notes": "notes",
"phone": "phone",
"priority": "low",
"projected_value": 0,
"property_city": "property_city",
"property_country": "property_country",
"property_state": "property_state",
"property_street1": "property_street1",
"property_street2": "property_street2",
"property_zip": "property_zip",
"service_type": "service_type",
"source": "source",
"stage": "stage",
"status": "success",
"tags": [
"string"
],
"value_score": 0
}{
"status": "error",
"message": "Validation failed",
"errors": [
{
"field": "email",
"message": "Invalid email format"
}
]
}{
"status": "error",
"message": "Authentication required. Provide x-api-key header.",
"error_code": "AUTHENTICATION_REQUIRED"
}{
"status": "error",
"message": "Forbidden: required scope 'leads:read' not granted for this API key",
"error_code": "INSUFFICIENT_SCOPE"
}{
"status": "error",
"message": "Internal server error"
}