Clarion IT ERP — full process APIs for bots / website / integrations.
Also see: All API links · Service Call (legacy create) · Challan API · User Manual
https://erp.clarionit.in/api
Auth (all endpoints):
Authorization: Bearer YOUR_BOT_API_TOKEN # or X-Api-Key: YOUR_BOT_API_TOKEN
Token = .env → BOT_API_TOKEN
GET /api/sales-people
GET /api/engineers
| Method | Endpoint | Purpose |
|---|---|---|
| GET | /api/service-calls | List (filters: status, search, sales_person_id, phone, limit) |
| POST | /api/service-calls | Create |
| GET | /api/service-calls/{id} | Detail + visits |
| POST | /api/service-calls/{id}/assign | Assign engineer(s) to a service visit |
| POST | /api/service-calls/{id}/pickup-drop | Assign engineer for vendor pickup / drop |
| GET | /api/service-calls/{id}/visits | Visit list (?visit_type=pickup_drop) |
| GET | /api/visits | Engineer visits (engineer_id, visit_type, open=1) |
| POST | /api/visits/{id}/status | Update visit or pickup/drop status |
| GET | /api/service-calls/{id}/challans | Linked challans |
curl -X POST "https://erp.clarionit.in/api/service-calls" \
-H "Authorization: Bearer YOUR_BOT_API_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"name": "Customer",
"phone": "98XXXXXXXX",
"address": "Raipur",
"requirement": "Printer issue",
"notes": "Morning prefer",
"source": "whatsapp",
"sales_person_id": 13
}'
Company call: omit sales_person_id (or send 0 / "company").
curl -X POST "https://erp.clarionit.in/api/service-calls/1396/assign" \
-H "Authorization: Bearer YOUR_BOT_API_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"engineer_id": [25, 31],
"date": "2026-09-05",
"visit_type": "service_call"
}'
curl -X POST "https://erp.clarionit.in/api/visits/816/status" \
-H "Authorization: Bearer YOUR_BOT_API_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"status": 3,
"remark": "Work done",
"travel_engg_id": 25,
"returnoffice": false
}'
Visit status: 0 Assigned · 1 Working · 2 Pending & Return · 3 Complete · -1 Canceled
curl -X POST "https://erp.clarionit.in/api/service-calls/1399/pickup-drop" \
-H "Authorization: Bearer YOUR_BOT_API_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"engineer_id": [42],
"date": "2026-09-15",
"pickup_drop_kind": "pickup",
"vendor_name": "ABC CCTV Supplier",
"vendor_address": "Pandri, Raipur",
"remark": "4 cameras + 1 DVR"
}'
pickup_drop_kind: pickup · drop · both
Same payload also works on POST /api/service-calls/{id}/assign with "visit_type": "pickup_drop".
Telegram: Pickup / Drop Assigned (not a service-call assign).
curl "https://erp.clarionit.in/api/visits?engineer_id=42&visit_type=pickup_drop&open=1" \ -H "Authorization: Bearer YOUR_BOT_API_TOKEN" \ -H "Accept: application/json"
curl -X POST "https://erp.clarionit.in/api/visits/900/status" \
-H "Authorization: Bearer YOUR_BOT_API_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"status": 3,
"remark": "4 cameras picked from vendor",
"travel_engg_id": 42,
"returnoffice": true
}'
Response next.action = pickup_drop_done (no challan). Parent call stays open.
Telegram: Pickup / Drop Update with Type + Vendor (not a generic Status Update).
| Method | Endpoint | Purpose |
|---|---|---|
| GET | /api/job-cards | List (status, employee_id, sales_person_id, search, limit) |
| POST | /api/job-cards | Create (+ Telegram + service-call sync) |
| GET | /api/job-cards/{id} | Detail |
| PUT/PATCH | /api/job-cards/{id} | Update (+ re-sync) |
| POST | /api/job-cards/{id}/status | Change status |
| DELETE | /api/job-cards/{id} | Delete |
curl -X POST "https://erp.clarionit.in/api/job-cards" \
-H "Authorization: Bearer YOUR_BOT_API_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"job_date": "2026-09-05",
"client_name": "Customer",
"client_address": "Raipur",
"contact_details": "98XXXXXXXX",
"employee_id": 25,
"sales_person_id": 13,
"problem_description": "Laptop not powering on",
"brand_name": "HP",
"model_no": "15s",
"serial_no": "ABC123",
"accessories": "Charger",
"remarks": "Urgent",
"expected_date": "2026-09-10",
"status": 0
}'
Creates linked service call + assignment automatically (unless employee_id = -1 Client Self).
curl -X POST "https://erp.clarionit.in/api/job-cards/691/status" \
-H "Authorization: Bearer YOUR_BOT_API_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{ "status": 1 }'
Statuses: 0 Open · 1 In Progress · 2 Transfer Out · 3 Ready · 4 Delivered · 5 Transfer In · -1 Cancelled
| Method | Endpoint | Purpose |
|---|---|---|
| GET | /api/challans | List |
| POST | /api/challans | Create (visit_id + items) |
| GET/PUT/DELETE | /api/challans/{id} | Detail / update / delete |
| POST | /api/challans/{id}/account | Account bill update |
| GET | /api/challans/{id}/pdf | PDF URL |
Full docs: /docs/challan-api
curl -X POST "https://erp.clarionit.in/api/challans" \
-H "Authorization: Bearer YOUR_BOT_API_TOKEN" \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{
"visit_id": 816,
"remark": "Done",
"items": [
{ "description": "Service", "machine_no": "", "qty": 1, "rate": 500, "billable": 1 }
]
}'