Complete reference for all API endpoints with examples
/api/v1/customersGet all customers with pagination
curl -X GET https://your-crm.com/api/v1/customers \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/customers/{id}Get specific customer by ID
curl -X GET https://your-crm.com/api/v1/customers/123 \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/customersCreate new customer
curl -X POST https://your-crm.com/api/v1/customers \
-H "X-API-KEY: pk_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{"company": "ACME Corp", "email": "contact@acme.com"}'/api/v1/customers/{id}Update existing customer
curl -X PUT https://your-crm.com/api/v1/customers/123 \
-H "X-API-KEY: pk_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{"company": "ACME Corporation"}'/api/v1/customers/{id}Delete customer
curl -X DELETE https://your-crm.com/api/v1/customers/123 \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/customers/{id}/contactsList contacts for a customer
curl -X GET https://your-crm.com/api/v1/customers/123/contacts \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/customers/{id}/projectsList projects for a customer
curl -X GET https://your-crm.com/api/v1/customers/123/projects \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/customers/{id}/invoicesList invoices for a customer
curl -X GET https://your-crm.com/api/v1/customers/123/invoices \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/customers/{id}/estimatesList estimates for a customer
curl -X GET https://your-crm.com/api/v1/customers/123/estimates \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/customers/{id}/ticketsList tickets for a customer
curl -X GET https://your-crm.com/api/v1/customers/123/tickets \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/customers/{id}/contractsList contracts for a customer
curl -X GET https://your-crm.com/api/v1/customers/123/contracts \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/ticketsGet all tickets
curl -X GET https://your-crm.com/api/v1/tickets \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/ticketsCreate new ticket
curl -X POST https://your-crm.com/api/v1/tickets \
-H "X-API-KEY: pk_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{"subject": "API Issue", "message": "Need help with API integration"}'/api/v1/tickets/{id}Get ticket details by ID
curl -X GET https://your-crm.com/api/v1/tickets/456 \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/tickets/{id}Update an existing ticket
curl -X PUT https://your-crm.com/api/v1/tickets/456 \
-H "X-API-KEY: pk_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{"subject": "Updated Subject", "priority": 2}'/api/v1/tickets/{id}Delete a ticket
curl -X DELETE https://your-crm.com/api/v1/tickets/456 \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/tickets/{id}/repliesList replies for a ticket
curl -X GET https://your-crm.com/api/v1/tickets/456/replies \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/tickets/{id}/attachmentsList attachments for a ticket
curl -X GET https://your-crm.com/api/v1/tickets/456/attachments \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/tickets/{id}/assignAssign ticket to a staff member
curl -X POST https://your-crm.com/api/v1/tickets/456/assign \
-H "X-API-KEY: pk_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{"staff_id": 5}'/api/v1/tickets/{id}/statusUpdate ticket status
curl -X PUT https://your-crm.com/api/v1/tickets/456/status \
-H "X-API-KEY: pk_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{"status": "resolved"}'/api/v1/tickets/{id}/historyGet ticket activity history
curl -X GET https://your-crm.com/api/v1/tickets/456/history \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/invoicesGet all invoices
curl -X GET https://your-crm.com/api/v1/invoices \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/invoicesCreate new invoice
curl -X POST https://your-crm.com/api/v1/invoices \
-H "X-API-KEY: pk_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{"customer_id": 123, "total": 1500.00}'/api/v1/invoices/{id}/paymentsList payments for an invoice
curl -X GET https://your-crm.com/api/v1/invoices/789/payments \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/invoices/{id}/pdfDownload invoice as PDF
curl -X GET https://your-crm.com/api/v1/invoices/789/pdf \
-H "X-API-KEY: pk_your_api_key_here" \
-o invoice.pdf/api/v1/invoices/{id}/sendSend invoice to customer via email
curl -X POST https://your-crm.com/api/v1/invoices/789/send \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/leadsList all leads with pagination
curl -X GET https://your-crm.com/api/v1/leads \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/leadsCreate a new lead
curl -X POST https://your-crm.com/api/v1/leads \
-H "X-API-KEY: pk_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{"name": "John Doe", "email": "john@example.com", "company": "ACME Corp", "source": "website", "status": 1, "assigned": 5}'/api/v1/leads/{id}Get lead details by ID
curl -X GET https://your-crm.com/api/v1/leads/42 \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/leads/{id}Update an existing lead
curl -X PUT https://your-crm.com/api/v1/leads/42 \
-H "X-API-KEY: pk_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{"status": 2, "company": "ACME Corporation"}'/api/v1/leads/{id}Delete a lead
curl -X DELETE https://your-crm.com/api/v1/leads/42 \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/leads/{id}/convertConvert lead to customer
curl -X POST https://your-crm.com/api/v1/leads/42/convert \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/leads/{id}/activitiesList activities for a lead
curl -X GET https://your-crm.com/api/v1/leads/42/activities \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/leads/{id}/notesList notes for a lead
curl -X GET https://your-crm.com/api/v1/leads/42/notes \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/projectsList all projects with pagination
curl -X GET https://your-crm.com/api/v1/projects \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/projectsCreate a new project
curl -X POST https://your-crm.com/api/v1/projects \
-H "X-API-KEY: pk_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{"name": "Website Redesign", "clientid": 123, "billing_type": 1, "start_date": "2026-03-01", "deadline": "2026-06-30", "description": "Complete website overhaul"}'/api/v1/projects/{id}Get project details by ID
curl -X GET https://your-crm.com/api/v1/projects/15 \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/projects/{id}Update an existing project
curl -X PUT https://your-crm.com/api/v1/projects/15 \
-H "X-API-KEY: pk_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{"deadline": "2026-07-31", "description": "Updated project scope"}'/api/v1/projects/{id}Delete a project
curl -X DELETE https://your-crm.com/api/v1/projects/15 \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/projects/{id}/tasksList tasks for a project
curl -X GET https://your-crm.com/api/v1/projects/15/tasks \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/projects/{id}/milestonesList milestones for a project
curl -X GET https://your-crm.com/api/v1/projects/15/milestones \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/projects/{id}/filesList files for a project
curl -X GET https://your-crm.com/api/v1/projects/15/files \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/projects/{id}/discussionsList discussions for a project
curl -X GET https://your-crm.com/api/v1/projects/15/discussions \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/projects/{id}/activityGet project activity feed
curl -X GET https://your-crm.com/api/v1/projects/15/activity \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/contractsList all contracts with pagination
curl -X GET https://your-crm.com/api/v1/contracts \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/contractsCreate a new contract
curl -X POST https://your-crm.com/api/v1/contracts \
-H "X-API-KEY: pk_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{"client": 123, "subject": "Annual Support", "contract_type": 1, "datestart": "2026-01-01", "dateend": "2026-12-31", "contract_value": 12000.00}'/api/v1/contracts/{id}Get contract details by ID
curl -X GET https://your-crm.com/api/v1/contracts/8 \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/contracts/{id}Update an existing contract
curl -X PUT https://your-crm.com/api/v1/contracts/8 \
-H "X-API-KEY: pk_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{"contract_value": 15000.00, "dateend": "2027-03-31"}'/api/v1/contracts/{id}Delete a contract
curl -X DELETE https://your-crm.com/api/v1/contracts/8 \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/contracts/expiringList contracts that are about to expire
curl -X GET https://your-crm.com/api/v1/contracts/expiring \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/contracts/expiredList expired contracts
curl -X GET https://your-crm.com/api/v1/contracts/expired \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/contracts/{id}/renewRenew an existing contract
curl -X POST https://your-crm.com/api/v1/contracts/8/renew \
-H "X-API-KEY: pk_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{"dateend": "2027-12-31"}'/api/v1/contracts/{id}/signSign a contract
curl -X POST https://your-crm.com/api/v1/contracts/8/sign \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/contracts/{id}/attachmentsList attachments for a contract
curl -X GET https://your-crm.com/api/v1/contracts/8/attachments \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/contracts/{id}/commentsList comments for a contract
curl -X GET https://your-crm.com/api/v1/contracts/8/comments \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/expensesList all expenses with pagination
curl -X GET https://your-crm.com/api/v1/expenses \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/expensesCreate a new expense
curl -X POST https://your-crm.com/api/v1/expenses \
-H "X-API-KEY: pk_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{"category": 3, "amount": 250.00, "currency": "USD", "date": "2026-02-10", "clientid": 123, "note": "Office supplies"}'/api/v1/expenses/{id}Get expense details by ID
curl -X GET https://your-crm.com/api/v1/expenses/55 \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/expenses/{id}Update an existing expense
curl -X PUT https://your-crm.com/api/v1/expenses/55 \
-H "X-API-KEY: pk_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{"amount": 275.00, "note": "Office supplies - updated receipt"}'/api/v1/expenses/{id}Delete an expense
curl -X DELETE https://your-crm.com/api/v1/expenses/55 \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/expenses/categoriesList all expense categories
curl -X GET https://your-crm.com/api/v1/expenses/categories \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/estimatesList all estimates with pagination
curl -X GET https://your-crm.com/api/v1/estimates \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/estimatesCreate a new estimate
curl -X POST https://your-crm.com/api/v1/estimates \
-H "X-API-KEY: pk_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{"clientid": 123, "number": "EST-001", "date": "2026-02-10", "expirydate": "2026-03-10", "items": [{"description": "Consulting", "qty": 10, "rate": 150}], "status": 1}'/api/v1/estimates/{id}Get estimate details by ID
curl -X GET https://your-crm.com/api/v1/estimates/20 \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/estimates/{id}Update an existing estimate
curl -X PUT https://your-crm.com/api/v1/estimates/20 \
-H "X-API-KEY: pk_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{"status": 2, "expirydate": "2026-04-10"}'/api/v1/estimates/{id}Delete an estimate
curl -X DELETE https://your-crm.com/api/v1/estimates/20 \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/estimates/{id}/sendSend estimate to customer via email
curl -X POST https://your-crm.com/api/v1/estimates/20/send \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/estimates/{id}/convertConvert estimate to invoice
curl -X POST https://your-crm.com/api/v1/estimates/20/convert \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/estimates/{id}/pdfDownload estimate as PDF
curl -X GET https://your-crm.com/api/v1/estimates/20/pdf \
-H "X-API-KEY: pk_your_api_key_here" \
-o estimate.pdf/api/v1/tasksList all tasks with pagination
curl -X GET https://your-crm.com/api/v1/tasks \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/tasksCreate a new task
curl -X POST https://your-crm.com/api/v1/tasks \
-H "X-API-KEY: pk_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{"name": "Review proposal", "startdate": "2026-02-10", "duedate": "2026-02-15", "priority": 2, "rel_type": "project", "rel_id": 15, "assignees": [1, 5]}'/api/v1/tasks/{id}Get task details by ID
curl -X GET https://your-crm.com/api/v1/tasks/100 \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/tasks/{id}Update an existing task
curl -X PUT https://your-crm.com/api/v1/tasks/100 \
-H "X-API-KEY: pk_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{"priority": 1, "duedate": "2026-02-20"}'/api/v1/tasks/{id}Delete a task
curl -X DELETE https://your-crm.com/api/v1/tasks/100 \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/tasks/{id}/timesheetsList timesheets for a task
curl -X GET https://your-crm.com/api/v1/tasks/100/timesheets \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/tasks/{id}/commentsList comments for a task
curl -X GET https://your-crm.com/api/v1/tasks/100/comments \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/tasks/{id}/assignAssign task to a staff member
curl -X POST https://your-crm.com/api/v1/tasks/100/assign \
-H "X-API-KEY: pk_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{"staff_id": 5}'/api/v1/tasks/{id}/statusUpdate task status
curl -X PUT https://your-crm.com/api/v1/tasks/100/status \
-H "X-API-KEY: pk_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{"status": 4}'/api/v1/tasks/{id}/mark-completeMark task as complete
curl -X POST https://your-crm.com/api/v1/tasks/100/mark-complete \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/tasks/{id}/attachmentsList attachments for a task
curl -X GET https://your-crm.com/api/v1/tasks/100/attachments \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/tasks/{id}/checklistList checklist items for a task
curl -X GET https://your-crm.com/api/v1/tasks/100/checklist \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/tasks/{id}/prioritySet task priority
curl -X PUT https://your-crm.com/api/v1/tasks/100/priority \
-H "X-API-KEY: pk_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{"priority": 1}'/api/v1/tasks/{id}/followersList followers for a task
curl -X GET https://your-crm.com/api/v1/tasks/100/followers \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/staffList all staff members
curl -X GET https://your-crm.com/api/v1/staff \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/staffCreate a new staff member
curl -X POST https://your-crm.com/api/v1/staff \
-H "X-API-KEY: pk_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{"firstname": "Jane", "lastname": "Smith", "email": "jane@company.com", "password": "securePass123"}'/api/v1/staff/{id}Get staff member details by ID
curl -X GET https://your-crm.com/api/v1/staff/5 \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/staff/{id}Update a staff member
curl -X PUT https://your-crm.com/api/v1/staff/5 \
-H "X-API-KEY: pk_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{"firstname": "Jane", "lastname": "Smith", "email": "jane@company.com"}'/api/v1/staff/{id}Delete a staff member
curl -X DELETE https://your-crm.com/api/v1/staff/5 \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/staff/rolesList all staff roles
curl -X GET https://your-crm.com/api/v1/staff/roles \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/staff/departmentsList all departments
curl -X GET https://your-crm.com/api/v1/staff/departments \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/staff/{id}/permissionsGet permissions for a staff member
curl -X GET https://your-crm.com/api/v1/staff/5/permissions \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/staff/{id}/tasksList tasks assigned to a staff member
curl -X GET https://your-crm.com/api/v1/staff/5/tasks \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/staff/{id}/timesheetsList timesheets for a staff member
curl -X GET https://your-crm.com/api/v1/staff/5/timesheets \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/staff/{id}/change-passwordChange staff member password
curl -X POST https://your-crm.com/api/v1/staff/5/change-password \
-H "X-API-KEY: pk_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{"password": "newSecurePass456"}'/api/v1/staff/{id}/activateActivate a staff member
curl -X POST https://your-crm.com/api/v1/staff/5/activate \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/staff/{id}/deactivateDeactivate a staff member
curl -X POST https://your-crm.com/api/v1/staff/5/deactivate \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/proposalsList all proposals with pagination
curl -X GET https://your-crm.com/api/v1/proposals \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/proposalsCreate a new proposal
curl -X POST https://your-crm.com/api/v1/proposals \
-H "X-API-KEY: pk_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{"subject": "Website Development Proposal", "rel_type": "customer", "rel_id": 123, "date": "2026-02-10", "open_till": "2026-03-10", "content": "<p>Proposal details here</p>"}'/api/v1/proposals/{id}Get proposal details by ID
curl -X GET https://your-crm.com/api/v1/proposals/7 \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/proposals/{id}Update an existing proposal
curl -X PUT https://your-crm.com/api/v1/proposals/7 \
-H "X-API-KEY: pk_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{"subject": "Updated Proposal", "open_till": "2026-04-10"}'/api/v1/proposals/{id}Delete a proposal
curl -X DELETE https://your-crm.com/api/v1/proposals/7 \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/proposals/{id}/sendSend proposal to customer via email
curl -X POST https://your-crm.com/api/v1/proposals/7/send \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/proposals/{id}/acceptAccept a proposal
curl -X POST https://your-crm.com/api/v1/proposals/7/accept \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/proposals/{id}/declineDecline a proposal
curl -X POST https://your-crm.com/api/v1/proposals/7/decline \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/proposals/{id}/pdfDownload proposal as PDF
curl -X GET https://your-crm.com/api/v1/proposals/7/pdf \
-H "X-API-KEY: pk_your_api_key_here" \
-o proposal.pdf/api/v1/proposals/{id}/commentsList comments for a proposal
curl -X GET https://your-crm.com/api/v1/proposals/7/comments \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/subscriptionsList all subscriptions
curl -X GET https://your-crm.com/api/v1/subscriptions \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/subscriptionsCreate a new subscription
curl -X POST https://your-crm.com/api/v1/subscriptions \
-H "X-API-KEY: pk_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{"name": "Monthly Support Plan", "clientid": 123, "quantity": 1, "date": "2026-02-10"}'/api/v1/subscriptions/{id}Get subscription details by ID
curl -X GET https://your-crm.com/api/v1/subscriptions/10 \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/subscriptions/{id}Update an existing subscription
curl -X PUT https://your-crm.com/api/v1/subscriptions/10 \
-H "X-API-KEY: pk_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{"quantity": 2, "name": "Monthly Support Plan - Updated"}'/api/v1/subscriptions/{id}Delete a subscription
curl -X DELETE https://your-crm.com/api/v1/subscriptions/10 \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/credit-notesList all credit notes
curl -X GET https://your-crm.com/api/v1/credit-notes \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/credit-notesCreate a new credit note
curl -X POST https://your-crm.com/api/v1/credit-notes \
-H "X-API-KEY: pk_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{"clientid": 123, "number": "CN-001", "date": "2026-02-10", "items": [{"description": "Refund for service", "qty": 1, "rate": 500}]}'/api/v1/credit-notes/{id}Get credit note details by ID
curl -X GET https://your-crm.com/api/v1/credit-notes/3 \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/credit-notes/{id}Update an existing credit note
curl -X PUT https://your-crm.com/api/v1/credit-notes/3 \
-H "X-API-KEY: pk_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{"status": 2}'/api/v1/credit-notes/{id}Delete a credit note
curl -X DELETE https://your-crm.com/api/v1/credit-notes/3 \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/credit-notes/{id}/refundsList refunds for a credit note
curl -X GET https://your-crm.com/api/v1/credit-notes/3/refunds \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/credit-notes/{id}/creditsList applied credits for a credit note
curl -X GET https://your-crm.com/api/v1/credit-notes/3/credits \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/credit-notes/{id}/pdfDownload credit note as PDF
curl -X GET https://your-crm.com/api/v1/credit-notes/3/pdf \
-H "X-API-KEY: pk_your_api_key_here" \
-o credit-note.pdf/api/v1/paymentsList all payments with pagination. Filterable by invoice_id, customer_id, date_from, date_to, payment_mode
curl -X GET "https://your-crm.com/api/v1/payments?invoice_id=789" \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/payments/{id}Get payment record details by ID
curl -X GET https://your-crm.com/api/v1/payments/30 \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/paymentsCreate a new payment record. Required: invoiceid, amount, date. Automatically updates invoice paid status
curl -X POST https://your-crm.com/api/v1/payments \
-H "X-API-KEY: pk_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{"invoiceid": 789, "amount": 500.00, "date": "2026-02-10", "paymentmode": "bank_transfer"}'/api/v1/payments/{id}Update an existing payment record
curl -X PUT https://your-crm.com/api/v1/payments/30 \
-H "X-API-KEY: pk_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{"amount": 550.00, "note": "Updated payment amount"}'/api/v1/payments/{id}Delete a payment record. Automatically updates invoice paid status
curl -X DELETE https://your-crm.com/api/v1/payments/30 \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/itemsList all items/products with pagination. Filterable by group_id, search
curl -X GET "https://your-crm.com/api/v1/items?group_id=2" \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/items/{id}Get item details by ID
curl -X GET https://your-crm.com/api/v1/items/25 \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/itemsCreate a new item. Required: description (item name), rate
curl -X POST https://your-crm.com/api/v1/items \
-H "X-API-KEY: pk_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{"description": "Consulting Hour", "rate": 150.00, "group_id": 2, "unit": "hour"}'/api/v1/items/{id}Update an existing item
curl -X PUT https://your-crm.com/api/v1/items/25 \
-H "X-API-KEY: pk_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{"rate": 175.00, "description": "Senior Consulting Hour"}'/api/v1/items/{id}Delete an item
curl -X DELETE https://your-crm.com/api/v1/items/25 \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/items/groupsList all item groups
curl -X GET https://your-crm.com/api/v1/items/groups \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/contactsList all contacts with pagination. Filterable by customer_id, active, search, is_primary
curl -X GET "https://your-crm.com/api/v1/contacts?customer_id=123" \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/contacts/{id}Get contact details by ID
curl -X GET https://your-crm.com/api/v1/contacts/45 \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/contactsCreate a new contact. Required: userid (customer_id), firstname, lastname, email. Email must be unique per customer
curl -X POST https://your-crm.com/api/v1/contacts \
-H "X-API-KEY: pk_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{"userid": 123, "firstname": "Jane", "lastname": "Smith", "email": "jane@acme.com", "phonenumber": "+1234567890"}'/api/v1/contacts/{id}Update an existing contact
curl -X PUT https://your-crm.com/api/v1/contacts/45 \
-H "X-API-KEY: pk_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{"phonenumber": "+0987654321", "title": "CTO"}'/api/v1/contacts/{id}Delete a contact. Primary contacts cannot be deleted
curl -X DELETE https://your-crm.com/api/v1/contacts/45 \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/timesheetsList all timesheet entries with pagination. Filterable by task_id, staff_id, date_from, date_to
curl -X GET "https://your-crm.com/api/v1/timesheets?staff_id=5" \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/timesheets/{id}Get timesheet entry details by ID
curl -X GET https://your-crm.com/api/v1/timesheets/88 \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/timesheetsCreate a new timesheet entry. Required: task_id, staff_id, start_time. Supports running timers (omit end_time)
curl -X POST https://your-crm.com/api/v1/timesheets \
-H "X-API-KEY: pk_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{"task_id": 100, "staff_id": 5, "start_time": "2026-02-10 09:00:00", "end_time": "2026-02-10 12:30:00"}'/api/v1/timesheets/{id}Update an existing timesheet entry
curl -X PUT https://your-crm.com/api/v1/timesheets/88 \
-H "X-API-KEY: pk_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{"end_time": "2026-02-10 13:00:00", "note": "Extended session"}'/api/v1/timesheets/{id}Delete a timesheet entry
curl -X DELETE https://your-crm.com/api/v1/timesheets/88 \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/notesList all notes with pagination. Filterable by rel_type, rel_id, staff_id, date_from, date_to
curl -X GET "https://your-crm.com/api/v1/notes?rel_type=customer&rel_id=123" \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/notes/{id}Get note details by ID
curl -X GET https://your-crm.com/api/v1/notes/200 \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/notesCreate a new note. Required: rel_type, rel_id, description. Valid rel_types: customer, lead, invoice, estimate, contract, proposal, project, task, expense, staff
curl -X POST https://your-crm.com/api/v1/notes \
-H "X-API-KEY: pk_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{"rel_type": "customer", "rel_id": 123, "description": "Follow up about renewal next week"}'/api/v1/notes/{id}Update an existing note. Cannot change rel_type or rel_id after creation
curl -X PUT https://your-crm.com/api/v1/notes/200 \
-H "X-API-KEY: pk_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{"description": "Updated: Follow up completed, renewal confirmed"}'/api/v1/notes/{id}Delete a note
curl -X DELETE https://your-crm.com/api/v1/notes/200 \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/currenciesList all available currencies
curl -X GET https://your-crm.com/api/v1/currencies \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/taxesList all tax rates
curl -X GET https://your-crm.com/api/v1/taxes \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/payment-modesList all payment methods
curl -X GET https://your-crm.com/api/v1/payment-modes \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/countriesList all countries
curl -X GET https://your-crm.com/api/v1/countries \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/departmentsList all departments
curl -X GET https://your-crm.com/api/v1/departments \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/ticket-statusesList all ticket statuses
curl -X GET https://your-crm.com/api/v1/ticket-statuses \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/ticket-prioritiesList all ticket priorities
curl -X GET https://your-crm.com/api/v1/ticket-priorities \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/lead-statusesList all lead statuses
curl -X GET https://your-crm.com/api/v1/lead-statuses \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/lead-sourcesList all lead sources
curl -X GET https://your-crm.com/api/v1/lead-sources \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/contract-typesList all contract types
curl -X GET https://your-crm.com/api/v1/contract-types \
-H "X-API-KEY: pk_your_api_key_here"/api/v1/item-groupsList all item groups
curl -X GET https://your-crm.com/api/v1/item-groups \
-H "X-API-KEY: pk_your_api_key_here"Include your API key in the X-API-KEY header:
X-API-KEY: pk_your_api_key_hereInclude JWT token in Authorization header:
Authorization: Bearer your_jwt_token| Code | Description |
|---|---|
| 200 | Success - Request completed successfully |
| 201 | Created - Resource created successfully |
| 400 | Bad Request - Invalid parameters |
| 401 | Unauthorized - Invalid or missing authentication |
| 404 | Not Found - Resource not found |
| 429 | Too Many Requests - Rate limit exceeded |
| 500 | Server Error - Internal server error |