Skip to content

API V4.0

To use the V4.0 API, include the following query parameter with every request: version=4.0

Client Includes

All Client read endpoints support an optional include parameter, which allows you to limit the types of client data returned. The parameter is a comma delimited string containing one or more of the following: Details, People, Contacts, Claims, Polcies, Invoices. When this parameter is set, only the specified properties will be populated on the client response.

If this parameter is omitted, then the default data returned will include Details, People, Contacts, Claims, and Policies. This matches the original V3.0 behavior and does not require any action from partners who wish to continue receiving the same data as before.

Access to Invoices requires additional opt-in from each agency in the HawkSoft Marketplace. If you request data that an agency has not granted access to, then the request will succeed with only the data you have access to. If any requested data has been denied, the response will contain a header with the name "Denied" and a comma delimited list of the include items that were denied.

Example:

text
GET https://integration.hawksoft.app/vendor/agencies/client/1?version=4.0&include=People,Policies

GET Agencies

This endpoint returns the all agencies that have subscribed to a partner's application / service. Once an agency subscribes to and agrees to share data with a third-party application through the HawkSoft License Management Portal, their agency ID will be returned, along with the scopes that each agency has opted to enable.

Request

bash
curl -v https://integration.hawksoft.app/vendor/agencies?version=4.0 -u [user]:[pwd] --basic

Response

txt
An array of one or more agencies subscribed to the vendor

[
    {
        "agencyId": 1,
        "scopes": [ "client-read" ]
    },
    {
        "agencyId": 2,
        "scopes": [ "client-read", "create-log-attachment-task" ]
    },
    {
        "agencyId": 3,
        "scopes": [ "client-read", "create-log-attachment-task", "client-create" ]
    }
]
txt
No agencies are available to the vendor
txt
The provided credentials are invalid

GET Agency Offices

This endpoint returns a list of offices defined for the agency ID.

Request

bash
curl -v https://integration.hawksoft.app/vendor/agency/1/offices?version=4.0 -u [user]:[pwd] --basic

Response

json
Returns an array of one or more Office objects

[
	{
		"OfficeId": 1,
		"OfficeDescription": "",
		"SubAgencyName": "",
		"PrimaryOffice" true,
		"AddressLine1": "",
		"AddressLine2": "",
		"City": "",
		"State": "",
		"Zipcode": ""
	}
]
txt
The provided credentials are invalid
txt
The requested agency is not available to the vendor

GET Changed Clients

Get a list of clients changed since a date. These Client IDs can be used when calling the Get Client or Get Client List endpoints.

Request

bash
curl -v https://integration.hawksoft.app/vendor/agency/[agencyId]/clients?version=4.0&asOf=[timestamp]&deleted=[deleted] -u [user]:[pwd] --basic

URL Parameters

NameTypeOptionalDescription
AgencyIdIntNo

Query Parameters

NameTypeOptionalDescription
AsOfDateTimeYes
OfficeIdIntYes
DeletedBooleanYes

Response

json
Returns an array of client IDs.
[ 1, 2, 3, 4 ]
txt
The provided credentials are invalid
txt
The requested agency is not available to the vendor

GET Client

Request

bash
curl -v https://integration.hawksoft.app/vendor/agency/[agencyId]/client/[clientId]?version=4.0 -u [user]:[pwd] --basic

Response

json
A Client object

{
    "clientNumber": 1,
    ...
}
txt

The client does not exist.

See Client Model Reference for detailed documentation of the client model.

GET Client List

Request

bash
curl -v -x POST https://integration.hawksoft.app/vendor/agency/[agencyId]/clients?version=4.0 -u [user]:[pwd] --basic -d "{ 'clientNumbers': [1, 2]}"

Response

json
An array of Client objects

[
    {
        "clientNumber": 1,
        ...
    },
    {
        "clientNumber": 2,
        ...
    }
]

See Client Model Reference for detailed documentation of the client model.

GET Client Search

Search an agency's clients. Currently the only supported search criteria is Policy Number.

Supports Client Includes

Request

txt
https://integration.hawksoft.app/vendor/agency/[agencyId]/clients/search?version=4.0&policyNumber=POR83741&include=details,policies

URL Parameters

NameTypeOptionalDescription
AgencyIdIntNo

Query Parameters

