--- title: Vikunja API Integration name: vikunja-api-integration description: Automate interaction with local Vikunja instance for project and task management. --- # Vikunja API Integration ## Current Status - ❌ **Authentication Required**: All API calls return 401 Unauthorized - ⚠️ **Missing Token**: Need valid JWT Bearer Token to access data - ✅ **System Healthy**: Vikunja container running on localhost:3456 ## Purpose Automate interaction with local Vikunja instance for project and task management. ## Prerequisites - Vikunja Docker container running on localhost:3456 - Valid JWT Bearer Token for authentication ## Key Endpoints - GET /api/v1/projects - List all projects - GET /api/v1/projects/{id} - Get specific project details - GET /api/v1/projects/{id}/tasks - List tasks for project - POST /api/v1/tasks/{id} - Update task status ## Authentication ```bash curl -H "Authorization: Bearer " \ "http://localhost:3456/api/v1/projects" ``` ## Common Issues - 401 Unauthorized: Invalid/missing token - 429 Too Many Requests: Rate limiting ## Workflow 1. Get project list to find project ID by title 2. Query tasks for specific project ID 3. Filter tasks by completion status ## Example Commands ```bash # Get projects curl -s -H "Authorization: Bearer " \ "http://localhost:3456/api/v1/projects" | python3 -m json.tool # Get tasks for project ID 5 curl -s -H "Authorization: Bearer " \ "http://localhost:3456/api/v1/projects/5/tasks" | python3 -m json.tool # Filter incomplete tasks curl -s -H "Authorization: Bearer " \ "http://localhost:3456/api/v1/projects/5/tasks" | \ python3 -c " import sys, json data = json.load(sys.stdin) incomplete = [t for t in data if not t['done']] if incomplete: for t in incomplete: print(f'ID: {t[\"id\"]} | 标题: {t[\"title\"]}') else: print('当前无未完成任务') " ```