Everything an AI agent can do with the Freshsales API.

A reference guide for building AI agents: every method, how to authenticate, and the permissions each one needs.

Endpoints44
AuthenticationAPI key
Last updated23 June 2026
Orientation

How the Freshsales API works.

The Freshsales API is how an app or AI agent works with a Freshsales CRM account: creating and updating contacts, accounts, and deals, logging tasks, appointments, and sales activities, and adding notes to records. Access is granted through a per-user API key, which carries exactly that user's permissions and has no separate per-endpoint scopes, so a key reaches whatever its user can in the CRM. The API is unversioned, a single continuously updated reference, and it has no way to receive events, so notifications are set up inside the product instead.

44Endpoints
10Capability groups
15Read
29Write
0Permissions
Authentication
Every call needs an API key, sent as 'Authorization: Token token='. The key is per user, found in that user's profile settings, and there is no separate app registration or login step. Calls go to a per-account bundle host of the form {domain}.myfreshworks.com/crm/sales/api, where the bundle alias picks the CRM account when an organization has more than one.
Permissions
There are no granular per-endpoint scopes. An API key carries exactly the access of the user it belongs to, so it can read and write whatever that user can in the CRM, and nothing more. A key from an admin user can reach the whole account; a key from a limited user is held to that user's records and rights. The only way to narrow what a key can do is to issue it from a user whose role is already limited.
Versioning
The Freshsales API is unversioned. There is one continuously updated API, with no dated version to pin and no version header to send. Changes ship to the live reference, so an integration tracks the developer reference rather than migrating between versions.
Data model
The API is resource-oriented JSON over HTTPS at a per-account bundle host. Core records are contacts, sales accounts, and deals, with tasks, appointments, notes, and sales activities attached to them, plus a shared product catalogue under the cpq path. Listing a record type goes through a saved view, whose id comes from a filters endpoint, rather than a flat list-all. Leads are a separate record only in the older Freshsales Classic product.
Connect & authenticate

Connection & authentication methods.

How an app or AI agent connects to Freshsales determines what it can reach. There is one route, the REST API, reached at a per-account bundle host and governed by the API key behind it.

Ways to connect

REST API

The REST API answers at a per-account bundle host of the form {domain}.myfreshworks.com/crm/sales/api. It is unversioned, returns JSON, and authenticates with a per-user API key in the Authorization header.

Best forConnecting an app or AI agent to Freshsales.
Governed byThe API key and the access of the user it belongs to.
Docs ↗

Workflows (outbound notifications)

Freshsales has no API for receiving events. Outbound notifications are configured inside the CRM through Workflows, which can call an external URL when a record is created or updated.

Best forReceiving updates when a record changes, set up in the product.
Governed byThe Workflow configuration in the CRM, not an API key.
Docs ↗
Authentication

API key

Each user has a personal API key, sent as 'Authorization: Token token='. The key inherits exactly that user's access, with no separate per-endpoint scopes, so what it can reach is set by the user's CRM role.

TokenPer-user API key
Best forAll API access to Freshsales
Docs ↗
Capability map

What an AI agent can do in Freshsales.

The Freshsales API is split into areas an agent can act on, like contacts, accounts, deals, tasks, appointments, and notes. Each area has its own methods, and writes in some areas change real customer records or delete them outright.

Contacts

7 endpoints

Create, read, update, delete, and clone contacts, list them from a saved view, and forget a contact to erase their data.

Writes here change real contact records, and delete and forget remove them.
View endpoints

Sales accounts

6 endpoints

Create, read, update, delete, and clone sales accounts, the companies a contact belongs to, and list them from a saved view.

Writes here change real account records, and delete removes them.
View endpoints

Deals

6 endpoints

Create, read, update, delete, and clone deals, the sales opportunities in a pipeline, and list them from a saved view.

Writes here change real deal records and pipeline data.
View endpoints

Leads (legacy)

2 endpoints

Create, read, update, and upsert leads in the older Freshsales Classic product, where leads are a separate record from contacts.

