curl --request POST \
--url https://production-api.joinrings.com/v1/intros \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"introduced": [
{
"entity_uuid": "<string>"
}
],
"details": "<string>",
"intro_date": "<string>",
"introduced_to": [
{
"entity_uuid": "<string>"
}
],
"introducer": {
"entity_uuid": "<string>"
},
"outcome": "<string>",
"source_type": "<string>"
}
'import requests
url = "https://production-api.joinrings.com/v1/intros"
payload = {
"introduced": [{ "entity_uuid": "<string>" }],
"details": "<string>",
"intro_date": "<string>",
"introduced_to": [{ "entity_uuid": "<string>" }],
"introducer": { "entity_uuid": "<string>" },
"outcome": "<string>",
"source_type": "<string>"
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
introduced: [{entity_uuid: '<string>'}],
details: '<string>',
intro_date: '<string>',
introduced_to: [{entity_uuid: '<string>'}],
introducer: {entity_uuid: '<string>'},
outcome: '<string>',
source_type: '<string>'
})
};
fetch('https://production-api.joinrings.com/v1/intros', 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",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'introduced' => [
[
'entity_uuid' => '<string>'
]
],
'details' => '<string>',
'intro_date' => '<string>',
'introduced_to' => [
[
'entity_uuid' => '<string>'
]
],
'introducer' => [
'entity_uuid' => '<string>'
],
'outcome' => '<string>',
'source_type' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://production-api.joinrings.com/v1/intros"
payload := strings.NewReader("{\n \"introduced\": [\n {\n \"entity_uuid\": \"<string>\"\n }\n ],\n \"details\": \"<string>\",\n \"intro_date\": \"<string>\",\n \"introduced_to\": [\n {\n \"entity_uuid\": \"<string>\"\n }\n ],\n \"introducer\": {\n \"entity_uuid\": \"<string>\"\n },\n \"outcome\": \"<string>\",\n \"source_type\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://production-api.joinrings.com/v1/intros")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"introduced\": [\n {\n \"entity_uuid\": \"<string>\"\n }\n ],\n \"details\": \"<string>\",\n \"intro_date\": \"<string>\",\n \"introduced_to\": [\n {\n \"entity_uuid\": \"<string>\"\n }\n ],\n \"introducer\": {\n \"entity_uuid\": \"<string>\"\n },\n \"outcome\": \"<string>\",\n \"source_type\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://production-api.joinrings.com/v1/intros")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"introduced\": [\n {\n \"entity_uuid\": \"<string>\"\n }\n ],\n \"details\": \"<string>\",\n \"intro_date\": \"<string>\",\n \"introduced_to\": [\n {\n \"entity_uuid\": \"<string>\"\n }\n ],\n \"introducer\": {\n \"entity_uuid\": \"<string>\"\n },\n \"outcome\": \"<string>\",\n \"source_type\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"confidence": 123,
"created_at": "<string>",
"created_by_user_uuid": "<string>",
"details": "<string>",
"details_hidden": true,
"direction": "INBOUND",
"intro_date": "<string>",
"introduced": [
{
"entity_type": "PERSON",
"entity_uuid": "<string>",
"name": "<string>"
}
],
"introduced_to": [
{
"entity_type": "PERSON",
"entity_uuid": "<string>",
"name": "<string>"
}
],
"introducer": {
"entity_type": "PERSON",
"entity_uuid": "<string>",
"name": "<string>"
},
"outcome": {
"label": "<string>",
"uuid": "<string>"
},
"source": "MANUAL",
"source_email_activity_object_id": "<string>",
"source_type": {
"group": "<string>",
"label": "<string>",
"uuid": "<string>"
},
"updated_at": "<string>",
"uuid": "<string>",
"duplicate": false
}{
"confidence": 123,
"created_at": "<string>",
"created_by_user_uuid": "<string>",
"details": "<string>",
"details_hidden": true,
"direction": "INBOUND",
"intro_date": "<string>",
"introduced": [
{
"entity_type": "PERSON",
"entity_uuid": "<string>",
"name": "<string>"
}
],
"introduced_to": [
{
"entity_type": "PERSON",
"entity_uuid": "<string>",
"name": "<string>"
}
],
"introducer": {
"entity_type": "PERSON",
"entity_uuid": "<string>",
"name": "<string>"
},
"outcome": {
"label": "<string>",
"uuid": "<string>"
},
"source": "MANUAL",
"source_email_activity_object_id": "<string>",
"source_type": {
"group": "<string>",
"label": "<string>",
"uuid": "<string>"
},
"updated_at": "<string>",
"uuid": "<string>",
"duplicate": false
}Log intro
Inbound (someone outside introduced something to the firm): pass
introducer; introduced_to defaults to you. Outbound (the firm made an
intro): pass introduced_to; introducer defaults to you. Every party
must be an existing record. Returns 201 with the new intro, or 200 with
duplicate: true and the existing intro when one with the same
direction, date and parties is already logged, so retrying is safe. The
response is the saved intro; do not re-fetch it to confirm.
curl --request POST \
--url https://production-api.joinrings.com/v1/intros \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"introduced": [
{
"entity_uuid": "<string>"
}
],
"details": "<string>",
"intro_date": "<string>",
"introduced_to": [
{
"entity_uuid": "<string>"
}
],
"introducer": {
"entity_uuid": "<string>"
},
"outcome": "<string>",
"source_type": "<string>"
}
'import requests
url = "https://production-api.joinrings.com/v1/intros"
payload = {
"introduced": [{ "entity_uuid": "<string>" }],
"details": "<string>",
"intro_date": "<string>",
"introduced_to": [{ "entity_uuid": "<string>" }],
"introducer": { "entity_uuid": "<string>" },
"outcome": "<string>",
"source_type": "<string>"
}
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
introduced: [{entity_uuid: '<string>'}],
details: '<string>',
intro_date: '<string>',
introduced_to: [{entity_uuid: '<string>'}],
introducer: {entity_uuid: '<string>'},
outcome: '<string>',
source_type: '<string>'
})
};
fetch('https://production-api.joinrings.com/v1/intros', 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",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'introduced' => [
[
'entity_uuid' => '<string>'
]
],
'details' => '<string>',
'intro_date' => '<string>',
'introduced_to' => [
[
'entity_uuid' => '<string>'
]
],
'introducer' => [
'entity_uuid' => '<string>'
],
'outcome' => '<string>',
'source_type' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://production-api.joinrings.com/v1/intros"
payload := strings.NewReader("{\n \"introduced\": [\n {\n \"entity_uuid\": \"<string>\"\n }\n ],\n \"details\": \"<string>\",\n \"intro_date\": \"<string>\",\n \"introduced_to\": [\n {\n \"entity_uuid\": \"<string>\"\n }\n ],\n \"introducer\": {\n \"entity_uuid\": \"<string>\"\n },\n \"outcome\": \"<string>\",\n \"source_type\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://production-api.joinrings.com/v1/intros")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"introduced\": [\n {\n \"entity_uuid\": \"<string>\"\n }\n ],\n \"details\": \"<string>\",\n \"intro_date\": \"<string>\",\n \"introduced_to\": [\n {\n \"entity_uuid\": \"<string>\"\n }\n ],\n \"introducer\": {\n \"entity_uuid\": \"<string>\"\n },\n \"outcome\": \"<string>\",\n \"source_type\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://production-api.joinrings.com/v1/intros")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"introduced\": [\n {\n \"entity_uuid\": \"<string>\"\n }\n ],\n \"details\": \"<string>\",\n \"intro_date\": \"<string>\",\n \"introduced_to\": [\n {\n \"entity_uuid\": \"<string>\"\n }\n ],\n \"introducer\": {\n \"entity_uuid\": \"<string>\"\n },\n \"outcome\": \"<string>\",\n \"source_type\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"confidence": 123,
"created_at": "<string>",
"created_by_user_uuid": "<string>",
"details": "<string>",
"details_hidden": true,
"direction": "INBOUND",
"intro_date": "<string>",
"introduced": [
{
"entity_type": "PERSON",
"entity_uuid": "<string>",
"name": "<string>"
}
],
"introduced_to": [
{
"entity_type": "PERSON",
"entity_uuid": "<string>",
"name": "<string>"
}
],
"introducer": {
"entity_type": "PERSON",
"entity_uuid": "<string>",
"name": "<string>"
},
"outcome": {
"label": "<string>",
"uuid": "<string>"
},
"source": "MANUAL",
"source_email_activity_object_id": "<string>",
"source_type": {
"group": "<string>",
"label": "<string>",
"uuid": "<string>"
},
"updated_at": "<string>",
"uuid": "<string>",
"duplicate": false
}{
"confidence": 123,
"created_at": "<string>",
"created_by_user_uuid": "<string>",
"details": "<string>",
"details_hidden": true,
"direction": "INBOUND",
"intro_date": "<string>",
"introduced": [
{
"entity_type": "PERSON",
"entity_uuid": "<string>",
"name": "<string>"
}
],
"introduced_to": [
{
"entity_type": "PERSON",
"entity_uuid": "<string>",
"name": "<string>"
}
],
"introducer": {
"entity_type": "PERSON",
"entity_uuid": "<string>",
"name": "<string>"
},
"outcome": {
"label": "<string>",
"uuid": "<string>"
},
"source": "MANUAL",
"source_email_activity_object_id": "<string>",
"source_type": {
"group": "<string>",
"label": "<string>",
"uuid": "<string>"
},
"updated_at": "<string>",
"uuid": "<string>",
"duplicate": false
}Authorizations
Body
INBOUND: someone outside the firm introduced something to the firm. OUTBOUND: someone at the firm introduced something to someone outside.
INBOUND, OUTBOUND What was introduced: 1-5 people, companies or opportunities (inbound: what was brought to the firm; outbound: what the firm put forward).
Show child attributes
Show child attributes
Free-text background: why or how the intro happened.
Date the intro happened, YYYY-MM-DD. Defaults to today.
Who received the intro, 1-5 parties. Required for OUTBOUND (the outside recipients). Defaults to you for INBOUND.
Show child attributes
Show child attributes
Who made the intro. Required for INBOUND (the outside referrer). Defaults to you for OUTBOUND.
Show child attributes
Show child attributes
Outcome of the intro, as a label (case-insensitive, e.g. Meeting held) or an outcome UUID. Valid values come from GET /v1/intros/options. Omit while pending.
How the intro came about, as a label (e.g. Warm intro), Group / Label when a label repeats across groups, or a source type UUID. Valid values come from GET /v1/intros/options.
Response
IntroCreateResponse(uuid: str, direction: Literal['INBOUND', 'OUTBOUND'], intro_date: str, introducer: rcp_api.rest.schemas.intro.IntroPartyResponse | None, introduced: list[rcp_api.rest.schemas.intro.IntroPartyResponse], introduced_to: list[rcp_api.rest.schemas.intro.IntroPartyResponse], outcome: rcp_api.rest.schemas.intro.IntroOutcomeRef | None, source_type: rcp_api.rest.schemas.intro.IntroSourceTypeRef | None, source: Literal['MANUAL', 'EMAIL_EXTRACTION', 'MIGRATED'], details: str | None, details_hidden: bool, source_email_activity_object_id: str | None, confidence: float | None, created_by_user_uuid: str | None, created_at: str | None, updated_at: str | None, duplicate: bool = False)
Free-text background. null when details_hidden is true: the intro was found in an email you don't have access to.
INBOUND, OUTBOUND Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
null while the outcome is pending.
Show child attributes
Show child attributes
MANUAL, EMAIL_EXTRACTION, MIGRATED For intros found in email you can access: pass to /v1/activities/{activity_object_id}/body to read the email.
Show child attributes
Show child attributes
True when an intro with the same direction, date and parties already existed; that intro is returned and nothing new is created.