Skip to main content
Docs

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. 1. Go to Settings → API & Integrations
  2. 2. Click "Generate New API Key"
  3. 3. Give the key a descriptive name
  4. 4. Set permissions (read-only or read-write)
  5. 5. Copy and securely store the key (shown only once)
Keep Your API Key Secure

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:

bash
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:

json
{
"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:

bash
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:

json
{
"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:

bash
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:

bash
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

GET/api/clients
POST/api/clients
GET/api/clients/[id]
PATCH/api/clients/[id]
DELETE/api/clients/[id]

Tasks API

GET/api/tasks
POST/api/tasks
GET/api/tasks/[id]
PATCH/api/tasks/[id]
DELETE/api/tasks/[id]

Compliance API

GET/api/filings
POST/api/filings
GET/api/filings/[id]
PATCH/api/filings/[id]

Invoices API

GET/api/invoices
POST/api/invoices
GET/api/invoices/[id]
GET/api/invoices/[id]/download

Response Format#

All API responses follow a consistent JSON format.

Success Response#

json
{
"data": { ... },
"meta": {
"page": 1,
"limit": 20,
"total": 100
 }
}

Error Response#

json
{
"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 created
task.updatedTask status or details change
task.completedTask marked as completed
filing.createdNew compliance record added
filing.status_changedCompliance status updated
invoice.createdNew invoice generated
invoice.paidInvoice payment recorded
client.createdNew client added

Webhook Payload Example#

json
{
"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=..."
}
Webhook Setup

Configure webhooks in Settings → Integrations → Webhooks. Add your endpoint URL, select events to subscribe to, and save the secret key for signature verification.