Developer Platform
Build on top of Todo.
Full REST API. Interactive Swagger docs. API key authentication. JSON and CSV export. Everything you need to automate, integrate, and extend.
$ curl -H "Authorization: Bearer aitodo_abc123..." \
https://ai-todo.fly.dev/api/todos
[
{"id": "k7x9m2", "title": "Ship API docs", "status": "today"}
] API Design
RESTful. Predictable. Documented.
The Todo API follows REST conventions you already know. No surprises, no proprietary quirks.
JSON everywhere
Request and response bodies are JSON. Content-Type headers are set automatically. No XML, no form encoding.
PATCH for updates
Send only the fields you want to change. No need to resend the entire resource. Null values clear fields.
Bulk operations
Create multiple todos in one request with POST /api/todos/bulk. Ideal for imports and migrations.
Consistent errors
Every error returns a JSON object with a message field and an appropriate HTTP status code. 400, 401, 404, 422 — predictable.
Rate limiting
Sensible rate limits protect the API. Headers tell you your remaining quota. Back off on 429.
Reference
Endpoints
All endpoints require authentication. Data is scoped per user — you only see your own todos.
Todos
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/todos | List active todos |
| POST | /api/todos | Create a todo |
| POST | /api/todos/bulk | Bulk create todos |
| GET | /api/todos/:id | Get a single todo |
| PATCH | /api/todos/:id | Update a todo |
| DELETE | /api/todos/:id | Soft-delete a todo |
| POST | /api/todos/:id/restore | Restore from trash |
| PUT | /api/todos/reorder | Reorder todos |
| DELETE | /api/todos/trash/empty | Empty trash |
Projects
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/projects | List projects |
| POST | /api/projects | Create a project |
| GET | /api/projects/:id | Get a project |
| PATCH | /api/projects/:id | Update a project |
| PUT | /api/projects/reorder | Reorder projects |
Search, Preferences & Export
| Method | Endpoint | Description |
|---|---|---|
| GET | /api/search?q=... | Full-text search |
| GET | /api/preferences | Get user preferences |
| PUT | /api/preferences | Update preferences |
| GET | /api/export?format=json | Export as JSON |
| GET | /api/export?format=csv | Export as CSV |
AI Chat
| Method | Endpoint | Description |
|---|---|---|
| POST | /api/ai/chat | Send a message |
| GET | /api/ai/chat/history | Get chat history |
| DELETE | /api/ai/chat/history | Clear history |
Authentication
Two ways in.
Use session cookies for browser-based apps, or API keys for scripts and integrations.
Session cookies
Sign in through the web app. The session cookie is sent automatically with every request. Best for browser-based integrations and SPAs.
fetch("/api/todos",
credentials: "include"
); API keys
Generate keys from Account settings. Send via header. Perfect for scripts, cron jobs, and server-to-server integrations.
# Authorization header
curl -H "Authorization: Bearer aitodo_..." # X-API-Key header
curl -H "X-API-Key: aitodo_..." API Key details
- • Prefix:
aitodo_+ 64 hex characters - • Stored as SHA-256 hash — the raw key is shown only once
- • Maximum 10 keys per account
- • Optional expiry date
- • Revoke anytime from Account settings or API
- • Last-used timestamp tracked per key
Documentation
Try it before you build it.
Interactive Swagger UI lets you explore every endpoint, see request/response shapes, and make live requests — right from the browser.
Swagger UI
Full interactive docs at /api/docs. Browse endpoints, see schemas, try requests.
OpenAPI spec
Raw YAML at /api/openapi.yaml. Import into Postman, Insomnia, or generate client SDKs.
Live testing
Authorize with your API key directly in Swagger UI and make real requests against your data.
Swagger UI showing the Todo API endpoints with request/response examples
Export
Your data, your way.
Export all your active data as JSON for programmatic use or CSV for spreadsheets. Both formats include todos, projects, and tags.
JSON export
Structured data with nested tags and project references. Ideal for backups, migrations, and programmatic processing.
$ curl -H "Authorization: Bearer aitodo_..." \
https://ai-todo.fly.dev/api/export?format=json \
-o backup.json CSV export
Flat tabular format. Open in Excel, Google Sheets, or pipe into any data tool. Tags are comma-separated in a single column.
$ curl -H "Authorization: Bearer aitodo_..." \
https://ai-todo.fly.dev/api/export?format=csv \
-o backup.csv Inspiration
Automation ideas
The API is flexible enough for simple scripts and complex pipelines. Here are some starting points.
Daily digest script
Fetch today's tasks every morning and email yourself a summary or push to Telegram.
Slack integration
Create todos from Slack messages. Post completed tasks to a channel at end of day.
Bulk import / migration
Migrate from Todoist, Things, or a spreadsheet with a single POST /api/todos/bulk call.
Calendar sync
Pull scheduled tasks and push them to Google Calendar or iCal as events.
Custom dashboard
Build your own analytics: tasks completed per week, average inbox age, project velocity.
AI pipeline
Feed the AI chat endpoint with context from other tools to auto-triage and categorize tasks.
Start building.
Create a free account, generate an API key, and make your first request in under a minute.