Overview
See the Field is an offline-first iOS app. Your progress, ratings, and study cards live on your device and sync only through your own iCloud account — there are no user accounts and no server-side profile.
As a result there is exactly one public API: the endpoint the app uses to report a piece of learning content that looks wrong. When you tap Report an issue on a quiz question, a concept card, or an animation, the app posts to this endpoint and the report lands in a moderation queue that is reviewed by hand.
The machine-readable description lives at /api/openapi.json (OpenAPI 3.1), and this API is listed in the site's API catalog per RFC 9727.
Base URL
https://famous-goshawk-386.convex.site
The API is served by Convex HTTP actions. Platform status is published at status.convex.dev.
Authentication
None. The endpoint is unauthenticated and write-only — there is no way to read reports back out, and no personal data is required or requested.
POST /api/content-report
Records a single content report. Returns 201 with an empty body on success.
Request body
JSON. Field names are accepted in either snake_case or camelCase; when both forms appear, snake_case wins. Every value is a string, and empty strings count as absent.
| Field | Required | Description |
|---|---|---|
content_type | required | What is being reported — question, concept_card, animation, glossary. |
surface | required | Where in the app the report was raised — quiz, practice, learn, film_room. |
reason | required | Why it was reported — incorrect_answer, unclear_wording, wrong_diagram, typo, other. |
question_id | optional | Identifier of the reported quiz question. |
concept_card_id | optional | Identifier of the reported concept card. |
concept_id | optional | Curriculum concept the content belongs to. |
game_mode | optional | Game mode the report came from — formation_flash, coverage_read, play_call, counter_pick, film_room, daily_drive. |
comment | optional | Free-text detail written by the user. |
app_version | optional | App version, e.g. 1.0.5. |
device_model | optional | Device identifier, e.g. iPhone15,3. |
os_version | optional | iOS version, e.g. 18.2. |
Example
curl -X POST https://famous-goshawk-386.convex.site/api/content-report \
-H "Content-Type: application/json" \
-d '{
"content_type": "question",
"question_id": "ff-cover3-004",
"game_mode": "formation_flash",
"surface": "quiz",
"reason": "incorrect_answer",
"comment": "The listed formation is Trips Right, not Bunch Right.",
"app_version": "1.0.5"
}'
Responses
| Status | Meaning |
|---|---|
201 | Accepted and queued for review. Empty body. |
400 | Body was not valid JSON, or a required field was missing. Returns {"error": "…"}. |
500 | The report could not be stored. Returns {"error": "Internal server error"}. |
Fair use
This endpoint exists so readers can flag genuine mistakes in the football content. Please don't use it for load testing or automated submission — junk reports slow down the review of real ones. If you've found a factual error in the app and would rather write to a human, [email protected] works just as well.
Related
- OpenAPI 3.1 description
- API catalog (RFC 9727)
- llms.txt — plain-language summary of this site for language models
- Agent skills index
- Privacy Policy · Terms of Service