{
  "description": "Turn text into speech audio using a model and voice from the model catalog.",
  "type": "object",
  "required": [
    "model",
    "text"
  ],
  "properties": {
    "model": {
      "type": "string",
      "description": "Model identifier from the model catalog (query-models). An unknown model is rejected."
    },
    "text": {
      "type": "string",
      "description": "The text content to synthesize into speech audio"
    },
    "voice": {
      "type": "string",
      "description": "Voice from the model catalog entry. Omit for the vendor default voice."
    },
    "styleInstructions": {
      "type": "string",
      "description": "Delivery direction separate from the spoken text, for models whose catalog entry supports it"
    },
    "responseFormat": {
      "type": "string",
      "description": "How a request wants binary media (audio or image) returned. URL returns a short-lived signed URL hosted by Port OS (at most 10 minutes), never the vendor's own link. BASE64 returns the bytes inline as base64 and fails with a typed error above 10 MiB, in which case use URL.",
      "enum": [
        "URL",
        "BASE64"
      ],
      "default": "URL"
    }
  },
  "additionalProperties": false
}
