---
title: "Find Lesson By Grammar"
method: GET
path: "/lessons/by-grammar"
tags: ["lessons", "lessons"]
---

# Find Lesson By Grammar

`GET /lessons/by-grammar`

Find a lesson that teaches a given grammar concept.

Matches the concept against LessonPassage.key_grammar[].point. The two naming
sources are NOT normalized — lesson points are verbose/free-form ("Simple
Present Tense for facts and routines"), sometimes multilingual dicts, while
the progress breakdown uses a different, terser inventory ("Present Simple").
So we don't substring-match; we score TOKEN OVERLAP after normalizing both
(lowercase, strip parentheticals, drop stopwords + over-generic grammar words
like "tense"/"verb"). Returns the passage id to open at /lessons/{id}.

## Query parameters

- `concept` string, required — Grammar concept/pattern name to match
- `language` string, nullable — Target language to filter by

## Response `200`

Successful Response

- unknown

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.dev/fluentea/apis/aurqa-language-learning-platform-refactored.md) · [All operations](https://skmtc.dev/fluentea/apis/aurqa-language-learning-platform-refactored/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/fluentea/aurqa-language-learning-platform-refactored/revisions/78f314acd8bf/schema)
