Kommo CRM API via curl. Use this skill for managing leads, contacts, companies, tasks, and sales pipelines.
/plugin marketplace add vm0-ai/api0/plugin install api0@api0This skill inherits all available tools. When active, it can use any tool Claude has access to.
Use the Kommo API via direct curl calls for CRM management including leads, contacts, companies, tasks, and sales pipelines.
Official docs:
https://developers.kommo.com/
Use this skill when you need to:
https://{subdomain}.kommo.comexport KOMMO_SUBDOMAIN="your-subdomain" # e.g., "mycompany" (not "mycompany.kommo.com")
export KOMMO_API_KEY="your-long-lived-token"
Important: When using
$VARin a command that pipes to another command, wrap the command containing$VARinbash -c '...'. Due to a Claude Code bug, environment variables are silently cleared when pipes are used directly.bash -c 'curl -s "https://api.example.com" -H "Authorization: Bearer $API_KEY"' | jq .
All examples below assume you have environment variables set.
The base URL is: https://${KOMMO_SUBDOMAIN}.kommo.com/api/v4
Authentication uses Bearer token in the Authorization header.
Rate limit: Maximum 7 requests per second.
Get all leads in your account:
bash -c 'curl -s "https://${KOMMO_SUBDOMAIN}.kommo.com/api/v4/leads" -H "Accept: application/json" -H "Authorization: Bearer ${KOMMO_API_KEY}"' | jq '.["_embedded"]["leads"][] | {id, name, price}
With filters:
bash -c 'curl -s "https://${KOMMO_SUBDOMAIN}.kommo.com/api/v4/leads?limit=10&page=1" -H "Accept: application/json" -H "Authorization: Bearer ${KOMMO_API_KEY}"' | jq '.["_embedded"]["leads"]
Get a specific lead:
LEAD_ID="12345"
bash -c 'curl -s "https://${KOMMO_SUBDOMAIN}.kommo.com/api/v4/leads/${LEAD_ID}" -H "Accept: application/json" -H "Authorization: Bearer ${KOMMO_API_KEY}"' | jq .
Create a new lead:
bash -c 'curl -s "https://${KOMMO_SUBDOMAIN}.kommo.com/api/v4/leads" -X POST -H "Content-Type: application/json" -H "Authorization: Bearer ${KOMMO_API_KEY}" -d '"'"'[{
"name": "New Lead",
"price": 5000
}]'"'"' | jq '"'"'.["_embedded"]["leads"]'"'"''
Create a lead with associated contact and company:
bash -c 'curl -s "https://${KOMMO_SUBDOMAIN}.kommo.com/api/v4/leads/complex" -X POST -H "Content-Type: application/json" -H "Authorization: Bearer ${KOMMO_API_KEY}" -d '"'"'[{
"name": "Lead with Contact",
"price": 10000,
"_embedded": {
"contacts": [{
"first_name": "John",
"last_name": "Doe"
}],
"companies": [{
"name": "Acme Corp"
}]
}
}]'"'"' | jq .'
Update an existing lead:
LEAD_ID="12345"
bash -c 'curl -s "https://${KOMMO_SUBDOMAIN}.kommo.com/api/v4/leads/${LEAD_ID}" -X PATCH -H "Content-Type: application/json" -H "Authorization: Bearer ${KOMMO_API_KEY}" -d '"'"'{
"price": 7500,
"name": "Updated Lead Name"
}'"'"' | jq .'
Get all contacts:
bash -c 'curl -s "https://${KOMMO_SUBDOMAIN}.kommo.com/api/v4/contacts" -H "Accept: application/json" -H "Authorization: Bearer ${KOMMO_API_KEY}"' | jq '.["_embedded"]["contacts"][] | {id, name}
Get a specific contact:
CONTACT_ID="12345"
bash -c 'curl -s "https://${KOMMO_SUBDOMAIN}.kommo.com/api/v4/contacts/${CONTACT_ID}" -H "Accept: application/json" -H "Authorization: Bearer ${KOMMO_API_KEY}"' | jq .
Create a new contact:
bash -c 'curl -s "https://${KOMMO_SUBDOMAIN}.kommo.com/api/v4/contacts" -X POST -H "Content-Type: application/json" -H "Authorization: Bearer ${KOMMO_API_KEY}" -d '"'"'[{
"first_name": "Jane",
"last_name": "Smith"
}]'"'"' | jq '"'"'.["_embedded"]["contacts"]'"'"''
Get all companies:
bash -c 'curl -s "https://${KOMMO_SUBDOMAIN}.kommo.com/api/v4/companies" -H "Accept: application/json" -H "Authorization: Bearer ${KOMMO_API_KEY}"' | jq '.["_embedded"]["companies"][] | {id, name}
Create a new company:
bash -c 'curl -s "https://${KOMMO_SUBDOMAIN}.kommo.com/api/v4/companies" -X POST -H "Content-Type: application/json" -H "Authorization: Bearer ${KOMMO_API_KEY}" -d '"'"'[{
"name": "New Company Inc"
}]'"'"' | jq '"'"'.["_embedded"]["companies"]'"'"''
Get all tasks:
bash -c 'curl -s "https://${KOMMO_SUBDOMAIN}.kommo.com/api/v4/tasks" -H "Accept: application/json" -H "Authorization: Bearer ${KOMMO_API_KEY}"' | jq '.["_embedded"]["tasks"][] | {id, text, complete_till}
Create a new task (use Unix timestamp for complete_till):
bash -c 'COMPLETE_TILL=$(( $(date +%s) + 86400 )); curl -s "https://${KOMMO_SUBDOMAIN}.kommo.com/api/v4/tasks" -X POST -H "Content-Type: application/json" -H "Authorization: Bearer ${KOMMO_API_KEY}" -d "[{\"text\": \"Follow up with client\", \"complete_till\": ${COMPLETE_TILL}, \"task_type_id\": 1}]"' | jq '.["_embedded"]["tasks"]'
Task types: 1 = Follow-up, 2 = Meeting
Get all sales pipelines:
bash -c 'curl -s "https://${KOMMO_SUBDOMAIN}.kommo.com/api/v4/leads/pipelines" -H "Accept: application/json" -H "Authorization: Bearer ${KOMMO_API_KEY}"' | jq '.["_embedded"]["pipelines"][] | {id, name}
Get stages for a specific pipeline:
PIPELINE_ID="12345"
bash -c 'curl -s "https://${KOMMO_SUBDOMAIN}.kommo.com/api/v4/leads/pipelines/${PIPELINE_ID}" -H "Accept: application/json" -H "Authorization: Bearer ${KOMMO_API_KEY}"' | jq '.["_embedded"]["statuses"][] | {id, name}
Get account information:
bash -c 'curl -s "https://${KOMMO_SUBDOMAIN}.kommo.com/api/v4/account" -H "Accept: application/json" -H "Authorization: Bearer ${KOMMO_API_KEY}"' | jq '{id, name, subdomain, currency}
{
"id": 12345,
"name": "Lead Name",
"price": 5000,
"responsible_user_id": 123,
"pipeline_id": 456,
"status_id": 789
}
{
"id": 12345,
"name": "John Doe",
"first_name": "John",
"last_name": "Doe"
}
?limit=N&page=N for large result setscomplete_till is Unix timestamp in seconds