Introduction
Welcome to the Liine API! You can use this API to query either all your interaction log data or a subset based on the parameters listed below.
You can view code examples on how to use the API in the dark area to the right, and you can switch the programming language of the examples with the tabs in the top right.
Authentication
POST credentials to authenticate
# This example uses the popular requests library (https://docs.python-requests.org/en/latest/)
import requests
resp = requests.post('https://app.liine.com/call_log/authenticate/', data={
'username': 'test',
'password': 'Test123!'
})
curl -X POST https://app.liine.com/call_log/authenticate/
-H 'Content-Type: application/json'
-d '{"username":"test","password":"Test123!"}'
The above route returns JSON structured like this:
{
"token": "bearer YOUR_SECRET_TOKEN",
"valid_until": "2021-09-24T12:00:32.310Z"
}
This endpoint will return the token for the given credentials.
HTTP Request
POST https://app.liine.com/call_log/authenticate/
JSON Parameters
| Parameter | Description |
|---|---|
| username | The username for your Liine dashboard account. |
| password | The password associated with the given username. |
To authenticate, you must call the authenticate API with your user credentials and obtains a JWT Token.
The interaction logs uses JWT tokens to allow access to the API.
The api expects for the JWT token to be included in all API requests to the server in a header that looks like the following:
Authorization: bearer YOUR_SECRET_TOKEN
Interactions
Get Interactions
import requests
resp = requests.get(
'https://app.liine.com/call_log/interactions/',
headers={'Authorization': 'bearer YOUR_SECRET_TOKEN'},
params={
'customer_id': '<CUSTOMER_ID>',
'marketing_channel': 'Facebook',
'verified_new_lead': True
}
)
curl "https://app.liine.com/call_log/interactions/?customer_id=<CUSTOMER_ID>"
-H "Authorization: bearer YOUR_SECRET_TOKEN"
The above command returns JSON structured like this:
{
"interactions": [
{
"analyze_complete": null,
"customer_id": <CUSTOMER_ID>,
"duration": 58,
"messaging_utilization": null,
"lead_id": "23541524",
"call_id": "cb6d6032d4ad432983670f60c8a998c0",
"interaction_type": "call",
"direction": "inbound",
"phone_number": "19191231234",
"primary_insurance_name": null,
"provider_names": null,
"status": "Complete",
"session_guid": "f2252c04-a23f-4589-9fa1-09675b49948a",
"attribution_session_guid": "7dfe7b49-6c7d-448d-a731-643599e067dd",
"initial_marketing_channel": "Google Organic",
"last_touch_marketing_channel": "Google Organic",
"initial_location": "Malta",
"last_touch_location": "Raleigh",
"initial_division": null,
"last_touch_division": "Plastic Surgery",
"call_type": "New Lead",
"call_complete": null,
"call_status": "Analyzing",
"agent": null,
"agent_id": null,
"agent_location_name": null,
"appointment_location": null,
"appointment_status": null,
"outcome": null,
"booked_later_interaction_id": null,
"reason_not_booked": null,
"intent_level": null,
"initial_keyword": null,
"last_touch_keyword": null,
"initial_landing_url": null,
"last_touch_landing_url": null,
"initial_referrer_url": null,
"last_touch_referrer_url": null,
"initial_utm_source": null,
"last_touch_utm_source": null,
"initial_utm_medium": null,
"last_touch_utm_medium": null,
"initial_utm_campaign": null,
"last_touch_utm_campaign": null,
"initial_utm_content": null,
"last_touch_utm_content": null,
"initial_session_extras": null,
"last_touch_session_extras": null,
"name": null,
"city": null,
"state": null,
"email": null,
"has_audio": true,
"voicemail": null,
"first_time_interaction": false,
"is_analyzed": true,
"is_new": null,
"is_existing_patient": null,
"show_messaging": null,
"revenue": null,
"review_complete": null,
"messaging_skill_1": null,
"messaging_skill_2": null,
"messaging_skill_3": null,
"messaging_skill_4": null,
"messaging_skill_5": null,
"messaging_skill_6": null,
"messaging_skill_7": null,
"tracking_number": null,
"start_time": "2021-05-27T04:08:51Z",
"id": 23,
"manually_created": null,
"is_spam_likely": true,
"spam_likely_reason": "No IVR selection was made",
"start_time_tz": "2021-05-27T09:08:51Z",
},
],
"limit": 100,
"count": 1,
"num_pages": 1,
"pagination_timestamp": "2021-05-27T04:02:49Z"
}
The interactions get/filter route. Contact support for your CUSTOMER_ID
HTTP Request
GET https://app.liine.com/call_log/interactions?customer_id=<CUSTOMER_ID>
Query Parameters
For the sake of clarity, we'll split our query parameters into the following categories:
General Parameters
| Parameter | Type | Description |
|---|---|---|
| customer_id | number | Required unless customer_ids specified. This is the internal liine customer id of your user. Contact support for your CUSTOMER_ID. |
| customer_ids | list(number) | Required if customer_id is not specified. This is the same as the above except it accepts list format in case you manage multiple customers. |
| start_date | datestring | If specified, will limit the query to interactions that started at or after the given start_date. Format must be YYYY-MM-DD. |
| end_date | datestring | If specified, will limit the query to interactions that started at or before the given end_date. Format must be YYYY-MM-DD. |
| updated_date | datestring | If specified, will limit the query to interactions that were updated at or after the given updated_date. Format must be YYYY-MM-DD. |
| limit | number | Used for pagination, indicates the number of interactions to get per request. Defaults to 100. Maximum value is 1000; any value above this will be capped to 1000. |
| analytics_methodology | string | The methodology to use when returning interactions. Defaults to null which returns all interactions that match other filters. Alternative value is conversion which returns data from a leads-basis perspective. |
| pagination_timestamp | datetimestring | Used for pagination, if specified will return the next page of interactions which are older than the pagination_timestamp parameter. Format must be YYYY-MM-DDTHH:MM:SSZ |
| duration_min | number | If specified, will limit the query to interactions that have a duration above the given threshold. |
| duration_max | number | If specified, will limit the query to interactions that have a duration below the given threshold. |
| messaging_utilization_min | number | If specified, will only return interactions which meet the minimum messaging utilization %. Your customer must have Messaging enabled for this parameter to be applicable. |
| messaging_utilization_max | number | If specified, will only return return interactions below the given messaging utilization %. Your customer must have Messaging enabled for this parameter to be applicable. |
| first_time_interaction | boolean | If specified, will filter either first time (if true) or non first time (if false) interactions. Otherwise will return all. |
| verified_new_lead | boolean | If specified, will filter either verified new leads (if true) or non-verified new leads (if false) interactions. Otherwise will return all. |
| type | list(string) | Type of interactions to return. Valid values are: 'call', 'form', 'online_booking', 'ehr_pms_entry'. When the form interaction type is used in combination with analytics_methodology=conversion, it will return form interactions or interactions that have a related form submission. |
| intent_level | list(string) | Intent levels of the call (options are: '3rd Party', 'Not 3rd Party'). Values will be combined with 'or' logic. |
| booking_opportunities | boolean | Returns interactions which were opportunities for a new appointment to be booked by a new or an existing patient (doesn't include rescheduling). |
| agent | list(integer) | An list of agent IDs to filter for interactions handled by one of the given agents. Special values which can be included in the list are null which finds interactions without an agent and inactive which returns interactions handled by inactive agents. Is mutually exclusive with agents (use either agent or agents but not both). |
| agents | string | Same as agent except this is a comma-separated string representing a list of agent IDs. Is mutually exclusive with agent (use either agent or agents but not both). |
| outcome | list(string) | The outcomes to filter by (options are: 'Booked', 'Not Booked') |
| direction | list(string) | Direction of interaction (inbound or outbound). * |
| status | list(string) | Status of the interaction. Status can be one of: "Answered", "Not Answered", "Error", "Busy" or "In Progress". * |
| outcome_rnb | list(string) | Filter by specific reason not booked outcomes. * |
| tracking_number | list(string) | The tracking number used for the interaction. * |
| call_type | list(string) | The call categorization types to include, options are: "New Lead Follow-Ups", "New Lead (Follow-Up)", "New Lead (First Form Follow-Up)", "New Lead", "Not A New Lead", "Voicemail", "Not Analyzed", "Existing Patient". |
| reason_not_booked | list(string) | The reasons calls were not booked classification types to include. Example: "Price Objection", "Caller Procrastination", "Other" (note: these are customer specific). Multiple values will be combined with 'or' logic. * |
| search | string | The search is applied to name, tracking number and receiving number (case insensitive). |
| list | string | Can be used to filter certain lead type. Options are: "first_time_interactions", "verified_new". |
| include_is_spam_likely | boolean | If this param is present at all (regardless of its value), results will include interactions which are probably spam (e.g. robocalls). |
| lead_id | string | Filters for only interactions with the given lead id. |
| lead_ids | list(string) | Filters for only interactions with one of the given lead ids. |
| call_ids | list(string) | Filters for only interactions with one of the given call ids. |
| business_hours | boolean | If true, this will only return interactions that occurred during business hours. Business hours are customer specific. Defaults to false. |
Metadata Parameters
| Parameter | Type | Description |
|---|---|---|
| either_division | list(string) | Filter for interactions where the initial or last touch division is the division specified in this parameter. * † |
| either_keyword | list(string) | Filter for interactions where the initial or last touch keyword is the keyword specified in this parameter. * |
| either_landing_url_search | list(string) | Will return interactions where the provided strings match an interaction's first or last touch landing url (case insensitive) (either_landing_url_search_type dictates whether multiple values are combined using 'and' or 'or' logic). |
| either_landing_url_search_type | string | Dictates how to combine multiple either_landing_url_search strings - options are and and or. Defaults to and. |
| either_location | list(string) | Filter for interactions where the initial or last touch location is the location specified in this parameter. * |
| either_marketing_channel | list(string) | Filter for interactions where the initial or last touch marketing channel is the channel specified in this parameter. * |
| either_referrer_url_search | list(string) | Will return interactions where the provided strings match an interaction's first or last touch referrer url (case insensitive) (either_referrer_url_search_type dictates whether multiple values are combined using 'and' or 'or' logic). |
| either_referrer_url_search_type | string | Dictates how to combine multiple either_referrer_url_search strings - options are and and or. Defaults to and. |
| either_utm_campaign | list(string) | Filter for interactions where the initial or last touch UTM campaign is the campaign specified by this parameter (case sensitive). * |
| either_utm_content | list(string) | Filter for interactions where the initial or last touch UTM content is the content specified by this parameter (case sensitive). * |
| either_utm_medium | list(string) | Filter for interactions where the initial or last touch UTM medium is the medium specified by this parameter (case sensitive). * |
| either_utm_source | list(string) | Filter for interactions where the initial or last touch UTM source is the source specified by this parameter (case sensitive). * |
| initial_division | list(string) | Filter for interactions where the initial division is the division specified in this parameter. * † |
| initial_keyword | list(string) | Filter for interactions where the initial keyword is the keyword specified in this parameter (case sensitive). * |
| initial_landing_url_search | list(string) | Will return interactions where the provided strings match an interaction's initial landing url (case insensitive) (initial_landing_url_search dictates whether multiple values are combined using 'and' or 'or' logic). |
| initial_landing_url_search_type | string | Dictates how to combine multiple initial_landing_url_search strings - options are and and or. Defaults to and. |
| initial_location | list(string) | Filter for interactions where the initial location is the location specified in this parameter. * |
| initial_marketing_channel | list(string) | Filter for interactions where the initial marketing channel is the channel specified in this parameter. * |
| initial_referrer_url_search | list(string) | Will return interactions where the provided strings match an interaction's initial referrer url (case insensitive) (initial_referrer_url_search_type dictates whether multiple values are combined using 'and' or 'or' logic). |
| initial_referrer_url_search_type | string | Dictates how to combine multiple initial_referrer_url_search strings - options are and and or. Defaults to and. |
| initial_utm_campaign | list(string) | Filter for interactions where the initial UTM campaign is the campaign specified by this parameter (case sensitive). * |
| initial_utm_content | list(string) | Filter for interactions where the initial UTM content is the content specified by this parameter (case sensitive). * |
| initial_utm_medium | list(string) | Filter for interactions where the initial UTM medium is the medium specified by this parameter (case sensitive). * |
| initial_utm_source | list(string) | Filter for interactions where the initial UTM source is the source specified by this parameter (case sensitive). * |
| last_touch_division | list(string) | Filter for interactions where the last touch division is the division specified in this parameter. * † |
| last_touch_keyword | list(string) | Filter for interactions where the last touch keyword is the keyword specified in this parameter. * |
| last_touch_landing_url_search | list(string) | Will return interactions where the provided strings match an interaction's last touch landing url (case insensitive) (last_touch_landing_url_search_type dictates whether multiple values are combined using 'and' or 'or' logic). |
| last_touch_landing_url_search_type | string | Dictates how to combine multiple last_touch_landing_url_search strings - options are and and or. Defaults to and. |
| last_touch_location | list(string) | Filter for interactions where the last touch location is the location specified in this parameter. * |
| last_touch_marketing_channel | list(string) | Filter for interactions where the last touch marketing channel is the channel specified in this parameter. * |
| last_touch_referrer_url_search | list(string) | Will return interactions where the provided strings match an interaction's last touch referrer url (case insensitive) (last_touch_referrer_url_search_type dictates whether multiple values are combined using 'and' or 'or' logic). |
| last_touch_referrer_url_search_type | string | Dictates how to combine multiple last_touch_referrer_url_search strings - options are and and or. Defaults to and. |
| last_touch_utm_campaign | list(string) | Filter for interactions where the last touch UTM campaign is the campaign specified by this parameter (case sensitive). * |
| last_touch_utm_content | list(string) | Filter for interactions where the last touch UTM content is the content specified by this parameter (case sensitive). * |
| last_touch_utm_medium | list(string) | Filter for interactions where the last touch UTM medium is the medium specified by this parameter (case sensitive). * |
| last_touch_utm_source | list(string) | Filter for interactions where the last touch UTM source is the source specified by this parameter (case sensitive). * |
EHR/PMS Parameters
| Parameter | Type | Description |
|---|---|---|
| revenue_min | number | Filter for interactions with an appointment that has revenue greater than or equal to the given threshold (in US Dollars). |
| revenue_max | number | Filter for interactions with an appointment that has revenue less than or equal to the given threshold (in US Dollars). |
| appointment_status | list(string) | Filter for interactions where the appointment status matches one of the provided values. Possible values include: Attended, Canceled / No Show (includes "Assumed No Show"), Future Dated, Assumed No Show, or Unknown. |
| ehr_pms_patient_id_search | list(string) | Filter for interactions where the EHR/PMS patient ID matches one of the provided values (case insensitive). |
| appointment_location | list(string) | Filter for interactions where the appointment's scheduled practice location matches one of the provided values (case sensitive). |
| primary_insurance_name | list(string) | Filter for interactions where the appointment's primary insurance name matches one of the provided values (case sensitive). |
| provider_names | list(string) | Filter for interactions where any of the appointment's provider names match one of the provided values (case sensitive). |
Pagination
import requests
headers = {'Authorization': 'bearer YOUR_SECRET_TOKEN'}
params = {'customer_id': '<CUSTOMER_ID>', 'limit': 200}
all_interactions = []
while True:
resp = requests.get(
'https://app.liine.com/call_log/interactions/',
headers=headers,
params=params,
)
data = resp.json()
page = data['interactions']
all_interactions.extend(page)
# Stop when there are no more pages
if len(page) < params['limit']:
break
# Use the pagination_timestamp as the cursor
params['pagination_timestamp'] = data['pagination_timestamp']
# First request — no cursor needed
curl "https://app.liine.com/call_log/interactions/?customer_id=<CUSTOMER_ID>&limit=200" \
-H "Authorization: bearer YOUR_SECRET_TOKEN"
# Subsequent requests — pass the pagination_timestamp from the previous response
curl "https://app.liine.com/call_log/interactions/?customer_id=<CUSTOMER_ID>&limit=200&pagination_timestamp=2021-05-27T04:02:49Z" \
-H "Authorization: bearer YOUR_SECRET_TOKEN"
This API uses timestamp-based cursor pagination. Results are ordered by start_time descending (newest first), and you page through them by passing the pagination_timestamp from the previous response as a query parameter on the next request.
How it works:
- Make your first request with just
customer_idand an optionallimit(defaults to 100, max 1000). - The response includes a
pagination_timestampfield — this is thestart_timeof the last (oldest) interaction on the current page. - To fetch the next page, pass the
pagination_timestampfrom the current page as thepagination_timestampquery parameter. This returns interactions older than that timestamp. - Repeat until the number of interactions returned is less than your
limit, which indicates you have reached the last page.
Response
Response Structure
The response from the interactions endpoint contains the following top-level fields:
| Field | Type | Description |
|---|---|---|
| interactions | list | A list of interactions returned that match the current filter (see below for the list of fields returned for each interaction). |
| count | number | The total number of interactions that match the current filter. |
| limit | number | The maximum number of interactions that are returned per page (matches the request's limit parameter). |
| num_pages | number | The total pages of interactions returned. |
| pagination_timestamp | string (format: YYYY-MM-DDTHH:MM:SSZ) | The timestamp of the first interaction in the current page. |
Interaction Fields
Each interaction object in the interactions list can contain the following fields:
| Field | Type | Description |
|---|---|---|
| analyze_complete | boolean | Indicates whether call analysis is complete. This value is null for any call interactions with an "In Progress" status. |
| customer_id | number | The internal Liine ID of the customer you are viewing. |
| duration | number | Duration of the call interaction in seconds. This only populates for interactions of type "call". |
| messaging_utilization | number | The total messaging utilization percentage (0-100) for call interactions. This only populates for practices with messaging enabled and shows null for OBS, manual update, and form interactions. |
| lead_id | string | The unique identifier of the lead associated with this interaction. Interactions for new leads have a unique lead_id while interactions for existing patients will share a lead_id with earlier interactions from the same patient. |
| call_id | string | Unique ID of the interaction (while this field is labeled "call_id" it will populate for all interaction types). |
| interaction_type | string | Type of interaction. Possible values include: "call", "form", "online_booking" or "ehr_pms_entry". Manual updates are returned with an interaction_type of "call". |
| direction | string | Direction of interaction. Possible values include: "inbound" (initiated by lead), "outbound" (initiated by agent), null. Manual updates are returned with a direction of "outbound" as they are considered outbound calls. Form submissions, online bookings and EHR/PMS entries are returned with a direction of "inbound". |
| phone_number | string | Phone number of the lead with country code. "Unknown" is returned for interactions with invalid phone numbers. |
| status | string | Status of a call interaction. Possible values include: "Connected", "Not Connected", "Error", "Busy", or "In Progress". |
| session_guid | string | The session ID assigned to a lead when visiting a page with the Liine SDK. Used to track internet activity and assign marketing attribution to the lead. |
| attribution_session_guid | string | Legacy session identifier used for attribution purposes. |
| initial_marketing_channel | string | Marketing channel present in the first interaction metadata for the lead. |
| initial_location | string | Location present in the first interaction metadata for the lead. |
| initial_division | string | Division (a.k.a treatment type) present in the first interaction metadata for the lead. Will be null if "treatment type" or "division" is disabled in the Liine configuration of your account. |
| initial_keyword | string | Keyword present in the first interaction metadata of the lead. |
| initial_landing_url | string | Landing URL present in the first interaction metadata for the lead. |
| initial_referrer_url | string | Referrer URL present in the first interaction metadata for the lead. |
| initial_utm_source | string | UTM source parameter present in the first interaction metadata for the lead. |
| initial_utm_medium | string | UTM medium parameter present in the first interaction metadata for the lead. |
| initial_utm_campaign | string | UTM campaign parameter present in the first interaction metadata for the lead. |
| initial_utm_content | string | UTM content parameter present in the first interaction metadata for the lead. |
| initial_session_extras | object | Additional metadata present in the first interaction metadata for the lead. |
| last_touch_marketing_channel | string | Marketing channel present in the newest interaction metadata for the lead. |
| last_touch_location | string | Location present in the newest interaction metadata for the lead. |
| last_touch_division | string | Division (a.k.a treatment type) present in the newest interaction metadata for the lead. Will be null if "treatment type" or "division" is disabled in the Liine configuration of your account. |
| last_touch_keyword | string | Keyword present in the newest interaction metadata of the lead. |
| last_touch_landing_url | string | Landing URL present in the newest interaction metadata for the lead. |
| last_touch_referrer_url | string | Referrer URL present in the newest interaction metadata for the lead. |
| last_touch_utm_source | string | UTM source parameter present in the newest interaction metadata for the lead. |
| last_touch_utm_medium | string | UTM medium parameter present in the newest interaction metadata for the lead. |
| last_touch_utm_campaign | string | UTM campaign parameter present in the newest interaction metadata for the lead. |
| last_touch_utm_content | string | UTM content parameter present in the newest interaction metadata for the lead. |
| last_touch_session_extras | object | Additional metadata present in the newest interaction for the lead. |
| call_type | string | Categorization of the interaction. Possible values include: "New Lead", "New Lead (Follow-Up)", "New Lead (First Form Follow-Up)", "Not A New Lead Call", "Not A New Lead Form", "Not A New Lead Online Booking", "Not A New Lead EHR/PMS Entry", "Voicemail", or "Existing Patient / Previously Booked". |
| call_complete | boolean | Indicates if the call is completed. |
| call_status | string | Status of the call. Possible values include: "Connected", "Not Connected", "Busy", "In Progress", or "Analyzing". |
| agent | string | Name of the agent who contacted the lead. Null if Staff Performance is disabled in the Liine configuration of your account. |
| agent_id | number | The internal Liine ID of the agent who reached the lead. Null if interaction was not reached by an agent or if Staff Performance is disabled in the Liine configuration of your account. |
| agent_location_name | string | Agent name with the interaction's last touch location. Null if interaction was not reached by an agent or if Staff Performance is disabled in the Liine configuration of your account. |
| outcome | string | Outcome of the interaction. Possible values include: "Booked", "Not Booked", or "Booked Later". |
| booked_later_interaction_id | number | Internal Liine ID of a later interaction where a booking occurred, if applicable. |
| reason_not_booked | string | Reason why the interaction did not result in a booking (e.g., "Price Objection", "Caller Procrastination"). Null if "Reasons Not Booked" is disabled in the Liine configuration of your account. |
| is_booked_later | boolean | True for interactions that have a booked outcome in a later interaction. |
| intent_level | string | Intent level of a call. Possible values include: "3rd Party" (call made on behalf of someone else) or "Not 3rd Party" (call made for the lead itself). May be "UNDECIDED" if the lead was not ready to book. |
| name | string | The name of the lead in a form/online booking submission or the caller ID of a call interaction. For EHR/PMS entries, the name comes from the original interaction that matched to the patient in the EHR/PMS. |
| city | string | Lead's city, if available. |
| state | string | Lead's state, if available. |
| string | Lead's email address, if available. | |
| has_audio | boolean | True for calls that have an audio recording. |
| voicemail | boolean | True if the interaction is a voicemail, false otherwise. |
| first_time_interaction | boolean | True for the first interaction in a lead's journey, false for subsequent interactions. |
| is_analyzed | boolean | Indicates if the call interaction has been analyzed. |
| is_new | boolean | True for new leads, false for existing patients. |
| is_existing_patient | boolean | True for interactions for existing patients. |
| show_messaging | boolean | For practices with messaging enabled in their Liine account configuration, true when messaging utilization data is present for new lead calls being scored. |
| review_complete | boolean | Indicates if a call review is complete. |
| messaging_skill_1 | boolean | For practices with messaging enabled in their Liine account configuration, true if the call is scored with skill 1. |
| messaging_skill_2 | boolean | For practices with messaging enabled in their Liine account configuration, true if the call is scored with skill 2. |
| messaging_skill_3 | boolean | For practices with messaging enabled in their Liine account configuration, true if the call is scored with skill 3. |
| messaging_skill_4 | boolean | For practices with messaging enabled in their Liine account configuration, true if the call is scored with skill 4. |
| messaging_skill_5 | boolean | For practices with messaging enabled in their Liine account configuration, true if the call is scored with skill 5. |
| messaging_skill_6 | boolean | For practices with messaging enabled in their Liine account configuration, true if the call is scored with skill 6. |
| messaging_skill_7 | boolean | For practices with messaging enabled in their Liine account configuration, true if the call is scored with skill 7. |
| tracking_number | string | The Liine-specific phone number used for the interaction to capture data and call recordings. |
| start_time | string (format: YYYY-MM-DDTHH:MM:SSZ) | Timestamp when the call or form submission occurred, converted to the call or form settings' timezone. |
| start_time_tz | string (format: YYYY-MM-DDTHH:MM:SSZ) | Timestamp when the call or form submission occurred, in UTC. |
| updated_at | string (format: YYYY-MM-DDTHH:MM:SS.ffffffZ) | The date and time when the interaction was last updated in UTC. |
| id | number | Internal Liine ID of the interaction. |
| manually_created | boolean | True for manually created leads, false for other interaction types. |
| helper_cell | boolean | True for the operative interaction (the key "booked" interaction) in a lead journey. |
| google_analytics_client_id | string | Legacy Google Analytics client ID associated with the interaction, if available. |
| related_form_submission_id | number | Internal Liine ID of a form related to the interaction, if applicable. |
| form_submission_id | number | Internal Liine ID of the form submission, if applicable. |
| is_spam_likely | boolean | True when a call interaction is likely spam (e.g. robocalls). |
| spam_likely_reason | string | The reason the system believes the call interaction is spam, such as "Not enough caller audio" or "No IVR selection was made". |
| salient_interaction | string | For forms, the call_id of the "operative" or "most important" interaction related to the form is returned. |
| sara_lead_id_reason | string | When we determine a lead_id should be updated based on an EHR/PMS patient match, this field returns the reason for this update. |
| ehr_pms_patient_id | string | The patient's ID within the EHR/PMS system. |
| primary_insurance_name | string | The name of the patient's primary insurance carrier. |
| provider_names | list(string) | The list of providers associated with the appointment. |
| appointment_location | string | The name of the practice location where the appointment is scheduled. |
| appointment_status | string | The current status of the appointment: 'Attended', 'Canceled / No Show', 'Future Dated', 'Assumed No Show', or 'Unknown'. |
| revenue | number | The revenue value from the appointment, in US dollars. If available, this is adjusted production (gross production plus adjustments minus insurance write-offs); otherwise, it reflects gross production (charges prior to any insurance adjustments or write-offs). |
* This endpoint accepts a special value null that will include results where the field referenced by the parameter is not set.
† "Division" is synonymous with "Treatment Type" in the context of this API.
Errors
The Interaction Log API uses the following error codes:
| Error Code | Meaning |
|---|---|
| 400 | Bad Request -- Your request is invalid. Usually additional information is provided in the response. |
| 401 | Unauthorized -- Your JWT token is either wrong or expired. |
| 403 | Forbidden -- You are not allowed to access the resource. |
| 404 | Not Found -- The specified resource could not be found. |
| 405 | Method Not Allowed -- You tried to access a resource with an invalid method. |
| 406 | Not Acceptable -- You requested a format that isn't json. |
| 500 | Internal Server Error -- We had a problem with our server. Try again later. |
| 503 | Service Unavailable -- We're temporarily offline for maintenance. Please try again later. |