API Reference
Complete API docs, endpoints, authentication
API Reference
Complete REST API documentation for Verk. Build integrations, automate workflows, and extend platform capabilities.
API Overview
Base URL: https://api.verk.com/v1
Authentication: Bearer token (API key)
Format: JSON request and response bodies
Rate limiting: Based on plan tier
Versioning: URL-based (/v1, /v2)
Authentication
All API requests require authentication:
curl -H "Authorization: Bearer YOUR_API_KEY" \
https://api.verk.com/v1/tasks
Get API keys from Settings → API Keys. See API Keys documentation.
Tasks API
List Tasks
GET /tasks
Retrieve all tasks you have access to.
Query parameters:
projectId(string): Filter by projectstatus(string): Filter by status (todo,in_progress,done)assigneeId(string): Filter by assigneepriority(string): Filter by priority (low,medium,high)limit(number): Results per page (default: 50, max: 100)offset(number): Pagination offset
Example request:
curl -X GET "https://api.verk.com/v1/tasks?status=in_progress&limit=20" \
-H "Authorization: Bearer YOUR_API_KEY"
Example response:
{
"data": [
{
"id": "task_123",
"title": "Implement user authentication",
"description": "Add OAuth2 login",
"status": "in_progress",
"priority": "high",
"projectId": "proj_456",
"assigneeId": "user_789",
"creatorId": "user_101",
"dueDate": "2024-12-31T23:59:59Z",
"createdAt": "2024-01-15T10:30:00Z",
"updatedAt": "2024-01-20T14:45:00Z"
}
],
"pagination": {
"total": 156,
"limit": 20,
"offset": 0,
"hasMore": true
}
}
Create Task
POST /tasks
Create a new task.
Request body:
{
"title": "Task title (required)",
"description": "Task description (optional)",
"projectId": "proj_123 (required)",
"priority": "high|medium|low (optional, default: medium)",
"status": "todo|in_progress|done (optional, default: todo)",
"assigneeId": "user_456 (optional)",
"dueDate": "2024-12-31T23:59:59Z (optional)",
"customFields": {
"field_name": "field_value"
}
}
Example:
curl -X POST "https://api.verk.com/v1/tasks" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"title": "Design homepage mockup",
"projectId": "proj_123",
"priority": "high",
"assigneeId": "user_456",
"dueDate": "2024-02-15T17:00:00Z"
}'
Update Task
PATCH /tasks/{taskId}
Update an existing task.
Request body: (all fields optional)
{
"title": "Updated title",
"status": "in_progress",
"priority": "low",
"assigneeId": "user_789"
}
Delete Task
DELETE /tasks/{taskId}
Permanently delete a task.
Projects API
List Projects
GET /projects
Get all projects in your organization.
Query parameters:
archived(boolean): Include archived projectslimit(number): Results per pageoffset(number): Pagination offset
Create Project
POST /projects
Request body:
{
"name": "Project name (required)",
"description": "Project description (optional)",
"icon": "icon_name (optional)",
"color": "#hex_color (optional)"
}
Update Project
PATCH /projects/{projectId}
Delete Project
DELETE /projects/{projectId}
Members API
List Members
GET /members
Get organization members.
Invite Member
POST /members/invite
Request body:
{
"email": "user@example.com",
"role": "admin|member|guest"
}
Comments API
List Comments
GET /tasks/{taskId}/comments
Create Comment
POST /tasks/{taskId}/comments
Request body:
{
"content": "Comment text",
"mentions": ["user_123", "user_456"]
}
Files API
Upload File
POST /files
Request: multipart/form-data
curl -X POST "https://api.verk.com/v1/files" \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "file=@document.pdf" \
-F "projectId=proj_123"
Download File
GET /files/{fileId}/download
Returns presigned URL for file download.
Webhooks API
List Webhooks
GET /webhooks
Create Webhook
POST /webhooks
Request body:
{
"url": "https://your-server.com/webhook",
"events": ["task.created", "task.updated"],
"secret": "your_webhook_secret"
}
Error Handling
Error response format:
{
"error": {
"code": "invalid_request",
"message": "Missing required field: title",
"param": "title",
"type": "validation_error"
}
}
Status codes:
200Success201Created400Bad request401Unauthorized403Forbidden404Not found429Rate limit exceeded500Server error
Rate Limiting
Headers:
X-RateLimit-Limit: 1000
X-RateLimit-Remaining: 987
X-RateLimit-Reset: 1640995200
Limits:
- Free: 1,000/day
- Pro: 100,000/day
- Enterprise: Custom
Pagination
All list endpoints support pagination:
Request:
GET /tasks?limit=50&offset=0
Response:
{
"data": [...],
"pagination": {
"total": 500,
"limit": 50,
"offset": 0,
"hasMore": true
}
}
Webhooks
Subscribe to real-time events:
Events:
task.createdtask.updatedtask.deletedtask.completedproject.createdproject.updatedmember.addedcomment.created
Webhook payload:
{
"event": "task.created",
"timestamp": "2024-01-15T10:30:00Z",
"data": {
"id": "task_123",
"title": "New task",
...
}
}
See Webhooks documentation for details.
SDKs
Official libraries available:
- JavaScript/TypeScript:
npm install @verk/sdk - Python:
pip install verk-sdk - Go:
go get github.com/verk/go-sdk
See SDK documentation.
Best Practices
Use Pagination Always paginate large result sets to improve performance.
Handle Rate Limits Implement exponential backoff when hitting rate limits.
Validate Webhooks Verify webhook signatures to ensure authenticity.
Cache Responses Cache API responses when data doesn't change frequently.
Use Webhooks Subscribe to webhooks instead of polling for changes.
Test in Sandbox Use test API keys during development.
Monitor Usage Track API usage in dashboard to avoid surprises.
Related Documentation
- API Keys - Authentication setup
- Webhooks - Event subscriptions
- SDK - Client libraries
- Customization - Advanced integration
Need developer support? Check our developer forum or contact support.