Skip to content

Generate content items via GET (LLM-friendly)

GET
/api/v1/problems

GET mirror of POST /generate. Designed for LLMs (query params are easier than JSON bodies), browser testing (paste URL, see data), and CDN cacheability (seeded GET = deterministic = cacheable). Response shape is identical to POST /generate.

skill
string
Example
add-within-10

Single skill slug

skills
string
Example
add-within-10,subtract-within-10

Multiple skills, comma-separated

standard
string
Example
3.OA.C.7

Single CCSS/NGSS standard code

standards
string
Example
3.OA.C.7,3.NBT.A.2

Multiple standard codes, comma-separated

subject
string
Example
math

Subject slug for random skill selection

grade
string
Example
grade-3

Grade slug (kindergarten, grade-1, …, grade-5)

count
integer
default: 10 >= 1 <= 50

Number of items to generate (1-50, default 10)

seed
integer
Example
42

Deterministic seed. Enables CDN caching when provided

Generated content items with answer key

object
data
object
items
Array<object>

Universal content item — the type field determines the shape of content.

object
id
required
string
type
required
string
Allowed values: arithmetic multiple-choice fill-blank true-false short-answer passage-based matching ordering diagram word-puzzle picture-counting picture-arithmetic data-table spelling-activity word-bank category-sorting phonics-word-list tracing-activity
skill
required

Skill slug this item was generated for

string
gradeLevel
required

Grade order (0=K, 1-8)

integer
<= 8
standard
object
code
string
Example
3.OA.C.7
framework
string
Example
CCSS-MATH
description
string
difficulty
required
object
level
required
string
Allowed values: easy medium hard
dok

Depth of Knowledge level

integer
>= 1 <= 4
bloom

Bloom’s taxonomy level

string
Allowed values: remember understand apply analyze evaluate create
gradeEquivalent

Grade-equivalent difficulty

number
complexityScore

Normalized complexity score (0-100)

number
<= 100
content
required
One of: discriminator: type
object
type
required
string
Allowed value: arithmetic
operand1
required
One of:
number
operand2
required
One of:
number
operand3
number
operator
required
string
Allowed values: + - × ÷
displayFormat
string
Allowed values: horizontal vertical
missingOperand
string
Allowed values: operand1 operand2 result
answer
required
object
type
required
string
Allowed values: exact multiple-choice-index open-ended set boolean
value
required
One of:
string
display
required

Human-readable display of the answer

string
unit

Unit of measurement if applicable

string
explanation

Explanation of why this is the answer

string
acceptableAnswers

Alternative acceptable answers

Array<string>
renderHints

Optional presentation hints for consumers rendering the content.

object
print
object
suggestedWidth
string
Allowed values: quarter-page half-page full-page
orientation
string
Allowed values: portrait landscape
showWorkSpace
boolean
columns
integer
digital
object
interactiveType
string
Allowed values: input drag-drop tap-choice draw
inputType
string
Allowed values: number text fraction
visuals
object
diagramSvg

SVG markup for diagrams

string
imageRefs
Array<object>
object
id
string
alt
string
category
string
Allowed values: object diagram symbol
answerKey
Array<object>
object
itemId
required
string
answer
required

Human-readable answer display

string
instructions

Human-readable instructions for the worksheet or activity

string
meta
object
requestId
string format: uuid
generatedAt
string format: date-time
apiVersion
string
Allowed values: v1
cacheHit
boolean
skillsUsed
Array<string>
totalGenerated
integer
seed
integer
Cache-Control
string

Public, max-age=3600, s-maxage=86400 when seeded; no-store otherwise

ETag
string

Present for seeded requests

No matching skills not found

RFC 7807 Problem Details

object
type
required
string format: uri
title
required
string
status
required
integer
detail
required
string
instance
string
retryAfter

Seconds to wait before retrying (present on 429 responses)

integer

Missing or invalid query parameters

RFC 7807 Problem Details

object
type
required
string format: uri
title
required
string
status
required
integer
detail
required
string
instance
string
retryAfter

Seconds to wait before retrying (present on 429 responses)

integer

Rate limit exceeded

RFC 7807 Problem Details

object
type
required
string format: uri
title
required
string
status
required
integer
detail
required
string
instance
string
retryAfter

Seconds to wait before retrying (present on 429 responses)

integer
Example
{
"type": "https://api.studyplug.org/errors/rate-limited",
"title": "Rate Limit Exceeded",
"status": 429,
"detail": "You have exceeded 30 requests per minute. Please wait before retrying.",
"instance": "/api/v1/skills",
"retryAfter": 12
}
Retry-After
integer

Seconds until rate limit resets

X-RateLimit-Limit
integer

Max requests per window

X-RateLimit-Remaining
integer
Allowed values: 0

Always 0 when rate limited

Generation failed

RFC 7807 Problem Details

object
type
required
string format: uri
title
required
string
status
required
integer
detail
required
string
instance
string
retryAfter

Seconds to wait before retrying (present on 429 responses)

integer