API is rate limited to 5 requests per second between 6AM and 9PM ET, and 25 requests per second between 9PM ET and 6AM ET. (Rate limiting will just queue the request rather than returning an error, although timeouts will happen if queued for at least one minute.)
API Overview
Request API access to be enabled for your instance to have access token credentials provisioned, See below for all the potential data points that can be leveraged.
If you have any questions on leveraging these, please reach out to your Coach Customer Success Representative to set up a call with one of our Solutions Engineers who will make sure you get up and running with our API.
Jump to:
- Base URL
- Authentication
- Meaning of Common Query Parameter Fields
- API Endpoints
- Response Object Examples
Base URL
https://users.execvision.io/api/ev/2/users
Authentication
For authentication with the C360 API, please contact your customer success rep who will
have our tech team spin up and share a secure set of credentials and share accordingly. Follow the standard method for basic authentication for your particular http client. The username will be your user ID, and password will be the provided password. Below is an example of basic authentication using “curl”. Basic access authentication in short, means that the credentials will be specified in the “Authorization” request header using the following format:
-
username (your user ID) and password joined by a single colon
:and -
then that is encoded using Base64 encoding to form the credentials string.
-
Then that credentials string is set to the request header in the following format:
Authorization: Basic <credentials>
Delete Endpoints are only available upon request.
Meaning of Common Query Parameter Fields
This version uses a last modified timestamp and limit approach to queries, rather than returning all results from a specific date. It also adds the ability to delete calls (only if enabled for the user’s token).
-
The
sinceparameter, is required wherever it is listed and is a timestamp in ISO 8601 format (e.g., “2021-12-31T09:15Z”). Currently specifying seconds in the timestamp is ignored. -
Some endpoints accept an optional
last_idparameter. For those endpoints, the parameter should be given to ensure correct paging – from the last entry in the previous page fetched, get both the last modified timestamp (to pass assince) AND the id (to pass aslast_id), and pass them BOTH to the endpoint to receive the next page. Failure to do this could result in some data being missed when multiple objects have the same last modified date. Known bug: Sometimes the next page will include the id specified in thelast_idparameter. -
The
limitparameter is a nonnegative integer. The maximum value for all endpoints is 1000 unless otherwise specified. In certain cases, the maximum value may be lower – see individual endpoint docs for exceptions. The default value is 100 if none is specified.
Paging of Endpoints that Return a List of Values
For endpoints such as Calls and Call Topics that have both since and last_id first make a request with just the since parameter.
https://users.execvision.io/api/ev/2/calls?since=2023-08-15T00:00:00Z&limit=1000
Response
[
{"id": "aadb60cc-f532-479b-be74-9bd8b487edc0",
"callerId": "ce915029-9048-4853-8791-2e944d5c44b9",
...
},
...
{"id": "bfc4970b-5971-4856-987f-6f2fe712dbd0",
...
"callTime": "2023-08-15T10:00:01Z"
...
}
]
The for next page set the since and last_id to the values corresponding to the last object from the prior response.
https://users.execvision.io/api/ev/2/calls?since=2023-08-15T10:00:01Z&last_id=bfc4970b-5971-4856-987f-6f2fe712dbd0&limit=1000
For other endpoints that have just a since and not a last_id just update the since parameter to the timestamp of the last object in the previous response.
API End Points
|
Path |
Response |
|---|---|
|
/api/ev/2/check GET |
Empty. Use this to check access and connectivity. |
|
/api/ev/2/users GET |
Array of active User objects. |
|
/api/ev/2/teams GET |
Array of active Team objects. |
|
/api/ev/2/departments GET |
Array of active Department objects. |
|
/api/ev/2/calls?since={since}[&limit={limit}][&last_id={id}][&include_transcripts=false][&include_crm_matches=false][&render_templates=false] GET |
Array of calls that experienced a state change at or after |
|
/api/ev/2/calls/deleted?since={since}[&limit={limit}][&last_id={id}] GET |
Array of calls deleted at or after |
|
/api/ev/2/calls/search?{field_name}={field_value} |
Array of strings, the ids of calls matching the search. Results limited to 1000 ids. |
|
/api/ev/2/call/{id} GET |
Look up a call by id. |
|
/api/ev/2/call/{id} DELETE |
Delete a call by id. Not allowed unless explicitly enabled for the requesting user’s token. |
|
/api/ev/2/call_topics?since={since}[&limit={limit}][&last_id={id}][&window_length={length}&minimum_matches={matches}] GET |
Array of topic matches in calls, where calls are in the |
|
/api/ev/2/listens?since={since}[&limit={limit}] GET |
Array of listens last modified at or after |
|
/api/ev/2/scores?since={since}[&limit={limit}] GET |
Array of scores last modified at or after The limit here applies to the scorecard results, not the number of answers (e.g., a request with limit=1 should be expected to return an array containing the answers one user provided on one scorecard, not simply one answer). |
|
/api/ev/2/scorecard/{id} GET |
Get a scorecard definition. |
|
/api/ev/2/topics GET |
Get a list of all active topic definitions. |
|
/api/ev/2/feedback?since={since}[&limit={limit}] GET |
Array of comments and highlights left on this date. |
|
Array of shares created at or after |
|
|
/api/ev/2/meetings?since={since}[&limit={limit}] GET |
Array of meetings last modified at or after |
|
/api/ev/2/plans?since={since}[&limit={limit}] GET |
Array of coaching plans last modified at or after |
|
/api/ev/2/kpis?since={since}[&limit={limit}] GET |
Array of KPI observations last modified at or after |
|
/api/ev/2/kpi/{id} GET |
Get a particular KPI definition. |
| /api/ev/2/transcript/{id} GET |
Get a simplified transcript by call id. Written specifically for Intuit. Discuss before sharing with other customers. |
Calls Endpoint
The calls endpoint offers a number of parameters to control the data returned:
-
include_transcripts(boolean, default =false). Should thetranscriptfield be included in calls returned? This option can increase the size of the response significantly. -
include_crm_matches(boolean, default =false). Should thecrmMatchesfield be included in the calls returned? This option can increase the time taken to return responses. -
render_templates(boolean, default =false). Should the call card templates be added to themetadatafield in the calls? This option can cause slower response time. IMPORTANT: Iftrue, the maximumlimitis reduced to100.
The call endpoint supports none of these parameters, returning all optional data described above.
Search Endpoint
The calls/search endpoint takes exactly one field name and a value of that field and returns the ids of calls having the given value in the given field. For example, assuming a call exists in your account with id "callid",
/api/ev/2/calls/search?metadata.id=callid will return ["callid"].
Note that the value passed must be all lowercase to match properly. For example, if you wanted to find calls where the company field contains the string Hewlett Packard Enterprise, you would use the following query:
/api/ev/2/calls/search?metadata.company=hewlett+packard+enterprise
You can find available field names by looking at the metadata in the call and calls responses.
Results are limited to 1000 ids. There is no pagination.
Response Object Examples
User
|
Field |
Type |
Description |
|
userId |
string |
ID of user |
|
|
string |
user's email |
|
firstName |
string |
users' first name |
|
lastName |
string |
user's last name |
|
teamId |
string |
user's team ID |
|
departmentId |
string |
user's department ID |
|
systemIds |
array of strings |
array of IDs from external integrations |
Example:
{
"userId": "fc9a78ce-104e-43e4-b59f-38255af837bd",
"email": "john.doe@example.com",
"firstName": "John",
"lastName": "Doe",
"teamId": "c482d0b3-c2f0-4276-920a-37487c61d72c",
"departmentId": "54c2c3ab-48c1-4790-bac7-16fe1475f581"
// these correspond to the user's id in your dialer/crm
"systemIds": ["jason","argonauts"]
}
Team
|
Field |
Type |
Description |
|
id |
string |
ID of team |
|
name |
string |
team's name |
|
managerId |
string |
user ID of manager |
|
departmentId |
string |
team's department ID |
Example:
{
"id":"c482d0b3-c2f0-4276-920a-37487c61d72c",
"name":"Quality Assurance Team",
"managerId":"4287afe4-a4e1-4714-9725-68bebb6718a1",
"departmentId":"54c2c3ab-48c1-4790-bac7-16fe1475f581"
}
Department
|
Field |
Type |
Description |
|
id |
string |
ID of department |
|
name |
string |
department's name |
Example:
{
"id":"fe3577be-b911-485e-82cd-d024c65e5bdd",
"name":"New department"
}
Call
|
Field |
Type |
Description |
|
id |
string |
ID of call. |
|
callerEmail |
string |
Email address of the caller. |
|
callerId |
string |
User ID of caller. |
|
callSummary |
object or null |
AI-generated call summary. |
|
callTime |
string |
Date and time of start of call in ISO 8601 format. |
|
duration |
number |
Duration of call in seconds. |
|
direction |
string |
Direction of call: |
|
state |
string |
Processing state of call: |
|
transcript |
array of objects or null |
Array of transcription word or phrase (see Transcription Word). |
|
crmMatches |
array of objects |
Array of CRM match objects. |
|
stats |
object |
|
|
originalPath |
string |
Original name and/or path of the recording file. |
|
metadata |
object |
Call's custom fields mapped from the CRM. The fields in this object vary depending on what values have been set for a specific call. |
{
"id": "a987a7b3-74e9-421e-8c96-2fdcfbda1c8b",
"callerId": "f3624158-1204-4fe3-b71a-38677f0ec547",
"callTime": "2018-01-01T11:11:11Z",
// seconds
"duration": 123,
"direction": "INBOUND",
// OUTBOUND, SCREENSHARE
"state": "COMPLETE",
"transcript": [
{
"start": "26.594",
"end": "26.704",
"word": "hey",
// punctuation following word
"p": ",",
// "voice" - 0-indexed speaker number
"v": 1
},
...
],
"crmMatches": [
{
"crmName": "Salesforce",
"activityCrmId": "00T6Q00008kHwVrUAK",
"account": {
"crmId": "0017000000kjYm7AAE",
"name": "memoryBlue"
},
"contacts": [
{
"crmId": "0035w00002zo034AAA",
"name": "Kellie Courville"
}
],
"engagement": null
}
],
"stats": {
"internalTalkTime": 418,
"externalTalkTime": 238,
"talkRatio": 0.6371951219512195,
"interchangesPerMinute": 2.589041095890411,
"longestSegmentDurations": {
"1": 34.47000000000003,
"0": 76.0
},
"talkSpeeds": [
{
"start": 76.24,
"end": 375.23,
"wordsPerMinute": {
"1": 56.59052142212114,
"0": 102.74591123448945
}
},
{
"start": 375.74,
"end": 675.63,
"wordsPerMinute": {
"0": 120.24408949948315,
"1": 54.62002734335924
}
},
{
"start": 675.64,
"end": 727.1,
"wordsPerMinute": {
"1": 88.61251457442668,
"0": 72.28915662650597
}
}
]
},
// the original name/path of the recording file
"originalPath": "foo.txt",
"callSummary": {
"nextSteps": [
"Marc will debrief Tim on the conversation.",
"Keep optimizing and handling inbound leads efficiently to not let any fall through the cracks."
],
"questionsAndAnswers": [
{
"question": "Q: What is the speaker's company focused on right now?",
"answer": "A: The speaker's company is focused on shedding their start-up skin, getting refined in their process, having organized structure, and becoming a well-structured and scalable global organization."
}
],
"summary": "The phone call is a recording from the Liberty Box recordings in the public domain. It is a preface to the book of stories for the storyteller by Fe C. The preface discusses the importance of storytelling in the home and school and how it has become recognized as an important part of the equipment of parents and teachers. The difficulty for parents and teachers is often finding fresh material, but this book provides a collection of stories drawn from many nations and sources, including real-life tales of child life, child heroes, and animals. The stories in the book have been chosen for their moral value and present virtues such as persistence, faithfulness, honesty, generosity, and loyalty. The themes are emphasized more than once, and the form of each story is such that the parent or teacher can tell or read it with slight modifications. The author expresses appreciation for helpful suggestions as to material received from Mrs. Mary W. Cro, a teller of stories at various branches of the Boston public library."
},
// the content of this map will correspond to the data from your crm that's uploaded
"metadata": {
"deleted": false,
"opportunity_price_point": 50000,
"uploader": "124"
}
}
Call Summary
|
Field |
Type |
Description |
|
nextSteps |
array of string |
a list of suggest next steps for call participants |
|
questionsAndAnswers |
array of object |
list of questions and answers from the call |
|
summary |
string or null |
a summary of the call’s transcript |
Questions and Answers
|
Field |
Type |
Description |
|
question |
string |
the question |
|
answer |
string |
the answer |
Transcription Word or Phrase
|
Field |
Type |
Description |
|
start |
string |
start of the transcription object in seconds, formatted as a string |
|
end |
string |
end of transcription object in seconds, formatted as a string |
|
word |
string |
transcription word (or phrase) |
|
p |
optional string |
punctuation following word (or phrase) |
|
v |
number |
voice/speaker, zero-indexed speaker number |
Example:
{
"start": "26.594",
"end": "26.704",
"word": "hey",
// punctuation following word
"p": ",",
// "voice" - either 0 or 1
"v": 1
}
CRM Match Object
|
Field |
Type |
Description |
|
crmName |
string |
Name of the CRM system (e.g., Salesforce, Outreach). |
|
activityCrmId |
string |
ID in the CRM system of the activity associated with the call. |
|
account |
object or null |
CRM account entity (if any) associated with the call. |
|
contacts |
array of object |
CRM contact entities associated with the call. |
|
engagement |
object or null |
CRM engagement (e.g., an Opportunity in Salesforce) entity (if any) associated with the call |
CRM Entity Object
|
Field |
Type |
Description |
|
crmId |
string |
ID of the entity in the source CRM system. |
|
name |
string |
Name of the entity in the source CRM system. |
Call Stats
|
Field |
Type |
Description |
|
internalTalkTime |
number |
Total talk time (seconds) by internal speakers. |
|
externalTalkTime |
number |
Total talk time (seconds) by external speakers. |
|
talkRatio |
number |
Ratio of internal time to total talk time. |
|
interchangesPerMinute |
number |
Number of speaker changes per minute. |
|
longestSegmentDurations |
object |
JSON object mapping transcript speaker numbers (as strings, because this is JSON) to duration of the longest continuous, uninterrupted speech by that speaker in the call. |
|
talkSpeeds |
array of object |
Array of talk speeds, one for each (roughly) five-minute section of the call. |
Talk Speeds
|
Field |
Type |
Description |
|
start |
number |
Start of this section, in seconds since the start of the call. |
|
end |
number |
End of this section, in seconds since the start of the call. |
|
wordsPerMinute |
object |
JSON object mapping transcript speaker numbers (as strings, because this is JSON) to the approximate number of words per minute spoken by that speaker during this section. |
Deleted Call
|
Field |
Type |
Description |
|
id |
string |
ID of the deleted call. |
|
deletedAt |
string (ISO timestamp) |
Time the call was deleted. |
|
callerId |
string |
User ID of caller. |
|
callTime |
string (ISO timestamp) |
Time the call was made. |
{
"id": "0f93dd42-9dab-4365-a192-2ce0b5449a71",
"deletedAt": "2022-05-19T16:58:14.048648Z",
"callerId": "00be2baf-f0b9-47b7-9fee-85693f4d7fa5",
"callTime": "2022-05-19T16:58:09.749Z"
}
Topic Match
|
Field |
Type |
Description |
|
callId |
string |
ID of the call |
|
modified |
string (ISO timestamp) |
last modified timestamp of the call in ISO 8601 format |
|
questionCounts |
object |
counts of canonical questions matched in the call’s transcript |
|
topicMatches |
array of object |
array of topic matches from the call’s transcript |
Canonical Question Counts
|
Find |
Type |
Description |
|
internalSpeakerQuestionCount |
number (nonnegative integer) |
number of sentences spoken by an identified internal speaker containing a match of the canonical questions topic |
|
externalSpeakerQuestionCount |
number (nonnegative integer) |
number of sentences spoken by an identified external speaker containing a match of the canonical questions topic |
|
unknownSpeakerQuestionCount |
number (nonnegative integer) |
number of sentences spoken by an unidentified speaker containing a match of the canonical questions topic |
Single Topic Match
Each match is a text block from the call’s transcript with a list of topics that matched within the block.
|
Field |
Type |
Description |
|
startTime |
number |
start time, in seconds since the beginning of the call, of the text block |
|
endTime |
number |
end time, in seconds since the beginning of the call, of the text block |
|
text |
string |
the text of the block |
|
speakerType |
string (enumeration) |
one of |
|
topicsWithMatches |
array of object |
array of topics with matches |
Topic with Matches
|
Field |
Type |
Description |
|
topicId |
string |
ID of the topic |
|
topicName |
string |
name of the topic |
|
matches |
array of object |
array of matches |
Single Topic Match
Provides information about an individual topic match within the block. The indices provided are zero-based indexes into the block’s text, if that text were an array split on whitespace. They are inclusive. For example if the start and end indices are both zero, that indicates that only the first word of the block matched the topic.
|
Field |
Type |
Description |
|
searchText |
array of string |
words and phrases from the topic that matched |
|
matchingText |
string |
text from the transcript that matched |
|
matchStartTime |
number |
start time, in seconds since the beginning of the call, of the matching text |
|
matchStartIndex |
number (nonnegative integer) |
start index of the match in the text block |
|
matchEndTime |
number |
end time, in seconds since the beginning of the call, of the matching text |
|
matchEndIndex |
number (nonnegative integer) |
end index of the match in the text block |
Listen
|
Field |
Type |
Description |
|
date |
string |
date of a listen in ISO 8601 format |
|
callId |
string |
ID of call listened to |
|
listener |
string |
user ID of listener |
|
caller |
string |
userID of caller |
|
timeListened |
number |
length of listen in seconds |
Example:
{
"date": "1950-05-03",
"modified": ""
"callId": "7f6c3b45-cdcc-433b-ad3d-314a5cf91cd5",
"listener": "83fe2c2f-2422-4741-84b4-1d7a0187d681",
"caller": "83fe2c2f-2422-4741-84b4-1d7a0187d681",
// seconds
"timeListened": 10.0
}
Scores
|
Field |
Type |
Description |
|
reviewer |
string |
email of reviewer |
|
reviewerTeam |
string |
team name of reviewer |
|
caller |
string |
email of caller |
|
callerTeam |
string |
team name of caller |
|
callId |
string |
ID of the call scored |
|
resultId |
string |
ID of the score |
|
scoreTime |
string |
date and time of scoring in ISO 8601 format |
|
modified |
string |
last modified time in ISO 8601 format |
|
scorecardId |
string |
ID of the scorecard |
|
scorecardName |
string |
name of the scorecard |
|
questionId |
string |
ID of question |
|
question |
string |
text of question |
|
skill1 |
string or null |
first skill associated with question |
|
skill2 |
string or null |
second skill associated with question |
|
skill3 |
string or null |
third skill associated with question |
|
scheme |
string |
scheme used for scoring (see Scoring Scheme) |
|
answer |
number |
answer to score |
|
rawAnswer |
number |
raw answer to the score |
|
reason |
string or null |
reason for score, if provided |
|
comment |
string or null |
comment with score, if provided |
Example:
This exactly matches the format that’s produced by the UI export.
{
"reviewer": "tim.smith@example.com",
"reviewerTeam": "My Team",
"caller": "inttest4@bah.com",
"callerTeam": "trending_team_name",
"callId": "scorecard_mb1",
"resultId": "CR23",
"scoreTime": "2018-11-09T18:09:11.794403Z",
"modified": "2018-11-09T18:09:11.794403Z",
"scorecardId": "c_scorecard",
"scorecardName": "C",
"questionId": "Q1C",
"question": "Q1",
"skill1": "hunting",
"skill2": "trapping",
"skill3": "charring",
"scheme": "OneToThree",
"answer": 3.0,
"rawAnswer": 5,
"reason": null,
"comment": null
}
Scoring Scheme
|
Answer |
Raw Answer |
Percentage |
|---|---|---|
|
OneToFive |
||
|
0 |
0 |
0% |
|
1 |
1 |
20% |
|
2 |
2 |
40% |
|
3 |
3 |
60% |
|
4 |
4 |
80% |
|
5 |
5 |
100% |
|
OneToThree |
||
|
0 |
0 |
0% |
|
1 |
1 |
33% |
|
2 |
3 |
66% |
|
3 |
5 |
100% |
|
OneTwo |
||
|
0 |
0 |
0% |
|
1 |
3 |
50% |
|
2 |
5 |
100% |
|
YesNo |
||
|
no |
0 |
0% |
|
yes |
5 |
100% |
|
PassFail |
||
|
fail |
0 |
0% |
|
pass |
5 |
100% |
Scorecard
The scorecard api returns an array of scorecard questions each with the following fields:
|
Field |
Type |
Description |
|
scorecardId |
string |
ID of scorecard |
|
scorecardScheme |
string |
scheme used for scoring (see Scoring Scheme) |
|
scorecardName |
string |
name of scorecard |
|
questionID |
string |
ID of question |
|
questionText |
string |
text of question |
Example:
[
{
"scorecardId": "82d02942-1bc4-4678-8e4e-7d3e56a5dc10",
"scorecardScheme": "OneToThree",
"scorecardName": "Accounting Profiling",
"questionId":" f310c6b0-1f39-46f0-9bb2-f15af398ddcb",
"questionText": "Does the rep inquire about the number of total reps"
},...
]
Topic Definition
|
Field |
Type |
Description |
|
id |
number |
ID of topic |
|
name |
string |
name of topic |
|
words |
string |
words/phrases that make up the topic |
Example:
{
"id": 1
"name": "Common objections"
"words": ["please don't", "stop calling", "off your list"]
}
Feedback
|
Field |
Type |
Description |
|
feedbackAt |
string |
date and time when feedback given ISO 8601 format |
|
modified |
string |
last modified timestamp in ISO 8601 format |
|
callId |
string |
ID of call reviewed |
|
feedbackBy |
string |
ID of user providing the feedback |
|
isComment |
boolean |
true of feedback is a comment |
|
isHighlight |
boolean |
true if feedback is a highlight |
|
text |
string or null |
text of feedback given such as highlight text or comment text |
|
startTime |
number |
start time of feedback in seconds |
|
endTime |
number or null |
end time of feedback in seconds |
Example:
{
"feedbackAt": "2018-04-22T16:23:58.097101Z",
"modified": "2018-04-22T16:23:58.097101Z"
"callId": "10466b71-61dc-4f96-9b12-871004b1ccbc",
"feedbackBy": "08288a91-87e7-4ade-bbad-2280f064b1fc",
"isComment": true,
"isHighlight": false,
"text": "<p>enim adipisci vitae</p>",
"startTime": 10.0,
"endTime": null // will be non-null on highlights
}
Shares
|
Field |
Type |
Description |
|
sharedAt |
string |
date and time when shared in ISO 8601 format |
|
callId |
string |
ID of call shared |
|
sharedBy |
string |
ID of user sharing call |
|
recipientUserIds |
array of strings |
IDs of users receiving shared call, internal sharing |
|
recipientEmails |
array of strings |
emails of receiving shared call, external sharing |
Example:
{
"sharedAt": "2018-04-27T10:10:00Z",
"callId": "47d8d07c-a5af-41bf-be85-28e889cc0532",
"sharedBy": "de2ef481-e2bf-4633-8098-877a1153e054",
"recipientUserIds": ["8a5b75fb-9043-467f-9c62-ffa1b5197778", "e684b187-d622-4614-891e-beba5b1e162e"],
"recipientEmails": ["foo@bah.com"]
}
Meetings
|
Field |
Type |
Description |
|
meetingId |
number |
ID of coaching meeting |
|
planId |
number |
ID of coaching plan |
|
coachId |
string |
user ID of coach |
|
recipientId |
string |
user ID of recipient |
|
startTime |
string |
meeting start date and time |
|
endTime |
string |
meeting end date and time |
|
scores |
object |
the skill name and score for each skill reviewed in the meeting |
|
callReviews |
array of objects |
an array of calls reviewed in meeting with:
|
|
questions |
array of objects |
an array of review type questions (see Meeting Questions) |
|
comments |
string or null |
review comments provided, if any |
|
modified |
string |
last modified timestamp in ISO 8601 format |
{
"meetingId": 9266,
"planId": 3913,
"dateTime": "2020-08-17T15:00:00-04:00", // scheduled time
"coachId": "51d91544-8fef-4fe3-92f7-89d3c1c2f4ff",
"recipientId": "460a5f56-cf06-4252-b4be-c3b4220fb767",
"startTime": "2020-08-12T08:46:45.23184-04:00",
"endTime": "2020-08-12T08:46:52.408-04:00",
"scores": { // skill name to overall score for the skill, as a percent
"Challenges": 20
},
"callReviews": [ // calls + scorecard questions go here
{
"callId": "8fa41d84-a060-4e0f-95bf-d315da545e5c",
"questions": [ // scorecard questions relevant to the call.
{
"question": "Did the rep ask probing questions to uncover challenges?",
"possibleScore": 5, // always 5 for scorecard questions
"actualScore": 1,
"reviewWeight": null // always null for scorecard questions
}
]
},
{
"callId": "59bc0458-fb35-4163-8303-70ce6164e4e4",
"questions": [
{
"question": "Did the rep ask probing questions to uncover challenges?",
"possibleScore": 5,
"actualScore": 1,
"reviewWeight": null
}
]
}
],
"questions": [ // review type questions go here
{
// For text questions, the possible score and actual score will always be null, and the weight will always be 0.
"question": "This is a text question",
"possibleScore": null,
"actualScore": null,
"reviewWeight": 0
},
{
"question": "Does the rep pull it off?",
"possibleScore": 5,
"actualScore": 5,
"reviewWeight": 34
}
],
"comments": "asdfgsd fg" // general review comments, null if none.
"modified": "2020-08-12T08:46:52.408-04:00"
}
Meeting Questions
|
Field |
Type |
Description |
|
question |
string |
text of question |
|
possibleScore |
number |
max possible value of score |
|
actualScore |
number |
score given to question |
|
reviewWeight |
number |
relative weight of score relative to other scores |
Example:
{
"question": "Does the rep pull it off?",
"possibleScore": 5,
"actualScore": 5,
"reviewWeight": 34
}
Plans
|
Field |
Type |
Description |
|
planId |
string |
ID of plan |
|
name |
string |
Name of plan |
|
objective |
string |
the objective of the plan |
|
coachId |
boolean |
user ID of coach |
|
recipientId |
boolean |
user ID of recipient |
|
plannedMeetings |
number |
number of meetings planned |
|
completedMeetings |
number |
number of meetings completed |
|
estimatedMissedMeetings |
number |
estimated number of meetings in past schedule but missed |
|
skill |
array of objects |
array of skills included in plan each with fields:
|
|
modified |
string |
last modified timestamp in ISO 8601 format |
Example:
{
"planId": 3789,
"name": "Lead In, Pre-call Research, Aug 2020-Dec 2020",
"objective": "Alon Kostetsky should improve skills: Lead In, Pre-call Research",
"startDate": "2020-08-06T13:41:35.135707-04:00",
"coachId": "5322d716-caec-4336-95e0-3fc1ce577455",
"recipientId": "a12fac0e-63fc-4f3a-bffb-e2493139bc9d",
"plannedMeetings": 20, // number of expected meetings
"completedMeetings": 2, // number of completed meetings
// approximate number of meetings that should have happened but didn't. Determined by
// counting from plan start until completion (or date of request, for open plans) and
// subtracting completed meetings.
"estimatedMissedMeetings": 1,
"skill": [ // skills associated with the plan
{
"skillId": 44,
"skillName": "Lead In"
},
{
"skillId": 8750,
"skillName": "Pre-call Research"
}
],
"modified": 2020-08-06T13:41:35.135707-04:00"
},
KPI Observation
|
Field |
Type |
Description |
|
|
string |
date and time when shared in ISO 8601 format |
|
|
string |
user ID of observer |
|
|
string |
user ID of observed |
|
|
number |
ID of KPI |
|
|
number |
value of KPI |
|
modified |
string |
last modified timestamp in ISO 8601 format |
{
"observedAt": "2021-06-25T10:32:00Z",
"observerId": "224",
"observedId": "224",
"kpiId": 3,
"value": 18.56,
"modified": "2021-06-25T10:32:00Z"
}
KPI Definition
|
Field |
Type |
Description |
|
kpiId |
number |
ID of kpi |
|
description |
string |
description of kpi |
|
frequency |
string |
frequency of kpi: DAILY, WEEKLY, MONTHLY, QUARTERLY |
|
target |
number |
target value of kpi |
{
"kpiId": 1,
"description": "Linking goals",
"frequency": "MONTHLY",
"target": 23.23
}
Simplified Transcript<button class="cc-1r0b9w7" style="font-family: inherit; display: inline; outline: none; background-color: transparent; border: none; color: var(--ds-icon, #42526e); cursor: pointer; right: 0px; padding-left: 0px; padding-right: 0px; opacity: 0; transform: translate(-8px, 0px); transition: opacity 0.2s ease 0s, transform 0.2s ease 0s;" aria-label="Copy link to heading" type="button"></button>
Fields:
|
Field |
Type |
Description |
|---|---|---|
|
speakers |
array of objects |
Speakers on the call |
|
transcript |
array of objects |
The transcript. Each object contains text from a single speaker. |
Speaker fields:
|
Field |
Type |
Description |
|---|---|---|
|
|
string or null |
speaker’s email |
|
firstName |
string or null |
speaker’s first name |
|
lastName |
string or null |
speaker’s last name |
|
speakerNumber |
number |
integer speaker number, which corresponds to the same field in the transcript object and can be used to match speakers with text |
|
speakerType |
string |
one of INTERNAL (speaker matched a coach user), EXTERNAL (speaker matched a CRM contact), UNKNOWN (we didn’t match the speaker) |
Transcript fields:
|
Field |
Type |
Description |
|---|---|---|
|
endTime |
number |
end of the text, in seconds since the start of the call |
|
speakerNumber |
number |
integer speaker number corresponding to the speaker of this portion of the call (see speakers above) |
|
startTime |
number |
start time of the text, in seconds since the start of the call |
|
text |
string |
the spoken text |
Replies have been locked on this page!