Challenge course · Any coding agent + FastAPI

A Verified Web API

A challenge course — a FastAPI snippets service violates its own spec in six places. Fix the app until the provided contract suite is green, then write the tests for what the spec leaves unpinned and prove they catch planted regressions.

Intermediate5 challenges2–3 hoursFoundation path graduatePro (subscription)Course badge: Verified APIReviewed 2026-09-12English + 中文Pro

Start it with your agent — paste this one sentence:

Read https://flypython.com/skills/flypython/SKILL.md and start the FlyPython course `dt-webapi`.

Needs a coding agent that can run commands and reach the network (chat-only web AIs cannot). Your agent authorizes you with a one-time link, fetches this course's files itself, and you never download anything. Haven't installed the FlyPython Skill? Pick your agent's tool course →

At a glance

What you learnA working API endpoint with input validation, a stable error shape, and tests that exercise real requests — verified end to end.
Who it's forFoundation path graduate · Python 3.11 or newer available on your PATH
Duration & cost2–3 hours · Pro subscription

Challenges

Five lessons, each with a checkpoint

Every lesson ends with a command to run and questions you must answer without looking.

01

The tests are the contract

Read the provided spec suite and map every failure to a hole in the app.

Checkpoint + expected evidence
02

Define the uncovered surface

List the behaviors the spec leaves unpinned — that list becomes your suite.

Checkpoint + expected evidence
03

Fix the app to the spec

Status codes, validation, error shape, DELETE semantics — green against the read-only spec.

Checkpoint + expected evidence
04

Extend the suite, catch the regression

Your tests go green on your app and red on the seeded-bugs variant.

Checkpoint + expected evidence
05

Contract-test an API you own

Port the contract-test loop to a service you actually run.

Checkpoint + expected evidence

Start

Pro course — an active subscription unlocks it

ProPython developer toolchain with agents

Part of the Python developer toolchain with agents track

This course's files reach your agent through the same entry sentence above — with an active subscription and this track unlocked, the authorization link grants the pro:files scope automatically. Claims record only while the track is unlocked.

Free forever

Free courses stay free

The foundation path and every community course in the open repository cost nothing — Pro funds the paid paths, it does not paywall the commons. All six agent-tool courses are free.

Scenario skins

Same skills, a domain you recognize

All three skins run through the same code and the same tests. Pick the one closest to your job before lesson 1.

scenario/snippets-api/app.py

Snippets API

A client integrated your snippets service — and two 'impossible' bug reports came in.

Verification

How “done” is decided

A provided spec suite pins the API contract; your own suite must go green on your app and red on the seeded-bugs variant.

python verify.py  # from the course folder: checkpoint status + claim codes

Apply this to your own project

Lesson 5 ports the workflow — not the code — to one script you actually own: a three-line task contract, one new failing test made to pass, and a written record of what the tests do not prove. The same loop is described in the AI coding workflow guide and practiced by therunnable examples.

Claim your evidence

When a checkpoint passes, python verify.py prints a deterministic claim code. Your authorized agent submits them for you in one batch; by hand, paste them on yourprogress page — worth 10 points per checkpoint and theVerified API course badge at five. Claim codes are self-reported evidence, not certificates.

What verification does not prove

Passing the course suite proves the pinned behaviors on the tested inputs — not correctness on tomorrow’s data, not production performance, and not anything about your own project until you write its contract. Repository tests are evidence, not your outcome.