curl --request GET \
--url https://production-api.joinrings.com/v1/relationships/mine \
--header 'x-api-key: <api-key>'import requests
url = "https://production-api.joinrings.com/v1/relationships/mine"
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/relationships/mine', 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/relationships/mine",
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/relationships/mine"
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/relationships/mine")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://production-api.joinrings.com/v1/relationships/mine")
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{
"items": [
{}
],
"page": 123,
"per_page": 123,
"total": 123
}My relationships
Served from a per-user precomputed relationship cache. This is the individual counterpart to GET /v1/relationships: it returns only the people the bound user knows, sorted by that user’s own relationship_quality, and skips the team aggregation / overlay enrichment that the ring-wide endpoint does.
Supports the same person_city / person_state / person_country
location filters as GET /v1/relationships.
Requires a user-bound API key (USER-scoped, or a tenant key with the x-rings-user-id header) — returns 400 otherwise. Returns an empty list when the user has no relationships yet.
curl --request GET \
--url https://production-api.joinrings.com/v1/relationships/mine \
--header 'x-api-key: <api-key>'import requests
url = "https://production-api.joinrings.com/v1/relationships/mine"
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/relationships/mine', 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/relationships/mine",
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/relationships/mine"
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/relationships/mine")
.header("x-api-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://production-api.joinrings.com/v1/relationships/mine")
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{
"items": [
{}
],
"page": 123,
"per_page": 123,
"total": 123
}Authorizations
Query Parameters
Page number, 1-indexed. Clamped to >= 1.
Results per page (default 10). Clamped to the range 1-50 (values outside are silently capped, not rejected).
Opaque cursor from a previous response's next_cursor. When supplied, the page starts immediately after the last record of that response and page is ignored — unlike page, this cannot skip or repeat records when the data changes mid-scan. Filters and sort must stay identical for the whole scan; changing one is a 400. Not supported by every list endpoint — those that support it return next_cursor.
Field to sort by. Common values: 'relationship_quality', 'priority_score', 'last_activity_date' (default), 'company_score', 'person_name', 'company_name' — but any relationship field works (e.g. 'job_title', 'oldest_signal_created_at'). 'relationship_quality'/'priority_score' are aliases for the underlying 'highest_rq'/'highest_priority_score' columns. An unrecognized value silently falls back to 'last_activity_date' rather than erroring.
Sort order. Valid values: 'asc' (ascending) or 'desc' (descending).
asc, desc Comma-separated integers (1-3) to filter by exact match against each person's highest Relationship Quality (RQ) score across the ring.
Comma-separated integers (1-3) to filter by exact match against each person's highest Priority Score across the ring.
Filter by the person's primary company's AI score (company_score). Exclusive bound: matches scores strictly greater than this value (not >=).
Filter by the person's primary company's AI score (company_score). Exclusive bound: matches scores strictly less than this value (not <=).
Case-insensitive substring on the person's city (e.g. 'Los Angeles'). AND with person_state / person_country.
Person's state/region. Full name ('Florida') works on its own. A two-letter code ('FL', 'NY') is ISO 3166-2 and requires person_country ('FL' + country=US → Florida); a code without country returns 400. AND with city/country.
Person's country, name or ISO code ('US', 'United States'). Required next to a two-letter person_state. AND with city/state. Returns 400 if unrecognized.
Response
A page of relationships, ranked by relationship strength.
Each item in items is one external person with their primary company,
relationship quality (RQ), PathPower, priority signals, AI scores, entity
list memberships, and emails. total is the number of relationships
matching the request across all pages.