Leads exist only in Freshsales Classic; the current product merges them into contacts.
View endpoints

Tasks

4 endpoints

Create, read, update, complete, and delete tasks, and list them with a filter.

Writes here change real task records.
View endpoints

Appointments

4 endpoints

Create, read, update, and delete appointments, and list them with a filter.

Writes here change real calendar records.
View endpoints

Notes

3 endpoints

Add a note to a record, update a note, and delete a note.

Writes here change real note records attached to contacts, accounts, or deals.
View endpoints

Sales activities

4 endpoints

Create, read, update, and delete sales activities, the logged interactions such as calls and meetings.

Writes here change real activity records.
View endpoints

Products

4 endpoints

Create, read, update, and delete products in the price catalogue used to build deals.

Writes here change the shared product catalogue.
View endpoints

Filtered views & lookups

4 endpoints

List the saved views available for a record type, search across records, and look up a record by a field such as email.

These read records and saved filters; they do not change data.
View endpoints
Endpoint reference

Every Freshsales API method.

Filter by method, access, or permission, or search any path. Select a row for version detail, rate limits, the related webhook event, and the source.

MethodEndpointWhat it doesAccessPermissionVersion

Contacts

Create, read, update, delete, and clone contacts, list them from a saved view, and forget a contact to erase their data.7

The API has no per-endpoint scopes. The API key acts as the user it belongs to, so this call works only if that user can create contacts.

Acts oncontact
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Returns only data the key's user is allowed to see. Related records can be embedded with an include parameter.

Acts oncontact
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

The API key acts as its user; the call works only if that user can edit the contact.

Acts oncontact
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

A standard delete is recoverable from the recycle bin; forget is the permanent erase.

Acts oncontact
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Forget is irreversible and removes the contact's personal data, unlike a standard delete.

Acts oncontact
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Creates a new contact, so it counts as a write even though it copies an existing one.

Acts oncontact
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

There is no list-all endpoint; listing goes through a saved view, whose id comes from the filters endpoint.

Acts oncontact
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Sales accounts

Create, read, update, delete, and clone sales accounts, the companies a contact belongs to, and list them from a saved view.6

Companies are stored as sales accounts in Freshsales. The API key acts as its user.

Acts onsales account
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Returns only data the key's user can see. Related records can be embedded with an include parameter.

Acts onsales account
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

The API key acts as its user; the call works only if that user can edit the account.

Acts onsales account
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

A standard delete is recoverable from the recycle bin; the forget endpoint permanently erases the account.

Acts onsales account
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Creates a new account, so it counts as a write.

Acts onsales account
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Listing goes through a saved view, whose id comes from the accounts filters endpoint.

Acts onsales account
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Deals

Create, read, update, delete, and clone deals, the sales opportunities in a pipeline, and list them from a saved view.6

A deal is a sales opportunity moving through stages. The API key acts as its user.

Acts ondeal
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Returns only data the key's user can see. Related records can be embedded with an include parameter.

Acts ondeal
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Moving a deal through the pipeline is done by changing its stage here.

Acts ondeal
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

A standard delete is recoverable from the recycle bin; the forget endpoint permanently erases the deal.

Acts ondeal
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Creates a new deal, so it counts as a write.

Acts ondeal
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Listing goes through a saved view, whose id comes from the deals filters endpoint.

Acts ondeal
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Leads (legacy)

Create, read, update, and upsert leads in the older Freshsales Classic product, where leads are a separate record from contacts.2

Leads are a separate record only in the older Freshsales Classic product; the current Freshsales merges them into contacts with lifecycle stages.

Acts onlead
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Available only in Freshsales Classic. The current product has no standalone lead record.

Acts onlead
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Tasks

Create, read, update, complete, and delete tasks, and list them with a filter.4

A task can be linked to a contact, account, or deal. The API key acts as its user.

Acts ontask
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Tasks are listed with a filter parameter rather than a saved view.

