{
  "service": "NoJunk Speech",
  "description": "Pay-per-call speech and language tools for agents: transcribe audio (URL or base64, up to 20 MB / about 10 minutes) to text with timestamps and detected language, turn text into natural MP3 speech, or translate text between 100 languages. USDC on Base via x402; you are only charged when a valid result is returned.",
  "openapi": "https://nojunk-speech.mick8511.workers.dev/openapi.json",
  "endpoints": {
    "/transcribe": {
      "method": "POST",
      "url": "https://nojunk-speech.mick8511.workers.dev/transcribe",
      "price": "$0.02 USDC on Base per request (x402)",
      "description": "Transcribe audio (URL or base64, up to 20 MB / about 10 minutes) to text with timestamps, word count and detected language (Whisper large-v3-turbo).",
      "example_body": {
        "audio_url": "https://example.com/podcast-clip.mp3",
        "language": "en"
      }
    },
    "/speak": {
      "method": "POST",
      "url": "https://nojunk-speech.mick8511.workers.dev/speak",
      "price": "$0.01 USDC on Base per request (x402)",
      "description": "Convert text (up to 2,000 characters) into natural MP3 speech, returned as audio/mpeg bytes or base64 JSON (Deepgram Aura-1).",
      "example_body": {
        "text": "Your order has shipped and should arrive on Thursday.",
        "speaker": "asteria",
        "format": "json"
      }
    },
    "/translate": {
      "method": "POST",
      "url": "https://nojunk-speech.mick8511.workers.dev/translate",
      "price": "$0.002 USDC on Base per request (x402)",
      "description": "Translate text (up to 5,000 characters) between 100 languages, ISO 639-1 codes in and out (Meta M2M100 1.2B).",
      "example_body": {
        "text": "The meeting has been moved to Thursday at 3 pm.",
        "source_lang": "en",
        "target_lang": "es"
      }
    }
  },
  "models": {
    "transcribe": "@cf/openai/whisper-large-v3-turbo",
    "speak": "@cf/deepgram/aura-1",
    "translate": "@cf/meta/m2m100-1.2b"
  },
  "limits": {
    "transcribe": {
      "max_audio_bytes": 20971520,
      "approx_max_minutes": 10,
      "download_timeout_seconds": 20,
      "max_request_bytes": 29360128
    },
    "speak": {
      "max_text_chars": 400,
      "speakers": [
        "asteria",
        "luna",
        "stella",
        "athena",
        "hera",
        "orion",
        "arcas",
        "perseus",
        "angus",
        "orpheus",
        "helios",
        "zeus"
      ],
      "formats": [
        "mp3",
        "json"
      ]
    },
    "translate": {
      "max_text_chars": 5000,
      "languages": [
        "af",
        "am",
        "ar",
        "ast",
        "az",
        "ba",
        "be",
        "bg",
        "bn",
        "br",
        "bs",
        "ca",
        "ceb",
        "cs",
        "cy",
        "da",
        "de",
        "el",
        "en",
        "es",
        "et",
        "fa",
        "ff",
        "fi",
        "fr",
        "fy",
        "ga",
        "gd",
        "gl",
        "gu",
        "ha",
        "he",
        "hi",
        "hr",
        "ht",
        "hu",
        "hy",
        "id",
        "ig",
        "ilo",
        "is",
        "it",
        "ja",
        "jv",
        "ka",
        "kk",
        "km",
        "kn",
        "ko",
        "lb",
        "lg",
        "ln",
        "lo",
        "lt",
        "lv",
        "mg",
        "mk",
        "ml",
        "mn",
        "mr",
        "ms",
        "my",
        "ne",
        "nl",
        "no",
        "ns",
        "oc",
        "or",
        "pa",
        "pl",
        "ps",
        "pt",
        "ro",
        "ru",
        "sd",
        "si",
        "sk",
        "sl",
        "so",
        "sq",
        "sr",
        "ss",
        "su",
        "sv",
        "sw",
        "ta",
        "th",
        "tl",
        "tn",
        "tr",
        "uk",
        "ur",
        "uz",
        "vi",
        "wo",
        "xh",
        "yi",
        "yo",
        "zh",
        "zu"
      ]
    }
  },
  "no_charge_on": [
    "400 invalid input or private/local audio_url",
    "404 audio not found",
    "413 body or audio too large",
    "415 not audio",
    "502 audio download failed or AI model unavailable"
  ],
  "configured": true,
  "facilitator": "cdp"
}