Generate flashcards
Feed it a chapter, a policy manual or lecture notes and get back question-and-answer cards sized for spaced repetition, one idea per card and each answer able to stand alone. No writing cards by hand at 11pm before an exam. You pay per use, with no subscription.
Run it online
Run this on our servers with your account. Free tools run in your browser; this one bills your KIT balance per the price above.
No prompt engineering, no manual card-writing at 11pm before an exam — just structured cards your app can schedule and grade.
Why well-formed cards matter
Spaced repetition as a study technique traces back to Hermann Ebbinghaus's research on the forgetting curve in the 1880s, refined decades later into the card-based systems most people know today. The technique only works if the cards themselves are well formed: one idea per card, an unambiguous question and an answer that stands alone. Writing cards like that by hand is slow, which is why it often happens late at night before an exam, or not at all. This tool writes them from your material, each answer drawn from the meaning of the passage rather than copied as a sentence fragment.
From a chapter to a deck
Send a textbook chapter, a policy manual or a set of lecture notes and you get clean question-and-answer pairs ready to schedule and review. An HR team can turn the employee handbook and compliance policies into cards so new hires quiz themselves instead of re-reading a 40-page PDF. A reading app can pull vocabulary and comprehension cards from each passage, tuned to its difficulty level, and a certification course can turn exam objectives into practice sets that are refreshed whenever the syllabus changes.
A short note on spaced repetition
Spaced repetition as a study technique traces back to Hermann Ebbinghaus's forgetting-curve research in the 1880s, refined decades later into the card-based systems most people recognize today. The technique only works if the cards themselves are well formed: one idea per card, an unambiguous question, an answer that stands alone.
What to expect on quality and limits
Longer source text naturally yields more cards and a proportionally longer wait in the queue; very short snippets may only support one or two meaningful questions, and the response reflects that rather than padding the set with filler. A task that fails after three retries returns a clear error and is never billed, so a batch job never quietly leaves you paying for chapters that did not actually generate cards.
What you can do with it
Corporate onboarding
An HR tool converts the employee handbook and compliance policies into flashcards so new hires can self-quiz instead of re-reading a 40-page PDF.
Language learning readers
A reading app extracts vocabulary and comprehension cards from each graded reader, tuned to the difficulty level of the passage.
Certification prep
A study-prep startup turns exam objective documents into practice card sets, refreshed automatically whenever the certification body updates its syllabus.
FAQ
What happens if a task fails?
The task retries automatically up to three times; if it still fails you get a clear error and are never charged for it.
How long are results kept available?
The signed link stays valid for 24 hours, after which the underlying data is deleted and never used for training.
How many cards will I get from my text?
It depends on the source. Longer text naturally yields more cards, while a very short snippet may only support one or two meaningful questions; the set is never padded with filler cards to look bigger.
Are the answers copied straight from my text?
No, not as loose sentence fragments. Each answer is a concise statement drawn from the meaning of the passage, so the question and its answer still make sense when you review them away from the original text.
What kinds of material work well?
A textbook chapter, a policy manual, lecture notes, an employee handbook or a graded reader. A company can turn its compliance policies into cards new hires quiz themselves with, and a language app can pull vocabulary and comprehension cards from each reading passage.
Related tools
For developers — API access
Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.
API endpoint
Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, by email and from Telegram — and soon from our app too.
Call it from your stack
curl -X POST https://api.kit.forhosting.com/text/flashcards \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"El informe trimestral cerró con 1,2 M€ de ingresos."}'const res = await fetch("https://api.kit.forhosting.com/text/flashcards", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "El informe trimestral cerró con 1,2 M€ de ingresos."
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/text/flashcards",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "El informe trimestral cerró con 1,2 M€ de ingresos."
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/text/flashcards", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"El informe trimestral cerró con 1,2 M€ de ingresos."}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"El informe trimestral cerró con 1,2 M€ de ingresos."}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/text/flashcards", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"text": "El informe trimestral cerró con 1,2 M€ de ingresos."
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "text.flashcards",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.
Pricing
Published price — no tokens, no invented credits. A failed task is never charged.
Limits
max_tokens | 20000 |
Errors
| HTTP | Code | Meaning |
|---|---|---|
401 | unauthorized | Missing or invalid API key. |
402 | insufficient_balance | Your balance doesn't cover the task price. |
404 | unknown_type | That task type doesn't exist. |
429 | rate_limited | Too many requests. Use the webhook instead of polling. |
422 | task_failed | The task failed after 3 retries. You are never charged for it. |
Technical notes
Feed it a chapter, a policy manual or a set of lecture notes, and the flashcard generator API hands back clean question-and-answer pairs sized for spaced repetition.
Who ends up needing this
Ed-tech teams building a study app, internal-training platforms turning onboarding docs into quizzes, and language-learning products that need vocabulary pairs from a reading passage all hit the same wall: writing good flashcards by hand does not scale past a handful of documents. This endpoint exists for the moment your content library outgrows your team of writers.
What the endpoint actually does
Each card is a discrete question paired with a concise answer pulled from the meaning of the passage, not a copy-paste of a sentence fragment, so the pair still makes sense outside its original context. Send the source text to POST /text/flashcards and the task is queued asynchronously — you get a task_id back immediately, and the finished set of cards arrives later by signed webhook or a signed link valid for 24 hours.
A short note on spaced repetition
That is the shape this endpoint targets by default.
Where it sits in a pipeline
Nothing here depends on a live connection sitting open while generation happens. Because the response is a task_id rather than a blocking answer, the endpoint drops cleanly into batch pipelines: queue flashcards for every chapter of a course overnight, catch each webhook as it lands, and insert the cards straight into your review-scheduling database.
What to expect on quality and limits
There is no free tier — every call requires prepaid balance, and requests without one return HTTP 402, which keeps the queue fast and free of throwaway abuse traffic.
Integration use cases
Course content at scale
An online course platform runs each lesson transcript through the endpoint overnight, populating a review deck for every module before students wake up.
Technical questions
How does the flashcard generator API work?
You send text to POST /text/flashcards, the request is queued asynchronously, and you receive the finished flashcards by signed webhook or a signed link valid for 24 hours.
Is there a free tier for this flashcard generator API?
There's no free tier — free tiers get abused and slow everyone down. Access runs on a prepaid ForHosting KIT balance: top up from $10.00 (it never expires) and each request is charged at its published price, so a call with no balance returns HTTP 402. No subscription, no tokens, no invented credits, and a failed task is never charged.
How is pricing calculated?
$0.003 per request plus $0.0135 per 1,000 words of source text, billed only on tasks that actually complete.
Can I generate flashcards from very long documents?
Yes — longer text produces more cards and takes proportionally longer in the queue, which is exactly why the endpoint is asynchronous rather than a blocking call.
What format are the cards returned in?
Structured question-and-answer pairs designed to work as standalone spaced-repetition cards, delivered as the task result via webhook or signed link.
Can I generate flashcards in bulk for a whole course?
Yes — queue one request per chapter or lesson; each returns its own task_id so you can process a full course library in parallel.