curl --request GET \
--url https://production-api.joinrings.com/v1/intros/insights \
--header 'x-api-key: <api-key>'import requests
url = "https://production-api.joinrings.com/v1/intros/insights"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://production-api.joinrings.com/v1/intros/insights', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://production-api.joinrings.com/v1/intros/insights",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://production-api.joinrings.com/v1/intros/insights"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://production-api.joinrings.com/v1/intros/insights")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://production-api.joinrings.com/v1/intros/insights")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"view": "summary",
"gone_quiet": [
{
"company_name": "<string>",
"days_silent": 123,
"intro_count": 123,
"last_intro_date": "<string>",
"name": "<string>",
"person_uuid": "<string>",
"positive_intro_count": 123
}
],
"page": 123,
"per_page": 123,
"reciprocity": [
{
"company_name": "<string>",
"given_count": 123,
"last_intro_date": "<string>",
"name": "<string>",
"net_count": 123,
"person_uuid": "<string>",
"received_count": 123
}
],
"source_types": [
{
"group": "<string>",
"inbound_count": 123,
"intro_count": 123,
"label": "<string>",
"outbound_count": 123,
"percentage": 123,
"positive_intro_count": 123,
"positive_rate": 123,
"source_type_uuid": "<string>"
}
],
"summary": {
"by_record_source": [
{
"intro_count": 123,
"percentage": 123,
"positive_rate": 123,
"source": "MANUAL"
}
],
"inbound_intros": 123,
"outbound_intros": 123,
"outcome_mix": [
{
"count": 123,
"is_positive": true,
"label": "<string>",
"outcome_uuid": "<string>",
"percentage": 123
}
],
"pending_outcome": 123,
"positive_intros": 123,
"positive_rate": 123,
"total_intros": 123,
"with_outcome": 123
},
"team": [
{
"inbound_received": 123,
"last_intro_date": "<string>",
"name": "<string>",
"outbound_given": 123,
"person_uuid": "<string>",
"positive_intros": 123,
"positive_rate": 123,
"total_intros": 123,
"user_uuid": "<string>"
}
],
"top_introducers": [
{
"company_name": "<string>",
"current_priority": 123,
"intro_count": 123,
"last_intro_date": "<string>",
"name": "<string>",
"person_uuid": "<string>",
"positive_intro_count": 123,
"recommended_priority": 123,
"should_raise_priority": true
}
],
"total": 123,
"trend": [
{
"inbound_count": 123,
"month_start": "<string>",
"outbound_count": 123,
"total_count": 123
}
]
}Get intro insights
Answers questions like: who are our best referral sources
(top_introducers), which introducers have gone quiet (gone_quiet),
who do we owe an intro (reciprocity), what is our intro success rate
(summary), and who on the team makes the most intros (team). An
intro is positive when its outcome is at or past the tenant’s success
threshold (see /v1/intros/options).
curl --request GET \
--url https://production-api.joinrings.com/v1/intros/insights \
--header 'x-api-key: <api-key>'import requests
url = "https://production-api.joinrings.com/v1/intros/insights"
headers = {"x-api-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-api-key': '<api-key>'}};
fetch('https://production-api.joinrings.com/v1/intros/insights', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://production-api.joinrings.com/v1/intros/insights",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://production-api.joinrings.com/v1/intros/insights"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-api-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://production-api.joinrings.com/v1/intros/insights")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://production-api.joinrings.com/v1/intros/insights")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-api-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"view": "summary",
"gone_quiet": [
{
"company_name": "<string>",
"days_silent": 123,
"intro_count": 123,
"last_intro_date": "<string>",
"name": "<string>",
"person_uuid": "<string>",
"positive_intro_count": 123
}
],
"page": 123,
"per_page": 123,
"reciprocity": [
{
"company_name": "<string>",
"given_count": 123,
"last_intro_date": "<string>",
"name": "<string>",
"net_count": 123,
"person_uuid": "<string>",
"received_count": 123
}
],
"source_types": [
{
"group": "<string>",
"inbound_count": 123,
"intro_count": 123,
"label": "<string>",
"outbound_count": 123,
"percentage": 123,
"positive_intro_count": 123,
"positive_rate": 123,
"source_type_uuid": "<string>"
}
],
"summary": {
"by_record_source": [
{
"intro_count": 123,
"percentage": 123,
"positive_rate": 123,
"source": "MANUAL"
}
],
"inbound_intros": 123,
"outbound_intros": 123,
"outcome_mix": [
{
"count": 123,
"is_positive": true,
"label": "<string>",
"outcome_uuid": "<string>",
"percentage": 123
}
],
"pending_outcome": 123,
"positive_intros": 123,
"positive_rate": 123,
"total_intros": 123,
"with_outcome": 123
},
"team": [
{
"inbound_received": 123,
"last_intro_date": "<string>",
"name": "<string>",
"outbound_given": 123,
"person_uuid": "<string>",
"positive_intros": 123,
"positive_rate": 123,
"total_intros": 123,
"user_uuid": "<string>"
}
],
"top_introducers": [
{
"company_name": "<string>",
"current_priority": 123,
"intro_count": 123,
"last_intro_date": "<string>",
"name": "<string>",
"person_uuid": "<string>",
"positive_intro_count": 123,
"recommended_priority": 123,
"should_raise_priority": true
}
],
"total": 123,
"trend": [
{
"inbound_count": 123,
"month_start": "<string>",
"outbound_count": 123,
"total_count": 123
}
]
}Authorizations
Query Parameters
Which section to return. summary: totals, positive rate, outcome mix and record-source breakdown. top_introducers: best outside referrers, with current vs recommended relationship priority. gone_quiet: outside introducers with no intro in quiet_days. team: intros given and received per team member. reciprocity: intros given vs received per outside person. source_types: performance per source type. trend: monthly inbound/outbound counts.
summary, top_introducers, gone_quiet, team, reciprocity, source_types, trend Only intros on or after this day, YYYY-MM-DD.
Only intros on or before this day, YYYY-MM-DD.
For gone_quiet: days without an intro.
Page number, 1-indexed.
Rows per page (default 10, max 50). Ignored for summary. For trend, one row is one month.
Response
One analytics section. Only the field named by view is set.
summary, top_introducers, gone_quiet, team, reciprocity, source_types, trend Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes