Integrate Heffl into your workflows with our powerful REST API. Manage clients, create quotes, send invoices, and automate your business operations.

To use the Heffl API, authenticate using your API key. Get your API key from your Heffl dashboard settings.
API keys start with heffl_user_
{
"method": "GET",
"url": "https://api.heffl.com/api/v1/clients",
"headers": {
"Content-Type": "application/json",
"x-api-key": "YOUR_API_KEY_HERE"
}
}All API requests should be made to:
https://api.heffl.com/api/v1To ensure fair usage and system stability, the API enforces rate limits:
Rate Limit: 60 requests per 60 minutes
If you exceed this limit, you'll receive a 429 Too Many Requests error until your quota resets.
If you encounter any issues while using the Heffl API, please contact our support team.
Webhooks allow you to receive real-time notifications when events occur in your Heffl workspace. Subscribe to specific events and receive JSON payloads at your webhook URL.
Every webhook payload follows a consistent structure with three main fields:
{
"event": "client.created",
"timestamp": "2024-01-15T10:30:00.000Z",
"payload": {
"id": "clt_123456789",
"name": "John Doe",
"email": "[email protected]",
// ... event-specific data
}
}event
The name of the webhook event
timestamp
ISO 8601 timestamp when the event occurred
data
The event payload with resource details
Triggered when a new lead is created
{
"id": "lead_123e4567-e89b-12d3-a456-426614174000",
"name": "John Doe",
"mobile": "+1234567890",
"email": "[email protected]",
"secondaryMobile": null,
"title": "Marketing Manager",
"value": 5000,
"source": "Website",
"createdAt": "2024-01-15T10:30:00.000Z",
"website": "https://example.com",
"archived": false,
"stage": "New",
"customFields": {}
}Triggered when a lead is updated
{
"id": "lead_123e4567-e89b-12d3-a456-426614174000",
"name": "John Doe",
"mobile": "+1234567890",
"email": "[email protected]",
"secondaryMobile": "+0987654321",
"title": "VP of Marketing",
"value": 7500,
"source": "Website",
"createdAt": "2024-01-15T10:30:00.000Z",
"website": "https://example.com",
"archived": false,
"stage": "Contacted",
"customFields": {}
}Triggered when a lead's stage is changed
{
"id": "lead_123e4567-e89b-12d3-a456-426614174000",
"name": "John Doe",
"mobile": "+1234567890",
"email": "[email protected]",
"title": "Marketing Manager",
"value": 5000,
"source": "Website",
"createdAt": "2024-01-15T10:30:00.000Z",
"website": "https://example.com",
"archived": false,
"customFields": {},
"stage": "Contacted"
}Triggered when a lead is deleted
{
"ids": [
"lead_123e4567-e89b-12d3-a456-426614174000"
]
}Triggered when a new deal is created
{
"id": "deal_123e4567-e89b-12d3-a456-426614174000",
"createdAt": "2024-01-15T10:30:00.000Z",
"title": "Website Redesign Project",
"price": 5000,
"expectedCloseDate": "2024-02-15",
"source": "Website",
"client": {
"id": "client_123e4567-e89b-12d3-a456-426614174000",
"name": "Acme Corporation",
"number": "CLI-001",
"taxNumber": "TAX123456",
"website": "https://acme.com",
"customFields": {}
},
"stage": "Proposal",
"status": "open",
"number": "DL-2024-001"
}Triggered when a deal is updated
{
"id": "deal_123e4567-e89b-12d3-a456-426614174000",
"createdAt": "2024-01-15T10:30:00.000Z",
"title": "Website Redesign Project",
"price": 5500,
"expectedCloseDate": "2024-02-20",
"source": "Website",
"client": {
"id": "client_123e4567-e89b-12d3-a456-426614174000",
"name": "Acme Corporation",
"number": "CLI-001",
"taxNumber": "TAX123456",
"website": "https://acme.com",
"customFields": {}
},
"stage": "Negotiation",
"status": "open",
"number": "DL-2024-001"
}Triggered when a deal is deleted
{
"ids": [
"deal_123e4567-e89b-12d3-a456-426614174000"
]
}Triggered when a new client is created
{
"id": "client_123e4567-e89b-12d3-a456-426614174000",
"name": "Acme Corporation",
"number": "CLI-001",
"taxNumber": "TAX123456",
"website": "https://acme.com",
"customFields": {}
}Triggered when a client is updated
{
"id": "client_123e4567-e89b-12d3-a456-426614174000",
"name": "Acme Corporation Inc.",
"number": "CLI-001",
"taxNumber": "TAX123456789",
"website": "https://acme.com",
"customFields": {}
}Triggered when a client is deleted
{
"ids": [
"client_123e4567-e89b-12d3-a456-426614174000"
]
}Triggered when a new contact is created
{
"id": "contact_123e4567-e89b-12d3-a456-426614174000",
"name": "Jane Smith",
"firstName": "Jane",
"lastName": "Smith",
"mobile": "+1234567890",
"email": "[email protected]",
"jobTitle": "Marketing Director",
"customFields": {}
}Triggered when a contact is updated
{
"id": "contact_123e4567-e89b-12d3-a456-426614174000",
"name": "Jane Smith",
"firstName": "Jane",
"lastName": "Smith",
"mobile": "+1234567890",
"email": "[email protected]",
"jobTitle": "VP of Marketing",
"customFields": {}
}Triggered when a contact is deleted
{
"ids": [
"contact_123e4567-e89b-12d3-a456-426614174000"
]
}All webhook requests include a signature header:
x-heffl-signature: sha256=abc123...Verify the signature using your webhook secret key to ensure the request is legitimate.