NameTypeOptionalDescription
PolicyNumberStringNoPolicy number to search for. Exact match only.
IncludeStringYesComma delimited list of items to include in the response

Response

json
An array of Client objects matching the search criteria.

An empty array is returned if no matching clients were found.

[
    {
        "clientNumber": 1,
        ...
    },
    {
        "clientNumber": 2,
        ...
    }
]
json
Bad request. See response body for details.

See Client Model Reference for detailed documentation of the client model.

POST Log Note

Request

Body

NameTypeOptionalDescription
ChannelLogActionNo
NoteStringNo
PolicyIdGuidtrue
RefIdGuidNo
TSDateTimeNo
TaskTaskYes

Task

NameTypeOptionalDescription
AssignedToEmailstringYesRequired if AssignedToRole is "SpecifiedUser"
AssignedToRoleEnumNo"SpecifiedUser", "Producer", "CSR", "Agent1", "Agent2", or "Agent3"
CategoryStringYes
DescriptionStringNo
DueDateDateTimeNo
TitleStringNo

cURL Example

bash
curl -v -X POST https://integration.hawksoft.app/vendor/agency/[agencyId]/client/[clientId]/log?version=4.0 -u [user]:[pwd] --basic -d "{ 'refId': [guid], 'ts': '2026-07-05T17:32:04.232Z', 'policyIndex': 1, 'action': 1, 'description': 'Description', 'body': 'Log note' }"

Response

txt
The log was created successfully.
txt
The request was saved and the log will be created next time the agency is connected to the cloud.
txt
Bad request. See response for details.
txt
The provided credentials are invalid.
txt
The requested agency is not available, or the integration does not have permission to access this endpoint.

POST Attachment

Attach a file to a client. Supported file types include: pdf, jpg/jpeg, mp3, and png. The maximum file size accepted is 5 Mb.

Request

Headers

NameTypeOptionalDescription
ChannelLogActionNo
DescStringNoBase64 encoded string.
FileExtStringNo
FileNameStringNoBase64 encoded string. The name of the file, excluding the file extension.
LogNoteStringNoBase64 encoded string.
PolicyIdGuidYes
RefIdGuidNo
TSDateTimeNo
TaskAssignedToAgentRoleNo
TaskAssignedToEmailstringNo
TaskCategoryStringYesBase64 encoded string.
TaskDescriptionStringNoBase64 encoded string.
TaskDueDateDateTimeNo
TaskTitleStringNoBase64 encoded string.

cURL Example

bash
curl -v -X POST https://integration.hawksoft.app/vendor/agency/[agencyId]/client/[clientId]/attachment?version=4.0 -u [user]:[pwd] --basic -H "RefId: [guid]" -H "TS: [timestamp]" -H "Desc: [string]" -H "LogNote: [string]" -H "FileName: [string]" -H "FileExt: [string]" -H "PolicyId: [guid]" -H "Channel: [int]" -d [data]

Response

txt
The attachment was created successfully.
txt
The request was saved and the attachment will be created next time the agency is connected to the cloud.
txt
Bad request. See response for details.
txt
The provided credentials are invalid.
txt
The requested agency is not available, or the integration does not have permission to access this endpoint.

POST Create Receipts

Record a payment received by a client. A log note will be created and linked to the receipt. An optional task may be created and assigned to an agent for review.

Request

txt
https://integration.hawksoft.app/vendor/agency/[agencyId]/client/[clientId]/receipts?version=4.0

Body

A JSON array of one or more receipts.

Receipt

NameTypeOptionalDescription
ChannelLogActionNoDescribes the source of the interaction that generated the payment.
InvoicesReceiptInvoice[]YesOptionally designate one or more invoices to apply the payment to.
LogNoteStringNoText of the log note that will be associated with the payment
OfficeIdIntYesOptional office the payment should be associated with. If null, the office assigned to the client will be used.
PayMethodPayMethodYesOptionally specify the customer's payment method. If not set, defaults to 'Other'.
PolicyIdGuidYesOptional policy the payment should be associated with.
RefIdGuidNoUnique Id for the reciept.
TSDateTimeNoThe time the payment was received
TaskTaskYesOptionally create a task assigned to an agency user

ReceiptInvoice

NameTypeOptionalDescription
AmountDecimalNoThe amount to apply to this invoice
InvoiceIdGuidNoId of an invoice the payment will be applied to

Task

