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.

Terminal
$ 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.

1

Swagger UI

Full interactive docs at /api/docs. Browse endpoints, see schemas, try requests.

2

OpenAPI spec

Raw YAML at /api/openapi.yaml. Import into Postman, Insomnia, or generate client SDKs.

3

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.

Terminal
$ 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.

Terminal
$ 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.