API Reference
Integrate Practicore with external systems using our REST API and webhooks for real-time event notifications.
Authentication#
API requests require authentication via session cookies (for browser) or API keys (for integrations).
API Key Authentication#
Include your API key in the Authorization header:
Authorization: Bearer YOUR_API_KEY
Generating API Keys#
- 1. Go to Settings → API & Integrations
- 2. Click "Generate New API Key"
- 3. Give the key a descriptive name
- 4. Set permissions (read-only or read-write)
- 5. Copy and securely store the key (shown only once)
Never expose your API key in client-side code or public repositories. Use environment variables on your server and rotate keys periodically.
Request Examples#
Complete examples for common API operations using cURL and JavaScript.
List Clients#
Retrieve a paginated list of all clients with optional filters:
curl -X GET"https://app.practicore.in/api/clients?page=1&limit=20&entityType=company"\ -H"Authorization: Bearer YOUR_API_KEY"\ -H"Content-Type: application/json"
Response:
{
"data": [
{
"id":"clnt_abc123",
"name":"ABC Corporation",
"entityType":"company",
"pan":"AAACA1234A",
"gstin":"27AAACA1234A1ZB",
"email":"accounts@abccorp.com",
"phone":"+91 98765 43210",
"status":"active",
"createdAt":"2025-01-15T10:30:00Z"
}
],
"meta": {
"page": 1,
"limit": 20,
"total": 45,
"totalPages": 3
}
}Create a Task#
Create a new task with client association:
curl -X POST"https://app.practicore.in/api/tasks"\
-H"Authorization: Bearer YOUR_API_KEY"\
-H"Content-Type: application/json"\
-d '{
"title":"File GSTR-3B for October 2025",
"description":"Monthly GST return filing",
"clientId":"clnt_abc123",
"type":"GSTR",
"priority":"high",
"dueDate":"2025-11-20T23:59:59Z",
"assigneeId":"user_xyz789"
}'Response:
{
"data": {
"id":"task_def456",
"title":"File GSTR-3B for October 2025",
"description":"Monthly GST return filing",
"clientId":"clnt_abc123",
"type":"GSTR",
"status":"todo",
"priority":"high",
"dueDate":"2025-11-20T23:59:59Z",
"assigneeId":"user_xyz789",
"createdAt":"2025-11-01T09:00:00Z",
"createdBy":"user_admin01"
}
}Update Compliance Status#
Update a compliance record with new status and ARN:
curl -X PATCH"https://app.practicore.in/api/filings/fil_ghi789"\
-H"Authorization: Bearer YOUR_API_KEY"\
-H"Content-Type: application/json"\
-d '{
"status":"filed",
"filedDate":"2025-11-18T14:30:00Z",
"arn":"ARN123456789",
"taxPaid": 15000.00,
"lateFee": 0
}'Generate Invoice#
Create a new invoice with line items:
curl -X POST"https://app.practicore.in/api/invoices"\
-H"Authorization: Bearer YOUR_API_KEY"\
-H"Content-Type: application/json"\
-d '{
"clientId":"clnt_abc123",
"invoiceType":"tax_invoice",
"dueDate":"2025-12-15T23:59:59Z",
"lineItems": [
{
"description":"GSTR-3B Filing - October 2025",
"sacCode":"998231",
"quantity": 1,
"rate": 2000.00,
"gstRate": 18
},
{
"description":"GSTR-1 Filing - October 2025",
"sacCode":"998231",
"quantity": 1,
"rate": 1500.00,
"gstRate": 18
}
],
"notes":"Thank you for your business!"
}'Core Endpoints#
RESTful API endpoints for managing clients, tasks, compliance items, and invoices.
Clients API
/api/clients/api/clients/api/clients/[id]/api/clients/[id]/api/clients/[id]Tasks API
/api/tasks/api/tasks/api/tasks/[id]/api/tasks/[id]/api/tasks/[id]Compliance API
/api/filings/api/filings/api/filings/[id]/api/filings/[id]Invoices API
/api/invoices/api/invoices/api/invoices/[id]/api/invoices/[id]/downloadResponse Format#
All API responses follow a consistent JSON format.
Success Response#
{
"data": { ... },
"meta": {
"page": 1,
"limit": 20,
"total": 100
}
}Error Response#
{
"error": {
"code":"VALIDATION_ERROR",
"message":"Invalid client ID",
"details": {
"field":"clientId",
"reason":"Must be a valid UUID"
}
}
}Rate Limiting#
API endpoints are rate-limited to prevent abuse and ensure fair usage.
Default Limits#
- • 100 requests per minute per user
- • 1000 requests per hour per workspace
- • Burst allowance of 20 requests
Response Headers#
X-RateLimit-Limit: 100 X-RateLimit-Remaining: 95 X-RateLimit-Reset: 1703001600 Retry-After: 60
Webhooks#
Integrate Practicore with external systems using webhooks for real-time event notifications.
Event Triggers
Get notified when tasks, compliance items, or invoices change
Custom Endpoints
Send data to your servers or third-party services
Secure Delivery
HMAC signatures for webhook verification
Retry Logic
Automatic retries with exponential backoff
Available Events
task.createdA new task is createdtask.updatedTask status or details changetask.completedTask marked as completedfiling.createdNew compliance record addedfiling.status_changedCompliance status updatedinvoice.createdNew invoice generatedinvoice.paidInvoice payment recordedclient.createdNew client addedWebhook Payload Example#
{
"event":"task.completed",
"timestamp":"2025-12-05T10:30:00Z",
"data": {
"id":"task_abc123",
"title":"File GSTR-3B for ABC Corp",
"client_id":"client_xyz",
"completed_by":"user_123",
"completed_at":"2025-12-05T10:30:00Z"
},
"signature":"sha256=..."
}Configure webhooks in Settings → Integrations → Webhooks. Add your endpoint URL, select events to subscribe to, and save the secret key for signature verification.