Manage Freshsales contacts, accounts, deals, tasks and appointments; add notes.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
WRITE: create an account (company). name is required. It may duplicate an existing company: search first (freshsales_search). POST /sales_accounts.
Company name.
City.
Phone number.
State or region.
Street address.
Country.
Website.
Postal code.
Owner user id (freshsales_list_owners).
Custom field values keyed by field name, e.g. {"cf_is_active": true}. Field names start with cf_.
Annual revenue.
Business type id (freshsales_list_options business_types).
Industry id (freshsales_list_options industry_types).
Company size bucket code (not a headcount): 1 = 1-10, 11 = 11-50, 51 = 51-200, 201 = 201-500, 501 = 501-1000, 1001 = 1001-5000, 5001 = 5001-10000, 10001 = 10000+.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
WRITE: create an account (company). name is required. It may duplicate an existing company: search first (freshsales_search). POST /sales_accounts.
| Argument | Type | Description |
|---|---|---|
| city | string | City. |
| name* | string | Company name. |
| phone | string | Phone number. |
| state | string | State or region. |
| address | string | Street address. |
| country | string | Country. |
| website | string | Website. |
| zipcode | string | Postal code. |
| owner_id | integer | Owner user id (freshsales_list_owners). |
| custom_field | object | Custom field values keyed by field name, e.g. {"cf_is_active": true}. Field names start with cf_. |
| annual_revenue | number | Annual revenue. |
| business_type_id | integer | Business type id (freshsales_list_options business_types). |
| industry_type_id | integer | Industry id (freshsales_list_options industry_types). |
| number_of_employees | any | Company size bucket code (not a headcount): 1 = 1-10, 11 = 11-50, 51 = 51-200, 201 = 201-500, 501 = 501-1000, 1001 = 1001-5000, 5001 = 5001-10000, 10001 = 10000+. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"name"
],
"properties": {
"city": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "City."
},
"name": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Company name."
},
"phone": {
"type": "string",
"maxLength": 40,
"minLength": 1,
"description": "Phone number."
},
"state": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "State or region."
},
"address": {
"type": "string",
"maxLength": 300,
"minLength": 1,
"description": "Street address."
},
"country": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Country."
},
"website": {
"type": "string",
"maxLength": 300,
"minLength": 1,
"description": "Website."
},
"zipcode": {
"type": "string",
"maxLength": 30,
"minLength": 1,
"description": "Postal code."
},
"owner_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Owner user id (freshsales_list_owners).",
"exclusiveMinimum": 0
},
"custom_field": {
"type": "object",
"description": "Custom field values keyed by field name, e.g. {\"cf_is_active\": true}. Field names start with cf_.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"annual_revenue": {
"type": "number",
"minimum": 0,
"description": "Annual revenue."
},
"business_type_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Business type id (freshsales_list_options business_types).",
"exclusiveMinimum": 0
},
"industry_type_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Industry id (freshsales_list_options industry_types).",
"exclusiveMinimum": 0
},
"number_of_employees": {
"anyOf": [
{
"type": "number",
"const": 1
},
{
"type": "number",
"const": 11
},
{
"type": "number",
"const": 51
},
{
"type": "number",
"const": 201
},
{
"type": "number",
"const": 501
},
{
"type": "number",
"const": 1001
},
{
"type": "number",
"const": 5001
},
{
"type": "number",
"const": 10001
}
],
"description": "Company size bucket code (not a headcount): 1 = 1-10, 11 = 11-50, 51 = 51-200, 201 = 201-500, 501 = 501-1000, 1001 = 1001-5000, 5001 = 5001-10000, 10001 = 10000+."
}
}
}WRITE: create an appointment (meeting) with a start and end, optionally attached to a contact, account or deal and with attendees. Attendees may be notified by Freshsales. POST /appointments.
| Argument | Type | Description |
|---|---|---|
| title* | string | Appointment title. |
| end_date* | string | End, ISO 8601 with a timezone; after from_date. |
| location | string | Location. |
| from_date* | string | Start, ISO 8601 with a timezone, e.g. 2026-11-02T09:00:00Z. |
| target_id | integer | Id of the contact, account or deal (with target_type). |
| time_zone | string | Time zone name, e.g. Europe/Prague. |
| description | string | Details. |
| target_type | string | What the record is attached to: Contact, SalesAccount (company) or Deal. |
| attendee_user_ids | array | User ids (freshsales_list_owners) attending. |
WRITE: create a contact. Freshsales requires an email or a mobile number. It may create a duplicate of an existing contact: search first (freshsales_lookup by email). POST /contacts.
| Argument | Type | Description |
|---|---|---|
| city | string | City. |
| string | Primary email address. | |
| state | string | State or region. |
| address | string | Street address. |
| country | string | Country. |
| zipcode | string | Postal code. |
| owner_id | integer | Owner user id (freshsales_list_owners). |
| job_title | string | Job title. |
| last_name | string | Last name. |
| first_name | string | First name. |
| work_number | string | Work phone number. |
WRITE: create a deal. name, amount and sales_account_id are required; contact_ids attach existing contacts. Stage and pipeline default to the first of the default pipeline. POST /deals.
| Argument | Type | Description |
|---|---|---|
| name* | string | Deal name. |
| amount* | number | Deal value in the account's default currency. |
| owner_id | integer | Owner user id (freshsales_list_owners). |
| contact_ids | array | Existing contact ids to attach to the deal. |
| probability | integer | Win probability, 0-100. |
| custom_field | object | Custom field values keyed by field name, e.g. {"cf_is_active": true}. Field names start with cf_. |
| deal_type_id | integer | Deal type id (freshsales_list_options deal_types). |
| deal_stage_id | integer | Stage id (freshsales_list_deal_stages). |
| expected_close | string | Expected close date, YYYY-MM-DD. |
WRITE: add a note to a contact, account or deal. Visible to your team on the record. POST /notes.
| Argument | Type | Description |
|---|---|---|
| target_id* | integer | Id of the contact, account or deal. |
| description* | string | The note text. |
| target_type* | string | What the record is attached to: Contact, SalesAccount (company) or Deal. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"target_type",
"target_id",
"description"
],
"properties": {
"target_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Id of the contact, account or deal.",
"exclusiveMinimum": 0
},
"description": {
"type": "string",
"maxLength": 10000,
"minLength": 1,
"description": "The note text."
},
"target_type": {
"enum": [
"Contact",
"SalesAccount",
"Deal"
],
"type": "string",
"description": "What the record is attached to: Contact, SalesAccount (company) or Deal."
}
}
}WRITE: create a task (to-do) attached to a contact, account or deal. title, due_date, owner_id and the target are required. POST /tasks.
| Argument | Type | Description |
|---|---|---|
| title* | string | Task title. |
| due_date* | string | Due date and time, ISO 8601 with a timezone, e.g. 2026-11-02T09:00:00Z. |
| owner_id* | integer | User who owns the task (freshsales_list_owners). |
| target_id* | integer | Id of the contact, account or deal. |
| description | string | Details. |
| target_type* | string | What the record is attached to: Contact, SalesAccount (company) or Deal. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"title",
"due_date",
"owner_id",
"target_type",
"target_id"
],
"properties": {
"title": {
"type": "string",
"maxLength": 300,
"minLength": 1,
"description": "Task title."
},
"due_date": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"description": "Due date and time, ISO 8601 with a timezone, e.g. 2026-11-02T09:00:00Z."
},
"owner_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "User who owns the task (freshsales_list_owners).",
"exclusiveMinimum": 0
},
"target_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Id of the contact, account or deal.",
"exclusiveMinimum": 0
},
"description": {
"type": "string",
"maxLength": 5000,
"minLength": 1,
"description": "Details."
},
"target_type": {
"enum": [
"Contact",
"SalesAccount",
"Deal"
],
"type": "string",
"description": "What the record is attached to: Contact, SalesAccount (company) or Deal."
}
}
}One account (company) by id with its fields, optionally with related records embedded (contacts, deals, tasks, appointments, owner...). GET /sales_accounts/{id}.
| Argument | Type | Description |
|---|---|---|
| include | array | Related records to embed. |
| account_id* | integer | Account (sales account) id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"account_id"
],
"properties": {
"include": {
"type": "array",
"items": {
"enum": [
"owner",
"creater",
"updater",
"territory",
"business_type",
"tasks",
"appointments",
"contacts",
"deals",
"industry_type",
"child_sales_accounts"
],
"type": "string"
},
"maxItems": 11,
"description": "Related records to embed."
},
"account_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Account (sales account) id.",
"exclusiveMinimum": 0
}
}
}One appointment by id with its attendees. GET /appointments/{id}.
| Argument | Type | Description |
|---|---|---|
| appointment_id* | integer | Appointment id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"appointment_id"
],
"properties": {
"appointment_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Appointment id.",
"exclusiveMinimum": 0
}
}
}One contact by id with all its fields, optionally with related records embedded via include (notes, tasks, appointments, deals, sales_accounts, owner, sales_activities...). GET /contacts/{id}.
| Argument | Type | Description |
|---|---|---|
| include | array | Related records to embed. |
| contact_id* | integer | Contact id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"contact_id"
],
"properties": {
"include": {
"type": "array",
"items": {
"enum": [
"sales_activities",
"owner",
"creater",
"updater",
"source",
"campaign",
"tasks",
"appointments",
"notes",
"deals",
"sales_accounts",
"territory"
],
"type": "string"
},
"maxItems": 12,
"description": "Related records to embed."
},
"contact_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Contact id.",
"exclusiveMinimum": 0
}
}
}One deal by id with amount, expected close, probability and ids of its stage, pipeline and owner, optionally with related records embedded (contacts, sales_account, deal_stage, owner, notes via sales_activities...). GET /deals/{id}.
| Argument | Type | Description |
|---|---|---|
| deal_id* | integer | Deal id. |
| include | array | Related records to embed. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"deal_id"
],
"properties": {
"deal_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Deal id.",
"exclusiveMinimum": 0
},
"include": {
"type": "array",
"items": {
"enum": [
"sales_activities",
"owner",
"creater",
"updater",
"source",
"contacts",
"sales_account",
"deal_stage",
"deal_type",
"deal_reason",
"campaign",
"deal_payment_status",
"deal_product",
"currency"
],
"type": "string"
},
"maxItems": 14,
"description": "Related records to embed."
}
}
}One task by id. GET /tasks/{id}.
| Argument | Type | Description |
|---|---|---|
| task_id* | integer | Task id. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"task_id"
],
"properties": {
"task_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Task id.",
"exclusiveMinimum": 0
}
}
}List the saved account (company) views of the account, e.g. 'My Accounts'. A view id is needed by freshsales_list_accounts. GET /sales_accounts/filters.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}List the accounts (companies) in a view (view_id from freshsales_list_account_views), 25 per page, with name, location, open deals amount and last contacted. GET /sales_accounts/view/{view_id}.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, 1-based (25 records per page). |
| sort | string | Sort field. |
| view_id* | integer | Account view id (freshsales_list_account_views). |
| sort_type | string | Sort direction (default: the view's own order). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"view_id"
],
"properties": {
"page": {
"type": "integer",
"default": 1,
"maximum": 10000,
"minimum": 1,
"description": "Page number, 1-based (25 records per page)."
},
"sort": {
"enum": [
"open_deals_amount",
"created_at",
"updated_at",
"last_contacted"
],
"type": "string",
"description": "Sort field."
},
"view_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Account view id (freshsales_list_account_views).",
"exclusiveMinimum": 0
},
"sort_type": {
"enum": [
"asc",
"desc"
],
"type": "string",
"description": "Sort direction (default: the view's own order)."
}
}
}List appointments that are open (upcoming) or complete (one filter per call), with title, time, location and creator. GET /appointments.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, 1-based (25 records per page). |
| filter | string | Which appointments to list. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"default": 1,
"maximum": 10000,
"minimum": 1,
"description": "Page number, 1-based (25 records per page)."
},
"filter": {
"enum": [
"open",
"complete"
],
"type": "string",
"default": "open",
"description": "Which appointments to list."
}
}
}List the saved contact views (filters) of the account, e.g. 'My Contacts', 'New Contacts', 'All Contacts'. A view id is needed by freshsales_list_contacts; ids differ per account. GET /contacts/filters.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}List the contacts in a view (get view_id from freshsales_list_contact_views), 25 per page with name, email, phone numbers, job title, lead score, open deals amount and last contacted. Pages: use next_page. GET /contacts/view/{view_id}.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, 1-based (25 records per page). |
| sort | string | Sort field. |
| view_id* | integer | Contact view id (freshsales_list_contact_views). |
| sort_type | string | Sort direction (default: the view's own order). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"view_id"
],
"properties": {
"page": {
"type": "integer",
"default": 1,
"maximum": 10000,
"minimum": 1,
"description": "Page number, 1-based (25 records per page)."
},
"sort": {
"enum": [
"lead_score",
"created_at",
"updated_at",
"open_deals_amount",
"last_contacted"
],
"type": "string",
"description": "Sort field."
},
"view_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Contact view id (freshsales_list_contact_views).",
"exclusiveMinimum": 0
},
"sort_type": {
"enum": [
"asc",
"desc"
],
"type": "string",
"description": "Sort direction (default: the view's own order)."
}
}
}List the deal pipelines (id, name). GET /selector/deal_pipelines.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}List deal stages (id, name, deal_pipeline_id): those of the default pipeline, or of the pipeline given by pipeline_id. Use the id as deal_stage_id. GET /selector/deal_stages or /selector/deal_pipelines/{id}/deal_stages.
| Argument | Type | Description |
|---|---|---|
| pipeline_id | integer | Pipeline id (freshsales_list_deal_pipelines); default pipeline when omitted. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"pipeline_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Pipeline id (freshsales_list_deal_pipelines); default pipeline when omitted.",
"exclusiveMinimum": 0
}
}
}List the saved deal views of the account, e.g. 'Open Deals'. A view id is needed by freshsales_list_deals. GET /deals/filters.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}List the deals in a view (view_id from freshsales_list_deal_views), 25 per page, with name, amount, expected close, probability and age. GET /deals/view/{view_id}.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, 1-based (25 records per page). |
| sort | string | Sort field. |
| view_id* | integer | Deal view id (freshsales_list_deal_views). |
| sort_type | string | Sort direction (default: the view's own order). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"view_id"
],
"properties": {
"page": {
"type": "integer",
"default": 1,
"maximum": 10000,
"minimum": 1,
"description": "Page number, 1-based (25 records per page)."
},
"sort": {
"enum": [
"amount",
"expected_close",
"created_at",
"updated_at",
"last_contacted"
],
"type": "string",
"description": "Sort field."
},
"view_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Deal view id (freshsales_list_deal_views).",
"exclusiveMinimum": 0
},
"sort_type": {
"enum": [
"asc",
"desc"
],
"type": "string",
"description": "Sort direction (default: the view's own order)."
}
}
}List the configured choices (id and name) for a field: lead_sources, contact_statuses, lifecycle_stages, deal_types, deal_reasons, deal_products, deal_payment_statuses, territories, currencies, industry_types, business_types, campaigns, sales_activity_types, sales_activity_outcomes. Use the ids in the *_id fields of the write tools. GET /selector/{kind}.
| Argument | Type | Description |
|---|---|---|
| kind* | string | Which list of choices. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"kind"
],
"properties": {
"kind": {
"enum": [
"deal_types",
"lead_sources",
"contact_statuses",
"lifecycle_stages",
"territories",
"currencies",
"deal_reasons",
"industry_types",
"business_types",
"campaigns",
"deal_payment_statuses",
"deal_products",
"sales_activity_types",
"sales_activity_outcomes"
],
"type": "string",
"description": "Which list of choices."
}
}
}List the users of the account (id and name). Use the id as owner_id when creating or updating records. GET /selector/owners.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}List logged sales activities (calls, meetings, emails...) of the account. GET /sales_activities.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, 1-based (25 records per page). |
| per_page | integer | Records per page (1-100). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"default": 1,
"maximum": 10000,
"minimum": 1,
"description": "Page number, 1-based (25 records per page)."
},
"per_page": {
"type": "integer",
"default": 25,
"maximum": 100,
"minimum": 1,
"description": "Records per page (1-100)."
}
}
}List tasks by status filter: open, due_today, due_tomorrow, overdue or completed (one filter per call). Returns title, due date, owner and status. GET /tasks.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, 1-based (25 records per page). |
| filter | string | Which tasks to list. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"page": {
"type": "integer",
"default": 1,
"maximum": 10000,
"minimum": 1,
"description": "Page number, 1-based (25 records per page)."
},
"filter": {
"enum": [
"open",
"due_today",
"due_tomorrow",
"overdue",
"completed"
],
"type": "string",
"default": "open",
"description": "Which tasks to list."
}
}
}Exact-match lookup of contacts, companies or deals by one field, e.g. a contact by email address. field is 'email' (contacts), 'name', or a custom field name (cf_...). Returns the full records. GET /lookup.
| Argument | Type | Description |
|---|---|---|
| field* | string | Field to match: email, name, or a custom field name (cf_...). |
| value* | string | The exact value to find, e.g. [email protected]. |
| entity | string | Record type. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"value",
"field"
],
"properties": {
"field": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Field to match: email, name, or a custom field name (cf_...)."
},
"value": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "The exact value to find, e.g. [email protected]."
},
"entity": {
"enum": [
"contact",
"sales_account",
"deal"
],
"type": "string",
"default": "contact",
"description": "Record type."
}
}
}Search by name/email text across one record type: contact, sales_account (company), deal or user. Returns id, type, name and email for the matches (up to per_page, default 10). Use the id with the get tools. GET /search.
| Argument | Type | Description |
|---|---|---|
| query* | string | Text to search for (name, email, ...). |
| entity | string | Record type to search (singular). |
| per_page | integer | Results to return (1-100, default 10). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"query"
],
"properties": {
"query": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Text to search for (name, email, ...)."
},
"entity": {
"enum": [
"contact",
"sales_account",
"deal",
"user"
],
"type": "string",
"default": "contact",
"description": "Record type to search (singular)."
},
"per_page": {
"type": "integer",
"maximum": 100,
"minimum": 1,
"description": "Results to return (1-100, default 10)."
}
}
}WRITE: change fields of an existing account (company); only the fields you pass are changed. PUT /sales_accounts/{id}.
| Argument | Type | Description |
|---|---|---|
| city | string | City. |
| name | string | Company name. |
| phone | string | Phone number. |
| state | string | State or region. |
| address | string | Street address. |
| country | string | Country. |
| website | string | Website. |
| zipcode | string | Postal code. |
| owner_id | integer | Owner user id (freshsales_list_owners). |
| account_id* | integer | Account (sales account) id. |
WRITE: change fields of an existing contact; only the fields you pass are changed (passing sales_accounts replaces the associated companies). PUT /contacts/{id}.
| Argument | Type | Description |
|---|---|---|
| city | string | City. |
| string | Primary email address. | |
| state | string | State or region. |
| address | string | Street address. |
| country | string | Country. |
| zipcode | string | Postal code. |
| owner_id | integer | Owner user id (freshsales_list_owners). |
| job_title | string | Job title. |
| last_name | string | Last name. |
| contact_id* | integer | Contact id. |
WRITE: change fields of an existing deal, e.g. move it to another stage (deal_stage_id), change amount or expected close; only the fields you pass are changed. PUT /deals/{id}.
| Argument | Type | Description |
|---|---|---|
| name | string | Deal name. |
| amount | number | Deal value in the deal's own currency (a multi-currency account: freshsales_get_deal shows the deal's currency first when updating). |
| deal_id* | integer | Deal id. |
| owner_id | integer | Owner user id (freshsales_list_owners). |
| probability | integer | Win probability, 0-100. |
| custom_field | object | Custom field values keyed by field name, e.g. {"cf_is_active": true}. Field names start with cf_. |
| deal_type_id | integer | Deal type id (freshsales_list_options deal_types). |
| deal_stage_id | integer | Stage id (freshsales_list_deal_stages). |
| expected_close |
WRITE: replace the text of an existing note. PUT /notes/{id}.
| Argument | Type | Description |
|---|---|---|
| note_id* | integer | Note id. |
| description* | string | The new note text. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"note_id",
"description"
],
"properties": {
"note_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Note id.",
"exclusiveMinimum": 0
},
"description": {
"type": "string",
"maxLength": 10000,
"minLength": 1,
"description": "The new note text."
}
}
}WRITE: change a task: title, details, due date, owner, or mark it completed (status 1) or open (status 0). PUT /tasks/{id}.
| Argument | Type | Description |
|---|---|---|
| title | string | New title. |
| status | any | 0 = open, 1 = completed. |
| task_id* | integer | Task id. |
| due_date | string | New due date and time, ISO 8601 with a timezone. |
| owner_id | integer | New owner user id. |
| description | string | New details. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"task_id"
],
"properties": {
"title": {
"type": "string",
"maxLength": 300,
"minLength": 1,
"description": "New title."
},
"status": {
"anyOf": [
{
"type": "number",
"const": 0
},
{
"type": "number",
"const": 1
}
],
"description": "0 = open, 1 = completed."
},
"task_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Task id.",
"exclusiveMinimum": 0
},
"due_date": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"description": "New due date and time, ISO 8601 with a timezone."
},
"owner_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "New owner user id.",
"exclusiveMinimum": 0
},
"description": {
"type": "string",
"maxLength": 5000,
"minLength": 1,
"description": "New details."
}
}
}| attendee_contact_ids | array | Contact ids attending. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"title",
"from_date",
"end_date"
],
"properties": {
"title": {
"type": "string",
"maxLength": 300,
"minLength": 1,
"description": "Appointment title."
},
"end_date": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"description": "End, ISO 8601 with a timezone; after from_date."
},
"location": {
"type": "string",
"maxLength": 300,
"minLength": 1,
"description": "Location."
},
"from_date": {
"type": "string",
"format": "date-time",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$",
"description": "Start, ISO 8601 with a timezone, e.g. 2026-11-02T09:00:00Z."
},
"target_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Id of the contact, account or deal (with target_type).",
"exclusiveMinimum": 0
},
"time_zone": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Time zone name, e.g. Europe/Prague."
},
"description": {
"type": "string",
"maxLength": 5000,
"minLength": 1,
"description": "Details."
},
"target_type": {
"enum": [
"Contact",
"SalesAccount",
"Deal"
],
"type": "string",
"description": "What the record is attached to: Contact, SalesAccount (company) or Deal."
},
"attendee_user_ids": {
"type": "array",
"items": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"maxItems": 50,
"description": "User ids (freshsales_list_owners) attending."
},
"attendee_contact_ids": {
"type": "array",
"items": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"maxItems": 50,
"description": "Contact ids attending."
}
}
}| custom_field | object | Custom field values keyed by field name, e.g. {"cf_is_active": true}. Field names start with cf_. |
| mobile_number | string | Mobile number. |
| lead_source_id | integer | Lead source id (freshsales_list_options lead_sources). |
| sales_accounts | array | Companies the contact belongs to: [{id, is_primary}], at most 10, exactly one primary. |
| contact_status_id | integer | Contact status id (freshsales_list_options contact_statuses). |
| lifecycle_stage_id | integer | Lifecycle stage id (freshsales_list_options lifecycle_stages). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"city": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "City."
},
"email": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"maxLength": 254,
"description": "Primary email address."
},
"state": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "State or region."
},
"address": {
"type": "string",
"maxLength": 300,
"minLength": 1,
"description": "Street address."
},
"country": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Country."
},
"zipcode": {
"type": "string",
"maxLength": 30,
"minLength": 1,
"description": "Postal code."
},
"owner_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Owner user id (freshsales_list_owners).",
"exclusiveMinimum": 0
},
"job_title": {
"type": "string",
"maxLength": 150,
"minLength": 1,
"description": "Job title."
},
"last_name": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Last name."
},
"first_name": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "First name."
},
"work_number": {
"type": "string",
"maxLength": 40,
"minLength": 1,
"description": "Work phone number."
},
"custom_field": {
"type": "object",
"description": "Custom field values keyed by field name, e.g. {\"cf_is_active\": true}. Field names start with cf_.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"mobile_number": {
"type": "string",
"maxLength": 40,
"minLength": 1,
"description": "Mobile number."
},
"lead_source_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Lead source id (freshsales_list_options lead_sources).",
"exclusiveMinimum": 0
},
"sales_accounts": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"is_primary"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"is_primary": {
"type": "boolean"
}
}
},
"maxItems": 10,
"minItems": 1,
"description": "Companies the contact belongs to: [{id, is_primary}], at most 10, exactly one primary."
},
"contact_status_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Contact status id (freshsales_list_options contact_statuses).",
"exclusiveMinimum": 0
},
"lifecycle_stage_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Lifecycle stage id (freshsales_list_options lifecycle_stages).",
"exclusiveMinimum": 0
}
}
}| lead_source_id | integer | Lead source id (freshsales_list_options lead_sources). |
| deal_pipeline_id | integer | Pipeline id (freshsales_list_deal_pipelines). |
| sales_account_id* | integer | Company the deal belongs to. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"name",
"amount",
"sales_account_id"
],
"properties": {
"name": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Deal name."
},
"amount": {
"type": "number",
"maximum": 10000000000000,
"minimum": 0,
"description": "Deal value in the account's default currency."
},
"owner_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Owner user id (freshsales_list_owners).",
"exclusiveMinimum": 0
},
"contact_ids": {
"type": "array",
"items": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"maxItems": 50,
"description": "Existing contact ids to attach to the deal."
},
"probability": {
"type": "integer",
"maximum": 100,
"minimum": 0,
"description": "Win probability, 0-100."
},
"custom_field": {
"type": "object",
"description": "Custom field values keyed by field name, e.g. {\"cf_is_active\": true}. Field names start with cf_.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"deal_type_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Deal type id (freshsales_list_options deal_types).",
"exclusiveMinimum": 0
},
"deal_stage_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Stage id (freshsales_list_deal_stages).",
"exclusiveMinimum": 0
},
"expected_close": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
"description": "Expected close date, YYYY-MM-DD."
},
"lead_source_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Lead source id (freshsales_list_options lead_sources).",
"exclusiveMinimum": 0
},
"deal_pipeline_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Pipeline id (freshsales_list_deal_pipelines).",
"exclusiveMinimum": 0
},
"sales_account_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Company the deal belongs to.",
"exclusiveMinimum": 0
}
}
}| custom_field |
| object |
| Custom field values keyed by field name, e.g. {"cf_is_active": true}. Field names start with cf_. |
| annual_revenue | number | Annual revenue. |
| business_type_id | integer | Business type id (freshsales_list_options business_types). |
| industry_type_id | integer | Industry id (freshsales_list_options industry_types). |
| number_of_employees | any | Company size bucket code (not a headcount): 1 = 1-10, 11 = 11-50, 51 = 51-200, 201 = 201-500, 501 = 501-1000, 1001 = 1001-5000, 5001 = 5001-10000, 10001 = 10000+. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"account_id"
],
"properties": {
"city": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "City."
},
"name": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Company name."
},
"phone": {
"type": "string",
"maxLength": 40,
"minLength": 1,
"description": "Phone number."
},
"state": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "State or region."
},
"address": {
"type": "string",
"maxLength": 300,
"minLength": 1,
"description": "Street address."
},
"country": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Country."
},
"website": {
"type": "string",
"maxLength": 300,
"minLength": 1,
"description": "Website."
},
"zipcode": {
"type": "string",
"maxLength": 30,
"minLength": 1,
"description": "Postal code."
},
"owner_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Owner user id (freshsales_list_owners).",
"exclusiveMinimum": 0
},
"account_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Account (sales account) id.",
"exclusiveMinimum": 0
},
"custom_field": {
"type": "object",
"description": "Custom field values keyed by field name, e.g. {\"cf_is_active\": true}. Field names start with cf_.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"annual_revenue": {
"type": "number",
"minimum": 0,
"description": "Annual revenue."
},
"business_type_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Business type id (freshsales_list_options business_types).",
"exclusiveMinimum": 0
},
"industry_type_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Industry id (freshsales_list_options industry_types).",
"exclusiveMinimum": 0
},
"number_of_employees": {
"anyOf": [
{
"type": "number",
"const": 1
},
{
"type": "number",
"const": 11
},
{
"type": "number",
"const": 51
},
{
"type": "number",
"const": 201
},
{
"type": "number",
"const": 501
},
{
"type": "number",
"const": 1001
},
{
"type": "number",
"const": 5001
},
{
"type": "number",
"const": 10001
}
],
"description": "Company size bucket code (not a headcount): 1 = 1-10, 11 = 11-50, 51 = 51-200, 201 = 201-500, 501 = 501-1000, 1001 = 1001-5000, 5001 = 5001-10000, 10001 = 10000+."
}
}
}| first_name |
| string |
| First name. |
| work_number | string | Work phone number. |
| custom_field | object | Custom field values keyed by field name, e.g. {"cf_is_active": true}. Field names start with cf_. |
| mobile_number | string | Mobile number. |
| lead_source_id | integer | Lead source id (freshsales_list_options lead_sources). |
| sales_accounts | array | Companies the contact belongs to: [{id, is_primary}], at most 10, exactly one primary. |
| contact_status_id | integer | Contact status id (freshsales_list_options contact_statuses). |
| lifecycle_stage_id | integer | Lifecycle stage id (freshsales_list_options lifecycle_stages). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"contact_id"
],
"properties": {
"city": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "City."
},
"email": {
"type": "string",
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$",
"maxLength": 254,
"description": "Primary email address."
},
"state": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "State or region."
},
"address": {
"type": "string",
"maxLength": 300,
"minLength": 1,
"description": "Street address."
},
"country": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Country."
},
"zipcode": {
"type": "string",
"maxLength": 30,
"minLength": 1,
"description": "Postal code."
},
"owner_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Owner user id (freshsales_list_owners).",
"exclusiveMinimum": 0
},
"job_title": {
"type": "string",
"maxLength": 150,
"minLength": 1,
"description": "Job title."
},
"last_name": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Last name."
},
"contact_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Contact id.",
"exclusiveMinimum": 0
},
"first_name": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "First name."
},
"work_number": {
"type": "string",
"maxLength": 40,
"minLength": 1,
"description": "Work phone number."
},
"custom_field": {
"type": "object",
"description": "Custom field values keyed by field name, e.g. {\"cf_is_active\": true}. Field names start with cf_.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"mobile_number": {
"type": "string",
"maxLength": 40,
"minLength": 1,
"description": "Mobile number."
},
"lead_source_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Lead source id (freshsales_list_options lead_sources).",
"exclusiveMinimum": 0
},
"sales_accounts": {
"type": "array",
"items": {
"type": "object",
"required": [
"id",
"is_primary"
],
"properties": {
"id": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"is_primary": {
"type": "boolean"
}
}
},
"maxItems": 10,
"minItems": 1,
"description": "Companies the contact belongs to: [{id, is_primary}], at most 10, exactly one primary."
},
"contact_status_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Contact status id (freshsales_list_options contact_statuses).",
"exclusiveMinimum": 0
},
"lifecycle_stage_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Lifecycle stage id (freshsales_list_options lifecycle_stages).",
"exclusiveMinimum": 0
}
}
}| string |
| Expected close date, YYYY-MM-DD. |
| lead_source_id | integer | Lead source id (freshsales_list_options lead_sources). |
| add_contact_ids | array | Existing contact ids to attach. |
| deal_pipeline_id | integer | Pipeline id (freshsales_list_deal_pipelines). |
| sales_account_id | integer | Company the deal belongs to (freshsales_search sales_account). |
| remove_contact_ids | array | Contact ids to detach from the deal. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"deal_id"
],
"properties": {
"name": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "Deal name."
},
"amount": {
"type": "number",
"maximum": 10000000000000,
"minimum": 0,
"description": "Deal value in the deal's own currency (a multi-currency account: freshsales_get_deal shows the deal's currency first when updating)."
},
"deal_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Deal id.",
"exclusiveMinimum": 0
},
"owner_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Owner user id (freshsales_list_owners).",
"exclusiveMinimum": 0
},
"probability": {
"type": "integer",
"maximum": 100,
"minimum": 0,
"description": "Win probability, 0-100."
},
"custom_field": {
"type": "object",
"description": "Custom field values keyed by field name, e.g. {\"cf_is_active\": true}. Field names start with cf_.",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"deal_type_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Deal type id (freshsales_list_options deal_types).",
"exclusiveMinimum": 0
},
"deal_stage_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Stage id (freshsales_list_deal_stages).",
"exclusiveMinimum": 0
},
"expected_close": {
"type": "string",
"format": "date",
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
"description": "Expected close date, YYYY-MM-DD."
},
"lead_source_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Lead source id (freshsales_list_options lead_sources).",
"exclusiveMinimum": 0
},
"add_contact_ids": {
"type": "array",
"items": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"maxItems": 50,
"description": "Existing contact ids to attach."
},
"deal_pipeline_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Pipeline id (freshsales_list_deal_pipelines).",
"exclusiveMinimum": 0
},
"sales_account_id": {
"type": "integer",
"maximum": 9007199254740991,
"description": "Company the deal belongs to (freshsales_search sales_account).",
"exclusiveMinimum": 0
},
"remove_contact_ids": {
"type": "array",
"items": {
"type": "integer",
"maximum": 9007199254740991,
"exclusiveMinimum": 0
},
"maxItems": 50,
"description": "Contact ids to detach from the deal."
}
}
}