---
title: "Field reference | Trellus Call Data API"
description: "All 150 selectable Trellus Call Data API fields and 17 documented array members, with types, definitions and enum values. Search by name or meaning."
source: "https://www.trellus.ai/developers/api/fields"
note: "Text-only copy of the page for AI assistants and agents. Link to the source address, not this file."
site_summary: "https://www.trellus.ai/llms.txt"
---

# Field reference

150 selectable fields and 17 array members, with types and enum values.

## Using field paths

150 selectable fields and 17 documented array members, with types, definitions and enum values. These are reporting paths, not arbitrary CRM property names. List paths use snake_case; single-session JSON uses camelCase.

Member paths written with `.[].` explain the contents of an object array. They are not literal query paths: select the parent array or use `.[0].` / `.[*].`. Recognized enum columns and projections return names; values inside whole object arrays may remain numeric. `user_log.source` returns a numeric code and requires numeric filter values.

The most used paths are listed under [common fields](https://www.trellus.ai/developers/api/responses#common-fields).

167 documented fields and members

## Call identity and timing

| Field / type | Definition and values |
| --- | --- |
| `session_id` string | Unique session identifier. Use the exact returned string in the x-session-id header for detail or session_id header for audio. |
| `team_id` string | Team owning this session; selecting a team does not grant permission to read it. |
| `started_at` uint32 | Session start as Unix seconds. List/metric request start and end instead use Unix microseconds. |
| `conversation_type` enum | Kind of conversation; CONVERSATION_TYPE_CALL (1) identifies calls. `CONVERSATION_TYPE_UNKNOWN = 0`; `CONVERSATION_TYPE_CALL = 1`; `CONVERSATION_TYPE_MESSAGING = 2`; `CONVERSATION_TYPE_CHAT = 3` |
| `customer_address` string | Customer address; a phone number for phone calls. There is no phone alias. |
| `agent_address` string | Agent-side address associated with the session; not a user identifier. |
| `address_type` enum | Address category, such as phone, email or web. `ADDRESS_TYPE_UNKNOWN = 0`; `ADDRESS_TYPE_PHONE = 1`; `ADDRESS_TYPE_EMAIL = 2`; `ADDRESS_TYPE_WEB = 3`; `ADDRESS_TYPE_AGENT = 4` |
| `resource_id` string | Resource/user associated with this session. For rep reports, resolve against /visible users[].user_id. |
| `provisioning_team_id` string | Provisioning/partner team identifier, when present; not the team_id to assume for report access. |
| `is_provisional` bool | True while the stored session snapshot is provisional rather than finalized. |
| `customer_joined` bool | Whether the customer channel joined. This can include automated answering; it does not prove a human conversation. |
| `customer_joined_at` float | Customer join offset in seconds from session start; zero can be unset. |
| `agent_joined` bool | Whether an agent connection joined, including a user, voice bot or bridged number. Not a human-only answer flag. |
| `agent_joined_at` float | Legacy aggregate agent join offset in seconds; may remain unset. Prefer agents[].joined_at for participant timing. |
| `duration` float | Total session duration in seconds, including ringing/queue time. Use dial_metric.live_duration for the live portion. |
| `customer_words` int32 | Backend customer word-count statistic for eligible turns; approximate, not an exact transcript token count. |
| `agent_words` int32 | Backend agent word-count statistic for eligible turns; approximate, not an exact transcript token count. |
| `end_reason` enum | Recorded reason the session ended; unknown can mean it was not populated. `END_REASON_UNKNOWN = 0`; `END_REASON_DISCONNECTED = 1`; `END_REASON_IDLE = 2`; `END_REASON_EXPIRED = 3`; `END_REASON_CUSTOMER_NOT_JOINED = 10`; `END_REASON_CUSTOMER_LEFT = 11`; `END_REASON_USER_BRIDGE_FAILURE = 20`; `END_REASON_BOT_DECISION = 21`; `END_REASON_ENDPOINT = 22`; `END_REASON_HANGUP_INSTRUCTION = 23`; `END_REASON_AGENTS_NOT_JOINED = 24`; `END_REASON_AGENTS_LEFT = 25` |
| `customer_turn_duration` float | Sum of eligible customer transcript-turn durations in seconds. Outbound dial turns before the live portion are excluded. |
| `agent_turn_duration` float | Sum of eligible agent transcript-turn durations in seconds. Outbound dial turns before the live portion are excluded. |

## Participants

| Field / type | Definition and values |
| --- | --- |
| `agents` object[] | Joined agent connections; may include users, bots and numbers. See member definitions below. |
| `agents.[].agent_id` string | Identifier of this connected participant; interpret together with agent_type rather than assuming every ID is a rep user ID. |
| `agents.[].agent_type` enum | Participant kind (user, voice bot or number, among the schema enum values). `AGENT_TYPE_UNKNOWN = 0`; `AGENT_TYPE_USER = 1`; `AGENT_TYPE_NUMBER = 2`; `AGENT_TYPE_VOICE_BOT = 3` |
| `agents.[].joined_at` float | Participant join offset in seconds from session start. |
| `agents.[].left_at` float | Participant leave offset in seconds from session start; session end is used if no earlier leave time is recorded. |

## Recording and retention

| Field / type | Definition and values |
| --- | --- |
| `privacy.customer_recorded` bool | Customer audio recording policy flag; does not guarantee a retained file is currently downloadable. |
| `privacy.agent_recorded` bool | Agent audio recording policy flag; does not guarantee a retained file is currently downloadable. |
| `privacy.customer_transcript_persisted` bool | Whether customer transcript persistence is permitted. |
| `privacy.agent_transcript_persisted` bool | Whether agent transcript persistence is permitted. |
| `privacy.customer_transcribed` bool | Whether customer streaming transcription is enabled. |
| `privacy.agent_transcribed` bool | Whether agent streaming transcription is enabled. |
| `privacy.is_zdr` bool | Zero data retention mode; persisted transcript content is suppressed and cost data may remain. |
| `privacy.transcribe_may_log` bool | Whether transcription logging is permitted by the account policy. Does not indicate recording availability. |
| `audio_files` object[] | Stored recording-file metadata, not playable URLs. Request temporary download links from /get-audio-links. |
| `audio_files.[].uploaded_key` string | Recording reference, not a download URL. Use /get-audio-links to request temporary audio download URLs. |
| `audio_files.[].audio_file_type` enum | Recording channel/file category. `AUDIO_FILE_TYPE_UNKNOWN = 0`; `AUDIO_FILE_TYPE_CUSTOMER = 1`; `AUDIO_FILE_TYPE_AGENT = 2`; `AUDIO_FILE_TYPE_COMMINGLED = 3` |
| `audio_files.[].start` float | Recording start offset in seconds from session start. |

## Transcripts and audio timing

| Field / type | Definition and values |
| --- | --- |
| `word_data.starts` float[] | Word start offsets in seconds from session start; aligned with ends, words and is_customers. |
| `word_data.ends` float[] | Word end offsets in seconds from session start; aligned with starts, words and is_customers. |
| `word_data.words` string[] | Individual recognized words. /session JSON intentionally clears wordData; use turn_data for a transcript. |
| `word_data.is_customers` bool[] | Word speakers: true = customer, false = agent; aligned with words. |
| `word_data.known_ats` float[] | Offsets in seconds from session origin when words became known to the live processor; diagnostic latency data, not wall-clock timestamps. |
| `sound_data.tone_starts` float[] | Detected tone start offsets in seconds from session start; pair with tone_ends by index. |
| `sound_data.tone_ends` float[] | Detected tone end offsets in seconds from session start; pair with tone_starts by index. |
| `sound_data.music_starts` float[] | Detected music start offsets in seconds from session start; pair with music_ends by index. |
| `sound_data.music_ends` float[] | Detected music end offsets in seconds from session start; pair with music_starts by index. |
| `turn_data.starts` float[] | Utterance start offsets in seconds from session start; aligned by index with ends, texts and is_customers. |
| `turn_data.ends` float[] | Utterance end offsets in seconds from session start; aligned by index with starts, texts and is_customers. |
| `turn_data.texts` string[] | Array of utterance strings, not one transcript string. Content may be empty or redacted by transcription/retention settings. |
| `turn_data.is_customers` bool[] | Utterance speakers: true = customer, false = agent; aligned by index with texts, starts and ends. |

## Platform and additional context

| Field / type | Definition and values |
| --- | --- |
| `state` JSON text | Session evaluation/context state as JSON text in list rows. Keys vary; inspect rather than inventing a fixed schema. |
| `platform` enum | Integration/platform where the session originated. `PLATFORM_UNKNOWN = 0`; `PLATFORM_SALESFORCE = 1`; `PLATFORM_HUBSPOT = 2`; `PLATFORM_LINKEDIN = 3`; `PLATFORM_ZOOMINFO = 4`; `PLATFORM_APOLLO = 5`; `PLATFORM_WEB = 31`; `PLATFORM_GOOGLE_SHEETS = 41`; `PLATFORM_TRELLUS_DIALER = 42`; `PLATFORM_TRELLUS_VCC = 43`; `PLATFORM_TRELLUS_VCC_XREF = 44`; `PLATFORM_GHL = 50`; `PLATFORM_SALESLOFT = 51`; `PLATFORM_OUTREACH = 52`; `PLATFORM_AMPLEMARKET = 53`; `PLATFORM_UNIFY = 54`; `PLATFORM_ZOHO = 55`; `PLATFORM_PIPEDRIVE = 56`; `PLATFORM_FRESHWORKS = 57`; `PLATFORM_KOMMO = 58`; `PLATFORM_BITRIX = 59`; `PLATFORM_CLOSE = 60`; `PLATFORM_ATTIO = 61`; `PLATFORM_LAWRULER = 62`; `PLATFORM_AGENTLOCATOR = 63`; `PLATFORM_CLAY = 64`; `PLATFORM_COMMONROOM = 65`; `PLATFORM_RINGCENTRAL = 66`; `PLATFORM_AIRCALL = 67`; `PLATFORM_DIALPAD = 68`; `PLATFORM_OPENPHONE = 69`; `PLATFORM_CLOUDTALK = 70`; `PLATFORM_GONG_ENGAGE = 71`; `PLATFORM_NEXTIVA = 72`; `PLATFORM_ZOOM = 73`; `PLATFORM_SKYPE = 74`; `PLATFORM_FIVENINE = 75`; `PLATFORM_ORUM = 76`; `PLATFORM_OUTREACH_RINGCENTRAL = 77`; `PLATFORM_PHONEBURNER = 78`; `PLATFORM_SALESFINITY = 79`; `PLATFORM_CONNECT_AND_SELL = 80`; `PLATFORM_MONSTER_CONNECT = 81`; `PLATFORM_ALOWARE = 82`; `PLATFORM_OUTPLAY = 83`; `PLATFORM_KONCERT = 84`; `PLATFORM_ONEPGR = 85`; `PLATFORM_NOOKS = 86`; `PLATFORM_CONVOSO = 87`; `PLATFORM_FRONTSPIN = 88`; `PLATFORM_SELLX = 89`; `PLATFORM_EIGHT_BY_EIGHT = 90`; `PLATFORM_CALLRAIL = 91`; `PLATFORM_VICIDIAL = 92`; `PLATFORM_TWOXCONNECT = 93`; `PLATFORM_CALLTOOLS = 94`; `PLATFORM_AVISO = 95`; `PLATFORM_VANILLASOFT = 96`; `PLATFORM_LEMLIST = 97`; `PLATFORM_DIALEDIN = 98`; `PLATFORM_GLENCOCO = 99`; `PLATFORM_GENESYS = 100`; `PLATFORM_ELTO = 101`; `PLATFORM_BLOOBIRDS = 102`; `PLATFORM_INSURED_MINE = 103`; `PLATFORM_REVENUE_VESSEL = 104`; `PLATFORM_OFFERD = 105`; `PLATFORM_XDRHUB = 106`; `PLATFORM_FREEDOMCRM = 107`; `PLATFORM_TWENTYCRM = 108`; `PLATFORM_APEX_ORGANIZATIONS = 109`; `PLATFORM_SMARTLEAD = 110` |
| `base_path` string | Opaque call context metadata. Do not construct API URLs from this value. |
| `client_version` string | Originating client/extension version when captured. |
| `phone_type` string | Phone-type metadata supplied by the originating client. No fixed vocabulary is defined here. |
| `telephony_customer_call_id` string | Telephony provider identifier for the customer call leg; distinct from session_id. |
| `alternate_address` string | Alternate customer address supplied on dial creation, when available. |
| `predicted_pickup` float | Optional model pickup probability, clipped to (0, 1] when supplied. Zero/default means no populated prediction, not a measured pickup outcome. |
| `custom_metrics` JSON text | Deprecated custom metrics as JSON text. Prefer supported named metrics; do not assume stable custom keys. |

## Dialing and connection metrics

| Field / type | Definition and values |
| --- | --- |
| `dial_metric.sip_code` int32 | Telephony SIP response/status code, when recorded. Zero can mean no code was captured. |
| `dial_metric.is_connected` bool | Whether the customer channel connected; automated voicemail/menu connections can also satisfy this. |
| `dial_metric.is_dial` bool | Whether the session was created through the dial flow; use is_inbound separately for direction. |
| `dial_metric.ringing_at` float | Ringing start offset in seconds from session start; zero can be unset. |
| `dial_metric.telephony` enum | Telephony category recorded for the session, represented by the listed enum values. `TELEPHONY_UNKNOWN = 0`; `TELEPHONY_TWILIO = 1`; `TELEPHONY_BANDWIDTH = 2` |
| `dial_metric.connected_duration` float | Customer connected-channel duration in seconds; does not by itself measure human talk time. |
| `dial_metric.is_live` bool | Whether outbound-call analysis identified a live portion. Inbound processing may populate live_duration without this flag. |
| `dial_metric.live_duration` float | Live portion duration in seconds, measured from detected live start for analyzed outbound calls; inbound calls use customer-channel duration. |
| `dial_metric.live_open_ended_at` float | Offset in seconds where the detected opening live utterance ended; diagnostic bridge timing. |
| `dial_metric.live_open_known_at` float | Offset in seconds when the processor first recognized the live opening; diagnostic detection timing. |
| `dial_metric.live_open_is_bridged` bool | Whether an agent bridge time was found for the detected live opening. |
| `dial_metric.live_open_delay_to_bridge` float | Non-negative seconds between detected live-opening end and agent bridge; meaningful with live_open_is_bridged. |
| `dial_metric.live_stated_at` float | Detected live-opening start offset in seconds from session start; zero can be unset. |
| `dial_metric.has_voicemail` bool | Whether call analysis detected voicemail, including a full mailbox. |
| `dial_metric.has_screen` bool | Whether call analysis detected a call-screening prompt. |
| `dial_metric.has_menu` bool | Whether call analysis detected an automated menu. |
| `dial_metric.left_voicemail` bool | Backend inference/known-provider signal that voicemail was left; not proof of a retained recording. |
| `dial_metric.left_screen` bool | Backend inference that screening was passed or agent speech was provided after the screening prompt. |
| `dial_metric.is_inbound` bool | True for inbound calls; false for outbound/default. Combine with conversation_type for call reports. |
| `dial_metric.is_trellus_telephony` bool | Whether the call uses Trellus telephony rather than an external/copilot bridge. |
| `dial_metric.is_autodial` bool | Single-line autodial indicator; current creation path sets true when configured parallel_lines is 1. |
| `dial_metric.parallel_lines` int32 | Configured simultaneous dial-line count; a configuration value, not the number of connected participants. |
| `dial_metric.is_bridge_user_first` bool | Stored user-first bridge-strategy flag. Do not infer actual participant order from this flag; use connection timing. |
| `dial_metric.is_timeout` bool | Whether the dial ended through a no-answer timeout. |

## Quality signals

| Field / type | Definition and values |
| --- | --- |
| `quality_metric.said_do_not_call` bool | Detected do-not-call expression. A signal, not an independently verified legal/compliance determination. |
| `quality_metric.said_not_audible` bool | Customer speech matched a cannot-hear/not-audible expression. |
| `quality_metric.said_angry` bool | Customer or agent speech matched profanity/anger expressions. |
| `quality_metric.said_spam` bool | Detected statement that the phone number shows as spam. |
| `quality_metric.said_scam` bool | Customer speech matched an accusation of a scam/fraud. |
| `quality_metric.said_risky_numbers` bool | Speech mentioned sensitive financial/identity numbers, such as SSN or credit card numbers. |
| `quality_metric.said_risky_credentials` bool | Speech matched sharing/requesting credentials or account/password information. |
| `quality_metric.said_risky_payment` bool | Speech matched offering/requesting a money transfer/payment. |
| `quality_metric.said_representative` bool | Customer speech requested a representative, agent or operator. |

## Sales signals

| Field / type | Definition and values |
| --- | --- |
| `sales_metric.has_prospect` bool | Detected prospect participation. Evaluation signal; false/default is not proof the event could not occur. |
| `sales_metric.has_gatekeeper` bool | Detected gatekeeper participation. Evaluation signal; false/default is not proof the event could not occur. |
| `sales_metric.has_obj_deny` bool | Detected denial/rejection objection. Evaluation signal; false/default is not proof the event could not occur. |
| `sales_metric.has_obj_wrong_person` bool | Detected wrong-person objection. Evaluation signal; false/default is not proof the event could not occur. |
| `sales_metric.has_obj_not_decision_maker` bool | Detected lack-of-decision-authority objection. Evaluation signal; false/default is not proof the event could not occur. |
| `sales_metric.has_obj_not_relevant` bool | Detected not-relevant objection. Evaluation signal; false/default is not proof the event could not occur. |
| `sales_metric.has_obj_not_now` bool | Detected bad-time/not-now objection. Evaluation signal; false/default is not proof the event could not occur. |
| `sales_metric.has_obj_no_call` bool | Detected objection to calls. Evaluation signal; false/default is not proof the event could not occur. |
| `sales_metric.has_obj_no_email` bool | Detected objection to email. Evaluation signal; false/default is not proof the event could not occur. |
| `sales_metric.has_obj_no_meeting` bool | Detected objection to a meeting. Evaluation signal; false/default is not proof the event could not occur. |
| `sales_metric.has_obj_no_need` bool | Detected no-need objection. Evaluation signal; false/default is not proof the event could not occur. |
| `sales_metric.has_obj_no_budget` bool | Detected no-budget objection. Evaluation signal; false/default is not proof the event could not occur. |
| `sales_metric.has_obj_using_competitors` bool | Detected existing use of competitors. Evaluation signal; false/default is not proof the event could not occur. |
| `sales_metric.has_ask_referral` bool | Detected request for a referral. Evaluation signal; false/default is not proof the event could not occur. |
| `sales_metric.has_ask_business` bool | Detected question about the prospect business. Evaluation signal; false/default is not proof the event could not occur. |
| `sales_metric.has_ask_responsibilities` bool | Detected question about responsibilities. Evaluation signal; false/default is not proof the event could not occur. |
| `sales_metric.has_offer_meeting` bool | Detected offer of a meeting. Evaluation signal; false/default is not proof the event could not occur. |
| `sales_metric.has_offer_call` bool | Detected offer of a follow-up call. Evaluation signal; false/default is not proof the event could not occur. |
| `sales_metric.has_offer_email` bool | Detected offer of a follow-up email. Evaluation signal; false/default is not proof the event could not occur. |
| `sales_metric.has_meeting_confirm` bool | Detected confirmation of a meeting; not a calendar booking ID. Evaluation signal; false/default is not proof the event could not occur. |
| `sales_metric.has_call_confirm` bool | Detected confirmation of a follow-up call. Evaluation signal; false/default is not proof the event could not occur. |
| `sales_metric.has_email_confirm` bool | Detected confirmation of follow-up email. Evaluation signal; false/default is not proof the event could not occur. |
| `sales_metric.has_referral_provided` bool | Detected provision of a referral. Evaluation signal; false/default is not proof the event could not occur. |
| `sales_metric.has_product_interest` bool | Detected product interest. Evaluation signal; false/default is not proof the event could not occur. |
| `sales_metric.stage` string | Deprecated sales-stage string. Prefer current user_log outcomes. |
| `sales_metric.trellus_disposition` string | Deprecated Trellus disposition string. Prefer user_log.disposition. |

## Recorded usage estimates

| Field / type | Definition and values |
| --- | --- |
| `cost.twilio_cost` float | Recorded usage estimate in USD, when populated. This is not the customer invoice or a guaranteed complete billing total. |
| `cost.bandwidth_cost` float | Recorded usage estimate in USD, when populated. This is not the customer invoice or a guaranteed complete billing total. |
| `cost.assembly_cost` float | Recorded usage estimate in USD, when populated. This is not the customer invoice or a guaranteed complete billing total. |
| `cost.deepgram_cost` float | Recorded usage estimate in USD, when populated. This is not the customer invoice or a guaranteed complete billing total. |
| `cost.cartesia_cost` float | Recorded usage estimate in USD, when populated. This is not the customer invoice or a guaranteed complete billing total. |
| `cost.eleven_cost` float | Recorded usage estimate in USD, when populated. This is not the customer invoice or a guaranteed complete billing total. |
| `cost.openai_cost` float | Recorded usage estimate in USD, when populated. This is not the customer invoice or a guaranteed complete billing total. |
| `cost.google_cost` float | Recorded usage estimate in USD, when populated. This is not the customer invoice or a guaranteed complete billing total. |
| `cost.anthropic_cost` float | Recorded usage estimate in USD, when populated. This is not the customer invoice or a guaranteed complete billing total. |

## Prior activity

| Field / type | Definition and values |
| --- | --- |
| `prior_activity.num_sessions` int32 | Prior team sessions for the same customer address, excluding the current session when the snapshot was initialized. |
| `prior_activity.days_since_first` int32 | Rounded days between this session start and the first prior team session for this customer address. |
| `prior_activity.num_out_dials` int32 | Prior outbound dials for this customer address within the team. |

## Conversation metrics

| Field / type | Definition and values |
| --- | --- |
| `call_metric.customer_talk_duration` float | Eligible customer transcript-turn duration in seconds; turns before detected live start are excluded. |
| `call_metric.agent_talk_duration` float | Eligible agent transcript-turn duration in seconds; turns before detected live start are excluded. |
| `call_metric.customer_tempo` float | Customer words per second over eligible utterances containing at least three words; multiply by 60 for words per minute. |
| `call_metric.agent_tempo` float | Agent words per second over eligible utterances containing at least three words; multiply by 60 for words per minute. |
| `call_metric.customer_dropped_duration` float | Customer audio loss/overwrite duration estimate in seconds; not a dropped-call count. |
| `call_metric.agent_dropped_duration` float | Agent audio loss/overwrite duration estimate in seconds; not a dropped-call count. |

## Contact and company data

| Field / type | Definition and values |
| --- | --- |
| `customer_data.name` string | Captured/enriched contact name; may be empty. Use instead of prospect_name. |
| `customer_data.title` string | Captured/enriched contact job title; may be empty. |
| `customer_data.occupation` string | Captured/enriched contact occupation; vocabulary depends on the source. |
| `customer_data.seniority` string | Captured/enriched contact seniority; vocabulary depends on the source. |
| `customer_data.company_name` string | Captured/enriched company name; may be empty. Use instead of company. |
| `customer_data.company_url` string | Captured/enriched company website URL; may be empty. |
| `customer_data.company_industry` string[] | Captured/enriched industry labels as an array of strings. |
| `customer_data.person_xrefs` object[] | External person/contact identifiers and URLs, associated with their source platform. |
| `customer_data.person_xrefs.[].platform` enum | Source integration platform. `PLATFORM_UNKNOWN = 0`; `PLATFORM_SALESFORCE = 1`; `PLATFORM_HUBSPOT = 2`; `PLATFORM_LINKEDIN = 3`; `PLATFORM_ZOOMINFO = 4`; `PLATFORM_APOLLO = 5`; `PLATFORM_WEB = 31`; `PLATFORM_GOOGLE_SHEETS = 41`; `PLATFORM_TRELLUS_DIALER = 42`; `PLATFORM_TRELLUS_VCC = 43`; `PLATFORM_TRELLUS_VCC_XREF = 44`; `PLATFORM_GHL = 50`; `PLATFORM_SALESLOFT = 51`; `PLATFORM_OUTREACH = 52`; `PLATFORM_AMPLEMARKET = 53`; `PLATFORM_UNIFY = 54`; `PLATFORM_ZOHO = 55`; `PLATFORM_PIPEDRIVE = 56`; `PLATFORM_FRESHWORKS = 57`; `PLATFORM_KOMMO = 58`; `PLATFORM_BITRIX = 59`; `PLATFORM_CLOSE = 60`; `PLATFORM_ATTIO = 61`; `PLATFORM_LAWRULER = 62`; `PLATFORM_AGENTLOCATOR = 63`; `PLATFORM_CLAY = 64`; `PLATFORM_COMMONROOM = 65`; `PLATFORM_RINGCENTRAL = 66`; `PLATFORM_AIRCALL = 67`; `PLATFORM_DIALPAD = 68`; `PLATFORM_OPENPHONE = 69`; `PLATFORM_CLOUDTALK = 70`; `PLATFORM_GONG_ENGAGE = 71`; `PLATFORM_NEXTIVA = 72`; `PLATFORM_ZOOM = 73`; `PLATFORM_SKYPE = 74`; `PLATFORM_FIVENINE = 75`; `PLATFORM_ORUM = 76`; `PLATFORM_OUTREACH_RINGCENTRAL = 77`; `PLATFORM_PHONEBURNER = 78`; `PLATFORM_SALESFINITY = 79`; `PLATFORM_CONNECT_AND_SELL = 80`; `PLATFORM_MONSTER_CONNECT = 81`; `PLATFORM_ALOWARE = 82`; `PLATFORM_OUTPLAY = 83`; `PLATFORM_KONCERT = 84`; `PLATFORM_ONEPGR = 85`; `PLATFORM_NOOKS = 86`; `PLATFORM_CONVOSO = 87`; `PLATFORM_FRONTSPIN = 88`; `PLATFORM_SELLX = 89`; `PLATFORM_EIGHT_BY_EIGHT = 90`; `PLATFORM_CALLRAIL = 91`; `PLATFORM_VICIDIAL = 92`; `PLATFORM_TWOXCONNECT = 93`; `PLATFORM_CALLTOOLS = 94`; `PLATFORM_AVISO = 95`; `PLATFORM_VANILLASOFT = 96`; `PLATFORM_LEMLIST = 97`; `PLATFORM_DIALEDIN = 98`; `PLATFORM_GLENCOCO = 99`; `PLATFORM_GENESYS = 100`; `PLATFORM_ELTO = 101`; `PLATFORM_BLOOBIRDS = 102`; `PLATFORM_INSURED_MINE = 103`; `PLATFORM_REVENUE_VESSEL = 104`; `PLATFORM_OFFERD = 105`; `PLATFORM_XDRHUB = 106`; `PLATFORM_FREEDOMCRM = 107`; `PLATFORM_TWENTYCRM = 108`; `PLATFORM_APEX_ORGANIZATIONS = 109`; `PLATFORM_SMARTLEAD = 110` |
| `customer_data.person_xrefs.[].person_id` string | External contact/person record ID. |
| `customer_data.person_xrefs.[].person_url` string | External contact/person record URL. |
| `customer_data.person_xrefs.[].company_id` string | External company record ID associated with this person. |
| `customer_data.company_xrefs` object[] | External company identifiers and URLs, associated with their source platform. |
| `customer_data.company_xrefs.[].platform` enum | Source integration platform. `PLATFORM_UNKNOWN = 0`; `PLATFORM_SALESFORCE = 1`; `PLATFORM_HUBSPOT = 2`; `PLATFORM_LINKEDIN = 3`; `PLATFORM_ZOOMINFO = 4`; `PLATFORM_APOLLO = 5`; `PLATFORM_WEB = 31`; `PLATFORM_GOOGLE_SHEETS = 41`; `PLATFORM_TRELLUS_DIALER = 42`; `PLATFORM_TRELLUS_VCC = 43`; `PLATFORM_TRELLUS_VCC_XREF = 44`; `PLATFORM_GHL = 50`; `PLATFORM_SALESLOFT = 51`; `PLATFORM_OUTREACH = 52`; `PLATFORM_AMPLEMARKET = 53`; `PLATFORM_UNIFY = 54`; `PLATFORM_ZOHO = 55`; `PLATFORM_PIPEDRIVE = 56`; `PLATFORM_FRESHWORKS = 57`; `PLATFORM_KOMMO = 58`; `PLATFORM_BITRIX = 59`; `PLATFORM_CLOSE = 60`; `PLATFORM_ATTIO = 61`; `PLATFORM_LAWRULER = 62`; `PLATFORM_AGENTLOCATOR = 63`; `PLATFORM_CLAY = 64`; `PLATFORM_COMMONROOM = 65`; `PLATFORM_RINGCENTRAL = 66`; `PLATFORM_AIRCALL = 67`; `PLATFORM_DIALPAD = 68`; `PLATFORM_OPENPHONE = 69`; `PLATFORM_CLOUDTALK = 70`; `PLATFORM_GONG_ENGAGE = 71`; `PLATFORM_NEXTIVA = 72`; `PLATFORM_ZOOM = 73`; `PLATFORM_SKYPE = 74`; `PLATFORM_FIVENINE = 75`; `PLATFORM_ORUM = 76`; `PLATFORM_OUTREACH_RINGCENTRAL = 77`; `PLATFORM_PHONEBURNER = 78`; `PLATFORM_SALESFINITY = 79`; `PLATFORM_CONNECT_AND_SELL = 80`; `PLATFORM_MONSTER_CONNECT = 81`; `PLATFORM_ALOWARE = 82`; `PLATFORM_OUTPLAY = 83`; `PLATFORM_KONCERT = 84`; `PLATFORM_ONEPGR = 85`; `PLATFORM_NOOKS = 86`; `PLATFORM_CONVOSO = 87`; `PLATFORM_FRONTSPIN = 88`; `PLATFORM_SELLX = 89`; `PLATFORM_EIGHT_BY_EIGHT = 90`; `PLATFORM_CALLRAIL = 91`; `PLATFORM_VICIDIAL = 92`; `PLATFORM_TWOXCONNECT = 93`; `PLATFORM_CALLTOOLS = 94`; `PLATFORM_AVISO = 95`; `PLATFORM_VANILLASOFT = 96`; `PLATFORM_LEMLIST = 97`; `PLATFORM_DIALEDIN = 98`; `PLATFORM_GLENCOCO = 99`; `PLATFORM_GENESYS = 100`; `PLATFORM_ELTO = 101`; `PLATFORM_BLOOBIRDS = 102`; `PLATFORM_INSURED_MINE = 103`; `PLATFORM_REVENUE_VESSEL = 104`; `PLATFORM_OFFERD = 105`; `PLATFORM_XDRHUB = 106`; `PLATFORM_FREEDOMCRM = 107`; `PLATFORM_TWENTYCRM = 108`; `PLATFORM_APEX_ORGANIZATIONS = 109`; `PLATFORM_SMARTLEAD = 110` |
| `customer_data.company_xrefs.[].company_id` string | External company record ID. |
| `customer_data.company_xrefs.[].company_url` string | External company record URL. |
| `customer_data.cadence_xrefs` object[] | External cadence/sequence references; source-specific type and value. |
| `customer_data.cadence_xrefs.[].platform` enum | Source integration platform. `PLATFORM_UNKNOWN = 0`; `PLATFORM_SALESFORCE = 1`; `PLATFORM_HUBSPOT = 2`; `PLATFORM_LINKEDIN = 3`; `PLATFORM_ZOOMINFO = 4`; `PLATFORM_APOLLO = 5`; `PLATFORM_WEB = 31`; `PLATFORM_GOOGLE_SHEETS = 41`; `PLATFORM_TRELLUS_DIALER = 42`; `PLATFORM_TRELLUS_VCC = 43`; `PLATFORM_TRELLUS_VCC_XREF = 44`; `PLATFORM_GHL = 50`; `PLATFORM_SALESLOFT = 51`; `PLATFORM_OUTREACH = 52`; `PLATFORM_AMPLEMARKET = 53`; `PLATFORM_UNIFY = 54`; `PLATFORM_ZOHO = 55`; `PLATFORM_PIPEDRIVE = 56`; `PLATFORM_FRESHWORKS = 57`; `PLATFORM_KOMMO = 58`; `PLATFORM_BITRIX = 59`; `PLATFORM_CLOSE = 60`; `PLATFORM_ATTIO = 61`; `PLATFORM_LAWRULER = 62`; `PLATFORM_AGENTLOCATOR = 63`; `PLATFORM_CLAY = 64`; `PLATFORM_COMMONROOM = 65`; `PLATFORM_RINGCENTRAL = 66`; `PLATFORM_AIRCALL = 67`; `PLATFORM_DIALPAD = 68`; `PLATFORM_OPENPHONE = 69`; `PLATFORM_CLOUDTALK = 70`; `PLATFORM_GONG_ENGAGE = 71`; `PLATFORM_NEXTIVA = 72`; `PLATFORM_ZOOM = 73`; `PLATFORM_SKYPE = 74`; `PLATFORM_FIVENINE = 75`; `PLATFORM_ORUM = 76`; `PLATFORM_OUTREACH_RINGCENTRAL = 77`; `PLATFORM_PHONEBURNER = 78`; `PLATFORM_SALESFINITY = 79`; `PLATFORM_CONNECT_AND_SELL = 80`; `PLATFORM_MONSTER_CONNECT = 81`; `PLATFORM_ALOWARE = 82`; `PLATFORM_OUTPLAY = 83`; `PLATFORM_KONCERT = 84`; `PLATFORM_ONEPGR = 85`; `PLATFORM_NOOKS = 86`; `PLATFORM_CONVOSO = 87`; `PLATFORM_FRONTSPIN = 88`; `PLATFORM_SELLX = 89`; `PLATFORM_EIGHT_BY_EIGHT = 90`; `PLATFORM_CALLRAIL = 91`; `PLATFORM_VICIDIAL = 92`; `PLATFORM_TWOXCONNECT = 93`; `PLATFORM_CALLTOOLS = 94`; `PLATFORM_AVISO = 95`; `PLATFORM_VANILLASOFT = 96`; `PLATFORM_LEMLIST = 97`; `PLATFORM_DIALEDIN = 98`; `PLATFORM_GLENCOCO = 99`; `PLATFORM_GENESYS = 100`; `PLATFORM_ELTO = 101`; `PLATFORM_BLOOBIRDS = 102`; `PLATFORM_INSURED_MINE = 103`; `PLATFORM_REVENUE_VESSEL = 104`; `PLATFORM_OFFERD = 105`; `PLATFORM_XDRHUB = 106`; `PLATFORM_FREEDOMCRM = 107`; `PLATFORM_TWENTYCRM = 108`; `PLATFORM_APEX_ORGANIZATIONS = 109`; `PLATFORM_SMARTLEAD = 110` |
| `customer_data.cadence_xrefs.[].cadence_type` string | Source-specific cadence/sequence category. |
| `customer_data.cadence_xrefs.[].value` string | Source-specific cadence/sequence reference value. |
| `customer_data.custom_fields` JSON text | Account/source-specific custom data as JSON text in list rows. Parse it before reading keys; no standard contact email field is guaranteed. |
| `customer_data.vcc_campaign_id` bytes | VCC campaign identifier encoded as base64 bytes in list output, not a hex/UUID string. |
| `customer_data.vcc_contact_id` bytes | VCC contact identifier encoded as base64 bytes in list output, not a hex/UUID string. |

## Saved outcomes and notes

| Field / type | Definition and values |
| --- | --- |
| `user_log.disposition` string | Recorded call outcome string. Use /bootstrap account options rather than invented labels; may be set by a user, rule, telephony or AI. |
| `user_log.sentiment` string | Recorded sentiment string. Use /bootstrap account vocabulary; may be automatically populated. |
| `user_log.purpose` string | Recorded call-purpose string. Use /bootstrap account vocabulary. |
| `user_log.notes` string | Recorded notes/summary text; may be user-entered or generated, not the full transcript. |
| `user_log.retry_at` uint32 | Suggested/scheduled retry or callback time as Unix seconds; zero means no populated retry time. |
| `user_log.source` int32 | Source that populated the disposition/outcome (for example user, AI or telephony), not a user ID. Returned as a numeric code in list results; filter with the numeric values below. The labels explain those codes and are not accepted filter strings for this field. `DISPOSITION_SOURCE_UNKNOWN = 0`; `DISPOSITION_SOURCE_REJECTED = 1`; `DISPOSITION_SOURCE_TELEPHONY = 2`; `DISPOSITION_SOURCE_RECORDING = 3`; `DISPOSITION_SOURCE_EXPRESSION = 6`; `DISPOSITION_SOURCE_STATE_RULE = 9`; `DISPOSITION_SOURCE_AI_EVAL = 12` |
| `user_log.vcc_disposition_id` bytes | VCC disposition identifier encoded as base64 bytes in list output. |
| `user_log.vcc_agent_id` bytes | VCC agent responsible for disposition, encoded as base64 bytes in list output; can be empty. |
