Python FastAPI API

A FastAPI todo service gives you generated API docs, request validation, a health check, and routes for listing or adding todos. Tokay runs it at a live URL as one Web Service.

Last updated

Use this example when your Python project already looks like a normal FastAPI app. Tokay reads the source and requirements, then handles the running service around them.

Runtime
Python
Framework
FastAPI
Service types
Web Service
Resources
None
Required secrets
None

What it does

Open /docs to explore every route and send requests from FastAPI's interactive page.

The todo list begins with three samples. Add a nonempty title and the API returns a new item. Empty or oversized titles are rejected before they reach the list.

The root response shows the Python version. /health returns a compact liveness result.

Deploy it

Bring this folder to Tokay any way you like. Paste or upload it in the dashboard, push it with git, or hand it to your AI agent along with our agent instructions. Tokay figures out the rest.

Working in Claude, ChatGPT, VS Code, or another MCP client? Connect the Tokay MCP server and ask your agent to deploy this example. It signs in through your browser, so there is no token to paste.

New to Tokay? The getting started guide walks you through your first deploy.

Try it

Set your live URL, create one todo, then confirm FastAPI saved it in the running process.

export APP_URL="https://your-app.tokay.app"
curl -X POST "$APP_URL/todos" \
  -H 'Content-Type: application/json' \
  -d '{"title":"ship the next thing"}'
curl "$APP_URL/todos"

The response list now includes your todo. Restart or deploy again and the samples return because this small starter has no database.

How it works

Wondering how the docs and validation appear? FastAPI and Pydantic generate them from the route and model definitions in main.py. Tokay installs the requirements and starts that app without changing its structure.

Secrets

This starter has no secrets. Every endpoint is ready to try after deployment.

Grow from here

Try the AI research queue when your FastAPI app needs saved jobs and a Background Worker.

main.py Raw

import platform
from typing import Annotated

from fastapi import FastAPI
from pydantic import BaseModel, StringConstraints


app = FastAPI(title="Tiny Todo API")
todos = [
    {"id": 1, "title": "deploy this ✓"},
    {"id": 2, "title": "add a database"},
    {"id": 3, "title": "tell a friend"},
]


class TodoInput(BaseModel):
    title: Annotated[str, StringConstraints(strip_whitespace=True, min_length=1, max_length=200)]


@app.get("/")
def hello():
    return {
        "message": "Hello from FastAPI",
        "runtime": f"Python {platform.python_version()}",
    }


@app.get("/health")
def health():
    return {"ok": True}


@app.get("/todos")
def list_todos():
    return todos


@app.post("/todos", status_code=201)
def create_todo(todo_input: TodoInput):
    todo = {"id": todos[-1]["id"] + 1 if todos else 1, "title": todo_input.title}
    todos.append(todo)
    return todo

requirements.txt Raw

fastapi==0.116.1
uvicorn[standard]==0.35.0

Built from revision 52c7b7f

Guide: Deploy a FastAPI app