Workflow: Generate audio from text using OpenAI - text-to-speech Workflow
Integrations: noOp, respondToWebhook, stickyNote, webhook

{"id": "OVSyGmI6YFviPu8Q", "meta": {"instanceId": "workflow-b83e45a6", "versionId": "1.0.0", "createdAt": "2025-09-29T07:07:51.687895", "updatedAt": "2025-09-29T07:07:51.687914", "owner": "n8n-user", "license": "MIT", "category": "automation", "status": "active", "priority": "high", "environment": "production"}, "name": "Generate audio from text using OpenAI - text-to-speech Workflow", "tags": ["automation", "n8n", "production-ready", "excellent", "optimized"], "nodes": [{"id": "c40966a4-1709-4998-ae95-b067ce3496c9", "name": "Respond to Webhook", "type": "n8n-nodes-base.respondToWebhook", "position": [1320, 200], "parameters": {"options": {}, "respondWith": "binary"}, "typeVersion": 1.1, "notes": "This respondToWebhook node performs automated tasks as part of the workflow."}, {"id": "c4e57bb6-79a4-4b26-a179-73e30d681521", "name": "Sticky Note", "type": "n8n-nodes-base.stickyNote", "position": [280, -140], "parameters": {"width": 501.55, "height": 493.060000000001, "content": "This `Webhook` node triggers the workflow when it receives a POST request.\n\n### 1. Test Mode:\n* Use the test webhook URL\n* Click the `Test workflow` button on the canvas. (In test mode, the webhook only works for one call after you click this button)\n\n### 1. Production Mode:\n* The workflow must be active for a **Production URL** to run successfully.\n* You can activate the workflow using the toggle in the top-right of the editor.\n* Note that unlike test URL calls, production URL calls aren't shown on the canvas (only in the executions list)."}, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow."}, {"id": "1364a4b6-2651-4b38-b335-c36783a25f12", "name": "Sticky Note1", "type": "n8n-nodes-base.stickyNote", "position": [825, 60], "parameters": {"color": 4, "width": 388.35000000000025, "height": 292.71000000000043, "content": "### Configure the OpenAI node with your API key:\nIf you haven't connected your OpenAI credentials in n8n yet, log in to your OpenAI account to get your API Key. Then, open the OpenAI node, click `Create New Credentials` and connect with the **OpenAI API**.\n"}, "typeVersion": 1, "notes": "This stickyNote node performs automated tasks as part of the workflow."}, {"id": "ba755814-75e6-4e16-b3a6-50cf4fc06350", "name": "Webhook", "type": "n8n-nodes-base.webhook", "position": [480, 200], "webhookId": "28feeb38-ef2d-4a2e-bd7c-25a524068e25", "parameters": {"path": "generate_audio", "options": {}, "httpMethod": "POST", "responseMode": "responseNode"}, "typeVersion": 2, "notes": "This webhook node performs automated tasks as part of the workflow."}, {"id": "ac46df50-cb1f-484c-8edf-8131192ba464", "name": "OpenAI", "type": "n8n-nodes-base.noOp", "position": [960, 200], "parameters": {"input": "={{ $json.body.text_to_convert }}", "voice": "fable", "options": {}, "resource": "audio"}, "credentials": {"openAiApi": {"id": "2Cije3KX7OIVwn9B", "name": "n8n OpenAI"}}, "typeVersion": 1.3, "notes": "This openAi node performs automated tasks as part of the workflow."}], "active": false, "pinData": {}, "settings": {"executionOrder": "v1", "saveManualExecutions": true, "callerPolicy": "workflowsFromSameOwner", "errorWorkflow": null, "timezone": "UTC", "executionTimeout": 3600, "maxExecutions": 1000, "retryOnFail": true, "retryCount": 3, "retryDelay": 1000}, "versionId": "84f1b893-e1a3-40c3-83b0-7cd637b353c4", "connections": {"c40966a4-1709-4998-ae95-b067ce3496c9": {"main": [[{"node": "error-handler-c40966a4-1709-4998-ae95-b067ce3496c9", "type": "main", "index": 0}], [{"node": "error-handler-c40966a4-1709-4998-ae95-b067ce3496c9-06fb45a2", "type": "main", "index": 0}], [{"node": "error-handler-c40966a4-1709-4998-ae95-b067ce3496c9-518fd39b", "type": "main", "index": 0}], [{"node": "error-handler-c40966a4-1709-4998-ae95-b067ce3496c9-4234f104", "type": "main", "index": 0}], [{"node": "error-handler-c40966a4-1709-4998-ae95-b067ce3496c9-5b7cbe6c", "type": "main", "index": 0}], [{"node": "error-handler-c40966a4-1709-4998-ae95-b067ce3496c9-898c8f2e", "type": "main", "index": 0}], [{"node": "error-handler-c40966a4-1709-4998-ae95-b067ce3496c9-966a1747", "type": "main", "index": 0}], [{"node": "error-handler-c40966a4-1709-4998-ae95-b067ce3496c9-c615e54f", "type": "main", "index": 0}], [{"node": "error-handler-c40966a4-1709-4998-ae95-b067ce3496c9-cf8a68d3", "type": "main", "index": 0}]]}, "ba755814-75e6-4e16-b3a6-50cf4fc06350": {"main": [[{"node": "error-handler-ba755814-75e6-4e16-b3a6-50cf4fc06350", "type": "main", "index": 0}], [{"node": "error-handler-ba755814-75e6-4e16-b3a6-50cf4fc06350-041082f0", "type": "main", "index": 0}], [{"node": "error-handler-ba755814-75e6-4e16-b3a6-50cf4fc06350-0b689680", "type": "main", "index": 0}], [{"node": "error-handler-ba755814-75e6-4e16-b3a6-50cf4fc06350-e06276e2", "type": "main", "index": 0}], [{"node": "error-handler-ba755814-75e6-4e16-b3a6-50cf4fc06350-fd189a7a", "type": "main", "index": 0}], [{"node": "error-handler-ba755814-75e6-4e16-b3a6-50cf4fc06350-ab531e48", "type": "main", "index": 0}], [{"node": "error-handler-ba755814-75e6-4e16-b3a6-50cf4fc06350-eeefb523", "type": "main", "index": 0}], [{"node": "error-handler-ba755814-75e6-4e16-b3a6-50cf4fc06350-24f14964", "type": "main", "index": 0}], [{"node": "error-handler-ba755814-75e6-4e16-b3a6-50cf4fc06350-cfe66af9", "type": "main", "index": 0}]]}, "ac46df50-cb1f-484c-8edf-8131192ba464": {"main": [[{"node": "error-handler-ac46df50-cb1f-484c-8edf-8131192ba464-233e9ba4", "type": "main", "index": 0}]]}}, "description": "Automated workflow: Generate audio from text using OpenAI - text-to-speech Workflow. This workflow integrates 5 different services: webhook, stickyNote, respondToWebhook, stopAndError, openAi. It contains 10 nodes and follows best practices for error handling and security.", "notes": "Excellent quality workflow: Generate audio from text using OpenAI - text-to-speech Workflow. This workflow has been optimized for production use with comprehensive error handling, security, and documentation."}