This connects Claude to Bitrix24's CRM through webhook-based API calls. You get straightforward access to the core stuff: managing leads, contacts, and deals, plus basic task operations and user lookups. The skill documentation shows you how to create, list, update, and delete CRM entities using curl commands with JSON payloads. It's solid for automating CRM workflows or building conversational interfaces over your Bitrix data. The webhook approach means no OAuth dance, but you need to keep that URL secure since it's bearer authentication. Rate limits apply, so batch operations need some throttling.
npx -y skills add vm0-ai/vm0-skills --skill bitrix --agent claude-codeInstalls into .claude/skills of the current project.
All examples assume BITRIX_WEBHOOK_URL is set to your webhook base URL.
Get information about the authenticated user:
curl -s -X GET "$BITRIX_WEBHOOK_URL/user.current.json"
Response:
{
"result": {
"ID": "1",
"NAME": "John",
"LAST_NAME": "Doe",
"EMAIL": "john@example.com"
}
}
Get a list of users in the workspace:
curl -s -X GET "$BITRIX_WEBHOOK_URL/user.get.json" | jq '.result[] | {ID, NAME, LAST_NAME, EMAIL}'
Write to /tmp/bitrix_request.json:
{
"fields": {
"TITLE": "New Lead from API",
"NAME": "John",
"LAST_NAME": "Doe",
"PHONE": [{"VALUE": "+1234567890", "VALUE_TYPE": "WORK"}],
"EMAIL": [{"VALUE": "john@example.com", "VALUE_TYPE": "WORK"}]
}
}
Then run:
curl -s -X POST "$BITRIX_WEBHOOK_URL/crm.lead.add.json" --header "Content-Type: application/json" -d @/tmp/bitrix_request.json
Response:
{
"result": 123
}
Replace <your-lead-id> with the actual lead ID:
curl -s -X GET "$BITRIX_WEBHOOK_URL/crm.lead.get.json?id=<your-lead-id>"
curl -s -X GET "$BITRIX_WEBHOOK_URL/crm.lead.list.json" | jq '.result[] | {ID, TITLE, STATUS_ID}'
With filter:
Write to /tmp/bitrix_request.json:
{
"filter": {"STATUS_ID": "NEW"},
"select": ["ID", "TITLE", "NAME", "PHONE"]
}
Then run:
curl -s -X POST "$BITRIX_WEBHOOK_URL/crm.lead.list.json" --header "Content-Type: application/json" -d @/tmp/bitrix_request.json
Write to /tmp/bitrix_request.json:
{
"id": 123,
"fields": {
"STATUS_ID": "IN_PROCESS",
"COMMENTS": "Updated via API"
}
}
Then run:
curl -s -X POST "$BITRIX_WEBHOOK_URL/crm.lead.update.json" --header "Content-Type: application/json" -d @/tmp/bitrix_request.json
Replace <your-lead-id> with the actual lead ID:
curl -s -X GET "$BITRIX_WEBHOOK_URL/crm.lead.delete.json?id=<your-lead-id>"
Write to /tmp/bitrix_request.json:
{
"fields": {
"NAME": "Jane",
"LAST_NAME": "Smith",
"PHONE": [{"VALUE": "+1987654321", "VALUE_TYPE": "MOBILE"}],
"EMAIL": [{"VALUE": "jane@example.com", "VALUE_TYPE": "WORK"}]
}
}
Then run:
curl -s -X POST "$BITRIX_WEBHOOK_URL/crm.contact.add.json" --header "Content-Type: application/json" -d @/tmp/bitrix_request.json
curl -s -X GET "$BITRIX_WEBHOOK_URL/crm.contact.list.json" | jq '.result[] | {ID, NAME, LAST_NAME}'
Write to /tmp/bitrix_request.json:
{
"fields": {
"TITLE": "New Deal from API",
"STAGE_ID": "NEW",
"OPPORTUNITY": 5000,
"CURRENCY_ID": "USD"
}
}
Then run:
curl -s -X POST "$BITRIX_WEBHOOK_URL/crm.deal.add.json" --header "Content-Type: application/json" -d @/tmp/bitrix_request.json
curl -s -X GET "$BITRIX_WEBHOOK_URL/crm.deal.list.json" | jq '.result[] | {ID, TITLE, STAGE_ID, OPPORTUNITY}'
Write to /tmp/bitrix_request.json:
{
"id": 456,
"fields": {
"STAGE_ID": "WON"
}
}
Then run:
curl -s -X POST "$BITRIX_WEBHOOK_URL/crm.deal.update.json" --header "Content-Type: application/json" -d @/tmp/bitrix_request.json
Write to /tmp/bitrix_request.json:
{
"fields": {
"TITLE": "New Task from API",
"DESCRIPTION": "Task description here",
"RESPONSIBLE_ID": 1,
"DEADLINE": "2025-12-31"
}
}
Then run:
curl -s -X POST "$BITRIX_WEBHOOK_URL/tasks.task.add.json" --header "Content-Type: application/json" -d @/tmp/bitrix_request.json
curl -s -X GET "$BITRIX_WEBHOOK_URL/tasks.task.list.json" | jq '.result.tasks[] | {id, title, status}'
Replace <your-task-id> with the actual task ID:
curl -s -X GET "$BITRIX_WEBHOOK_URL/tasks.task.complete.json?taskId=<your-task-id>"
Get available fields for any entity:
# Lead fields
curl -s -X GET "$BITRIX_WEBHOOK_URL/crm.lead.fields.json"
# Contact fields
curl -s -X GET "$BITRIX_WEBHOOK_URL/crm.contact.fields.json"
# Deal fields
curl -s -X GET "$BITRIX_WEBHOOK_URL/crm.deal.fields.json"
| Parameter | Description |
|---|---|
filter | Filter results (e.g., {"STATUS_ID": "NEW"}) |
select | Fields to return (e.g., ["ID", "TITLE"]) |
order | Sort order (e.g., {"ID": "DESC"}) |
start | Pagination offset |
*.fields.json methods to get valid field namesstart parameter for large datasetsjuliusbrussee/caveman
mattpocock/skills
shadcn/improve
obra/superpowers
forrestchang/andrej-karpathy-skills
vercel-labs/skills