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"
}
Publishes
The keys a later task may reference as {{taskName.key}}. Referencing anything not listed here resolves to nothing at run time.
errorresultstatus
Input Properties
Every property this tool accepts, from its own tool.iml.
| Property | Type | Required | Default | Description |
|---|---|---|---|---|
apiKey |
string | yes | — | Freshsales API key. Found in Freshsales > Profile Settings > API Settings. Sent as 'Authorization: Token token= |
domain |
string | yes | — | Your Freshsales bundle subdomain, e.g. 'acme' for https://acme.myfreshworks.com. Just the alias, not the full URL. |
operation |
string | yes | — | One of: get_contact, list_contacts, create_contact, get_account, get_deal |
id |
string | no | — | Record id — required for get_contact, get_account, and get_deal. |
viewId |
string | no | — | Filtered-view id — required for list_contacts (GET /api/contacts/view/{viewId}). |
firstName |
string | no | — | First name — optional property for create_contact. |
lastName |
string | no | — | Last name — optional property for create_contact. |
email |
string | no | — | Email address for create_contact. At least one of email, mobileNumber is required by Freshsales. |
mobileNumber |
string | no | — | Mobile number for create_contact. At least one of email, mobileNumber is required by Freshsales. |