curl --request POST \
--url https://production-api.joinrings.com/v1/companies \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"acquisition_status": "<string>",
"business_model": "<string>",
"city": "<string>",
"company_custom_fields": {},
"company_name": "<string>",
"company_type": "<string>",
"country": "<string>",
"description": "<string>",
"email": "<string>",
"employee_count": "<string>",
"facebook_url": "<string>",
"ipo_status": "<string>",
"linkedin_url": "<string>",
"logo_url": "<string>",
"operating_status": "<string>",
"phone": "<string>",
"region": "<string>",
"sector": "<string>",
"state": "<string>",
"street_address": "<string>",
"thesis_area": "<string>",
"twitter_url": "<string>",
"website": "<string>",
"year_founded": "<string>"
}
'import requests
url = "https://production-api.joinrings.com/v1/companies"
payload = {
"acquisition_status": "<string>",
"business_model": "<string>",
"city": "<string>",
"company_custom_fields": {},
"company_name": "<string>",
"company_type": "<string>",
"country": "<string>",
"description": "<string>",
"email": "<string>",
"employee_count": "<string>",
"facebook_url": "<string>",
"ipo_status": "<string>",
"linkedin_url": "<string>",
"logo_url": "<string>",
"operating_status": "<string>",
"phone": "<string>",
"region": "<string>",
"sector": "<string>",
"state": "<string>",
"street_address": "<string>",
"thesis_area": "<string>",
"twitter_url": "<string>",
"website": "<string>",
"year_founded": "<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({
acquisition_status: '<string>',
business_model: '<string>',
city: '<string>',
company_custom_fields: {},
company_name: '<string>',
company_type: '<string>',
country: '<string>',
description: '<string>',
email: '<string>',
employee_count: '<string>',
facebook_url: '<string>',
ipo_status: '<string>',
linkedin_url: '<string>',
logo_url: '<string>',
operating_status: '<string>',
phone: '<string>',
region: '<string>',
sector: '<string>',
state: '<string>',
street_address: '<string>',
thesis_area: '<string>',
twitter_url: '<string>',
website: '<string>',
year_founded: '<string>'
})
};
fetch('https://production-api.joinrings.com/v1/companies', 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/companies",
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([
'acquisition_status' => '<string>',
'business_model' => '<string>',
'city' => '<string>',
'company_custom_fields' => [
],
'company_name' => '<string>',
'company_type' => '<string>',
'country' => '<string>',
'description' => '<string>',
'email' => '<string>',
'employee_count' => '<string>',
'facebook_url' => '<string>',
'ipo_status' => '<string>',
'linkedin_url' => '<string>',
'logo_url' => '<string>',
'operating_status' => '<string>',
'phone' => '<string>',
'region' => '<string>',
'sector' => '<string>',
'state' => '<string>',
'street_address' => '<string>',
'thesis_area' => '<string>',
'twitter_url' => '<string>',
'website' => '<string>',
'year_founded' => '<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/companies"
payload := strings.NewReader("{\n \"acquisition_status\": \"<string>\",\n \"business_model\": \"<string>\",\n \"city\": \"<string>\",\n \"company_custom_fields\": {},\n \"company_name\": \"<string>\",\n \"company_type\": \"<string>\",\n \"country\": \"<string>\",\n \"description\": \"<string>\",\n \"email\": \"<string>\",\n \"employee_count\": \"<string>\",\n \"facebook_url\": \"<string>\",\n \"ipo_status\": \"<string>\",\n \"linkedin_url\": \"<string>\",\n \"logo_url\": \"<string>\",\n \"operating_status\": \"<string>\",\n \"phone\": \"<string>\",\n \"region\": \"<string>\",\n \"sector\": \"<string>\",\n \"state\": \"<string>\",\n \"street_address\": \"<string>\",\n \"thesis_area\": \"<string>\",\n \"twitter_url\": \"<string>\",\n \"website\": \"<string>\",\n \"year_founded\": \"<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/companies")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"acquisition_status\": \"<string>\",\n \"business_model\": \"<string>\",\n \"city\": \"<string>\",\n \"company_custom_fields\": {},\n \"company_name\": \"<string>\",\n \"company_type\": \"<string>\",\n \"country\": \"<string>\",\n \"description\": \"<string>\",\n \"email\": \"<string>\",\n \"employee_count\": \"<string>\",\n \"facebook_url\": \"<string>\",\n \"ipo_status\": \"<string>\",\n \"linkedin_url\": \"<string>\",\n \"logo_url\": \"<string>\",\n \"operating_status\": \"<string>\",\n \"phone\": \"<string>\",\n \"region\": \"<string>\",\n \"sector\": \"<string>\",\n \"state\": \"<string>\",\n \"street_address\": \"<string>\",\n \"thesis_area\": \"<string>\",\n \"twitter_url\": \"<string>\",\n \"website\": \"<string>\",\n \"year_founded\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://production-api.joinrings.com/v1/companies")
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 \"acquisition_status\": \"<string>\",\n \"business_model\": \"<string>\",\n \"city\": \"<string>\",\n \"company_custom_fields\": {},\n \"company_name\": \"<string>\",\n \"company_type\": \"<string>\",\n \"country\": \"<string>\",\n \"description\": \"<string>\",\n \"email\": \"<string>\",\n \"employee_count\": \"<string>\",\n \"facebook_url\": \"<string>\",\n \"ipo_status\": \"<string>\",\n \"linkedin_url\": \"<string>\",\n \"logo_url\": \"<string>\",\n \"operating_status\": \"<string>\",\n \"phone\": \"<string>\",\n \"region\": \"<string>\",\n \"sector\": \"<string>\",\n \"state\": \"<string>\",\n \"street_address\": \"<string>\",\n \"thesis_area\": \"<string>\",\n \"twitter_url\": \"<string>\",\n \"website\": \"<string>\",\n \"year_founded\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"rings_updated_at": 123,
"uuid": "<string>"
}Create a company
Dedupe: if the payload’s linkedin_url or website matches an
existing tenant-visible company (including Rings’ global company
records), that record’s UUID is reused so your company converges onto
the existing entity instead of creating a duplicate. If no match is
found, a new UUID is generated.
curl --request POST \
--url https://production-api.joinrings.com/v1/companies \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"acquisition_status": "<string>",
"business_model": "<string>",
"city": "<string>",
"company_custom_fields": {},
"company_name": "<string>",
"company_type": "<string>",
"country": "<string>",
"description": "<string>",
"email": "<string>",
"employee_count": "<string>",
"facebook_url": "<string>",
"ipo_status": "<string>",
"linkedin_url": "<string>",
"logo_url": "<string>",
"operating_status": "<string>",
"phone": "<string>",
"region": "<string>",
"sector": "<string>",
"state": "<string>",
"street_address": "<string>",
"thesis_area": "<string>",
"twitter_url": "<string>",
"website": "<string>",
"year_founded": "<string>"
}
'import requests
url = "https://production-api.joinrings.com/v1/companies"
payload = {
"acquisition_status": "<string>",
"business_model": "<string>",
"city": "<string>",
"company_custom_fields": {},
"company_name": "<string>",
"company_type": "<string>",
"country": "<string>",
"description": "<string>",
"email": "<string>",
"employee_count": "<string>",
"facebook_url": "<string>",
"ipo_status": "<string>",
"linkedin_url": "<string>",
"logo_url": "<string>",
"operating_status": "<string>",
"phone": "<string>",
"region": "<string>",
"sector": "<string>",
"state": "<string>",
"street_address": "<string>",
"thesis_area": "<string>",
"twitter_url": "<string>",
"website": "<string>",
"year_founded": "<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({
acquisition_status: '<string>',
business_model: '<string>',
city: '<string>',
company_custom_fields: {},
company_name: '<string>',
company_type: '<string>',
country: '<string>',
description: '<string>',
email: '<string>',
employee_count: '<string>',
facebook_url: '<string>',
ipo_status: '<string>',
linkedin_url: '<string>',
logo_url: '<string>',
operating_status: '<string>',
phone: '<string>',
region: '<string>',
sector: '<string>',
state: '<string>',
street_address: '<string>',
thesis_area: '<string>',
twitter_url: '<string>',
website: '<string>',
year_founded: '<string>'
})
};
fetch('https://production-api.joinrings.com/v1/companies', 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/companies",
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([
'acquisition_status' => '<string>',
'business_model' => '<string>',
'city' => '<string>',
'company_custom_fields' => [
],
'company_name' => '<string>',
'company_type' => '<string>',
'country' => '<string>',
'description' => '<string>',
'email' => '<string>',
'employee_count' => '<string>',
'facebook_url' => '<string>',
'ipo_status' => '<string>',
'linkedin_url' => '<string>',
'logo_url' => '<string>',
'operating_status' => '<string>',
'phone' => '<string>',
'region' => '<string>',
'sector' => '<string>',
'state' => '<string>',
'street_address' => '<string>',
'thesis_area' => '<string>',
'twitter_url' => '<string>',
'website' => '<string>',
'year_founded' => '<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/companies"
payload := strings.NewReader("{\n \"acquisition_status\": \"<string>\",\n \"business_model\": \"<string>\",\n \"city\": \"<string>\",\n \"company_custom_fields\": {},\n \"company_name\": \"<string>\",\n \"company_type\": \"<string>\",\n \"country\": \"<string>\",\n \"description\": \"<string>\",\n \"email\": \"<string>\",\n \"employee_count\": \"<string>\",\n \"facebook_url\": \"<string>\",\n \"ipo_status\": \"<string>\",\n \"linkedin_url\": \"<string>\",\n \"logo_url\": \"<string>\",\n \"operating_status\": \"<string>\",\n \"phone\": \"<string>\",\n \"region\": \"<string>\",\n \"sector\": \"<string>\",\n \"state\": \"<string>\",\n \"street_address\": \"<string>\",\n \"thesis_area\": \"<string>\",\n \"twitter_url\": \"<string>\",\n \"website\": \"<string>\",\n \"year_founded\": \"<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/companies")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"acquisition_status\": \"<string>\",\n \"business_model\": \"<string>\",\n \"city\": \"<string>\",\n \"company_custom_fields\": {},\n \"company_name\": \"<string>\",\n \"company_type\": \"<string>\",\n \"country\": \"<string>\",\n \"description\": \"<string>\",\n \"email\": \"<string>\",\n \"employee_count\": \"<string>\",\n \"facebook_url\": \"<string>\",\n \"ipo_status\": \"<string>\",\n \"linkedin_url\": \"<string>\",\n \"logo_url\": \"<string>\",\n \"operating_status\": \"<string>\",\n \"phone\": \"<string>\",\n \"region\": \"<string>\",\n \"sector\": \"<string>\",\n \"state\": \"<string>\",\n \"street_address\": \"<string>\",\n \"thesis_area\": \"<string>\",\n \"twitter_url\": \"<string>\",\n \"website\": \"<string>\",\n \"year_founded\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://production-api.joinrings.com/v1/companies")
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 \"acquisition_status\": \"<string>\",\n \"business_model\": \"<string>\",\n \"city\": \"<string>\",\n \"company_custom_fields\": {},\n \"company_name\": \"<string>\",\n \"company_type\": \"<string>\",\n \"country\": \"<string>\",\n \"description\": \"<string>\",\n \"email\": \"<string>\",\n \"employee_count\": \"<string>\",\n \"facebook_url\": \"<string>\",\n \"ipo_status\": \"<string>\",\n \"linkedin_url\": \"<string>\",\n \"logo_url\": \"<string>\",\n \"operating_status\": \"<string>\",\n \"phone\": \"<string>\",\n \"region\": \"<string>\",\n \"sector\": \"<string>\",\n \"state\": \"<string>\",\n \"street_address\": \"<string>\",\n \"thesis_area\": \"<string>\",\n \"twitter_url\": \"<string>\",\n \"website\": \"<string>\",\n \"year_founded\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"rings_updated_at": 123,
"uuid": "<string>"
}Authorizations
Body
City name, e.g. 'Los Angeles'.
Internal/custom field values to set, keyed by the field's key from GET /v1/companies/custom-fields (not its UUID; unknown keys are ignored). Only the keys present are written; null clears a field and keys left out keep their values. An invalid value fails the request with 400 naming the field, before anything is written.
An empty, whitespace-only or '_blank' name is rejected with 400.
ISO 3166-1 alpha-2 country code, e.g. 'US'. An alpha-3 code, an ISO country name (accents optional) or a common alias such as 'UK' or 'UAE' is accepted and stored as the alpha-2 code; anything else is rejected with 400.
Employee count band, not an exact number — a range string like '11-50' or the sentinel '10000+' (matches the format used by GET /v1/companies' employee_count_from/to filters).
Free-text geographic region label, stored as given. Not resolved against any code table and not used by the GET /v1/companies location filters.
Full ISO 3166-2 subdivision code including the country prefix, e.g. 'US-CA'. A full code sent without country also sets country to its prefix. A bare code ('CA') or the ISO subdivision name ('California', accents optional) is accepted and stored as the full code, resolved against country when it is sent and against the company's stored country on update otherwise. Anything else is rejected with 400.