Freshsales
Manage contacts, accounts, and sales deals in Freshsales (Freshworks CRM) via its REST API.
Grounded in the Freshworks CRM API reference.
- Base URL:
https://<domain>.myfreshworks.com/crm/sales - Auth:
Authorization: Token token=<apiKey> - Standard-library Python only (
urllib,json). Response bodies are capped at 5 MB.
What it does
Calls the real Freshsales endpoints and returns the raw JSON response body as
result along with the HTTP status. Non-2xx responses are returned (not
hidden) so the caller can inspect errors; only transport-level failures fail
the step.
Operations
| operation | method + endpoint | required inputs |
|---|---|---|
get_contact |
GET /api/contacts/{id} |
id |
list_contacts |
GET /api/contacts/view/{viewId} |
viewId |
create_contact |
POST /api/contacts |
email or mobileNumber |
get_account |
GET /api/sales_accounts/{id} |
id |
get_deal |
GET /api/deals/{id} |
id |
Freshsales lists contacts through a saved filtered view, so list_contacts
takes a viewId (find one under Contacts > Views in the UI, the id is in the URL).
create_contact requires at least one of email or mobileNumber (per
Freshsales rules); firstName and lastName are optional.
API key setup
- Log in to Freshsales.
- Go to Profile Settings > API Settings.
- Copy Your API Key.
- Pass it as the
apiKeyinput. It is sent asAuthorization: Token token=<apiKey>.
You also need your bundle subdomain (domain): for
https://acme.myfreshworks.com the domain is acme. A bare alias (acme) or a
full host (acme.myfreshworks.com) are both accepted.
Examples
Get a contact:
{
"apiKey": "YOUR_API_KEY",
"domain": "acme",
"operation": "get_contact",
"id": "401000123456"
}
List contacts in a saved view:
{
"apiKey": "YOUR_API_KEY",
"domain": "acme",
"operation": "list_contacts",
"viewId": "3000012345"
}
Create a contact:
{
"apiKey": "YOUR_API_KEY",
"domain": "acme",
"operation": "create_contact",
"firstName": "Jane",
"lastName": "Doe",
"email": "[email protected]"
}
Get a deal:
{
"apiKey": "YOUR_API_KEY",
"domain": "acme",
"operation": "get_deal",
"id": "5000056789"
}
Output
{
"result": "<raw JSON response body from Freshsales>",
"status": "200"
}