{"openapi":"3.1.0","info":{"title":"KickLingo API","version":"1.1.0","description":"Public discovery and creator-scoped learning imports. This API does not purchase Kick subscriptions, accept payment credentials or import financial records. Keep developer keys server-side."},"servers":[{"url":"https://api.kicklingo.com"}],"paths":{"/health":{"get":{"summary":"Check API and database availability","security":[],"responses":{"200":{"description":"Service is available"},"500":{"description":"The request could not be accepted. The JSON error object includes code and message."}}}},"/api/v1/capabilities":{"get":{"summary":"Discover supported languages and integration capabilities","security":[],"responses":{"200":{"description":"Supported capabilities; false capabilities must not be assumed available"}}}},"/api/v1/creators":{"get":{"summary":"List public creator profiles","security":[],"parameters":[{"name":"q","in":"query","schema":{"type":"string","maxLength":120}}],"responses":{"200":{"description":"Public creator details only"},"400":{"description":"The request could not be accepted. The JSON error object includes code and message."},"429":{"description":"The request could not be accepted. The JSON error object includes code and message."}}}},"/api/v1/creators/{id}":{"get":{"summary":"Read a public creator profile and published clip summaries","security":[],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","maxLength":128}}],"responses":{"200":{"description":"Public profile; full lessons still require authenticated access"},"404":{"description":"The request could not be accepted. The JSON error object includes code and message."}}}},"/api/v1/imports":{"post":{"summary":"Import learning-only records into the API-key owner's account","description":"Requires an unexpired, unrevoked creator key with learning:write scope. Reusing an idempotencyKey does not create another batch. No names, emails, payment details, financial records or arbitrary metadata are accepted. Imported records do not confer paid access or award money.","security":[{"CreatorApiKey":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["kind","idempotencyKey","records"],"properties":{"kind":{"type":"string","const":"learning"},"idempotencyKey":{"type":"string","minLength":8,"maxLength":100,"pattern":"^[a-zA-Z0-9:_-]+$"},"records":{"type":"array","minItems":1,"maxItems":500,"items":{"type":"object","additionalProperties":false,"required":["externalId","completed","score"],"properties":{"externalId":{"type":"string","format":"uuid"},"completed":{"type":"boolean"},"score":{"type":"number","minimum":0,"maximum":100}}}}}},"example":{"kind":"learning","idempotencyKey":"provider:batch-2026-09-05","records":[{"externalId":"22d5d261-7b8a-4cde-8daa-aa5d37823b70","completed":true,"score":92}]}}}},"responses":{"200":{"description":"Already received; no duplicate created"},"202":{"description":"New batch accepted"},"400":{"description":"The request could not be accepted. The JSON error object includes code and message."},"401":{"description":"The request could not be accepted. The JSON error object includes code and message."},"403":{"description":"The request could not be accepted. The JSON error object includes code and message."},"429":{"description":"The request could not be accepted. The JSON error object includes code and message."}}}}},"components":{"securitySchemes":{"CreatorApiKey":{"type":"http","scheme":"bearer","description":"A creator-issued kl_live_ key with learning:write scope. Not a Kick OAuth token or a Stripe key."}}}}