NameTypeOptionalDescription
AssignedToEmailstringYesRequired if AssignedToRole is "SpecifiedUser"
AssignedToRoleEnumNo"SpecifiedUser", "Producer", "CSR", "Agent1", "Agent2", or "Agent3"
CategoryStringYes
DescriptionStringNo
DueDateDateTimeNo
TitleStringNo

Example

json
[
    {
        "refId": "aa6a4974-133e-4195-ac87-c6ff7f853a65",
        "ts": "2026-07-05T17:32:04.232Z",
        "policyId": null,
        "officeId": null,
        "channel": 29,
        "logNote": "Online payment from insured",
        "task": {
            "title": "Review online payment",
            "description": "Review payment on INV00000112",
            "dueDate": "2026-07-05T17:32:04.232Z",
            "assignedToRole": "CSR"
        },
        "total": 10.50,
        "invoices": [
            {
                "invoiceId": "7fa2d453-7cea-4c87-8990-3934dc62b932",
                "amount": 10.50
            }
        ]
    }
]

Response

json
Returns an array of responses for each item in the request.
[
    {
        "refId": "aa6a4974-133e-4195-ac87-c6ff7f853a65",
        "code": 200,
        "message": null
    }
]
txt
The credentials are invalid
txt
The agency is not subscribed or has not granted access to this feature.

POST Create Client

Create a new client in the specified agency.

This endpoint has a rate limit of 25 requests per second. Requests exceeding this limit will be rejected with a 429 status code.

If BusinessDetail is included, then the client will be marked as a Commercial Customer Type, and IsCommercial will be set to true when reading the created client. Otherwise, the client will be marked as a Personal Customer Type, and IsPersonal will be set to true.

Request

sh
curl -v -X POST {{ theme.apiUrl }}/vendor/agency/[agencyId]/client?version=4.0 -u [user]:[pwd] --basic -d "{ ... }"
NameTypeOptionalDescription
AgencyIdIntNoThe agency in which to create the client.

Body

A JSON ClientCreateRequest object.

ClientCreateRequest

NameTypeOptionalDescription
BusinessDetailClientBusinessDetailYesOptional business details for commercial clients.
ContactsContactCreateRequest[]YesOptional client-level contact information. Maximum of 5 items.
LogLogCreateRequestNoLog note to create with the client.
MailingAddressAddressCreateRequestYesOptional mailing address for the client.
OfficeIdInt16YesOffice to assign the client to. Defaults to the agency default office if not set.
PeoplePersonCreateRequest[]NoUp to 11 people to associate with the client. Exactly one person with MainContactType=First is required. No more than one person with MainContactType=Second is allowed.
PolicyPolicyCreateRequestYesOptional policy shell to create with the client.
SourceStringYesMax length of 14.
StatusClientStatusYesInitial client status. Defaults to Prospect if not set.
TaskTaskCreateRequestYesOptional task to create and assign to an agency user. If using Csr, Producer, or Agent1/2/3 roles, and the agency does not have a default user configured for your chosen role, then the request will fail.

ClientBusinessDetail

NameTypeOptionalDescription
BusinessTypeBusinessTypeNoType of business entity.
CompanyNameStringNoLegal company name. Maximum length: 60.
DBANameStringYesDoing-business-as name. Maximum length: 60.
FeinNumStringYesFederal Employer Identification Number. Maximum length: 9. All characters must be digits (0-9)
LicenseNumStringYesBusiness license number. Maximum length: 30.
NAICSStringYesNorth American Industry Classification System code. Maximum length: 6.
WebsiteStringYesCompany website URL. Maximum length: 128.

AddressCreateRequest

NameTypeOptionalDescription
Address1StringYesFirst line of the street address. Maximum length: 40.
Address2StringYesSecond line of the street address. Maximum length: 40.
CityStringYesCity name. Maximum length: 19.
StateStringYesState or province abbreviation. Must be 2 characters if set.
ZipStringYesPostal or ZIP code. Maximum length: 10.

PersonCreateRequest

NameTypeOptionalDescription
ContactsContactCreateRequest[]YesContact information for this person. Maximum of 5 items.
DateOfBirthDateOnlyYesDate of birth.
DriverLicenseNumberStringYesDriver license number. Maximum length: 25.
FirstNameStringYesPerson's first name. Maximum length: 14.
LastNameStringYesPerson's last name. Maximum length: 24.
MainContactTypeMainContactTypeNoWhich named insured slot this person occupies, if any.

