curl --fail-with-body --max-time 30 "https://api.freshtalent.ai/v1/signals/preferences" \
-H "Authorization: Bearer $FRESHTALENT_API_KEY"
const response = await fetch("https://api.freshtalent.ai/v1/signals/preferences", {
signal: AbortSignal.timeout(30_000), headers: { Authorization: `Bearer ${process.env.FRESHTALENT_API_KEY}` },
});
if (!response.ok) throw new Error(`FreshTalent HTTP ${response.status}`);
const preferences = (await response.json()).data;
console.log(preferences.fields, preferences.email_enabled);
import json
import os
from urllib.request import Request, urlopen
request = Request(
"https://api.freshtalent.ai/v1/signals/preferences",
headers={"Authorization": "Bearer " + os.environ["FRESHTALENT_API_KEY"]},
)
with urlopen(request, timeout=30) as response:
preferences = json.load(response)["data"]
print(preferences["fields"], preferences["email_enabled"])
Get notification preferences
Read graph-wide profile-diff subscriptions and email/Slack delivery settings.
GET
/
signals
/
preferences
curl --fail-with-body --max-time 30 "https://api.freshtalent.ai/v1/signals/preferences" \
-H "Authorization: Bearer $FRESHTALENT_API_KEY"
const response = await fetch("https://api.freshtalent.ai/v1/signals/preferences", {
signal: AbortSignal.timeout(30_000), headers: { Authorization: `Bearer ${process.env.FRESHTALENT_API_KEY}` },
});
if (!response.ok) throw new Error(`FreshTalent HTTP ${response.status}`);
const preferences = (await response.json()).data;
console.log(preferences.fields, preferences.email_enabled);
import json
import os
from urllib.request import Request, urlopen
request = Request(
"https://api.freshtalent.ai/v1/signals/preferences",
headers={"Authorization": "Bearer " + os.environ["FRESHTALENT_API_KEY"]},
)
with urlopen(request, timeout=30) as response:
preferences = json.load(response)["data"]
print(preferences["fields"], preferences["email_enabled"])
Returns the authenticated organization’s notification preferences. These preferences control which profile diffs are eligible for graph-wide email and Slack notifications; they do not change the membership-scoped List events feed. Slack OAuth installation itself happens in the dashboard under Settings → Notifications.
This read is safe to retry on transient network failures,
Inputs
There are no path parameters, query parameters, or request body fields.Response
200
{
"data": {
"org_id": "a7590925-3e96-4f89-898c-bf7ed02fbd97",
"fields": ["open_to_work", "left_company", "joined_company", "removed_position"],
"email_enabled": true,
"emails": ["you@acme.com"],
"slack_enabled": true,
"slack_channel_id": "C0123",
"slack_channel_name": "recruiting"
}
}
org_id is a string. fields, emails, and the two enabled flags are non-nullable. slack_channel_id and slack_channel_name are string | null when no channel is stored.
Known fields are open_to_work, between_roles, exploring, left_company, joined_company, removed_position, headline, about, and role_description. When no saved row is available, the service falls back to defaults (including on a preference-read database error). These defaults are: open_to_work, between_roles, left_company, joined_company, and removed_position; email is enabled; emails is empty; Slack is disabled; and both Slack channel values are null.
The API returns no webhook URL or secret. Use Update notification preferences to store those organization settings; the response only exposes webhook.configured on the update, and Get account exposes the same boolean.
Errors and retries
| Status | Meaning | Recovery |
|---|---|---|
400 | Invalid platform-org scoping header | Correct X-FreshTalent-Org-Id, or omit it for a customer key. |
401 | Missing, malformed, or revoked API key | Supply a valid key. |
429 | Shared Gateway limit exceeded | Honor Retry-After and back off. |
5xx | Gateway or dependency failure | Retry this read with bounded backoff. |
429, or 5xx. Do not retry 400 or 401 unchanged. The default Gateway limit is 300 requests per minute per client IP, not per API key.
curl --fail-with-body --max-time 30 "https://api.freshtalent.ai/v1/signals/preferences" \
-H "Authorization: Bearer $FRESHTALENT_API_KEY"
const response = await fetch("https://api.freshtalent.ai/v1/signals/preferences", {
signal: AbortSignal.timeout(30_000), headers: { Authorization: `Bearer ${process.env.FRESHTALENT_API_KEY}` },
});
if (!response.ok) throw new Error(`FreshTalent HTTP ${response.status}`);
const preferences = (await response.json()).data;
console.log(preferences.fields, preferences.email_enabled);
import json
import os
from urllib.request import Request, urlopen
request = Request(
"https://api.freshtalent.ai/v1/signals/preferences",
headers={"Authorization": "Bearer " + os.environ["FRESHTALENT_API_KEY"]},
)
with urlopen(request, timeout=30) as response:
preferences = json.load(response)["data"]
print(preferences["fields"], preferences["email_enabled"])