Welcome to the documentation for the serviceminder API. All requests must be POST operations with JSON formatted payloads. Each request must also include a valid APIKey parameter. API keys may be generated inside serviceminder. For examples and more complete documentation of how to use the API, visit Help after logging in.

Responses

Every endpoint returns a JSON object containing the endpoint's output parameters, plus a ResultCode and a Message. Errors are normally returned with HTTP status 200, so always check ResultCode rather than the HTTP status.

ResultCode Meaning
0Success
1Failure. Message describes the error.
-2The request body contained unsafe characters (for example HTML markup) and was rejected before processing. Only ResultCode and Message are populated (not the endpoint's output parameters), and Message is HTML-encoded.

Success

{
  "ResultCode": 0,
  "Message": null,
  ...endpoint output parameters...
}

Failure

HTTP/1.1 200 OK

{
  "ResultCode": 1,
  "Message": "API Key is not valid",
  ...
}

Errors any endpoint can return

Message Cause
API Key is not validThe APIKey is missing, unknown, or inactive.
Account is CanceledThe account that owns the API key has been canceled.
Trial expiredThe account that owns the API key is a trial that has expired.
Account is SuspendedThe account that owns the API key is not active.
Invalid characters found: ...Returned with ResultCode -2 when the request body contains unsafe characters.

Non-200 responses

Status When
400Request validation failed. The body has the usual ResultCode and Message. For sms_consent errors on contacts/addupdate it also includes an Errors list of { "Field", "Message" } entries (only where SMS consent is enabled for the account).
409sms_consent on contacts/addupdate tried to opt in a contact who texted STOP. Message is stop_locked and the Errors list names the locked fields. Only returned where SMS consent is enabled for the account.
405A POST-only endpoint was called with another HTTP method.
OtherAn unexpected server error. The response is an HTML error page rather than JSON.

accountingclasses

create

POST https://serviceminder.com/api/accountingclasses/create

Parameter Type Required Direction Description
OrganizationId int32 No Org to create in (branding API keys only)
AccountingClassId int32 No Output Id of the new accounting class
Name string Yes Accounting class name
TerritoryID string No External territory id
PostalCodes String[] No Postal codes to assign; * is a wildcard
Matches AccountingClassPostalCodes[] No Output The created accounting class
ApiKey string Yes Your API key
ResultCode int32 Output 0 = success, 1 = failure
Message string Output Why the call failed, when it fails

get

POST https://serviceminder.com/api/accountingclasses/get

Parameter Type Required Direction Description
NameSearch string No Partial match on accounting class name
OrganizationId int32 No Org to read from (branding API keys only)
Matches AccountingClassPostalCodes[] No Output Accounting classes with their postal codes
ApiKey string Yes Your API key
ResultCode int32 Output 0 = success, 1 = failure
Message string Output Why the call failed, when it fails

update

POST https://serviceminder.com/api/accountingclasses/update

Parameter Type Required Direction Description
OrganizationId int32 No Org the class belongs to (branding API keys only)
AccountingClassId int32 Yes Accounting class to update
Name string No New name; blank keeps the current name
TerritoryID string No External territory id; omitting it clears it
PostalCodes String[] No Replaces all postal codes; * is a wildcard
Matches AccountingClassPostalCodes[] No Output The updated accounting class
ApiKey string Yes Your API key
ResultCode int32 Output 0 = success, 1 = failure
Message string Output Why the call failed, when it fails

appointments

addtip

POST https://serviceminder.com/api/appointments/addtip

Parameter Type Required Direction Description
AppointmentId int32 Yes Appointment to add the tip to
Amount decimal Yes Tip amount, charged to the card on file
ApiKey string Yes Your API key
ResultCode int32 Output 0 = success, 1 = failure
Message string Output Why the call failed, when it fails

book

POST https://serviceminder.com/api/appointments/book

Parameter Type Required Direction Description
AppointmentId int32 No Output ID of the new appointment
ServiceName string Yes, or ServiceId Input & output Service to book, by exact name
ContactId int32 Yes Customer the appointment is for
ServiceId int32 Yes, or ServiceName Service to book
TargetDate string No Org-local date to queue it for when no Slots are sent
Duration string No Visit length, e.g. 90 or 1h 30m. Defaults to the service's
Quantity double No Units of the service, used for pricing
Discount decimal No Discount amount off the appointment
Notes string No Added as a note on the appointment
NotificationUri string No Where to send on-the-way messages, e.g. text:5555551234
EnRouteUri string No Same as NotificationUri
ThirdPartyUrl string No Link saved on the appointment, e.g. to your own record
SkipConflictChecks boolean No Book even if the technician is busy
CallCenterTransactionId int32 No Your call ID, to link the appointment to a call
Slots AppointmentSlot[] No Start time and technician. Only the first is used. Leave out rather than null
AddOnParts AddOnPart[] No Extra line items, by part ID
RootProposalId int32 No Estimate to book from
ApiKey string Yes Your API key
ResultCode int32 Output 0 = success, 1 = failure
Message string Output Why the call failed, when it fails

cancel

POST https://serviceminder.com/api/appointments/cancel

Parameter Type Required Direction Description
AppointmentId int32 Yes Appointment to cancel
ServiceName string No Output Service of the cancelled appointment
CancelReasonId int32 No Cancel reason, from cancelreasons/all
ApiKey string Yes Your API key
ResultCode int32 Output 0 = success, 1 = failure
Message string Output Why the call failed, when it fails

feedback

POST https://serviceminder.com/api/appointments/feedback

Parameter Type Required Direction Description
Id int32 Yes, or HashKey Appointment id
HashKey string Yes, or Id Appointment hash key (from customer links)
Note string No Customer comment
ContactMe boolean No Customer wants to be contacted
Score int32 One of Score, Positive/Negative, Note, ContactMe Rating from 1 to 5
Positive boolean No Marks positive feedback (value is not stored)
Negative boolean No Marks negative feedback (value is not stored)
ApiKey string Yes Your API key
ResultCode int32 Output 0 = success, 1 = failure
Message string Output Why the call failed, when it fails

find

POST https://serviceminder.com/api/appointments/find

Parameter Type Required Direction Description
AppointmentId int32 Yes, or ContactId or InvoiceId Single appointment to return
ServiceName string No Output Name of the service matching ServiceId, else null
ContactId int32 Yes, or AppointmentId or InvoiceId Customer whose upcoming appointments to return
ServiceId int32 No Does not filter results; only fills ServiceName
InvoiceId int32 Yes, or ContactId or AppointmentId Return the appointment for this invoice
IncludeCompleted boolean No With ContactId: also include completed appointments
IncludeContact boolean No Include customer details in each result
SearchDate string No With ContactId: return appointments after this date instead of now
Slots AppointmentSlot[] No Output Matching appointments
ApiKey string Yes Your API key
ResultCode int32 Output 0 = success, 1 = failure
Message string Output Why the call failed, when it fails

query

POST https://serviceminder.com/api/appointments/query

Parameter Type Required Direction Description
FromDate datetime No Scheduled on or after this date/time
ThroughDate datetime No Scheduled before this date/time (exclusive)
UpdatedFrom datetime No Updated on or after this date/time
UpdatedThrough datetime No Updated before this date/time (exclusive)
ContactId int32 No Only this customer's appointments
ServiceAgentId int32 No Only this agent's appointments
Skip int32 No Input & output Rows to skip for paging; default 0
Take int32 No Input & output Rows to return; default and max 500
IncludeContact boolean No Include customer details in each result
Count int32 No Output Total matching appointments before paging
Appointments AppointmentSlot[] No Output The page of matching appointments, ordered by id
ApiKey string Yes Your API key
ResultCode int32 Output 0 = success, 1 = failure
Message string Output Why the call failed, when it fails

queue

POST https://serviceminder.com/api/appointments/queue

Parameter Type Required Direction Description
AppointmentId int32 No Output Id of the new queued appointment
ServiceName string Yes, or ServiceId Input & output Service name; echoed back as the matched service
ContactId int32 Yes Customer the appointment is for
QueueDate string No Input & output Target date; defaults to tomorrow. Returned as the actual queue date
Duration string No Override job length, e.g. 90 or 1h 30m
Quantity double No Service quantity
ServiceId int32 Yes, or ServiceName Service to queue
AddOnParts AddOnPart[] No Extra parts to add to the appointment
Discount decimal No Discount amount off the service
Notes string No Appointment notes
NotificationUri string No Where to send en-route notices
CallCenterTransactionId int32 No Call center call id to link to
ApiKey string Yes Your API key
ResultCode int32 Output 0 = success, 1 = failure
Message string Output Why the call failed, when it fails

quickbook

POST https://serviceminder.com/api/appointments/quickbook

Parameter Type Required Direction Description
ContactId int32 No Input & output Returned id of the matched or created customer
Name string Recommended Customer name, used to match or create the contact
Nickname string No Customer nickname
Company string No Customer company name
Address1 string No Service address line 1
Address2 string No Service address line 2
City string No Service address city
State string No Service address state
Zip string No Service address postal code
PriPhone string Yes, or Email Primary phone
PriPhoneLabel string No Label for the primary phone
AltPhone string No Alternate phone
AltPhoneLabel string No Label for the alternate phone
Email string Yes, or PriPhone Customer email
Channel string No Lead source name; defaults to API key/org setting
ChannelId int32 No Lead source id; takes priority over Channel
Campaign string No Campaign name
CampaignId int32 No Campaign id; takes priority over Campaign and Channel
Category string No Contact category, applied only to new contacts
DigitalTrackingId string No Marketing tracking id for the contact
Unsubscribed boolean No True if the customer opted out of email
Tags String[] No Contact tag names to add (unknown names skipped)
CustomFields CustomField[] No Contact custom field values, matched by Name
Service string Yes Name of an active service to book
ServiceAgentEmail string No Email of the agent to assign; unassigned if no match
ScheduledStart datetime Yes Appointment start, org-local, e.g. 2026-11-10T09:00
Duration int32 No Length in minutes; defaults to service duration
Quantity double No Service quantity
FirstAvailable boolean No Flags the booking as first available
ConfirmationUri string No Where to send the confirmation, e.g. mailto: address
EnRouteUri string No Where to send en-route notices
InternalNotes string No Internal notes on the appointment
CustomerNotes string No Customer-facing notes on the appointment
CallCenterTransactionId int32 No Call center call id to link to
ApiKey string Yes Your API key
ResultCode int32 Output 0 = success, 1 = failure
Message string Output Why the call failed, when it fails

slotsearch

POST https://serviceminder.com/api/appointments/slotsearch

Parameter Type Required Direction Description
ServiceName string Yes, or ServiceId Input & output Service name; echoed back as the matched service
ContactId int32 Yes Customer to find slots for
ServiceId int32 Yes, or ServiceName Service to search slots for
SearchDate string No First day to search; defaults to tomorrow (org-local)
Duration string No Override job length, e.g. 90 or 1h 30m; defaults to service duration
Timeframe string No Limit to a time window, e.g. 8:00 am - 12:00 pm
SlotWindowDays int32 No How many days to search; defaults to org setting
Slots AppointmentSlot[] No Output Available appointment times
AddOnParts AddOnPart[] No Add-on parts whose skills the agent must have (only PartId used)
NotificationOptions String[] No Output Notification methods available for the customer
RootProposalId int32 No Proposal whose line skills the agent must have
ApiKey string Yes Your API key
ResultCode int32 Output 0 = success, 1 = failure
Message string Output Why the call failed, when it fails

update

POST https://serviceminder.com/api/appointments/update

Parameter Type Required Direction Description
AppointmentId int32 Yes Appointment to update
ServiceName string To reschedule, or ServiceId Service, by exact name
ContactId int32 To reschedule Customer the appointment is for
ServiceId int32 To reschedule, or ServiceName Service. Replaces the current one on a reschedule
Duration string No Visit length. Resets to the service's if left out on a reschedule
Quantity double No Units of the service. Set to 0 if left out on a reschedule
NotificationUri string No Where to send on-the-way messages. Kept if left out
ThirdPartyUrl string No Link saved on the appointment
Slots AppointmentSlot[] To reschedule New start time and technician. Technician is unassigned if left out
AddOnParts AddOnPart[] When UpdateLines is true Line items that replace the current ones
UpdateLines boolean No Set true to replace line items with AddOnParts
UpdateActuals boolean No Set true to update ActualStart and ActualFinish
ActualStart datetime When UpdateActuals is true When work started. Cleared if left out
ActualFinish datetime No When work finished. Needs ActualStart
UpdateNote string No Note added on a reschedule
ApiKey string Yes Your API key
ResultCode int32 Output 0 = success, 1 = failure
Message string Output Why the call failed, when it fails

blogs

find

POST https://serviceminder.com/api/blogs/find

Parameter Type Required Direction Description
NameSearch string No Partial match on blog title
DateSearch string No Exact blog date, e.g. 2026-11-10
Matches Blog[] No Output Blog entries found, newest first
ApiKey string Yes Your API key
ResultCode int32 Output 0 = success, 1 = failure
Message string Output Why the call failed, when it fails

get

POST https://serviceminder.com/api/blogs/get

Parameter Type Required Direction Description
IdSearch string Yes Blog entry id or slug
Matches Blog[] No Output The blog entry, or empty if not found
ApiKey string Yes Your API key
ResultCode int32 Output 0 = success, 1 = failure
Message string Output Why the call failed, when it fails

cancelreasons

all

POST https://serviceminder.com/api/cancelreasons/all

Parameter Type Required Direction Description
Matches CancelReason[] No Output Cancel reasons for the org
ApiKey string Yes Your API key
ResultCode int32 Output 0 = success, 1 = failure
Message string Output Why the call failed, when it fails

channels

all

POST https://serviceminder.com/api/channels/all

Parameter Type Required Direction Description
Channels Channel[] No Output Active channels with all their campaigns
ApiKey string Yes Your API key
ResultCode int32 Output 0 = success, 1 = failure
Message string Output Why the call failed, when it fails

bulkupdate

POST https://serviceminder.com/api/channels/bulkupdate

Parameter Type Required Direction Description
Updates CampaignUpdate[] Yes Input & output Campaign budget/actual updates; each gets a Results line
ApiKey string Yes Your API key
ResultCode int32 Output 0 = success, 1 = failure
Message string Output Why the call failed, when it fails

campaigns

POST https://serviceminder.com/api/channels/campaigns

Parameter Type Required Direction Description
Channels Channel[] No Output Active channels with their current campaigns
ApiKey string Yes Your API key
ResultCode int32 Output 0 = success, 1 = failure
Message string Output Why the call failed, when it fails

contacts

addnote

POST https://serviceminder.com/api/contacts/addnote

Parameter Type Required Direction Description
ContactId int32 Yes Contact to add the note to
Note note Yes Input & output Note to add (Title and Body); echoed back
ApiKey string Yes Your API key
ResultCode int32 Output 0 = success, 1 = failure
Message string Output Why the call failed, when it fails

addtags

POST https://serviceminder.com/api/contacts/addtags

Parameter Type Required Direction Description
ContactId int32 Yes Contact to add tags to
TagList Tag[] Yes Input & output Tags to add, by Id or Name; returns all org tags
ApiKey string Yes Your API key
ResultCode int32 Output 0 = success, 1 = failure
Message string Output Why the call failed, when it fails

addupdate

POST https://serviceminder.com/api/contacts/addupdate

Parameter Type Required Direction Description
Matches Contact[] Yes Input & output Contacts to add or update; returns saved contacts
ReturnPmtOnFile boolean No Include card-on-file details in results
DistributeLead boolean No Route new contacts to an org by postal code (branding keys)
Errors ApiFieldError[] No Output Per-field sms_consent errors, when rejected
ApiKey string Yes Your API key
ResultCode int32 Output 0 = success, 1 = failure
Message string Output Why the call failed, when it fails

listtags

POST https://serviceminder.com/api/contacts/listtags

Parameter Type Required Direction Description
TagList Tag[] No Output All contact tags for the org
ApiKey string Yes Your API key
ResultCode int32 Output 0 = success, 1 = failure
Message string Output Why the call failed, when it fails

locate

POST https://serviceminder.com/api/contacts/locate

Parameter Type Required Direction Description
NameSearch string No Partial match on contact name
PhoneSearch string No Partial match on phone or alt phone; needs 6+ digits
EmailSearch string No Partial match on email
AddressSearch string No Partial match on service address line 1
IdSearch int32 No Find one contact by id
DigitalTrackingIdSearch string No Find contacts by digital tracking id
CreatedFrom datetime No Created on or after this date, e.g. 2026-11-01
CreatedThrough datetime No Created on or before this date (whole day)
CategorySearch string No Exact contact category name
TagSearch String[] No Tag names; matches contacts with any of them
Matches Contact[] No Output Contacts found
ReturnPmtOnFile boolean No Include card-on-file details in results
Skip int32 No Input & output Number of matches to skip; default 0
Limit int32 No Input & output Max matches to return; default 100, max 500
ApiKey string Yes Your API key
ResultCode int32 Output 0 = success, 1 = failure
Message string Output Why the call failed, when it fails

logcall

POST https://serviceminder.com/api/contacts/logcall

Parameter Type Required Direction Description
call string Yes The call as a JSON string, including ApiKey, CallId and CallerNumber

removetags

POST https://serviceminder.com/api/contacts/removetags

Parameter Type Required Direction Description
ContactId int32 Yes Contact to remove tags from
TagList Tag[] Yes Input & output Tags to remove, by Id or Name; returns all org tags
ApiKey string Yes Your API key
ResultCode int32 Output 0 = success, 1 = failure
Message string Output Why the call failed, when it fails

upload

POST https://serviceminder.com/api/contacts/upload

Parameter Type Required Direction Description
upload upload Yes Input & output Upload details: ApiKey, ContactId, optional AppointmentId, TaskId, Note, TagIds
files ienumerable`1 Yes Files to attach (multipart form-data)

customfields

all

POST https://serviceminder.com/api/customfields/all

Parameter Type Required Direction Description
Matches CustomField[] No Output Active custom fields for the org
ApiKey string Yes Your API key
ResultCode int32 Output 0 = success, 1 = failure
Message string Output Why the call failed, when it fails

datasubscriber

clear

POST https://serviceminder.com/api/datasubscriber/clear

Parameter Type Required Direction Description
ClearThroughId int32 Yes Clear all events up to and including this event Id
ApiKey string Yes Your API key
ResultCode int32 Output 0 = success, 1 = failure
Message string Output Why the call failed, when it fails

downloadstatus

POST https://serviceminder.com/api/datasubscriber/downloadstatus

Parameter Type Required Direction Description
DownloadId string Yes Id returned by startdownload
Records int32 No Output Number of rows in the export
Ready boolean No Output True when the file is ready to fetch
ApiKey string Yes Your API key
ResultCode int32 Output 0 = success, 1 = failure
Message string Output Why the call failed, when it fails

fetch

POST https://serviceminder.com/api/datasubscriber/fetch

Parameter Type Required Direction Description
EventCount int32 No Max number of events to return; all if omitted
Events DataSubscriberEvent[] No Output Queued events not yet cleared, oldest first
ApiKey string Yes Your API key
ResultCode int32 Output 0 = success, 1 = failure
Message string Output Why the call failed, when it fails

forecasts

POST https://serviceminder.com/api/datasubscriber/forecasts

Parameter Type Required Direction Description
Organizations OrganizationForecast[] No Output Monthly revenue targets for each active organization in the brand
ApiKey string Yes Your API key
ResultCode int32 Output 0 = success, 1 = failure
Message string Output Why the call failed, when it fails

getdownload

POST https://serviceminder.com/api/datasubscriber/getdownload

Parameter Type Required Direction Description
DownloadId string Yes Id returned by startdownload
ApiKey string Yes Your API key
ResultCode int32 Output 0 = success, 1 = failure
Message string Output Why the call failed, when it fails

postalcodes

POST https://serviceminder.com/api/datasubscriber/postalcodes

Parameter Type Required Direction Description
ApiKey string Yes Your API key
ResultCode int32 Output 0 = success, 1 = failure
Message string Output Why the call failed, when it fails

startdownload

POST https://serviceminder.com/api/datasubscriber/startdownload

Parameter Type Required Direction Description
CreatedFrom datetime No Only records created on or after this date
CreatedThrough datetime No Only records created on or before this date
UpdatedFrom datetime No Only records updated on or after this date
UpdatedThrough datetime No Only records updated on or before this date
DateFrom datetime No Document date from (invoices, invoice-lines, proposals, deposits, payments)
DateThrough datetime No Document date through (invoices, invoice-lines, proposals, deposits, payments)
CompletedBefore datetime No Proposals completed before this date
CompletedAfter datetime No Proposals completed after this date
OrganizationId int32 No Limit the export to one organization in the brand
RowId int32 No Start from this record Id (for paging large exports)
Appointments downloadappointmentsettings No Extra filters for appointments and appointment-lines
Contacts downloadcontactsettings No Extra filters for contacts
Deposits downloaddepositsettings No Extra options for deposits
Invoices downloadinvoicesettings No Extra filters for invoices
InvoiceLines downloadinvoicelinesettings No Extra filters for invoice-lines
Proposals downloadproposalsettings No Extra filters for proposals
Services downloadservicesettings No Extra options for services
Parts downloadpartsettings No Extra options for parts
Organizations downloadorganizationsettings No Extra options for organizations
CampaignBudgets downloadcampaignbudgetsettings Yes, for campaign-budgets Year to export for campaign-budgets
RevenueForecasts downloadrevenueforecastsettings Yes, for revenue-forecasts Year to export for revenue-forecasts
ChannelsCampaigns downloadchannelscampaignssettings No Extra options for channels-campaigns
Kind string Yes Which brand-wide export to build, e.g. appointments, contacts, invoices
DownloadId string No Output Id to pass to downloadstatus and getdownload
ApiKey string Yes Your API key
ResultCode int32 Output 0 = success, 1 = failure
Message string Output Why the call failed, when it fails

download

downloadstatus

POST https://serviceminder.com/api/download/downloadstatus

Parameter Type Required Direction Description
DownloadId string Yes Id returned by startdownload
Records int32 No Output Number of rows in the export
Ready boolean No Output True when the file is ready to fetch
ApiKey string Yes Your API key
ResultCode int32 Output 0 = success, 1 = failure
Message string Output Why the call failed, when it fails

getdownload

POST https://serviceminder.com/api/download/getdownload

Parameter Type Required Direction Description
DownloadId string Yes Id returned by startdownload
ApiKey string Yes Your API key
ResultCode int32 Output 0 = success, 1 = failure
Message string Output Why the call failed, when it fails

startdownload

POST https://serviceminder.com/api/download/startdownload

Parameter Type Required Direction Description
CreatedFrom datetime No Only records created (booked) on or after this date
CreatedThrough datetime No Only records created (booked) on or before this date
UpdatedFrom datetime No Only records updated on or after this date
UpdatedThrough datetime No Only records updated on or before this date
DateFrom datetime No Document date from (invoices, proposals)
DateThrough datetime No Document date through (invoices, proposals)
Appointments downloadappointmentsettings No Extra filters for appointments
Contacts downloadcontactsettings No Extra filters for contacts
Invoices downloadinvoicesettings No Extra filters for invoices
InvoiceLines downloadinvoicelinesettings No Extra filters for invoice-lines
Proposals downloadproposalsettings No Extra filters for proposals
Kind string Yes Export to build: appointments, contacts, invoices or proposals
DownloadId string No Output Id to pass to downloadstatus and getdownload
UserId int32 Yes User the export runs as; must have access to the org
ApiKey string Yes Your API key
ResultCode int32 Output 0 = success, 1 = failure
Message string Output Why the call failed, when it fails

invoice

get

POST https://serviceminder.com/api/invoice/get

Parameter Type Required Direction Description
InvoiceId int32 Yes ID of the invoice
IncludeContact boolean No Include the customer's details
Invoice invoice No Output The invoice
Payments Payment[] No Output Payments on the invoice
ApiKey string Yes Your API key
ResultCode int32 Output 0 = success, 1 = failure
Message string Output Why the call failed, when it fails

import

POST https://serviceminder.com/api/invoice/import

Parameter Type Required Direction Description
Invoice invoice Yes The invoice to create
InvoiceId int32 No Output ID of the new invoice
ApiKey string Yes Your API key
ResultCode int32 Output 0 = success, 1 = failure
Message string Output Why the call failed, when it fails

query

POST https://serviceminder.com/api/invoice/query

Parameter Type Required Direction Description
FromDate datetime No Invoice date on or after
ThroughDate datetime No Invoice date on or before (whole day)
UpdatedFrom datetime No Updated on or after
UpdatedThrough datetime No Updated before this time
ContactId int32 No Only invoices for this customer
Status invoicestatus No 0 Voided, 1 Unapproved, 2 Paid, 3 Open
InvoiceType invoicetype No 0 Invoice, 1 Credit memo, 2 Refund, 3 Write-off
Skip int32 No Input & output Rows to skip for paging. Default 0
Take int32 No Input & output Rows to return. Default and max 500
IncludeContact boolean No Include each invoice's customer details
IncludeAssociatedAppointmentIds boolean No Include related appointment IDs
Count int32 No Output Total matches before paging
Invoices Invoice[] No Output Matching invoices, ordered by Id
ApiKey string Yes Your API key
ResultCode int32 Output 0 = success, 1 = failure
Message string Output Why the call failed, when it fails

organizations

cancel

POST https://serviceminder.com/api/organizations/cancel

Parameter Type Required Direction Description
OrganizationId int32 Yes Organization to cancel; must be in the key's brand
ApiKey string Yes Your API key
ResultCode int32 Output 0 = success, 1 = failure
Message string Output Why the call failed, when it fails

create

POST https://serviceminder.com/api/organizations/create

Parameter Type Required Direction Description
OrganizationId int32 No Output Id of the new organization
LocationId string No Brand's own location Id for this organization
Name string Yes Organization name (also used as internal name)
LegalEntityName string No Legal business name
TaxpayerID string No Taxpayer Id (EIN)
PrimaryPhone string No Main phone; non-digits are stripped
Email string No Organization email
Website string No Organization website
Timezone string Yes Part of a Windows time zone display name, e.g. Eastern Time
StartAddress address Yes Default start address for routing
Radius int32 No Self-service radius in miles, max 100
BillingAddress address Yes Billing address
OpenTimeGranularity int32 No Open-time appointment suggestion granularity
PostalCodes string No Service-area postal codes, comma, semicolon or newline separated
ServiceAgents ServiceAgent[] Yes (may be empty) Service agents with their time slots
Services Service[] Yes (may be empty) Services to create
Users User[] Yes (may be empty) Users to add; existing users matched by email
ApiKey string Yes Your API key
ResultCode int32 Output 0 = success, 1 = failure
Message string Output Why the call failed, when it fails

details

POST https://serviceminder.com/api/organizations/details

Parameter Type Required Direction Description
OrganizationId int32 Yes, or LocationId Input & output Organization to look up
LocationId string Yes, or OrganizationId Input & output Brand's location Id; exact match
Name string No Output Public name
InternalName string No Output Internal name
LegalEntityName string No Output Legal business name
TaxpayerID string No Output Taxpayer Id (EIN)
OpenSince datetime No Output Date the organization opened
PrimaryPhone string No Output Main phone
Email string No Output Organization email
Website string No Output Organization website
Timezone string No Output Time zone Id, e.g. Eastern Standard Time
StartAddress address No Output Default start address
Radius int32 No Output Self-service radius in miles
SlotSearchWindowDays int32 No Output How many days ahead slot search looks
BillingAddress address No Output Billing address
OpenTimeGranularity int32 No Output Open-time appointment suggestion granularity
PostalCodes string No Output Service-area postal codes
Users User[] No Output Active users of the organization
CustomFields CustomField[] No Output Organization custom field values (Name, Value, Type)
ApiKey string Yes Your API key
ResultCode int32 Output 0 = success, 1 = failure
Message string Output Why the call failed, when it fails

query

POST https://serviceminder.com/api/organizations/query

Parameter Type Required Direction Description
PublicName string No Filter: public name contains this text
InternalName string No Filter: internal name contains this text
LocationId string No Filter: location Id contains this text
PostalCode string No Only organizations serving this postal code
IncludeInactive boolean No Include inactive organizations; default false
Organizations OrganizationDetails[] No Output Matching organizations in the brand
ApiKey string Yes Your API key
ResultCode int32 Output 0 = success, 1 = failure
Message string Output Why the call failed, when it fails

update

POST https://serviceminder.com/api/organizations/update

Parameter Type Required Direction Description
OrganizationId int32 Yes Organization to update; must be in the key's brand
Name string No New public name; blank leaves it unchanged
PrimaryPhone string No New main phone; blank leaves it unchanged
Email string No New email; blank leaves it unchanged
Website string No New website; blank leaves it unchanged
PostalCodes string No Full replacement list of service-area postal codes
ApiKey string Yes Your API key
ResultCode int32 Output 0 = success, 1 = failure
Message string Output Why the call failed, when it fails

part

details

POST https://serviceminder.com/api/part/details

Parameter Type Required Direction Description
Id int32 Yes ID of the part
ApiKey string Yes Your API key
ResultCode int32 Output 0 = success, 1 = failure
Message string Output Why the call failed, when it fails

getdimension

POST https://serviceminder.com/api/part/getdimension

Parameter Type Required Direction Description
DimensionId int32 Yes Store item dimension to return
ApiKey string Yes Your API key
ResultCode int32 Output 0 = success, 1 = failure
Message string Output Why the call failed, when it fails

getpartdimensions

POST https://serviceminder.com/api/part/getpartdimensions

Parameter Type Required Direction Description
PartId int32 Yes Part whose dimensions to return
Dimensions string No Selected values as dimensionId|valueId pairs, comma-separated, e.g. 12|40,13|51
ApiKey string Yes Your API key
ResultCode int32 Output 0 = success, 1 = failure
Message string Output Why the call failed, when it fails

payment

import

POST https://serviceminder.com/api/payment/import

Parameter Type Required Direction Description
Payment payment Yes The payment to record
PaymentId int32 No Output ID of the new payment
ApiKey string Yes Your API key
ResultCode int32 Output 0 = success, 1 = failure
Message string Output Why the call failed, when it fails

query

POST https://serviceminder.com/api/payment/query

Parameter Type Required Direction Description
FromDate datetime No Payment date on or after
ThroughDate datetime No Payment date on or before (whole day)
CreatedFrom datetime No Recorded on or after
CreatedThrough datetime No Recorded on or before (whole day)
ContactId int32 No Only payments for this customer
InvoiceId int32 No Only payments on this invoice
Skip int32 No Input & output Rows to skip for paging. Default 0
Take int32 No Input & output Rows to return. Default and max 500
Count int32 No Output Total matches before paging
Payments Payment[] No Output Matching payments, ordered by Id
ApiKey string Yes Your API key
ResultCode int32 Output 0 = success, 1 = failure
Message string Output Why the call failed, when it fails

proposal

accept

POST https://serviceminder.com/api/proposal/accept

Parameter Type Required Direction Description
ProposalId int32 Yes Proposal to accept
Name string Yes Name of the person accepting
SignatureData string No Signature: image/jsignature;base30, data URI, or url,…
IpAddress string No IP address of the person accepting
ApiKey string Yes Your API key
ResultCode int32 Output 0 = success, 1 = failure
Message string Output Why the call failed, when it fails

alltemplates

POST https://serviceminder.com/api/proposal/alltemplates

Parameter Type Required Direction Description
Templates ProposalTemplate[] No Output Active proposal templates, sorted by name
ApiKey string Yes Your API key
ResultCode int32 Output 0 = success, 1 = failure
Message string Output Why the call failed, when it fails

create

POST https://serviceminder.com/api/proposal/create

Parameter Type Required Direction Description
Id int32 No Output ID of the new proposal
ContactId int32 Yes Customer the proposal is for
ClientUrl string No Output Customer-facing link to view and accept
Date string No Proposal date, e.g. 2026-11-10. Defaults to today
ServiceId int32 Yes, or ServiceName Service to quote
ServiceName string Yes, or ServiceId Input & output Service to quote, by exact name. Returns the matched name
Description string No Service line description
BasePrice decimal No Overrides the service base price when not 0
UnitPrice decimal No Overrides the service unit price when not 0
Quantity double No Units of the service. Ignored if the customer has a quantity override
NamedTaxRate namedtaxrate No Tax rate to apply, by Id
Title string No Proposal title
DeliveryUri string No Email address to send the proposal to
OwnerUserId int32 No Active user in your org to own it
ServiceAgentId int32 No Active service agent to assign
DepositRate double No Required deposit percent. Defaults to org setting
DepositRequired boolean No Require a deposit. Defaults to org setting
ProposalLines ProposalLine[] No Part lines to add
ProposalNotes ProposalNote[] No Internal notes to add
CustomerNotes string No Notes shown to the customer
ChangeOrderForProposalId int32 No Proposal this is a change order for
BundleWithProposalId int32 No Proposal to bundle this one with
IncludePaymentPlans boolean No Attach the org's auto-include payment plans
PaymentPlanRequired boolean No Require a payment plan. Needs IncludePaymentPlans
DistributeParts boolean No Spread parts across subscription visits
CustomFields CustomField[] No Proposal custom field values, by Name
ApiKey string Yes Your API key
ResultCode int32 Output 0 = success, 1 = failure
Message string Output Why the call failed, when it fails

details

POST https://serviceminder.com/api/proposal/details

Parameter Type Required Direction Description
Id int32 Yes Input & output ID of the proposal to fetch
ContactId int32 No Output Customer the proposal is for
ClientUrl string No Output Customer-facing link to view and accept
Date string No Output Proposal date, e.g. 2026-11-10
Status string No Output Current status, as shown in the app
AcceptedDate string No Output Date the customer accepted, if accepted
ServiceId int32 No Output Service on the proposal
ServiceName string No Output Name of the service
Description string No Output Service line description
Duration int32 No Output Estimated duration in minutes
BasePrice decimal No Output Service base price
UnitPrice decimal No Output Service unit price
Quantity double No Output Service quantity
Tax decimal No Output Total tax
NamedTaxRate namedtaxrate No Output Named tax rate applied, if any
Taxable boolean No Output True if a tax rate applies
Title string No Output Proposal title
DeliveryUri string No Output Email address the proposal is sent to
OwnerUserId int32 No Output User who owns the proposal
ServiceAgentId int32 No Output Assigned service agent
DepositRequired boolean No Output Whether a deposit is required to accept
SelectedSolution idname No Output Chosen part solution, if any
ProposalLines ProposalLine[] No Output Part lines on the proposal
ChangeOrders ProposalSummary[] No Output Change orders made against this proposal
BundledProposals ProposalSummary[] No Output Proposals bundled with this one
ProposalNotes ProposalNote[] No Output Internal notes on the proposal
CustomerNotes string No Output Notes shown to the customer
ChangeOrderForProposalId int32 No Output Original proposal, if this is a change order
BundleWithProposalId int32 No Output Proposal this one is bundled with
PaymentPlanRequired boolean No Output Whether a payment plan must be chosen
CustomFields CustomField[] No Output Proposal custom field values
ApiKey string Yes Your API key
ResultCode int32 Output 0 = success, 1 = failure
Message string Output Why the call failed, when it fails

query

POST https://serviceminder.com/api/proposal/query

Parameter Type Required Direction Description
Scope string Yes Which proposals: all, open, accepted, won, unscheduled, projects
FromDate datetime No Proposal date on or after
ThroughDate datetime No Proposal date on or before (whole day)
FromAccepted datetime No Accepted on or after
ThroughAccepted datetime No Accepted before this time
UpdatedFrom datetime No Updated on or after
UpdatedThrough datetime No Updated before this time
OwnerUserId int32 No Only proposals owned by this user
ContactId int32 No Only proposals for this customer
Skip int32 No Input & output Rows to skip for paging. Default 0
Take int32 No Input & output Rows to return. Default and max 500
IncludeContact boolean No Include each proposal's customer details
Count int32 No Output Total matches before paging
Proposals Proposal[] No Output Matching proposals, ordered by Id
ApiKey string Yes Your API key
ResultCode int32 Output 0 = success, 1 = failure
Message string Output Why the call failed, when it fails

quote

POST https://serviceminder.com/api/proposal/quote

Parameter Type Required Direction Description
ContactId int32 Yes Customer to quote
ServiceId int32 Yes, or ServiceName or ProposalTemplateId Service to quote
ServiceName string Yes, or ServiceId or ProposalTemplateId Input & output Service by exact name. Wins over ServiceId. Returns the matched name
ProposalTemplateId int32 Yes, when ReturnProposal Proposal template to build from. Its service is used if none given
ReturnDates boolean No Return the future visit dates
ReturnProposal boolean No Return a proposal built from the template
ScheduleDates SubscriptionDate[] No Output Future visit dates and pricing
Proposal proposal No Output Proposal built from the template
ApiKey string Yes Your API key
ResultCode int32 Output 0 = success, 1 = failure
Message string Output Why the call failed, when it fails

update

POST https://serviceminder.com/api/proposal/update

Parameter Type Required Direction Description
Id int32 Yes ID of the proposal to update
ServiceId int32 No New service. Keeps the current one if omitted
ServiceName string No Input & output New service, by exact name. Returns the service name
Description string No Service line description. Kept if omitted
BasePrice decimal No Service base price. Becomes 0 if omitted
UnitPrice decimal Yes, or it becomes 0 Service unit price
Quantity double Yes, or it becomes 0 Service quantity
NamedTaxRate namedtaxrate No Tax rate to apply, by Id. Used only when Taxable
Taxable boolean Yes, if taxed Must be true to keep tax. False clears the tax rate
Title string No Proposal title. Kept if omitted
DeliveryUri string No Email address to send the proposal to
ProposalLines ProposalLine[] Yes, to keep lines Full set of part lines. Replaces all existing lines
CustomerNotes string No Notes shown to the customer. Kept if omitted
ChangeOrderForProposalId int32 No Original proposal. Cleared if omitted
BundleWithProposalId int32 No Proposal to bundle with. Cleared if omitted
CustomFields CustomField[] No Proposal custom field values, by Name
ApiKey string Yes Your API key
ResultCode int32 Output 0 = success, 1 = failure
Message string Output Why the call failed, when it fails

upload

POST https://serviceminder.com/api/proposal/upload

Parameter Type Required Direction Description
upload upload Yes Input & output Upload fields: ApiKey, ProposalId, Note, TagIds; returns UploadIds
files ienumerable`1 Yes, to upload anything Files as multipart form data. PNG/JPEG become pictures, others documents

serviceagents

all

POST https://serviceminder.com/api/serviceagents/all

Parameter Type Required Direction Description
Matches ServiceAgent[] No Output Active, non-internal service agents
ApiKey string Yes Your API key
ResultCode int32 Output 0 = success, 1 = failure
Message string Output Why the call failed, when it fails

services

all

POST https://serviceminder.com/api/services/all

Parameter Type Required Direction Description
IncludeParts boolean No Include each service's parts; default true
IncludeInactive boolean No Also return inactive services; default false
Matches Service[] No Output Services for the org
ApiKey string Yes Your API key
ResultCode int32 Output 0 = success, 1 = failure
Message string Output Why the call failed, when it fails

details

POST https://serviceminder.com/api/services/details

Parameter Type Required Direction Description
Id int32 Yes Service to return
Matches Service[] No Output The service, with parts; empty if not found
ApiKey string Yes Your API key
ResultCode int32 Output 0 = success, 1 = failure
Message string Output Why the call failed, when it fails

settings

channelcampaigns

POST https://serviceminder.com/api/settings/channelcampaigns

Parameter Type Required Direction Description
Channels Channel[] No Output Active channels with their current campaigns
ApiKey string Yes Your API key
ResultCode int32 Output 0 = success, 1 = failure
Message string Output Why the call failed, when it fails

channels

POST https://serviceminder.com/api/settings/channels

Parameter Type Required Direction Description
LeadSourceCategories Channel[] No Output Same list as Channels
Channels Channel[] No Output All channels (lead sources), Id and Name only
ApiKey string Yes Your API key
ResultCode int32 Output 0 = success, 1 = failure
Message string Output Why the call failed, when it fails

features

POST https://serviceminder.com/api/settings/features

Parameter Type Required Direction Description
Features String[] No Output Feature names enabled by the org's billing plan
ApiKey string Yes Your API key
ResultCode int32 Output 0 = success, 1 = failure
Message string Output Why the call failed, when it fails

leadsourcecategories

POST https://serviceminder.com/api/settings/leadsourcecategories

Parameter Type Required Direction Description
LeadSourceCategories Channel[] No Output All channels (lead sources), Id and Name only
Channels Channel[] No Output Same list as LeadSourceCategories
ApiKey string Yes Your API key
ResultCode int32 Output 0 = success, 1 = failure
Message string Output Why the call failed, when it fails

namedtaxrates

POST https://serviceminder.com/api/settings/namedtaxrates

Parameter Type Required Direction Description
NamedTaxRates NamedTaxRate[] No Output The org's named tax rates
ApiKey string Yes Your API key
ResultCode int32 Output 0 = success, 1 = failure
Message string Output Why the call failed, when it fails

radiuscities

POST https://serviceminder.com/api/settings/radiuscities

Parameter Type Required Direction Description
Cities City[] No Output Cities and postal codes in the org's service area
ApiKey string Yes Your API key
ResultCode int32 Output 0 = success, 1 = failure
Message string Output Why the call failed, when it fails

radiuspostalcodes

POST https://serviceminder.com/api/settings/radiuspostalcodes

Parameter Type Required Direction Description
PostalCodes String[] No Output Distinct postal codes in the org's service area
ApiKey string Yes Your API key
ResultCode int32 Output 0 = success, 1 = failure
Message string Output Why the call failed, when it fails

task

complete

POST https://serviceminder.com/api/task/complete

Parameter Type Required Direction Description
TaskId int32 Yes Open task to complete; must belong to the API key's organization
Note string No Completion note; omit to keep the existing note
Task task No Output The task after completion
ApiKey string Yes Your API key
ResultCode int32 Output 0 = success, 1 = failure
Message string Output Why the call failed, when it fails

create

POST https://serviceminder.com/api/task/create

Parameter Type Required Direction Description
ContactId int32 No Customer the task is for; 0 or omitted = no customer
Description string Yes What the task is
TaskType int32 Yes 1 = Task, 2 = Call, 3 = Email
DurationMinutes int32 No Expected length in minutes
Due string No Org-local due date and time, e.g. 2026-11-10 14:00; defaults to now
Category string No Task category name; created if it does not exist
TaskId int32 No Output Id of the new task
ApiKey string Yes Your API key
ResultCode int32 Output 0 = success, 1 = failure
Message string Output Why the call failed, when it fails

query

POST https://serviceminder.com/api/task/query

Parameter Type Required Direction Description
TaskId int32 No Return only this task
ContactId int32 No Only tasks for this customer
TaskType int32 No Only this type: 1 = Task, 2 = Call, 3 = Email
Category string No Only tasks in this category (exact name)
DueFrom datetime No Due on or after this date/time
DueThrough datetime No Due before this date/time; equal to DueFrom = that whole day
UpdatedFrom datetime No Changed on or after this date/time
UpdatedThrough datetime No Changed before this date/time; equal to UpdatedFrom = that whole day
IncludeCompleted boolean No Also return completed tasks; default open tasks only
Skip int32 No Input & output Number of matches to skip for paging; default 0
Take int32 No Input & output Page size; default and max 500
Count int32 No Output Total matches before paging
Tasks Task[] No Output Matching tasks for this page, ordered by Id
ApiKey string Yes Your API key
ResultCode int32 Output 0 = success, 1 = failure
Message string Output Why the call failed, when it fails

update

POST https://serviceminder.com/api/task/update

Parameter Type Required Direction Description
TaskId int32 Yes Task to update; must belong to the API key's organization
Description string No New description; omit to keep
TaskType int32 No 1 = Task, 2 = Call, 3 = Email; omit to keep
DurationMinutes int32 No New length in minutes, not negative; omit to keep
Due string No Org-local due date and time, e.g. 2026-11-10 14:00; omit to keep
Category string No Category name (created if missing); empty string clears it
ContactId int32 No Customer to link (same organization); 0 clears it
Task task No Output The task after the update
ApiKey string Yes Your API key
ResultCode int32 Output 0 = success, 1 = failure
Message string Output Why the call failed, when it fails

test

echo

POST https://serviceminder.com/api/test/echo

Parameter Type Required Direction Description
ApiKey string Yes Your API key
ResultCode int32 Output 0 = success, 1 = failure
Message string No Input & output Text to send. Returned as "Received <text>"

user

all

POST https://serviceminder.com/api/user/all

Parameter Type Required Direction Description
Matches User[] No Output All staff users in the API key's organization
ApiKey string Yes Your API key
ResultCode int32 Output 0 = success, 1 = failure
Message string Output Why the call failed, when it fails

create

POST https://serviceminder.com/api/user/create

Parameter Type Required Direction Description
Name string Yes User's full name
Email string Yes Login email; must not already be used by any user
MobilePhone string No Mobile phone; non-digits are stripped
CreateServiceAgent boolean No Also create an employee service agent linked to the user
Role string Yes Role name; owner/account-level roles not allowed
ApiKey string Yes Your API key
ResultCode int32 Output 0 = success, 1 = failure
Message string Output Why the call failed, when it fails

users

bulkdisablemfa

POST https://serviceminder.com/api/users/bulkdisablemfa

Parameter Type Required Direction Description
UserIds Int32[] Yes Ids of users to turn MFA off for
Results BulkMfaResult[] No Output Per-id outcome: ok or not-found-or-cross-tenant
ApiKey string Yes Your API key
ResultCode int32 Output 0 = success, 1 = failure
Message string Output Why the call failed, when it fails

bulkenablemfa

POST https://serviceminder.com/api/users/bulkenablemfa

Parameter Type Required Direction Description
UserIds Int32[] Yes Ids of users to require MFA for
Results BulkMfaResult[] No Output Per-id outcome: ok or not-found-or-cross-tenant
ApiKey string Yes Your API key
ResultCode int32 Output 0 = success, 1 = failure
Message string Output Why the call failed, when it fails

bulkresetmfa

POST https://serviceminder.com/api/users/bulkresetmfa

Parameter Type Required Direction Description
Confirm string Yes Must be exactly RESET_MFA to allow the reset
UserIds Int32[] Yes Ids of users whose MFA enrollment to reset
Results BulkMfaResult[] No Output Per-id outcome: ok or not-found-or-cross-tenant
ApiKey string Yes Your API key
ResultCode int32 Output 0 = success, 1 = failure
Message string Output Why the call failed, when it fails

Objects

accountingclasspostalcodes

Parameter Type Required Description
Id int32 Accounting class id
AccountingClass string Accounting class name
TerritoryID string External territory id
PostalCodes String[] Postal codes assigned (empty on contact responses)

additionalserviceagent

Parameter Type Required Description
StartMinute int32 Minutes after appointment start this agent begins
Duration int32 Minutes this agent is scheduled
ActualStartMinute int32 Minutes after start this agent actually began
ActualDuration int32 Minutes this agent actually worked
ServiceAgent serviceagent The additional agent

addonpart

Parameter Type Required Description
Id int32 No Proposal line id (output)
PartId int32 Yes Part to add
Quantity double No Part quantity (whole numbers when queueing/booking)
UnitPrice decimal No Price per unit; 0 uses the part's price (queue/book)
UnitOfMeasure string No Part unit of measure (output)
RangePricing boolean No True if the part has quantity range pricing
Discount decimal No Discount amount off this line
Name string No Part name (output)

address

Parameter Type Required Description
Address1 string No Street address
Address2 string No Suite, unit, etc.
City string No City
State string No State or province
Zip string No Postal code
ApiKey string
ResultCode int32
Message string

apifielderror

Parameter Type Required Description
Field string Path of the bad field, e.g. Matches[0].sms_consent
Message string Not used on nested objects

appointmentslot

Parameter Type Required Description
ContactId int32 No Customer the appointment is for
AppointmentId int32 No Appointment id
DateTime string Yes, when booking/updating Start date/time, org-local
DateTimeFormatted string No Start date/time, friendly format
ServiceAgentId int32 Yes, when booking a specific agent Assigned agent id; 0 means unassigned
Quantity double No Service quantity
Duration int32 No Length in minutes
ServiceAgentName string No Assigned agent name, or Queue
DurationFormatted string No Length, friendly format
ServiceId int32 No Service id
ServiceName string No Service name
Discount decimal No Appointment discount amount
Total decimal No Appointment price
NotificationUri string No Where en-route notices are sent
TipUrl string No Link for the customer to leave a tip
ThirdPartyUrl string No Third-party link stored on the appointment
TrackingUrl string No Link for the customer to track the agent
ActualStart string No When work actually started
ActualDuration int32 No Actual minutes worked
Status int32 No Appointment status code
Shadow boolean No True for a shadow appointment
DriveTimeMinutes int32 No Estimated drive time to this slot (slot search)
DriveTimeWarning boolean No True if drive time is unusually long (slot search)
ProposalId int32 No Internal proposal id for the appointment
RootProposalId int32 No Customer proposal the appointment came from
ReworkForAppointmentId int32 No Original appointment if this is a rework
CancelReasonId int32 No Reason the appointment was canceled
AddOnParts AddOnPart[] No Extra parts on the appointment
CustomProperties dictionary`2 No Custom service fields, by name
AdditionalServiceAgents AdditionalServiceAgent[] No Other agents assigned to the appointment
Contact contact No Customer details, when IncludeContact is true
ApiKey string Not used on nested objects
ResultCode int32 Not used on nested objects
Message string Not used on nested objects

assemblyitem

Parameter Type Required Description
PartId int32 Included part id
PartName string Included part name
Quantity decimal Quantity included

blog

Parameter Type Required Description
Id int32 Blog entry id
Slug string URL slug
OrganizationId int32 Org that owns the entry
UserId int32 Author user id
Title string Title
Content string Body; HTML in find, raw in get
Date datetime Publish date
Tags String[] Tag titles
Summary string Short summary; HTML in find, raw in get
ImageThumbUrl string Thumbnail image URL
ImageFullUrl string Full-size image URL
ApiKey string Not used on nested objects
ResultCode int32 Not used on nested objects
Message string Not used on nested objects

bulkmfaresult

Parameter Type Required Description
UserId int32 User id from the request
Status string ok, or not-found-or-cross-tenant (user skipped)

campaign

Parameter Type Required Description
Id int32 Campaign id
Name string Campaign name
Description string External description (channels/campaigns only)
Active boolean Whether the campaign is active (channels/all only)
CampaignBudgets CampaignBudget[] Budgets (channels/all only)
CampaignActuals CampaignActual[] Actual spend (channels/all only)

campaignactual

Parameter Type Required Description
Amount decimal Not filled (always empty)
Year int32 Year of the spend
Month int32 Month of the spend, 1-12
InvoiceUrl string Link to the spend invoice

campaignbudget

Parameter Type Required Description
Budget decimal Budget amount
Type int32 Budget period: once, monthly, quarterly, annual
Year int32 Budget year, 4 digits
Month int32 Budget month, 1-12; empty for whole year

campaignupdate

Parameter Type Required Description
ChannelId int32 Yes Channel the campaign is under
CampaignId int32 Yes, or CampaignName Campaign to update
CampaignName string Yes, or CampaignId Campaign name; created if not found on the channel
Year int32 Yes Year of the budget or actual, 4 digits
Month int32 Yes Month of the budget or actual, 1-12
BudgetAmount decimal No Budget amount to set; needs BudgetType
BudgetType int32 No Budget period code; needs BudgetAmount
ActualAmount decimal No Actual spend to set
InvoiceUrl string No Link to the spend invoice (with ActualAmount)
Results string What was done for this update (output)

cancelreason

Parameter Type Required Description
Id int32 Cancel reason id
Reason string Reason text

channel

Parameter Type Required Description
Id int32 Channel (lead source) id
Name string Channel name
Description string Not set (always empty)
Campaigns Campaign[] Campaigns under this channel

city

Parameter Type Required Description
Name string City name (not returned by channels/campaigns)
PostalCode string Postal code (not returned by channels/campaigns)

contact

Parameter Type Required Description
Id int32 Yes, or Name, Email, Phone or Address1 Contact id; send to update a specific contact
OrganizationId int32 No Org the contact belongs to (output only)
Hash string No Contact's public hash key (output only)
Name string Yes, when creating (or Email/Phone/Address1) Full name
Nickname string No Nickname, up to 50 characters
Company string No Company name, up to 64 characters (input only)
Address1 string No Service address line 1
Address2 string No Service address line 2
City string No Service address city
State string No Service address state; US state names become codes
Zip string No Service address postal code
Phone string No Primary phone
AltPhone string No Alternate phone
PhoneLabel string No Label for the primary phone, e.g. Mobile
AltPhoneLabel string No Label for the alternate phone
Email string No Email address
Country string No Country used to clean the postal code (input only)
LocationID string No Org's external location id; input used for lead distribution
TerritoryID string No Territory id; input used for lead distribution
LeadSource string No Channel name (same as Channel)
Channel string No Channel (lead source) name
Campaign string No Campaign name
Category string No Contact category name; applied only when creating
ChannelId int32 No Channel id; used when CampaignId is not set
CampaignId int32 No Campaign id; sets channel too; must be active
UtmMedium string No UTM medium, used to pick a campaign
UtmSource string No UTM source, used to pick a campaign
UtmCampaign string No UTM campaign, used to pick a campaign
IsCustomer boolean No Whether the contact's category is a customer (output only)
DigitalTrackingId string No Digital tracking id (input only)
ReferredByContactId int32 No Referring contact id; applied only when creating
OwnerUserId int32 No Owner user id; applied only when creating
ReferredByHash string No Referring contact's hash; applied only when creating
ManagedByContactId int32 No Managing contact id; applied only when creating
AutoOfferCode string No Offer code applied automatically; empty string clears it
FlashMessage string No Alert shown on the contact, up to 64 characters
Unsubscribed boolean No Unsubscribed from email; true unsubscribes
NamedTaxRate namedtaxrate No Tax rate for the contact (locate output only)
PmtOnFileKind string No Card-on-file type, when ReturnPmtOnFile is true
PmtOnFileLast4 string No Card-on-file last 4 digits, when ReturnPmtOnFile is true
PmtOnFileExpDate string No Card-on-file expiry date, when ReturnPmtOnFile is true
UpdatePaymentOnFileUrl string No Link for the customer to update their card (locate only)
DoNotText boolean No Opt out of marketing texts
DoNotEmail boolean No Opt out of email; true unsubscribes
DoNotTextTransactional boolean No Opted out of account texts (output only; sms-consent-api flag)
SmsConsent smsconsent No SMS consent per category (sms-consent-api flag); send as sms_consent
AccountingClass accountingclasspostalcodes No Assigned accounting class (addupdate output only)
Notes Note[] No Notes; send Id to edit an existing note
CustomFields CustomField[] No Custom field values; input needs Name and Value
Tags String[] No Tag names; unknown tags are ignored
ContactPictures ContactPicture[] No Attached pictures (locate output only)
ContactDocuments ContactDocument[] No Attached documents (locate output only)
OpenInvoices ServiceDocumentLink[] No Open invoices (locate output only)
OpenProposals ServiceDocumentLink[] No Open proposals (locate output only)
IsValid boolean Not returned by these endpoints
HasIdentifyingInfo boolean Not returned by these endpoints
HasIdentifyingFields boolean Not returned by these endpoints
ApiKey string Not used on nested objects
ResultCode int32 Not used on nested objects
Message string Not used on nested objects

contactdocument

Parameter Type Required Description
Id int32 Document id
Filename string File name
AppointmentId int32 Linked appointment, if any
TaskId int32 Linked task, if any
Notes string Notes saved with the document
CreatedAt datetime When it was added
UpdatedAt datetime When it was last changed

contactpicture

Parameter Type Required Description
Id int32 Picture id
Filename string File name
Notes string Notes saved with the picture
AppointmentId int32 Linked appointment, if any
TaskId int32 Linked task, if any
Width int32 Width in pixels
Height int32 Height in pixels
CreatedAt datetime When it was added
UpdatedAt datetime When it was last changed

customfield

Parameter Type Required Description
Id int32 Custom field id
Name string Yes, on contact input Field name; must match exactly on input
Shortcode string Merge shortcode for the field
FormField string Short HTML form field name
Value object Yes, on contact input Field value (contact input/output only)
Type int32 Field type code
TableType int32 What the field is attached to (customfields/all only)
Phase int32 Phase the field is collected in (customfields/all only)
Required boolean Whether the field is required (customfields/all only)
HelpText string Help text (customfields/all only)
CustomFieldCategory string Field category name (customfields/all only)
CheckboxListOptionId int32 Selected checkbox-list option id (contact output)
CheckboxListOptionName string Selected checkbox-list option name (contact output)
Options CustomFieldOption[] Choices for dropdown and checkbox-list fields (customfields/all)

customfieldoption

Parameter Type Required Description
Id int32 Option id (checkbox-list options only)
Label string Display label
Value string Stored value

datasubscriberevent

Parameter Type Required Description
Id int32 Event Id; pass the last one to clear
QueuedAt datetime When the event was queued
Payload object Event data (JSON object)

downloadappointmentsettings

Parameter Type Required Description
ScheduledFrom datetime No Scheduled on or after this date
ScheduledThrough datetime No Scheduled on or before this date
CompletedFrom datetime No Completed on or after this date
CompletedThrough datetime No Completed on or before this date
Scheduled boolean No Include scheduled appointments
Completed boolean No Include completed appointments
Queued boolean No Include queued appointments
Canceled boolean No Include canceled appointments
Started boolean No Include started appointments
IncludeCustomFields boolean No Add appointment custom field columns
IncludeExcludedOrgs boolean No Include orgs excluded from brand reports (datasubscriber/startdownload only)
IncludeOrgCustomFields boolean No Add organization custom field columns (datasubscriber/startdownload only)

downloadcampaignbudgetsettings

Parameter Type Required Description
Year int32 Yes Budget year to export

downloadchannelscampaignssettings

Parameter Type Required Description
IncludeExcludedOrgs boolean No Include orgs excluded from brand reports

downloadcontactsettings

Parameter Type Required Description
InvoicedAfter datetime No Only contacts invoiced after this date (datasubscriber/startdownload only)
Tags string No Only contacts with these tags (datasubscriber/startdownload only)
WithEmails boolean No Only contacts that have an email
WithoutEmails boolean No Only contacts without an email
NationalAccountsOnly boolean No Only national accounts (datasubscriber/startdownload only)
IncludeCustomFields boolean No Add contact custom field columns
IncludeOrgCustomFields boolean No Add organization custom field columns (datasubscriber/startdownload only)
IncludeGeoZones boolean No Add geo zone columns
IncludeGeoShapes boolean No Add geo shape columns
IncludeExcludedOrgs boolean No Include orgs excluded from brand reports (datasubscriber/startdownload only)

downloaddepositsettings

Parameter Type Required Description
IncludeExcludedOrgs boolean No Include orgs excluded from brand reports

downloadinvoicelinesettings

Parameter Type Required Description
Open boolean No Include lines of open invoices
Paid boolean No Include lines of paid invoices
Voided boolean No Include lines of voided invoices
Unapproved boolean No Include lines of unapproved invoices
IncludeExcludedOrgs boolean No Include orgs excluded from brand reports

downloadinvoicesettings

Parameter Type Required Description
Open boolean No Include open invoices
Paid boolean No Include paid invoices
Voided boolean No Include voided invoices
Unapproved boolean No Include unapproved invoices
IncludeLines boolean No Add invoice line rows (datasubscriber/startdownload only)
IncludeExcludedOrgs boolean No Include orgs excluded from brand reports (datasubscriber/startdownload only)

downloadorganizationsettings

Parameter Type Required Description
IncludeExcludedOrgs boolean No Include orgs excluded from brand reports

downloadpartsettings

Parameter Type Required Description
IncludeExcludedOrgs boolean No Include orgs excluded from brand reports

downloadproposalsettings

Parameter Type Required Description
IncludeBundled boolean No Include bundled proposals
IncludeTags boolean No Add tag columns
IncludeLines boolean No Add proposal line rows
IncludeCustomFields boolean No Add proposal custom field columns
IncludeOrgCustomFields boolean No Add organization custom field columns (datasubscriber/startdownload only)
IncludeGeoZones boolean No Add geo zone columns
IncludeGeoShapes boolean No Add geo shape columns
IncludeSolutions boolean No Add solution columns
IncludeExcludedOrgs boolean No Include orgs excluded from brand reports (datasubscriber/startdownload only)
AcceptedBefore datetime No Accepted before this date (datasubscriber/startdownload only)
AcceptedAfter datetime No Accepted after this date (datasubscriber/startdownload only)
Status int32 No Proposal status number to filter on (datasubscriber/startdownload only)

downloadrevenueforecastsettings

Parameter Type Required Description
Year int32 Yes Forecast year to export

downloadservicesettings

Parameter Type Required Description
IncludeExcludedOrgs boolean No Include orgs excluded from brand reports

forecast

Parameter Type Required Description
Year int32 Year
Month int32 Month, 1-12
Target decimal Revenue target for the month

idname

Parameter Type Required Description
Id int32 ID
Name string Name

invoice

Parameter Type Required Description
Id int32 Invoice ID
Number string No Invoice number. Auto-assigned if omitted; reusing one replaces that invoice
Date datetime No Invoice date. Defaults to today on import
DatePaid datetime No Date paid in full
Status invoicestatus 0 Voided, 1 Unapproved, 2 Paid, 3 Open
InvoiceType invoicetype 0 Invoice, 1 Credit memo, 2 Refund, 3 Write-off
ContactId int32 Yes Customer the invoice is for
ProposalId int32 Original proposal, if any
AppointmentId int32 Appointment the invoice is for, if any
Subtotal decimal No Subtotal. Ignored on import
Tax decimal Yes, if taxed Total tax. Tax rate applies on import only when above 0
Total decimal No Total. Ignored on import
BalanceDue decimal Amount still owed
IncludedInEop boolean Included in an end-of-period report
TaxRate double No Tax rate. Applied on import when Tax is above 0
RateName string No Tax rate name. Ignored on import
Terms string Payment terms
CustomerNotes string Notes shown to the customer
CanAcceptClientPayment boolean Customer can pay online
ClientPayUrl string Customer-facing pay link
ClientPdfUrl string Link to the invoice PDF
Lines InvoiceLine[] Yes Invoice lines. The first becomes the service line
Contact contact Customer details, when IncludeContact is set
AssociatedAppointmentIds Int32[] Related appointment IDs (invoice/query only)

invoiceline

Parameter Type Required Description
Id int32 Line ID
ServiceId int32 Yes, or PartId Service for the line; its name names the invoice service
PartId int32 Yes, or ServiceId Part for the line
Description string No Line description
Rate decimal No Unit price
Qty double No Quantity
Extended decimal No Line total
Taxable boolean No Line is taxed

namedtaxrate

Parameter Type Required Description
Id int32 Tax rate id
Name string Tax rate name
TaxRate double Rate value

note

Parameter Type Required Description
Id int32 No Note id; send in addupdate to edit that note
Title string No Note title, up to 64 characters
Body string No Note text

organizationdetails

Parameter Type Required Description
Id int32 Organization Id
PublicName string Public name
InternalName string Internal name
LegalEntityName string Legal business name
TaxpayerID string Taxpayer Id (EIN)
PrimaryPhone string Main phone
Email string Organization email
Website string Website
Timezone string Time zone Id, e.g. Eastern Standard Time
StartAddress address Not filled (always empty)
Radius int32 Self-service radius in miles
BillingAddress address Not filled (always empty)
OpenTimeGranularity int32 Open-time appointment suggestion granularity
PostalCodes string Service-area postal codes
LocationID string Brand's location Id
CancelDate datetime Date canceled, if canceled
TrialExpirationDate datetime Trial end date
Suspended boolean True if the account is suspended
BillingPlan string Billing plan name
BillingMethod int32 Billing method code
Users User[] All users of the organization
CustomFields CustomField[] Organization custom field values
AccountManager user Brand account manager user
Region string Brand region name

organizationforecast

Parameter Type Required Description
Organization idname Organization Id and name
Forecasts Forecast[] Monthly revenue targets, by year then month

part

Parameter Type Required Description
Id int32 Part id
Name string Part name
Description string Description
Category string Part category name
Taxable boolean Is taxable
RequiredForService boolean Required with the service
ExcludeFromMinimum boolean Excluded from minimum charge
RangePricing boolean Has quantity pricing tiers
IsActive boolean Is active
SelfSelect boolean Customers can pick it online
IsAssembly boolean Is an assembly of other parts
IsAssemblySynchronizePricing boolean Assembly price follows its items
IsInternal boolean Internal only
IsZeroAssemblyItemPrices boolean Assembly items priced at zero
UnitPrice decimal Price per unit
UnitPriceMax decimal Maximum unit price
UnitCost decimal Not set (always empty)
UnitDuration int32 Minutes per unit
DurationForQtyUnits int32 Quantity the duration applies to
UnitOfMeasure string Unit name
QuantityOverrideCustomFieldId int32 Custom field that sets quantity
QtyPricing PartQtyPricing[] Quantity pricing tiers
AssemblyItems AssemblyItem[] Parts in the assembly
PartTemplate parttemplate Template option, if active
StoreItemId int32 Linked store item
DistributionStart datetime Distribution start date
DistributionEnd datetime Distribution end date

partqtypricing

Parameter Type Required Description
AtLeast double Tier starts at this quantity
LessThan double Tier ends below this quantity
Price double Unit price in this tier
ExcludeQuantity boolean Tier excludes quantity
OverageMode boolean Prices only the overage
Formula string Pricing formula

parttemplate

Parameter Type Required Description
Id int32 Template id
OptionName string Option name
Selected boolean Selected by default

payment

Parameter Type Required Description
Id int32 Payment ID
InvoiceId int32 Yes Invoice the payment is for
ContactId int32 Customer who paid
InvoiceNumber string Number of that invoice
Reference string No Check number or other reference
TransactionId string Processor transaction ID
Date datetime Yes Payment date (no default)
Amount decimal Yes Amount paid
Method string Yes cash, check, card, or a method number; other text = cash

pricingband

Parameter Type Required Description
AtLeast double Band starts at this quantity
LessThan double Band ends below this quantity
Price double Price in this band
IsExcludeQuantity boolean Band excludes quantity
IsOverageMode boolean Not set (always false)
CapacityDemand double Capacity demand for the band
Formula string Pricing formula
Duration int32 Duration in minutes
InitialNRecurringPrice decimal Price for initial recurring visits
IsOverageBand boolean Is an overage band

proposal

Parameter Type Required Description
Id int32 Proposal ID
ContactId int32 Customer the proposal is for
Contact contact Customer details, when IncludeContact is set
ClientUrl string Customer-facing link to view and accept
Date string Proposal date, e.g. 2026-11-10
Status string Current status, as shown in the app
AcceptedDate string Date accepted, if accepted
ServiceId int32 Service on the proposal
ServiceName string Name of the service
Description string Service line description
Duration int32 Estimated duration in minutes
BasePrice decimal Service base price
UnitPrice decimal Service unit price
Quantity double Service quantity
Subtotal decimal Not filled (always empty)
Tax decimal Total tax
NamedTaxRate namedtaxrate Named tax rate applied, if any
Taxable boolean True if a tax rate applies
Title string Proposal title
DeliveryUri string Email address the proposal is sent to
OwnerUserId int32 User who owns the proposal
ServiceAgentId int32 Assigned service agent
DepositRate double Not filled (always empty)
DepositRequired boolean Whether a deposit is required
SelectedSolution idname Chosen part solution, if any
ProposalLines ProposalLine[] Part lines
ChangeOrders ProposalSummary[] Change orders against this proposal
BundledProposals ProposalSummary[] Proposals bundled with this one
ProposalNotes ProposalNote[] Not filled (always empty)
CustomerNotes string Notes shown to the customer
ChangeOrderForProposalId int32 Original proposal, if a change order
BundleWithProposalId int32 Proposal this one is bundled with
IncludePaymentPlans boolean Not filled (always empty)
PaymentPlanRequired boolean Whether a payment plan must be chosen
DistributeParts boolean Not filled (always empty)
CustomFields CustomField[] Not filled (always empty)
AccountingClass accountingclasspostalcodes Not filled (always empty)
ApiKey string Not used on nested objects
ResultCode int32 Not used on nested objects
Message string Not used on nested objects

proposaldateline

Parameter Type Required Description
Id int32 Line ID
ProposalOptionId int32 Option the line belongs to
ProposalScheduleDateId int32 Visit date the line belongs to
SortOrder int32 Display order
Part idname Part on the line
Quantity double Quantity
UnitPrice decimal Unit price
UnitCost decimal Unit cost
Extended decimal Line total
Taxable boolean Line is taxed
Tax decimal Tax on the line
Duration int32 Minutes for the line
Internal boolean Hidden from customer
Description string Line description
Notes string Line notes
OptionName string Option group name

proposalline

Parameter Type Required Description
Id int32 Line ID
Quantity double No Quantity. Defaults from part settings
UnitPrice decimal No Unit price. Looked up from part pricing if omitted
UnitCost decimal No Unit cost
RatePercent double No Rate as a percent
MaxDiscount decimal No Largest discount allowed
ExtendedTotal decimal No Line total. Used as sent only if no quantity
LineTax decimal Tax on the line
Taxable boolean No Whether the line is taxed
IsInternal boolean No Hide from customer. Defaults to the part's setting
Discount decimal Discount on the line
LineDescription string No Line description
Notes string No Line notes
SortIndex int32 Display order
AssemblyLineId int32 No Parent assembly line, if part of an assembly
Part part Yes Part, by Id or Name. Lines without a Part are skipped
ProposalOption proposaloption No Option group the line belongs to
CustomFields CustomField[] No Line custom field values, by field HTML name

proposalnote

Parameter Type Required Description
Id int32 Note ID
ProposalId int32 Proposal the note is on
Note string Yes Note text
CreatedAt datetime No When written. Defaults to now

proposaloption

Parameter Type Required Description
Id int32 Option ID
Name string No Option name. Lines with the same name are grouped
Selected boolean No Option is selected

proposalsummary

Parameter Type Required Description
Id int32 Proposal ID
Service idname Service on the proposal
Date string Proposal date, e.g. 2026-11-10
Status string Current status

proposaltemplate

Parameter Type Required Description
Id int32 Template ID
Name string Template name
IsActive boolean Template is active
Quantity double Default service quantity
ServiceId int32 Service the template is for
ServiceDescription string Service description text
CustomerNote string Note shown to the customer
OrganizationId int32 Your org ID
CreatedAt datetime When created
UpdatedAt datetime When last changed
ProposalTemplateLines ProposalTemplateLine[] Template lines, in order

proposaltemplateline

Parameter Type Required Description
Id int32 Line ID
Option string Option group name
Quantity double Default quantity
Name string Not filled (always empty)
Description string Line description. Defaults to the part's
ProposalTemplateId int32 Template the line belongs to
PartId int32 Part on the line
Order int32 Display order
IsInternal boolean Hidden from customer
IsZeroPrice boolean Priced at zero
QtyIsPercent boolean Quantity is a percent

service

Parameter Type Required Description
Id int32 Service id
Name string Service name
Description string Description
BasePrice decimal Base price
UnitPrice decimal Price per unit
UnitOfMeasure string Unit name, e.g. sq ft
UnitDuration int32 Minutes per unit
Category string Service category name
MinimumCharge decimal Minimum charge
Duration int32 Estimated duration in minutes
SelfSelect boolean Customers can pick it online
Subscription boolean Is a subscription service
Prorating boolean Subscription is prorated
SubscriptionVisits int32 Visits per subscription
SubscriptionInterval int32 Days between visits (subscriptions only)
SeasonStart datetime Season start date
SeasonExpiration datetime Season end date
RecurringDescription string Recurrence in words
AvailableParts Part[] Parts (options) for the service
PartCategories String[] Distinct part category names
PricingBands PricingBand[] Quantity pricing bands
QuantityOverrideCustomFieldId int32 Custom field that sets quantity
UnitPriceOverrideCustomFieldId int32 Custom field that sets unit price
DurationOverrideCustomFieldId int32 Custom field that sets duration
CapacityDemandOverrdieCustomFieldId int32 Custom field that sets capacity demand
MinimumOptions int32 Minimum number of options
MinimumSubtotal decimal Minimum subtotal
QuantityFormula string Formula for quantity
RecordWeatherData boolean Records weather data on visits
CustomProperties dictionary`2 Branding custom fields, by name (branded orgs only)

serviceagent

Parameter Type Required Description
Id int32 Service agent id
Name string Name
Email string Email
MobilePhone string Mobile phone
StartDate string Employment start date (server-formatted text)
EndDate string Employment end date, empty if none
TimeSlots TimeSlot[] Weekly working time slots

servicedocumentlink

Parameter Type Required Description
Date string Invoice or proposal date (yyyy-mm-dd)
Service string Service name
Link string Customer-facing link
Id int32 Invoice or proposal id

smsconsent

Parameter Type Required Description
Account smsconsententry No Consent for account (transactional) texts
Marketing smsconsententry No Consent for marketing texts
StopLockedAt string No When the customer texted STOP, UTC (output only)

smsconsententry

Parameter Type Required Description
Status string Yes opted_in or opted_out (output may be unknown)
Method string Yes, to opt in How consent was captured: web_form, paper, keyword, verbal
CapturedAt string Yes, to opt in When consent was captured, ISO-8601; not in the future
SourceUrl string No Page where consent was captured
Ip string No Consumer's IP address
UserAgent string No Consumer's browser user agent
DisclosureText string Yes, to opt back in after an opt-out Consent wording shown to the consumer
EvidenceUrl string No Link to stored proof of consent
At string No When the current status was set, UTC (output only)
Source string No Where the current status came from (output only)

subscriptiondate

Parameter Type Required Description
Id int32 Date ID
Label string Display label
Date datetime Visit date
Service idname Service for the visit
ServiceId int32 Service ID for the visit
DateIso string Visit date, e.g. 2026-11-10
DateStr string Visit date, e.g. 11/10/2026
DateFriendly string Visit date in friendly text
BasePrice decimal Base price for the visit
UnitPrice decimal Unit price for the visit
SelectedDate string Selected date text
Subtotal decimal Visit subtotal
TaxableSubtotal decimal Taxable part of the subtotal
Duration string Formatted visit duration
InternalNotes string Internal notes
IsExcludeFromProRating boolean Excluded from pro-rating
IsRecurringMaster boolean First visit of a recurring series
IsRecurringShadow boolean Later visit of a recurring series
Lines ProposalDateLine[] Part lines for the visit
AlternateDates DateTime[] Other possible dates

tag

Parameter Type Required Description
Id int32 Yes, or Name Tag id; matched first on input
Name string Yes, or Id Tag name; exact match used if Id doesn't match

task

Parameter Type Required Description
Id int32 Task id
ContactId int32 Customer the task is for, if any
TaskType int32 1 = Task, 2 = Call, 3 = Email
TaskTypeDisplay string Task type name, e.g. Call
Description string What the task is
Note string Task note, e.g. completion note
TaskCategory string Category name
Due datetime Org-local due date and time
Duration int32 Expected length in minutes
AssignedTo string Name of the assigned user
AssignedToUserId int32 Id of the assigned user
CompletedAt datetime When the task was completed; empty if open
CompletedBy string Name of the user who completed it
UpdatedAt datetime When the task last changed
ApiKey string Not used on nested objects
ResultCode int32 Not used on nested objects
Message string Not used on nested objects

timeslot

Parameter Type Required Description
DayOfWeek int32 Day of week number
NameOfDay string Day name
StartMinute int32 Start time, minutes after midnight
Minutes int32 Length in minutes
StartDate string First date the slot applies
EndDate string Last date the slot applies, empty if none
ServiceCategoryName string Service category the slot is for
PostalCodes string Postal codes the slot is limited to, if any
ApiKey string Not used on nested objects
ResultCode int32 Not used on nested objects
Message string Not used on nested objects

upload

Parameter Type Required Description
ContactId int32 Yes Contact to attach the files to
AppointmentId int32 No Also link files to this appointment of the contact (flag)
TaskId int32 No Also link files to this task of the contact (flag)
Note string No Note saved with pictures and documents
TagIds string No Tag ids as a JSON array string, e.g. [12,34]
UploadIds Int32[] Ids of the saved pictures, videos and documents (output)
ApiKey string Not used on nested objects
ResultCode int32 Not used on nested objects
Message string Not used on nested objects

upload

Parameter Type Required Description
ProposalId int32 Yes Proposal to attach files to
Note string No Caption for uploaded images (ignored for documents)
TagIds string No JSON array of tag IDs for images, e.g. [1,2]
UploadIds Int32[] IDs of the pictures/documents created
ApiKey string Not used on nested objects
ResultCode int32 Not used on nested objects
Message string Not used on nested objects

user

Parameter Type Required Description
Id int32 User Id (output)
Email string Yes Email; an existing user with this email is linked instead of created
Name string Yes Full name
Active boolean True if the user is active (output)
ServiceAgentId int32 Linked service agent Id (output)
Role string No Role name in the brand; defaults to the owner role
ApiKey string Not used on nested objects
ResultCode int32 Not used on nested objects
Message string Not used on nested objects