openapi: 3.0.3 info: title: Listnr Text-to-Speech Jobs Voices API description: The Listnr Text-to-Speech API converts SSML text or an article URL into MP3/WAV speech using Listnr's catalog of 1,000+ AI voices across 142+ languages. Conversion can be synchronous (returns an audio URL directly) or asynchronous (returns a jobId that is polled for status). The API also lists available voices and reports async job status. All requests are authenticated with a personal API key generated in the Listnr dashboard (voices.listnr.tech) and passed in an x-listnr-token header. Never expose the API key in front-end code or the browser. Endpoints and parameters in this document are transcribed from Listnr's public API documentation at github.com/team-listnr/text-to-speech-api; request/response schemas are modeled from that documentation and should be verified against the live API. version: '1.0' contact: name: Listnr AI url: https://listnr.ai servers: - url: https://bff.listnr.tech/api/tts/v1 description: Listnr Text-to-Speech API security: - listnrToken: [] tags: - name: Voices description: List the AI voices available on Listnr. paths: /available-voices: get: operationId: listAvailableVoices tags: - Voices summary: List available voices description: Returns the voices available on Listnr, optionally filtered by language, gender, and style. parameters: - name: lang in: query required: false description: Filter voices by language. schema: type: string - name: gender in: query required: false description: Filter voices by gender. schema: type: string - name: style in: query required: false description: Filter voices by style or tone. schema: type: string responses: '200': description: A list of available voices. content: application/json: schema: $ref: '#/components/schemas/VoicesResponse' '401': $ref: '#/components/responses/Unauthorized' components: schemas: Voice: type: object properties: voice: type: string description: The voice identifier. language: type: string description: The language of the voice. gender: type: string description: The gender of the voice. supportedStyles: type: array description: Voice styles supported by this voice. items: type: string VoicesResponse: type: object properties: voices: type: array items: $ref: '#/components/schemas/Voice' Error: type: object properties: success: type: boolean message: type: string responses: Unauthorized: description: Missing or invalid API key. content: application/json: schema: $ref: '#/components/schemas/Error' securitySchemes: listnrToken: type: apiKey in: header name: x-listnr-token description: Personal API key generated in the Listnr dashboard at voices.listnr.tech. Keep it server-side; never expose it in the browser or front-end code.