GET
/v1/capabilitiesList a node’s served capabilities
Discover the exact id, version, I/O mode and schema a provider serves. Pin the returned revision when calling it.
Connect your node · optional read-only discovery
No token is stored or sent to Foxlight. This browser sends it only to the API origin you enter.
Text to speech
tts@1.0.0Generate progressive encoded speech audio with a mounted Skulk™ text-to-speech model.
I/O mode
server_streamingRevision
ed1d93ce3af76b6cNode
example-nodeContract
JSON Schema 2020-12modelstringrequiredtextstringrequiredvoicestringresponse_format"mp3"streaming_intervalnumberspeednumberinstructstringlang_codestringtemperaturenumbertop_pnumbertop_kintegerrepetition_penaltynumbermax_tokensintegerseedintegerComplete selected schema
{"$schema": "https://json-schema.org/draft/2020-12/schema","type": "object","properties": {"model": {"type": "string","minLength": 1},"text": {"type": "string","minLength": 1},"voice": {"type": "string","minLength": 1},"response_format": {"const": "mp3"},"streaming_interval": {"type": "number","exclusiveMinimum": 0},"speed": {"type": "number","exclusiveMinimum": 0},"instruct": {"type": "string"},"lang_code": {"type": "string"},"temperature": {"type": "number"},"top_p": {"type": "number"},"top_k": {"type": "integer","minimum": 0},"repetition_penalty": {"type": "number","exclusiveMinimum": 0},"max_tokens": {"type": "integer","minimum": 1},"seed": {"type": "integer","minimum": 0,"maximum": 4294967295}},"required": ["model","text"],"additionalProperties": false}
Raw descriptor
{"id": "tts","version": "1.0.0","title": "Text to speech","description": "Generate progressive encoded speech audio with a mounted Skulk text-to-speech model.","input_schema": {"$schema": "https://json-schema.org/draft/2020-12/schema","type": "object","properties": {"model": {"type": "string","minLength": 1},"text": {"type": "string","minLength": 1},"voice": {"type": "string","minLength": 1},"response_format": {"const": "mp3"},"streaming_interval": {"type": "number","exclusiveMinimum": 0},"speed": {"type": "number","exclusiveMinimum": 0},"instruct": {"type": "string"},"lang_code": {"type": "string"},"temperature": {"type": "number"},"top_p": {"type": "number"},"top_k": {"type": "integer","minimum": 0},"repetition_penalty": {"type": "number","exclusiveMinimum": 0},"max_tokens": {"type": "integer","minimum": 1},"seed": {"type": "integer","minimum": 0,"maximum": 4294967295}},"required": ["model","text"],"additionalProperties": false},"output_schema": null,"io_mode": "server_streaming","input_chunk_schema": null,"output_chunk_schema": {"$schema": "https://json-schema.org/draft/2020-12/schema","type": "object","properties": {"model": {"type": "string"},"format": {"const": "mp3"},"chunk_index": {"type": "integer","minimum": 0},"sample_rate": {"type": "integer","minimum": 1},"is_partial": {"type": "boolean"}},"required": ["model","format","chunk_index","is_partial"],"additionalProperties": false},"annotations": {"modality": "audio","latency": "interactive","runtime": "mlx_audio","stability": "experimental"}}
Call it · supply a schema-valid payload
session = await context.stream_capability("example-node", "tts","1.0.0", "ed1d93ce3af76b6c",payload,)