Acts ontask
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Completing a task sets its status here. The API key acts as its user.

Acts ontask
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

The API key acts as its user; the call works only if that user can delete the task.

Acts ontask
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Appointments

Create, read, update, and delete appointments, and list them with a filter.4

An appointment can be linked to a contact, account, or deal. The API key acts as its user.

Acts onappointment
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Appointments are listed with a filter parameter rather than a saved view.

Acts onappointment
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

The API key acts as its user; the call works only if that user can edit the appointment.

Acts onappointment
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

The API key acts as its user; the call works only if that user can delete the appointment.

Acts onappointment
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Notes

Add a note to a record, update a note, and delete a note.3

A note is attached to a parent record, named when the note is created. The API key acts as its user.

Acts onnote
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Notes have no standalone read endpoint; they are returned embedded on their parent record.

Acts onnote
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

The API key acts as its user; the call works only if that user can delete the note.

Acts onnote
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Sales activities

Create, read, update, and delete sales activities, the logged interactions such as calls and meetings.4

A sales activity records an interaction against a contact, account, or deal. The API key acts as its user.

Acts onsales activity
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Returns only data the key's user can see.

Acts onsales activity
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

The API key acts as its user; the call works only if that user can edit the activity.

Acts onsales activity
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

The API key acts as its user; the call works only if that user can delete the activity.

Acts onsales activity
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Products

Create, read, update, and delete products in the price catalogue used to build deals.4

Products sit under the cpq path, the configure-price-quote catalogue used to build deals.

Acts onproduct
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

The product catalogue is shared across the account, so a write here affects every deal that uses it.

Acts onproduct
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

The API key acts as its user; the call works only if that user can edit products.

Acts onproduct
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Removing a product changes the catalogue every deal draws from. A bulk restore endpoint can undo a bulk delete.

Acts onproduct
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Filtered views & lookups

List the saved views available for a record type, search across records, and look up a record by a field such as email.4

The view id returned here is what the contacts view endpoint needs to list records.

Acts onfiltered view
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

The view id returned here is what the deals view endpoint needs to list records.

Acts onfiltered view
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

An include parameter narrows the search to chosen record types. Returns only records the key's user can see.

Acts onsearch result
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Used to find a record by a unique field, such as a contact by email, before reading or updating it.

Acts onlookup result
Permission (capability)None required
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply
No endpoints match those filters.
Webhooks

Webhook events.

Freshsales has no API for receiving events. Notifications are configured inside the CRM through Workflows, which can post to an external URL when a record changes, so an integration is set up in the product rather than through the API.

EventWhat it signalsTriggered by
No events match that search.
Rate limits & pagination

Rate limits, pagination & request size.

Freshsales limits how much an app or AI agent can call through an hourly request quota that depends on the account's plan, counted across the whole account rather than per user.

Request rate

Freshsales sets a single quota of requests per hour per account, counted across the whole account rather than per user. The ceiling depends on the plan: 1,000 requests per hour on the Free and Growth plans, 2,000 on Pro, and 5,000 on Enterprise. Going over the quota returns a 429 status with a 'Too many requests' error, and the quota resets each hour. A higher limit can be requested from Freshworks support.

Pagination

List endpoints return 25 records per page by default. The page is chosen with a page query parameter that starts at 1, and pages are walked by incrementing it. Listing a record type goes through a saved view rather than a flat list-all endpoint, so the view id is fetched from the filters endpoint first.

Request size

Requests and responses are JSON over HTTPS. Timestamps are returned in UTC. Bulk write endpoints, such as bulk upsert, accept at most 100 records in a single request. Related records can be pulled into a response with an include parameter rather than as separate calls.

Errors

Status codes & error handling.

The status codes an agent should handle, and what to do about each.

