{
  "info": {
    "_postman_id": "b1f7a4c2-6d3e-4f1a-9c8b-2e0a7d5c91f4",
    "name": "Wondercraft Public API",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json",
    "description": {
      "content": "The Wondercraft Public API creates audio content - podcasts, audio ads, meditations, and audiobooks - from an AI-generated or user-supplied script. Generation is asynchronous: a create request returns a job_id, which is polled for completion and an MP3 download URL. API access requires a paid plan.\n\nContact Support:\n URL: https://support.wondercraft.ai/",
      "type": "text/plain"
    }
  },
  "event": [],
  "variable": [
    {
      "type": "string",
      "value": "https://api.wondercraft.ai/v1",
      "key": "baseUrl"
    },
    {
      "type": "string",
      "value": "",
      "key": "apiKey"
    }
  ],
  "auth": {
    "type": "apikey",
    "apikey": [
      { "key": "key", "value": "X-API-KEY" },
      { "key": "value", "value": "{{apiKey}}" },
      { "key": "in", "value": "header" }
    ]
  },
  "item": [
    {
      "name": "Audio Generation",
      "item": [
        {
          "name": "Create any audio content with an AI-generated script",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Content-Type", "value": "application/json" }
            ],
            "url": {
              "raw": "{{baseUrl}}/podcast",
              "host": ["{{baseUrl}}"],
              "path": ["podcast"]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"prompt\": \"Generate a short podcast episode about the history of radio.\",\n  \"voice_ids\": [],\n  \"music_spec\": null\n}",
              "options": { "raw": { "language": "json" } }
            },
            "description": "Generates audio content from a natural-language prompt with an AI-written script. Returns a job_id."
          },
          "response": []
        },
        {
          "name": "Create any audio content with a user-provided script",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Content-Type", "value": "application/json" }
            ],
            "url": {
              "raw": "{{baseUrl}}/podcast/scripted",
              "host": ["{{baseUrl}}"],
              "path": ["podcast", "scripted"]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"script\": [\n    { \"text\": \"Welcome to the show.\", \"voice_id\": \"<voice_id>\" }\n  ],\n  \"music_spec\": null\n}",
              "options": { "raw": { "language": "json" } }
            },
            "description": "Generates audio from a user-provided script of ordered text/voice_id segments. Returns a job_id."
          },
          "response": []
        }
      ]
    },
    {
      "name": "Convo Mode",
      "item": [
        {
          "name": "Generate AI-scripted podcast with 2 hosts using Convo Mode",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Content-Type", "value": "application/json" }
            ],
            "url": {
              "raw": "{{baseUrl}}/podcast/convo-mode/ai-scripted",
              "host": ["{{baseUrl}}"],
              "path": ["podcast", "convo-mode", "ai-scripted"]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"prompt\": \"Two hosts discuss the future of AI audio.\",\n  \"voice_ids\": [\"<voice_id_1>\", \"<voice_id_2>\"],\n  \"delivery_instructions\": null,\n  \"music_spec\": null\n}",
              "options": { "raw": { "language": "json" } }
            },
            "description": "Generates a two-host conversational podcast from a prompt. Requires exactly two voice IDs. Returns a job_id."
          },
          "response": []
        },
        {
          "name": "Generate podcast with 2 hosts using Convo Mode and a user-provided script",
          "request": {
            "method": "POST",
            "header": [
              { "key": "Content-Type", "value": "application/json" }
            ],
            "url": {
              "raw": "{{baseUrl}}/podcast/convo-mode/user-scripted",
              "host": ["{{baseUrl}}"],
              "path": ["podcast", "convo-mode", "user-scripted"]
            },
            "body": {
              "mode": "raw",
              "raw": "{\n  \"script\": [\n    { \"text\": \"Hi everyone.\", \"voice_id\": \"<voice_id_1>\" },\n    { \"text\": \"Great to be here.\", \"voice_id\": \"<voice_id_2>\" }\n  ],\n  \"delivery_instructions\": null,\n  \"music_spec\": null\n}",
              "options": { "raw": { "language": "json" } }
            },
            "description": "Generates a two-host conversational podcast from a user-provided script. Returns a job_id."
          },
          "response": []
        }
      ]
    },
    {
      "name": "Jobs",
      "item": [
        {
          "name": "Get audio content result and status",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/podcast/:job_id",
              "host": ["{{baseUrl}}"],
              "path": ["podcast", ":job_id"],
              "variable": [
                { "key": "job_id", "value": "", "description": "The job_id returned by a generate request." }
              ]
            },
            "description": "Retrieves job status. When finished, returns the generated script and an MP3 download URL."
          },
          "response": []
        },
        {
          "name": "Get podcasts for the authenticated user",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/podcasts",
              "host": ["{{baseUrl}}"],
              "path": ["podcasts"]
            },
            "description": "Returns the podcasts associated with the authenticated API key."
          },
          "response": []
        }
      ]
    },
    {
      "name": "Account",
      "item": [
        {
          "name": "Verify API key",
          "request": {
            "method": "GET",
            "header": [],
            "url": {
              "raw": "{{baseUrl}}/verify",
              "host": ["{{baseUrl}}"],
              "path": ["verify"]
            },
            "description": "Verifies the supplied API key and returns the associated account email."
          },
          "response": []
        }
      ]
    }
  ]
}
