REST API - Saving Records (General)
Data is transmitted through the REST API using POST requests and does not have a distiction between POST and PUTs to maintain simplicity. To correlate records, populate the $.data.correlationId field with a key value from your system. When this field is populated, a system lookup is made to determine if this transaction is a record to be created or a record to be merged & updated.
The URL format to use is as follows, replacing {data-type} with the specific type of data you are saving (e.g., Contacts, Companies):
https://your-instance.crm.eventlyte.com/api/records/{data-type}
To ensure that the maximum amount of data can be received, fields that are POSTed in the body but are not yet defined within EventLyte CRM, are sent to a holding area. The recommendation portal in CRM will then suggest new fields to be added and these values will then be available to users to be viewed/updated.
Important Points
EventLyte CRM is dynamic in nature, meaning that fields can be defined and customised per instance. This means that there is no strict set of fields apart from the predefined list of fields that are available when EventLyte is configured.
If a partial record is sent, then the values that were not sent are retained. This means that the correlationId and 1 field could be sent, with EventLyte merging the record. This reduces the complexity of having to first fetch the record, merge, then POST again.
If a value needs to be set to null, send the field with a value of null to erase it.
All date only fields (calendar fields) follow the format YYYY-MM-dd (e.g. 2025-12-25)
All dates with time (calendar + time fields) are ISO 8601 at the applicable timezone with the format YYYY-MM-dd’T’HH:mm:ssXXX (e.g. 20251225T15:14:13+'00:00')
All number fields support both whole numbers and decimals to 6 places.
Images can be sent as base64 encoded strings within the request body.
The request body is currently limited to 20MB.
Extra high-quality images that are base64 represented may be compressed (if required) to reduce excessive data storage.
If null values need to be sent to erase data within fields, add ‘allowNullValues=true’ to the URL query string
Examples
HTTP Request
In the example given, it:
Uses an Authorization header for authentication
Sends the core key/values in the $.data JSONPath object
Has the photo field populated as base64
Sends fields & values for the event with the acronym TEST24
curl --location 'https://localhost/api/records/contacts' \
--header 'Content-Type: application/json' \
--header 'Authorization: ••••••' \
--data '{
"data": {
"fullName": "Sally Jones",
"correlationId": "INF000001",
"title": "Director",
"contactType": "Visitor",
"dateOfBirth": "1982-01-02T00:00:00+00:00",
"photo": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAAXNSR0IArs4c6QAAAHRJREFUGFcBaQCW/wFRH4b/0t6ZAATPiACsDRIA0O4bAAGU8Sr/SfJXAD+PBgCH64wAwEd+AAHnhXr/FB/6ABWUpQAqlRgAMx9SAAEbg7r/p+QZAGZ33QDmUEcArR/9AAFjtA3/QjgJABNcHgDQwxYAs5KeAH1EJ292KQF7AAAAAElFTkSuQmCC"
}
}'
The acronym for the event can be found within the Event Details screen of EventLyte CRM for the event that you are integrating with. Some fields are applicable only to some events that are related to a record, and not necessarily to the main record.
HTTP Response
{
"data": {
"id": "c5ade8e3-8b6a-432f-84c6-a1ac8b5c8197",
"fullName": "Sally Jones",
"cardNumber": "6698674863",
"correlationId": "INF000001",
"tradeBuyerBadgeSuffix": null,
"dateOfBirth": "1970-01-01T10:00:00+00:00",
"idNumber": null,
"photo": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAAXNSR0IArs4c6QAAAHRJREFUGFcBaQCW/wFRH4b/0t6ZAATPiACsDRIA0O4bAAGU8Sr/SfJXAD+PBgCH64wAwEd+AAHnhXr/FB/6ABWUpQAqlRgAMx9SAAEbg7r/p+QZAGZ33QDmUEcArR/9AAFjtA3/QjgJABNcHgDQwxYAs5KeAH1EJ292KQF7AAAAAElFTkSuQmCC",
"cardExpiryDate": "1970-01-01T10:00:00+00:00",
"country": "Australia",
"email": null,
"companyName": null,
"businessCardSide1": null,
"businessCardSide2": null,
"identification": null,
"contactType": "Visitor"
}
}