POST /v1/audio/speech reads text aloud and returns the audio in the response body, like OpenAI’s speech endpoint. It is synchronous: there is no job to poll.
The response is the audio file (Content-Type: audio/wav) with these headers: With the OpenAI SDK:

Parameters

Values are matched case-insensitively. A value the model doesn’t list returns 400 unsupported_value with the allowed values; text over the limit returns 400 input_too_long. Other OpenAI fields, such as speed and instructions, are not supported and return 400 unsupported_parameter.

Voices

Voices, languages, formats and the length limit are in the model’s generation_config:
voice.options describes each voice: its dialect, gender and display names.

Look up a call

GET /v1/generations/{id} with the x-geekidea-id value returns the call with its usage and a signed link to the audio:
Links expire. Query the call again for a fresh link.

Pricing

Speech is priced per 1,000 characters: cost = price × billed characters / 1,000. The billed count is the one reported by the model provider, which may count a Chinese character as two; when the provider doesn’t report it, the number of characters in input is used. The hold assumes twice the input length, and you are charged the actual cost. See Billing.