Returns every CRM Tried can sync to, whether the workspace has connected it, and each connection's settings. CRM sync pushes contacts and a note per analysed call to the CRM. It does not pull CRM records back into contacts.
Request#
This endpoint takes no path, query or body parameters.
Example request#
curl https://api.tried.com.au/get-crm-config \
-H "Authorization: Bearer $TRIED_API_KEY"const res = await fetch("https://api.tried.com.au/get-crm-config", {
headers: { Authorization: `Bearer ${process.env.TRIED_API_KEY}` },
});
const crm = await res.json();import os, requests
res = requests.get(
"https://api.tried.com.au/get-crm-config",
headers={"Authorization": f"Bearer {os.environ['TRIED_API_KEY']}"},
)
crm = res.json()Response#
200 OK
{
"providers": [
{ "provider": "hubspot", "required_credentials": ["access_token"], "connected": true },
{ "provider": "salesforce", "required_credentials": ["instance_url", "access_token"], "connected": false },
{ "provider": "dynamics365", "required_credentials": ["instance_url", "access_token"], "connected": false },
{ "provider": "gohighlevel", "required_credentials": ["access_token", "location_id"], "connected": false },
{ "provider": "zoho", "required_credentials": ["access_token"], "connected": false }
],
"connections": [
{
"provider": "hubspot",
"enabled": true,
"mock": false,
"credentials": { "access_token": "******e4a1" },
"required_credentials": ["access_token"],
"config": {
"field_mapping": { "hs_lead_status": "lead_status" },
"sync_calls": true,
"sync_contacts": true
},
"last_sync_timestamp": 1792392000000,
"last_modification_timestamp": 1792390000000
}
]
}| Field | Type | Description |
|---|---|---|
providers[].connected |
boolean | Whether the workspace has a connection for this CRM. |
connections[].enabled |
boolean | Disabled connections skip post-call sync and reject sync jobs. |
connections[].mock |
boolean | true without credentials, with tokens from the mock OAuth provider, or when the server runs with TRIED_MOCK_PROVIDERS=1. Mock operations are recorded instead of sent. |
connections[].credentials |
object or null | Key names with masked values (six asterisks plus the last 4 characters). Keys ending in url and non-secret keys such as location_id and expires_at are shown in full. |
connections[].config.field_mapping |
object | CRM field name to contact field (first_name, last_name, email, phone_number, memory or a custom field). |
connections[].config.sync_calls |
boolean | Push the contact and a call note after every analysed call. |
connections[].config.sync_contacts |
boolean | Include all contacts in full sync jobs. |
connections[].last_sync_timestamp |
integer or null | When the last sync job finished. |
Errors#
| Status | When |
|---|---|
401 |
Missing or invalid API key. |
403 |
The key's IP allowlist or scopes reject the request. This route needs the admin scope. |
429 |
Rate limit exceeded. See Rate limits. |
See Errors for the body format.
Retell compatibility#
Same path and method as Retell, but a different shape. Retell's CRM config holds one linked app_id, custom field schemas, analysis mappings, contact tags and a memory prompt. Tried returns per-provider connections with their own credentials and field mapping.