<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>API Documentation</title> <style> body { font-family: Arial, sans-serif; line-height: 1.6; max-width: 800px; margin: 20px auto; padding: 0 20px; color: #333; } h1 { color: #0056b3; } code { background: #f4f4f4; padding: 2px 6px; border-radius: 4px; } pre { background: #f4f4f4; padding: 10px; border-radius: 4px; overflow-x: auto; } </style> </head> <body> <h1>API Documentation</h1> <p>This page documents the available APIs for the Node.js service, detailing endpoints, parameters, and expected responses.</p> <h2>1. GET /list-models</h2> <p>Retrieves a list of available models.</p> <strong>URL:</strong> <pre>GET /list-models</pre> <strong>Response:</strong> <pre>["Model 1", "Model 2", "Model 3"]</pre> <h2>2. GET /generate/speech</h2> <p>Generates speech audio based on the provided script.</p> <strong>URL:</strong> <pre>GET /generate/speech?api_key=<code>your_api_key</code>&payload=<code>script_payload</code></pre> <strong>Parameters:</strong> <ul> <li><strong>api_key</strong> (required): Your API key for authentication.</li> <li><strong>payload</strong> (required): The script payload containing speaker names and speech content.</li> </ul> <strong>Response:</strong> <pre>Audio file in MPEG format (served as a response file).</pre> <h2>3. POST /generate/speech/stream</h2> <p>Generates speech audio and streams the response via Server-Sent Events (SSE).</p> <strong>URL:</strong> <pre>POST /generate/speech/stream?api_key=<code>your_api_key</code></pre> <strong>Headers:</strong> <ul> <li><strong>Content-Type</strong>: application/json</li> </ul> <strong>Body:</strong> <pre>{ "payload": "script_payload" }</pre> <strong>Response:</strong> <ul> <li><code>audio_segment</code>: URL to generated audio segment.</li> <li><code>audio_complete</code>: URL to the final combined audio file.</li> </ul> <h2>4. GET /generate/image</h2> <p>Generates an image based on the provided prompt.</p> <strong>URL:</strong> <pre>GET /generate/image?prompt=<code>image_prompt</code>&width=<code>image_width</code>&height=<code>image_height</code>&response_format=<code>image</code> (default)</pre> <strong>Parameters:</strong> <ul> <li><strong>prompt</strong> (required): Description of the image to generate.</li> <li><strong>width</strong> (optional): Width of the generated image (default is 1024).</li> <li><strong>height</strong> (optional): Height of the generated image (default is 1024).</li> <li><strong>response_format</strong> (optional): Format of the response, can be "image" or "url".</li> </ul> <strong>Response:</strong> <pre>Generated image or URL to the image.</pre> <h2>5. POST /generate/image</h2> <p>Generates an image based on a prompt passed in the body of the request.</p> <strong>URL:</strong> <pre>POST /generate/image?response_format=<code>url</code> (default)</pre> <strong>Headers:</strong> <ul> <li><strong>Content-Type</strong>: application/json</li> </ul> <strong>Body:</strong> <pre>{ "prompt": "A large hamster" }</pre> <strong>Response:</strong> <pre>{ "imageUrl": "https://example.com/generated_image.jpg" }</pre> <h2>6. Serving Static Media Files</h2> <p>All generated media (audio and images) can be accessed via:</p> <strong>URL:</strong> <pre>GET /media/<code>filename</code></pre> <h2>Notes</h2> <ul> <li>Ensure that your API key is provided when required.</li> <li>Audio and image generation requires a valid script payload or image prompt respectively.</li> <li>The system uses OpenAI for TTS, and appropriate API keys need to be set in the environment variables.</li> </ul> </body> </html>