The closest you will get to some control, a “limit” by API parameters:
Use “reasoning”: “minimal”
More developer prompting to shut off reasoning on gpt-5 internal methods.
Allow for an unseen 10 tokens or so for internal sending to channels.
Then max_output_tokens you specify will be closer to the cutoff point you want - in tokens, and not terminate the output while the AI model is still generating in the pre-reasoning before you ever receive anything.
If you absolutely want to truncate the output by characters, you can do that on what you receive, and close a streaming connection to not pay too much more than that.
Otherwise, you are left talking to the AI model and its poor idea of planning when turning your request for a character count into a response length.