Simple REST API for integrating with Zapier, IFTTT, Make, n8n, and other automation services.
Base URL: https://api.aanle.com/api/v1
Authentication
All requests require an X-API-Key header with your personal API token.
X-API-Key: your-api-token-here
You can find your API token in Settings > General within the Aanle app.
Endpoints
Create Task
POST /api/v1/tasks
Create a new task with natural language parsing. The text field is automatically parsed to extract due dates, contexts, projects, energy levels, and time estimates.
Request Body:
| Field | Type | Required | Default | Description |
| text | string | Yes | Task text with optional NLP tags (see below) | |
| notes | string | No | “” | Additional notes for the task |
| status | string | No | “inbox” | One of: inbox, next, waiting, someday |
NLP Syntax in text:
| Syntax | Example | Result |
| @context | Buy milk @errands | Assigns @errands context |
| #project | Fix bug #website | Assigns to “Website” project |
| !energy | Write report !high | Sets energy to high |
| time estimate | Call dentist 15m | Sets estimate to 15 minutes |
| date expression | Submit report tomorrow | Sets due date to tomorrow |
- Contexts (@): Matches your existing contexts (case-insensitive). E.g., @home, @work, @phone, @computer, @errands.
- Projects (#): Matches your existing project names (prefix matching supported). E.g., #marketing matches “Marketing Campaign”.
- Energy (!): One of !low, !med/!medium, !high.
- Time estimates: 15m, 1h, 1.5hr, 90 minutes, etc.
- Dates: today, tomorrow, friday, next week, in 3 days, jan 15, 2/14, etc.
Example Request:
curl -X POST https://api.aanle.com/api/v1/tasks \
-H “X-API-Key: your-api-token” \
-H “Content-Type: application/json” \
-d ‘{“text”: “Buy groceries @errands tomorrow 30m !low”}’
Response (201 Created):
{
“id”: “a1b2c3d4-…”,
“title”: “Buy groceries”,
“notes”: “”,
“status”: “inbox”,
“due_date”: “2026-02-09”,
“project”: null,
“contexts”: [“@errands”],
“energy”: “low”,
“estimated_minutes”: 30,
“delegated_to”: null,
“created_at”: “2026-02-08T12:00:00+00:00”,
“updated_at”: “2026-02-08T12:00:00+00:00”
}
List Tasks
GET /api/v1/tasks
Retrieve tasks with optional filtering and pagination.
Query Parameters:
| Parameter | Type | Default | Description |
| status | string | — | Filter by status: inbox, next, waiting, someday, done |
| limit | int | 50 | Max tasks to return (1–200) |
| offset | int | 0 | Number of tasks to skip (for pagination) |
Example Request:
curl https://api.aanle.com/api/v1/tasks?status=next&limit=10 \
-H “X-API-Key: your-api-token”
Response (200 OK):
{
“tasks”: [
{
“id”: “a1b2c3d4-…”,
“title”: “Buy groceries”,
“notes”: “”,
“status”: “next”,
“due_date”: “2026-02-09”,
“project”: “Home”,
“contexts”: [“@errands”],
“energy”: “low”,
“estimated_minutes”: 30,
“delegated_to”: null,
“created_at”: “2026-02-08T12:00:00+00:00”,
“updated_at”: “2026-02-08T12:00:00+00:00”
}
],
“count”: 1
}
Get Task
GET /api/v1/tasks/{task_id}
Retrieve a single task by ID.
Example Request:
curl https://api.aanle.com/api/v1/tasks/a1b2c3d4-… \
-H “X-API-Key: your-api-token”
Response (200 OK): Same format as a single task object above.
Complete Task
POST /api/v1/tasks/{task_id}/complete
Mark a task as done. If the task has a recurrence rule, a new instance is automatically created.
Example Request:
curl -X POST https://api.aanle.com/api/v1/tasks/a1b2c3d4-…/complete \
-H “X-API-Key: your-api-token”
Response (200 OK): Returns the completed task (with status: “done”).
Delete Task
DELETE /api/v1/tasks/{task_id}
Permanently delete a task.
Example Request:
curl -X DELETE https://api.aanle.com/api/v1/tasks/a1b2c3d4-… \
-H “X-API-Key: your-api-token”
Response: 204 No Content
Error Responses
| Status | Meaning | Example |
| 400 | Bad request | Invalid status value |
| 401 | Unauthorized | Missing or invalid API key |
| 404 | Not found | Task does not exist |
Error body format:
{
“detail”: “Invalid status: invalid”
}
Zapier Integration
Use Zapier’s Webhooks by Zapier app to connect to this API.
Quick-add task from any trigger
- Add a Webhooks by Zapier action → Custom Request
- Method: POST
- URL: https://<your-api-host>/api/v1/tasks
- Headers:
- X-API-Key: your API token
- Content-Type: application/json
- Body: {“text”: “{{trigger_field}}”}
Example Zaps
- Gmail → Task: New starred email → Create task with {“text”: “{{subject}} @email”}
- Slack → Task: New saved message → Create task with {“text”: “{{message_text}}”}
- Calendar → Task: New event → Create task with {“text”: “Prepare for {{event_title}} {{event_date}}”}
IFTTT Integration
Use IFTTT’s Webhooks service to send requests to this API.
Quick-add task from any trigger
- Create a new applet
- Choose your trigger (e.g., Google Assistant, Button, Email)
- For the action, choose Webhooks → Make a web request
- URL: https://<your-api-host>/api/v1/tasks
- Method: POST
- Content Type: application/json
- Additional Headers: X-API-Key: your-api-token
- Body: {“text”: “{{TextField}}”}
Example Applets
- “Hey Google, add task” → Google Assistant trigger → Webhook to create task
- iOS Shortcuts → Button trigger → Webhook to create task
- Email IFTTT → Send email to trigger@applet.ifttt.com → Webhook to create task
Email-to-Inbox
You can also create tasks by sending an email to your personal capture address:
<your-capture-token>@<capture-domain>
Find your capture email in Settings > General. The email subject line is parsed as the task text (with full NLP support), and the email body is saved as task notes.