FluoTest API Reference
Veřejné API FluoTestu je dostupné přes jeho MCP endpoint — JSON-RPC 2.0 API přes běžné HTTPS, které funguje s curl i jakýmkoli HTTP klientem, bez MCP knihovny. Ověřujete se osobním API klíčem.
Naposledy aktualizováno
Jak zavolám FluoTest API?
Vygenerujte si API klíč v Nastavení → Zabezpečení → API klíče a posílejte JSON-RPC požadavky metodou POST na https://fluotest.com/api/mcp s klíčem v hlavičce „Authorization: Bearer“. Dnes je k dispozici osm nástrojů: list_quizzes, create_quiz, get_quiz_questions, get_quiz_settings, update_quiz, publish_quiz, get_results a delete_quiz.
Získání API klíče#
API klíče jsou osobní — každý požadavek s klíčem jedná jako váš uživatelský účet se stejnými oprávněními, jaká máte v aplikaci.
- Otevřete Nastavení → Zabezpečení → API klíče ve svém FluoTest dashboardu.
- Zadejte název, podle kterého poznáte, kde se klíč používá (např. „Zapier skript“).
- Klikněte na Vygenerovat klíč a hodnotu fluo_… si hned zkopírujte.
- Uložte ji na bezpečné místo — do správce hesel nebo úložiště tajemství vašeho nástroje.
- Zobrazí se jen jednou: Ukládá se pouze SHA-256 hash klíče — pokud ho ztratíte, zrušte ho a vygenerujte nový.
- Až 10 klíčů: Vytvářejte samostatné klíče pro každý nástroj či skript, ať můžete jeden zrušit bez rozbití ostatních.
- Kdykoli zrušitelné: Zrušení klíče platí okamžitě od dalšího požadavku.
- Sledování použití: U každého klíče vidíte, kdy byl naposledy použit, takže staré klíče snadno najdete a uklidíte.
Ověřování#
Klíč posílejte s každým požadavkem v hlavičce Authorization:
Authorization: Bearer fluo_YOUR_API_KEY
Připojujete AI asistenta místo psaní kódu? Podívejte se na průvodce MCP serverem →
Formát požadavků#
Endpoint je https://fluotest.com/api/mcp. Posílejte požadavky POST s „Content-Type: application/json“, hlavičkou Accept „application/json, text/event-stream“ a tělem ve formátu JSON-RPC 2.0. Není potřeba žádný initialize handshake — tools/list a tools/call můžete volat přímo.
Odpovědi přicházejí jako server-sent-events: výsledek JSON-RPC je na řádku „data:“ a payload každého nástroje je JSON řetězec v result.content[0].text:
event: message
data: {"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"{\n \"quiz_id\": \"…\",\n \"status\": \"draft\", …}"}]}}Ukázky#
Výpis dostupných nástrojů
curl -X POST https://fluotest.com/api/mcp \
-H "Authorization: Bearer fluo_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'Výpis vašich kvízů
curl -X POST https://fluotest.com/api/mcp \
-H "Authorization: Bearer fluo_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{
"jsonrpc": "2.0",
"id": 3,
"method": "tools/call",
"params": { "name": "list_quizzes", "arguments": {} }
}'Vytvoření konceptu kvízu
curl -X POST https://fluotest.com/api/mcp \
-H "Authorization: Bearer fluo_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "create_quiz",
"arguments": {
"title": "Customer readiness check",
"questions": [
{ "text": "Do you have a budget?", "type": "yes_no", "points": 2 },
{
"text": "Company size?",
"type": "multiple_choice",
"options": [
{ "label": "1-10", "score": 1 },
{ "label": "11-50", "score": 2 },
{ "label": "50+", "score": 3 }
]
}
]
}
}
}'Získání otázek kvízu
curl -X POST https://fluotest.com/api/mcp \
-H "Authorization: Bearer fluo_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{
"jsonrpc": "2.0",
"id": 4,
"method": "tools/call",
"params": {
"name": "get_quiz_questions",
"arguments": { "quiz_id": "Customer readiness check" }
}
}'Získání nastavení kvízu
curl -X POST https://fluotest.com/api/mcp \
-H "Authorization: Bearer fluo_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{
"jsonrpc": "2.0",
"id": 8,
"method": "tools/call",
"params": {
"name": "get_quiz_settings",
"arguments": { "quiz_id": "Customer readiness check" }
}
}'Úprava kvízu
curl -X POST https://fluotest.com/api/mcp \
-H "Authorization: Bearer fluo_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{
"jsonrpc": "2.0",
"id": 5,
"method": "tools/call",
"params": {
"name": "update_quiz",
"arguments": {
"quiz_id": "Customer readiness check",
"questions": [
{ "text": "Do you have a budget?", "type": "yes_no", "points": 2 },
{ "text": "What's your budget range?", "type": "multiple_choice",
"options": [
{ "label": "Under $1k", "score": 1 },
{ "label": "$1k-$10k", "score": 2 },
{ "label": "$10k+", "score": 3 }
]
}
]
}
}
}'Publikování konceptu kvízu
curl -X POST https://fluotest.com/api/mcp \
-H "Authorization: Bearer fluo_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{
"jsonrpc": "2.0",
"id": 6,
"method": "tools/call",
"params": {
"name": "publish_quiz",
"arguments": { "quiz_id": "Customer readiness check" }
}
}'Získání výsledků kvízu
curl -X POST https://fluotest.com/api/mcp \
-H "Authorization: Bearer fluo_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "get_results",
"arguments": { "quiz_id": "Customer readiness check" }
}
}'Smazání kvízu (s potvrzením)
curl -X POST https://fluotest.com/api/mcp \
-H "Authorization: Bearer fluo_YOUR_API_KEY" \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{
"jsonrpc": "2.0",
"id": 7,
"method": "tools/call",
"params": {
"name": "delete_quiz",
"arguments": { "quiz_id": "Customer readiness check", "confirm": true }
}
}'Chyby#
Problémy s ověřením používají HTTP stavové kódy s OAuth chybovým tělem (RFC 6750) a hlavičkou WWW-Authenticate. Ostatní HTTP chyby (neexistující endpoint, rate limit) vracejí application/problem+json (RFC 9457) se stabilním kódem a nápovědou. Problémy uvnitř volání nástroje se vracejí jako běžná JSON-RPC odpověď s nastaveným isError a vysvětlením v textovém obsahu.
| Stav | Význam |
|---|---|
| 401 | Chybějící, neplatný nebo zrušený API klíč. Zkontrolujte hlavičku Authorization a že klíč v Nastavení stále existuje. |
| 400 | Chybné JSON-RPC tělo. Zkontrolujte pole jsonrpc, id, method a params. |
| 404 | Na této cestě není žádný endpoint. Tělo je application/problem+json s kódem not_found. |
| 429 | Překročený rate limit. Tělo je application/problem+json s kódem rate_limited; počkejte počet sekund z hlavičky Retry-After. |
| 200 + isError | Selhalo samotné volání nástroje — např. název/ID kvízu, který nevlastníte, název odpovídající více vašim kvízům, úprava publikovaného kvízu bez confirm_edit_published: true, mazání kvízu bez confirm: true, nebo multiple_choice otázka s méně než 2 možnostmi. Textový obsah vysvětluje, co opravit. |
Chybové kódy (application/problem+json)
Každé chybové tělo obsahuje type, title, status, code a většinou i detail a hint. URI v type odkazuje na odpovídající položku níže.
- not_found
- Cesta není API endpoint. Zdokumentované endpointy najdete v /openapi.json.
- rate_limited
- Příliš mnoho požadavků v aktuálním okně. Počkejte Retry-After sekund a zkuste to znovu.
Rate limity a verzování#
Každý API klíč nebo OAuth token může poslat 120 požadavků za minutu na /api/mcp (požadavky bez přihlašovacích údajů se počítají podle IP adresy). Každá odpověď nese RateLimit-Policy a RateLimit (formát IETF draftu) a také RateLimit-Limit, RateLimit-Remaining a RateLimit-Reset, takže můžete zpomalit dřív, než limit vyčerpáte. Nad limitem dostanete 429 s hlavičkou Retry-After.
HTTP/1.1 429 Too Many Requests
Content-Type: application/problem+json
RateLimit-Policy: "default";q=120;w=60
RateLimit: "default";r=0;t=17
Retry-After: 17
{"type":"https://fluotest.com/en/docs/api-reference#error-rate_limited","title":"Too Many Requests","status":429,"code":"rate_limited","hint":"Wait 17 seconds (Retry-After) before retrying."}Transport je verzovaný hlavičkou MCP-Protocol-Version, která se vyjedná při initialize. Sada nástrojů se řídí sémantickým verzováním (pole version v /openapi.json): nové nástroje a nové volitelné argumenty se jen přidávají a nikdy nerozbijí existující volání.
Nekompatibilní změna vyjde pod novým názvem nástroje. Starý nástroj funguje ještě nejméně 90 dní; odpovědi, které ho používají, nesou hlavičku Deprecation a hlavičku Sunset s datem odstranění a změnu oznámíme v changelogu.
Časté dotazy#
Existuje rate limit?
Ano: 120 požadavků za minutu na API klíč nebo OAuth token na /api/mcp. Každá odpověď obsahuje hlavičky RateLimit se zbývajícím limitem a odpověď 429 v hlavičce Retry-After řekne, jak dlouho počkat.
Můžu místo API klíče použít OAuth?
Ano — OAuth je doporučený způsob připojení AI asistentů jako Claude, kdy uživatel schvaluje přístup na potvrzovací obrazovce. API klíče jsou jednodušší volba pro skripty a klienty, kteří jen posílají hlavičky. Nastavení OAuth najdete v průvodci MCP serverem.
Co dnes API umí?
Osm operací: list_quizzes, create_quiz, get_quiz_questions, get_quiz_settings, update_quiz (s potvrzovacím krokem pro úpravu publikovaných kvízů), publish_quiz, get_results a delete_quiz (s potvrzovacím krokem). Kdekoli se odkazujete na kvíz, můžete použít název, slug i ID. Další operace plánujeme — napište nám přes formulář zpětné vazby v dashboardu, co potřebujete.