Get Columns
curl --request GET \
--url https://api.revenuebase.ai/v2/contact/columns \
--header 'X-Key: <api-key>'import requests
url = "https://api.revenuebase.ai/v2/contact/columns"
headers = {"X-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-Key': '<api-key>'}};
fetch('https://api.revenuebase.ai/v2/contact/columns', 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://api.revenuebase.ai/v2/contact/columns",
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-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://api.revenuebase.ai/v2/contact/columns"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-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://api.revenuebase.ai/v2/contact/columns")
.header("X-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.revenuebase.ai/v2/contact/columns")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"columns": [
{
"columnName": "JOB_LEVEL_PER",
"humanName": "Job Level",
"sourceType": "LowCardinality(Nullable(String))",
"multiselect": true,
"valueLimit": 50,
"distinctValues": [
"C-Team",
"Director",
"Manager",
"Other",
"Staff",
"VP"
],
"distinctValuesTruncated": false
}
],
"previewDefaultLimit": 1000,
"previewMaxLimit": 50000,
"exportMaxRows": 1000000,
"valuesIncluded": true
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Contact Endpoints
Columns
Discover supported contact fields, default projections, and filter-picker values.
GET
/
columns
Get Columns
curl --request GET \
--url https://api.revenuebase.ai/v2/contact/columns \
--header 'X-Key: <api-key>'import requests
url = "https://api.revenuebase.ai/v2/contact/columns"
headers = {"X-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-Key': '<api-key>'}};
fetch('https://api.revenuebase.ai/v2/contact/columns', 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://api.revenuebase.ai/v2/contact/columns",
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-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://api.revenuebase.ai/v2/contact/columns"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-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://api.revenuebase.ai/v2/contact/columns")
.header("X-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.revenuebase.ai/v2/contact/columns")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"columns": [
{
"columnName": "JOB_LEVEL_PER",
"humanName": "Job Level",
"sourceType": "LowCardinality(Nullable(String))",
"multiselect": true,
"valueLimit": 50,
"distinctValues": [
"C-Team",
"Director",
"Manager",
"Other",
"Staff",
"VP"
],
"distinctValuesTruncated": false
}
],
"previewDefaultLimit": 1000,
"previewMaxLimit": 50000,
"exportMaxRows": 1000000,
"valuesIncluded": true
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>",
"input": "<unknown>",
"ctx": {}
}
]
}Credits and plans
PAYG is Pay-as-you-go. AYCE is All-you-can-eat.| Usage | PAYG | AYCE |
|---|---|---|
| Column catalog and embedded values | Free 0 credits | Free 0 credits |
When to use Columns
Discover supported fields before writing a filter or choosing output columns. This catalog covers person, job, and company fields available on contact records. Use Company Columns for company-only requests.Example
SetREVENUEBASE_API_KEY to your API key.
curl --request GET 'https://api.revenuebase.ai/v2/contact/columns?include=values' \
--header "X-Key: $REVENUEBASE_API_KEY"
{
"columns": [
{
"columnName": "JOB_LEVEL_PER",
"humanName": "Job Level",
"sourceType": "LowCardinality(Nullable(String))",
"multiselect": true,
"valueLimit": 50,
"distinctValues": [
"C-Team",
"Director",
"Manager",
"Other",
"Staff",
"VP"
],
"distinctValuesTruncated": false
}
],
"previewDefaultLimit": 1000,
"previewMaxLimit": 50000,
"exportMaxRows": 1000000,
"valuesIncluded": true
}
Read the catalog
| Field | Meaning |
|---|---|
columns | Field metadata, including columnName, humanName, sourceType, and filter behavior. |
defaultColumns | Default contact Preview projection. Set columns explicitly when you need a specific response. |
multiselectColumns | Enumerable fields suitable for a filter picker. |
valueLimit | Vocabulary cap on an enumerable field. |
distinctValues | Embedded options for a picker field when include=values is requested. |
distinctValuesTruncated | True if the embedded vocabulary is incomplete. |
previewDefaultLimit, previewMaxLimit, exportMaxRows | Current retrieval defaults and caps. |
valuesIncluded | True when embedded vocabularies were requested. |
Fetch picker values in one request
Without include=values, the request returns field metadata. Add include=values to warm all available filter pickers in one call instead of making a separate request for every field. Cache the catalog in your application and refresh it periodically. X-Cache reports a cache hit or miss when present. Open-ended text, such as job titles and company names, is searched rather than enumerated. For one bounded vocabulary, use Column Values.Limits and next steps
Contact and company routes share the default 10 requests per second per user. Wait for the reset time or Retry-After when rate limited; coordinate requests across your workers and API keys. Build a search filter from the returned fields, then Count the audience.Was this page helpful?
