Skip to main content
Customers

Create or update a customer

Creates a new customer or updates an existing one based on the provided information.

POST
/customers

Upsert Logic:

  1. If id is provided, updates the customer with that ID
  2. If no id but phone/email provided, searches for existing customer by phone first, then email
  3. If no existing customer found, creates a new customer

Tags are merged (not replaced) when updating.

x-api-keystringheaderrequired

Company API key in the format: rotor_{keyId}_{keySecret}

To obtain an API key:

  1. Log into your Rotor dashboard
  2. Go to Settings → Integrations → API Keys
  3. Create a new key and select the scopes you need
  4. Copy the key — it's only shown once!
rotor-api-versionenum<string>headerdefault:1.1.0required

Required OpenAPI version header.

Available options: 1.1.0
Example: 1.1.0

Body

application/json
billing_citystring
billing_countrystring
billing_same_as_propertyboolean
billing_statestring
billing_street1string
billing_street2string
billing_zipstring
company_namestring
Maximum string length: 255
emailstring
Maximum string length: 255
first_namestring
Maximum string length: 255
idstring

Optional — provide to update an existing customer

last_namestring
Maximum string length: 255
notesstring
Maximum string length: 2000
phonestring
property_citystring
property_countrystring
property_statestring
property_street1string
property_street2string
property_zipstring
service_frequencystring
service_typestring
sourcestring
statusenum<string>
Available options: active, inactive
tagsstring[]
Maximum array length: 20

Response

application/json

Customer updated successfully

billing_citystring | null
billing_countrystring | null
billing_same_as_propertyboolean
billing_statestring | null
billing_street1string | null
billing_street2string | null
billing_zipstring | null
company_namestring | null
created_atstring
emailstring | null
first_namestring | null
idstring
last_namestring | null
messagestring
Example: Customer created successfully
notesstring | null
phonestring | null
property_citystring | null
property_countrystring | null
property_statestring | null
property_street1string | null
property_street2string | null
property_zipstring | null
service_frequencystring | null
service_typestring | null
sourcestring | null
statusenum<string>
Available options: active, inactive
tagsstring[] | null