Skip to content

Generate a batch of content items

POST
/api/v1/generate

Generate educational content items for specified skills, standards, or subjects. Items are universal — consumers decide how to render them (quiz, worksheet, flashcard, etc.).

At least one of skill, skills, standard, standards, or subject is required.

object
skill

Single skill slug

string
skills

Array of skill slugs

Array<string>
standard

Single standard code

string
standards

Array of standard codes

Array<string>
grade

Grade slug filter

string
subject

Subject slug filter

string
count

Number of items to generate

integer
default: 10 >= 1 <= 50
seed

Seed for deterministic generation. Same seed + same params = same output.

integer

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 data-table
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
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

Invalid JSON

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

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 required field

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 20 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