ContactCreateRequest

NameTypeOptionalDescription
TypeContactTypeNoType of contact, such as phone or email.
ValueStringNoContact value, such as a phone number or email address. Maximum length: 128.

PolicyCreateRequest

NameTypeOptionalDescription
ApplicationTypeApplicationTypeYesApplication type for the policy.
EffectiveDateDateOnlyYesPolicy effective date. Must be on or after 1970-01-01.
LOBsString[]YesLines of business to include on the policy. Maximum of 12 items.
PolicyNumberStringYesPolicy number. Maximum length: 25.
StateStringYesPolicy state abbreviation. Must be 2 characters if set.

LogCreateRequest

NameTypeOptionalDescription
ChannelInt32NoChannel describing the source of the interaction.
NoteStringNoText of the log note. Maximum length: 3,000.
PolicyIdGuidYesOptional policy to associate with the log entry.
TSDateTimeNoTimestamp of the log entry.

TaskCreateRequestV2

NameTypeOptionalDescription
AssignedToEmailStringYesEmail of the user to assign the task to. Required when AssignedToRole is SpecifiedUser.
AssignedToRoleAgentRoleNoAgency role to assign the task to.
CategoryStringYesTask category. Maximum length: 50.
DescriptionStringNoTask description. Maximum length: 4,000.
DueDateDateTimeNoDate the task is due.
TitleStringNoTask title. Maximum length: 50.

Response

json
Success. Returns the ClientNumber of the new client, 
which can be used to read the client using the GET Client 
or POST Client List endpoints.

{
    "clientNumber": 123    
}
The request is invalid. See the response body for detailed 
validation error messages.
The agency is either not subscribed, or has not opted into 
the Client Create scope. See the GET Agencies endpoint 
to determine which agencies are subscribed and which features 
each agency has enabled.
You have exceeded the rate limit of 25 requests per second.
Wait 1 second before retrying.

Enumerations

AgentRole

ValueDescription
SpecifiedUser
Producer
CSR
Agent1
Agent2
Agent3

ApplicationType

ValueDescription
Undefined
Agricultural
Commercial
EmployeeBenefits
Health
Life
Other
Personal
SuretyBond
HawkSoft

BusinessType

ValueDescription
None
Corporation
IndividualOrSoleProprietor
SubchapterS
LLC
Partnership
JointVenture
NonProfit
FamilyTrust

ClientStatus

ValueDescription
Active
DeadFile
Prospect
Lead

ContactType

ValueDescription
None
WorkPhone
WorkEmail
CellPhone
HomePhone
HomeEmail
OtherPhone
OtherEmail
MessagePhone
Pager
Fax
SocialMedia
ClientWebsite
OtherWebsite

Log Actions

ValueDescription
1Phone To Insured
2Phone To Carrier
3Phone To Agency Staff
4Phone To 3rd Party
5Phone From Insured
6Phone From Carrier
7Phone From Agency Staff
8Phone From 3rd Party
9Mail To Insured
10Mail To Carrier
11Mail To Agency Staff
12Mail To 3rd Party
13Mail From Insured
14Mail From Carrier
15Mail From Agency Staff
16Mail From 3rd Party
17Walk In To Insured
18Walk In To Carrier
19Walk In To Agency Staff
20Walk In To 3rd Party
21Walk In From Insured
22Walk In From Carrier
23Walk In From Agency Staff
24Walk In From 3rd Party
25Online To Insured
26Online To Carrier
27Online To Agency Staff
28Online To 3rd Party
29Online From Insured
30Online From Carrier
31Online From Agency Staff
32Online From 3rd Party
33Email To Insured
34Email To Carrier
35Email To Agency Staff
36Email To 3rd Party
37Email From Insured
38Email From Carrier
39Email From Agency Staff
40Email From 3rd Party
41Text To Insured
42Text To Carrier
43Text To Agency Staff
44Text To 3rd Party
45Text From Insured
46Text From Carrier
47Text From Agency Staff
48Text From 3rd Party
49Chat To Insured
50Chat To Carrier
51Chat To Agency Staff
52Chat To 3rd Party
53Chat From Insured
54Chat From Carrier
55Chat From Agency Staff
56Chat From 3rd Party

MainContactType

ValueDescription
None
First
Second
Other