{"openapi":"3.1.0","info":{"title":"Koydo Developer API","version":"1.0.0","description":"Four deterministic JSON engines: learning science, gamification, math, and music economics. Same request in, byte-identical response out."},"servers":[{"url":"https://api.koydo.app"}],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer","description":"API key as a bearer token"},"apiKeyHeader":{"type":"apiKey","in":"header","name":"x-api-key"}}},"paths":{"/api/learning/engine":{"post":{"summary":"Learning Science API — run an action","security":[{"bearerAuth":[]},{"apiKeyHeader":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["action"],"properties":{"action":{"type":"string","enum":["srs.newCard","srs.schedule","srs.retrievability","bkt.predict","bkt.update","bkt.trace","cat.step","readiness","misconception.detect","spacing.recommend"]},"payload":{"type":"object"}}},"example":{"action":"bkt.update","payload":{"pMastery":0.4,"correct":true,"params":{"pInit":0.3,"pTransit":0.1,"pSlip":0.1,"pGuess":0.2}}}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Missing or invalid API key"},"429":{"description":"Rate limit exceeded"}}},"get":{"summary":"Learning Science API — free action catalog","responses":{"200":{"description":"Self-documenting action catalog"}}}},"/api/game/engine":{"post":{"summary":"Gamification API — run an action","security":[{"bearerAuth":[]},{"apiKeyHeader":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["action"],"properties":{"action":{"type":"string","enum":["progression.award","progression.levelInfo","economy.earn","economy.spend","streak.record","reward.resolve","skill.elo","skill.expectedScore","review.newCard","review.schedule","achievement.evaluate","league.rank"]},"payload":{"type":"object"}}},"example":{"action":"progression.award","payload":{"currentTotalXp":450,"amount":120}}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Missing or invalid API key"},"429":{"description":"Rate limit exceeded"}}},"get":{"summary":"Gamification API — free action catalog","responses":{"200":{"description":"Self-documenting action catalog"}}}},"/api/math/engine":{"post":{"summary":"Math Engine API — run an action","security":[{"bearerAuth":[]},{"apiKeyHeader":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["action"],"properties":{"action":{"type":"string","enum":["start","skills","recommend","submit","generate","geometry","grade"]},"payload":{"type":"object"}}},"example":{"action":"skills"}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Missing or invalid API key"},"429":{"description":"Rate limit exceeded"}}},"get":{"summary":"Math Engine API — free action catalog","responses":{"200":{"description":"Self-documenting action catalog"}}}},"/api/music/engine":{"post":{"summary":"Music Economics API — run an action","security":[{"bearerAuth":[]},{"apiKeyHeader":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["action"],"properties":{"action":{"type":"string","enum":["music.royalty.allocate_pool","music.royalty.run_period","music.accounting.run_royalty_base","music.mechanical.statutory_rate","music.mechanical.streaming_pool","music.quality.evaluate_master","music.quality.measure_pcm_loudness","music.quality.evaluate_pcm_master","music.quality.evaluate_spatial_master","music.quality.validate_beatport_metadata","music.metadata.score_mead_enrichment","music.licensing.quote_sync_master_fee","music.economics.estimate_revenue","music.catalog.sequence_playlist","music.rights.scan_leakage","music.composition.realise_recipe","music.identifier.validate"]},"payload":{"type":"object"}}},"example":{"action":"music.identifier.validate","payload":{"kind":"isrc","value":"USRC17607839"}}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"type":"object"}}}},"401":{"description":"Missing or invalid API key"},"429":{"description":"Rate limit exceeded"}}},"get":{"summary":"Music Economics API — free action catalog","responses":{"200":{"description":"Self-documenting action catalog"}}}}}}