StatusCodeMeaningWhat to do
400Client or Validation ErrorThe request is malformed, or a field failed validation. The body holds an errors object describing what went wrong.Read the message in the errors object, correct the request, and resend.
401Authentication FailureThe API key is missing or invalid, or the Authorization header is wrong.Send a valid key as 'Authorization: Token token=' against the correct bundle host.
403Access DeniedThe key is valid but its user is not allowed to perform this action on this record.Use a key whose user has the needed access, since the key inherits that user's permissions.
404Requested Resource not FoundThe record does not exist, or the key's user cannot see it.Confirm the id and that the key's user has access to the record.
429Too many requestsThe account's hourly request quota has been exceeded.Slow down and retry after the hour resets; request a higher limit from Freshworks if needed.
500Unexpected Server ErrorSomething failed on the Freshsales side while handling the request.Retry after a short wait; if it persists, contact Freshworks support.
Versioning & freshness

Version history.

The Freshsales API is unversioned. There is a single, continuously updated API, with no dated version to pin and no version header to send.

Version history

What changed, and when

Latest versionCurrent
CurrentCurrent version
Continuously updated, unversioned API

The Freshsales API has no dated versions. There is a single, continuously updated REST API, documented in the developer reference, with no version header to send and no migration between versions. Changes ship to the live reference. Leads are a separate record only in the older Freshsales Classic product; the current Freshsales merges them into contacts with lifecycle stages.

What changed
  • Single unversioned REST API, with no version header and no dated releases
  • Authentication by per-user API key, sent as 'Authorization: Token token='
  • Leads merged into contacts as lifecycle stages in the current product; standalone leads remain only in Freshsales Classic

There is no version to pin, so an integration tracks the live reference for changes.

Freshsales API reference ↗
Questions

Freshsales API, answered.

How does authentication work, and where is the API key?+
Every request carries an API key in the Authorization header, in the form 'Token token='. Each user has their own key, shown under Profile Settings in the API Settings tab. Calls go to a per-account bundle host like yourdomain.myfreshworks.com/crm/sales/api, where the bundle alias selects the CRM account if an organization has several.
What can an API key do, and can I limit it to certain actions?+
An API key inherits the full access of the user it belongs to, and the API has no per-endpoint scopes. A key cannot be restricted to, say, read-only or to one record type on its own. To narrow what a key can do, issue it from a user whose CRM role is already limited, so the key is held to that user's rights and records. This is why Bollard sits in front: it adds the per-agent read, write, and resource limits the key itself cannot express.
What are the rate limits?+
Freshsales counts requests per hour across the whole account, not per user. The ceiling is 1,000 per hour on Free and Growth, 2,000 on Pro, and 5,000 on Enterprise. Exceeding it returns a 429 'Too many requests' status, and the quota resets each hour. A higher limit can be requested from Freshworks support.
How do I list all contacts, accounts, or deals?+
There is no flat list-all endpoint. Listing a record type goes through a saved view: first call the filters endpoint for that record type, like the contacts filters endpoint, to get a view id, then call the view endpoint with that id. Results are paged 25 at a time through a page parameter that starts at 1.
Does Freshsales have leads?+
Only the older Freshsales Classic product has a standalone lead record, reached through the leads endpoints. The current Freshsales merges leads into contacts using lifecycle stages, so a lead in the current product is a contact at an early stage rather than a separate record.
How do I get notified when a record changes?+
Freshsales has no API for receiving events. Notifications are set up inside the CRM through Workflows, which can call an external URL when a record is created or updated. This is configured in the product rather than registered through the API.
Related

More crm API guides for agents

What is Bollard AI?

Control what every AI agent can do in Freshsales.

Bollard AI sits between a team's AI agents and Freshsales. Grant each agent exactly the access it needs, read or write, resource by resource, and every call is checked and logged.

  • Set read, write, or full access per agent, never a shared Freshsales API key.
  • Denied by default, so an agent reaches only what has been explicitly allowed.
  • Every call recorded in plain English: who, what, where, and the decision.
Freshsales
Sales Agent
Read contacts ResourceOffReadFull use
Update deals ActionOffReadFull use
Delete records ActionOffReadFull use
Per-agent access, set in Bollard AI, not in Freshsales