{
  "publisher": "SpeechifyAI",
  "provenance": "SpeechifyAI's reading of each provider's own public documentation and pricing pages on 1 Oct 2026, for /blog/tts-api-concurrency-and-rate-limits-2026. Quotes are verbatim from the page named in the entry's sources. Every concurrency figure was read at least twice; where two reads or two pages disagreed, notes say which was kept and why. A page that could not be read is listed under unreadable, and nothing from it is used.",
  "capturedOn": "2026-10-01",
  "date": "1 Oct 2026",
  "currency": "USD, before tax",
  "notes": [
    "SpeechifyAI's own limits are not repeated here. They come from the enforcing code (entitlementTiers in apps/server/internal/build/lifecycle/entitlements.go, mirrored as TTS_LIMITS in apps/site/src/content/constants.ts and published at https://docs.speechify.ai/build/guides/concepts/api-limits), and its plan prices from PLANS in the same constants file (https://speechify.ai/pricing).",
    "concurrency is the provider's own published ceiling on simultaneous text-to-speech requests on that plan, as a number; concurrencyText is how the page states it. null means the plan publishes no number.",
    "priceText is the page's own wording of the plan's price; Google and Amazon sell no plans for these APIs, so theirs is our label.",
    "billing: subscription is a monthly fee (monthlyUSD, the monthly-billed price); usage is no fee, every character billed; prepaid is a balance bought in advance, whose threshold unlocks the tier; annual is a yearly commitment; contract is a negotiated plan.",
    "Deepgram Growth streaming: one of three reads of the rate-limits page returned 45 for North America; two reads and the pricing page's 'Up to 60' for Growth text to speech give 60, which is kept.",
    "Gradium Free: a search-engine summary gave 3; the pricing page gives 2 for text to speech and 3 for speech to text, so 2 is kept.",
    "Hume Creator: the page shows '$7 / month' with '1st month 50% off' beside '$14 / month'; $14 is kept as the monthly price.",
    "ElevenLabs' concurrency table names Multilingual v2 and Flash only; it states no separate figure for Eleven v3.",
    "The ElevenLabs Speech Engine API table on https://elevenlabs.io/pricing/api (4 to 40 'Concurrent Calls') prices conversational minutes, not text-to-speech requests, and is not used."
  ],
  "rows": [
    {
      "provider": "ElevenLabs",
      "name": "ElevenLabs, Flash",
      "product": "Flash models (eleven_flash_v2_5, eleven_flash_v2)",
      "plans": [
        { "plan": "Free", "billing": "subscription", "monthlyUSD": 0, "priceText": "Free", "concurrency": 4 },
        { "plan": "Starter", "billing": "subscription", "monthlyUSD": 6, "priceText": "$6 per month", "concurrency": 6 },
        { "plan": "Creator", "billing": "subscription", "monthlyUSD": 22, "priceText": "$22 per month, first month $11", "concurrency": 10 },
        { "plan": "Pro", "billing": "subscription", "monthlyUSD": 99, "priceText": "$99 per month", "concurrency": 20 },
        { "plan": "Scale", "billing": "subscription", "monthlyUSD": 299, "priceText": "$299 per month", "concurrency": 30 },
        { "plan": "Business", "billing": "subscription", "monthlyUSD": 990, "priceText": "$990 per month", "concurrency": 30 },
        { "plan": "Enterprise", "billing": "contract", "monthlyUSD": null, "priceText": "Custom", "concurrency": null, "concurrencyText": "Elevated" }
      ],
      "overLimit": "Once the concurrency limit is met, subsequent requests are processed in a queue alongside lower-priority requests. In practice this typically only adds ~50ms of latency.",
      "quotes": [
        "| Plan | Concurrency Limit (Multilingual v2) | Concurrency Limit (Flash) | STT Concurrency Limit | Realtime STT Concurrency limit | Music Concurrency limit | Priority level |",
        "| Pro | 10 | 20 | 40 | 30 | 2 | 5 |",
        "Your subscription plan determines how many requests can be processed simultaneously and the priority level of your requests in the queue."
      ],
      "sources": ["https://elevenlabs.io/docs/overview/models", "https://elevenlabs.io/pricing/api", "https://elevenlabs.io/pricing"]
    },
    {
      "provider": "ElevenLabs",
      "name": "ElevenLabs, Multilingual v2",
      "product": "eleven_multilingual_v2",
      "plans": [
        { "plan": "Free", "billing": "subscription", "monthlyUSD": 0, "priceText": "Free", "concurrency": 2 },
        { "plan": "Starter", "billing": "subscription", "monthlyUSD": 6, "priceText": "$6 per month", "concurrency": 3 },
        { "plan": "Creator", "billing": "subscription", "monthlyUSD": 22, "priceText": "$22 per month, first month $11", "concurrency": 5 },
        { "plan": "Pro", "billing": "subscription", "monthlyUSD": 99, "priceText": "$99 per month", "concurrency": 10 },
        { "plan": "Scale", "billing": "subscription", "monthlyUSD": 299, "priceText": "$299 per month", "concurrency": 15 },
        { "plan": "Business", "billing": "subscription", "monthlyUSD": 990, "priceText": "$990 per month", "concurrency": 15 },
        { "plan": "Enterprise", "billing": "contract", "monthlyUSD": null, "priceText": "Custom", "concurrency": null, "concurrencyText": "Elevated" }
      ],
      "overLimit": "Once the concurrency limit is met, subsequent requests are processed in a queue alongside lower-priority requests. In practice this typically only adds ~50ms of latency.",
      "quotes": [
        "| Scale | 15 | 30 | 60 | 45 | 5 | 5 |"
      ],
      "sources": ["https://elevenlabs.io/docs/overview/models", "https://elevenlabs.io/pricing/api", "https://elevenlabs.io/pricing"]
    },
    {
      "provider": "Cartesia",
      "name": "Cartesia",
      "product": "Sonic text to speech",
      "plans": [
        { "plan": "Free", "billing": "subscription", "monthlyUSD": 0, "priceText": "$0/mo", "concurrency": 2 },
        { "plan": "Pro", "billing": "subscription", "monthlyUSD": 5, "priceText": "$5/mo", "concurrency": 3 },
        { "plan": "Startup", "billing": "subscription", "monthlyUSD": 49, "priceText": "$49/mo", "concurrency": 5 },
        { "plan": "Scale", "billing": "subscription", "monthlyUSD": 299, "priceText": "$299/mo", "concurrency": 15 },
        { "plan": "Enterprise", "billing": "contract", "monthlyUSD": null, "priceText": "Custom", "concurrency": null, "concurrencyText": "Custom concurrency limits" }
      ],
      "overLimit": "If you exceed your TTS concurrency limit, you will receive a `429 Too Many Requests` error.",
      "quotes": [
        "| Plan | TTS Concurrent Requests | STT Concurrent Requests |",
        "| Scale | 15 | 60 |",
        "We measure TTS generation concurrency in terms of the number of unique contexts active at a given time.",
        "For HTTP endpoints, each request is treated as a separate context and counts toward your concurrency limit.",
        "the number of parallel conversations you can support is effectively 4X your concurrency limit",
        "We limit the number of parallel TTS WebSocket connections to 10X your concurrency limit."
      ],
      "sources": ["https://docs.cartesia.ai/use-the-api/concurrency-limits-and-timeouts", "https://www.cartesia.ai/pricing"]
    },
    {
      "provider": "Inworld",
      "name": "Inworld",
      "product": "Realtime TTS-2 and TTS-2 Flash",
      "plans": [
        { "plan": "On-Demand", "billing": "usage", "monthlyUSD": 0, "priceText": "Start free", "concurrency": 5 },
        { "plan": "Creator", "billing": "subscription", "monthlyUSD": 25, "priceText": "$25/mo", "concurrency": 10 },
        { "plan": "Builder", "billing": "subscription", "monthlyUSD": 100, "priceText": "$100/mo", "concurrency": 50 },
        { "plan": "Developer", "billing": "subscription", "monthlyUSD": 300, "priceText": "$300/mo", "concurrency": 150 },
        { "plan": "Growth", "billing": "subscription", "monthlyUSD": 1500, "priceText": "$1,500/mo", "concurrency": 500 },
        { "plan": "Enterprise", "billing": "contract", "monthlyUSD": null, "priceText": "Custom", "concurrency": null, "concurrencyText": "Custom" }
      ],
      "overLimit": "When you exceed your rate limit, the API returns an HTTP `429 Too Many Requests` response.",
      "quotes": [
        "Rate limits apply per account and are shared across your API keys.",
        "The number of concurrent user sessions that can be handled will differ by use case, but is typically at least 4x your concurrent request limit."
      ],
      "sources": ["https://inworld.ai/pricing", "https://docs.inworld.ai/resources/rate-limits"]
    },
    {
      "provider": "Hume",
      "name": "Hume",
      "product": "Octave text to speech",
      "plans": [
        { "plan": "Free", "billing": "subscription", "monthlyUSD": 0, "priceText": "$0 / month", "concurrency": 1 },
        { "plan": "Starter", "billing": "subscription", "monthlyUSD": 3, "priceText": "$3 / month", "concurrency": 5 },
        { "plan": "Creator", "billing": "subscription", "monthlyUSD": 14, "priceText": "$14 / month", "concurrency": 5 },
        { "plan": "Pro", "billing": "subscription", "monthlyUSD": 70, "priceText": "$70 / month", "concurrency": 10 },
        { "plan": "Scale", "billing": "subscription", "monthlyUSD": 200, "priceText": "$200 / month", "concurrency": 20 },
        { "plan": "Business", "billing": "subscription", "monthlyUSD": 500, "priceText": "$500 / month", "concurrency": 30 },
        { "plan": "Enterprise", "billing": "contract", "monthlyUSD": null, "priceText": "Custom", "concurrency": null, "concurrencyText": "As much as you need" }
      ],
      "overLimit": null,
      "quotes": [
        "Concurrent connections: Free: 1 | Starter: 5 | Creator: 5 | Pro: 10 | Scale: 20 | Business: 30 | Enterprise: As much as you need",
        "RPM (requests per minute): Free: 15 | Starter: 15 | Creator: 75 | Pro: 75 | Scale: 150 | Business: 225 | Enterprise: Custom"
      ],
      "sources": ["https://www.hume.ai/pricing"]
    },
    {
      "provider": "Gradium",
      "name": "Gradium",
      "product": "Gradium text to speech",
      "plans": [
        { "plan": "Free", "billing": "subscription", "monthlyUSD": 0, "priceText": "$0/mo", "concurrency": 2 },
        { "plan": "XS", "billing": "subscription", "monthlyUSD": 13, "priceText": "$13/mo", "concurrency": 5 },
        { "plan": "S", "billing": "subscription", "monthlyUSD": 43, "priceText": "$43/mo", "concurrency": 5 },
        { "plan": "M", "billing": "subscription", "monthlyUSD": 340, "priceText": "$340/mo", "concurrency": 10 },
        { "plan": "L", "billing": "subscription", "monthlyUSD": 1615, "priceText": "$1,615/mo", "concurrency": 15 },
        { "plan": "Enterprise", "billing": "contract", "monthlyUSD": null, "priceText": "Custom", "concurrency": null, "concurrencyText": "Custom" }
      ],
      "overLimit": null,
      "quotes": ["Concurrency (TTS): \"2\" | \"5\" | \"5\" | \"10\" | \"15\" | \"Custom\""],
      "sources": ["https://gradium.ai/pricing"]
    },
    {
      "provider": "Rime",
      "name": "Rime",
      "product": "Mist v3 and Coda",
      "plans": [
        { "plan": "Starter", "billing": "usage", "monthlyUSD": 0, "priceText": "starting at $0.03 / 1K characters", "concurrency": 20 },
        { "plan": "Enterprise", "billing": "contract", "monthlyUSD": null, "priceText": "Volume pricing", "concurrency": null, "concurrencyText": "Unlimited concurrent TTS generations" }
      ],
      "overLimit": null,
      "quotes": [
        "20 concurrent TTS generations",
        "Concurrent generations. Simultaneous audio streams. 20 on Starter.",
        "Rime is priced by usage, and you only pay for what you use."
      ],
      "sources": ["https://rime.ai/pricing"]
    },
    {
      "provider": "Deepgram",
      "name": "Deepgram Aura-2, streaming",
      "product": "Aura-2 over the streaming (WebSocket) API; 45 in every region on Pay as you go, and Growth's 60 is North America, 45 elsewhere",
      "plans": [
        { "plan": "Pay as you go", "billing": "usage", "monthlyUSD": 0, "priceText": "Free $200 Credit", "concurrency": 45, "concurrencyText": "Up to 45 concurrent requests" },
        { "plan": "Growth", "billing": "annual", "monthlyUSD": null, "priceText": "$4K+ / year", "concurrency": 60, "concurrencyText": "Up to 60 concurrent requests" },
        { "plan": "Enterprise", "billing": "contract", "monthlyUSD": null, "priceText": "Contact Sales", "concurrency": 100, "concurrencyText": "Starting at 100 concurrent requests" }
      ],
      "overLimit": null,
      "quotes": [
        "| [Aura-2](/docs/streaming-text-to-speech) | Up to 45 concurrent requests | Up to 45 concurrent requests | Up to 45 concurrent requests | Up to 45 concurrent requests |",
        "| [Aura](/docs/streaming-text-to-speech) | Up to 60 concurrent requests | Up to 45 concurrent requests | Up to 45 concurrent requests | Up to 45 concurrent requests |"
      ],
      "sources": ["https://developers.deepgram.com/reference/api-rate-limits", "https://deepgram.com/pricing"]
    },
    {
      "provider": "Deepgram",
      "name": "Deepgram Aura-2, REST",
      "product": "Aura-2 over the REST API, every region",
      "plans": [
        { "plan": "Pay as you go", "billing": "usage", "monthlyUSD": 0, "priceText": "Free $200 Credit", "concurrency": 15, "concurrencyText": "Up to 15 concurrent requests" },
        { "plan": "Growth", "billing": "annual", "monthlyUSD": null, "priceText": "$4K+ / year", "concurrency": 15, "concurrencyText": "Up to 15 concurrent requests" },
        { "plan": "Enterprise", "billing": "contract", "monthlyUSD": null, "priceText": "Contact Sales", "concurrency": 25, "concurrencyText": "Starting at 25 concurrent requests" }
      ],
      "overLimit": null,
      "quotes": [
        "| [Aura-2](/docs/text-to-speech) | Up to 15 concurrent requests | Up to 15 concurrent requests | Up to 15 concurrent requests | Up to 15 concurrent requests |",
        "| [Aura-2](/docs/text-to-speech) | Starting at 25 concurrent requests | Starting at 25 concurrent requests | Starting at 25 concurrent requests | Starting at 25 concurrent requests |"
      ],
      "sources": ["https://developers.deepgram.com/reference/api-rate-limits", "https://deepgram.com/pricing"]
    },
    {
      "provider": "Fish Audio",
      "name": "Fish Audio",
      "product": "s2.1-pro, s2-pro and s1",
      "plans": [
        { "plan": "Starter", "billing": "prepaid", "monthlyUSD": null, "prepaidUSD": 0, "priceText": "< $100 paid", "concurrency": 5 },
        { "plan": "Elevated", "billing": "prepaid", "monthlyUSD": null, "prepaidUSD": 100, "priceText": "≥ $100 paid", "concurrency": 15 },
        { "plan": "High Volume", "billing": "prepaid", "monthlyUSD": null, "prepaidUSD": 1000, "priceText": "≥ $1,000 paid", "concurrency": 50 },
        { "plan": "Enterprise", "billing": "contract", "monthlyUSD": null, "priceText": "Custom", "concurrency": null, "concurrencyText": "Custom limits" }
      ],
      "overLimit": null,
      "quotes": [
        "| High Volume | ≥ $1,000 paid | 50 requests |",
        "Concurrency tiers unlock as soon as your total prepaid amount reaches the threshold. You do not need to spend the full balance first.",
        "$15.00 / M UTF-8 bytes"
      ],
      "sources": ["https://docs.fish.audio/developer-guide/models-pricing/pricing-and-rate-limits"]
    },
    {
      "provider": "Google Cloud",
      "name": "Google Cloud TTS, Chirp 3 HD streaming",
      "product": "Streaming synthesis, which runs only on Chirp 3: HD voices",
      "unit": "sessions",
      "plans": [
        { "plan": "Any project", "billing": "usage", "monthlyUSD": 0, "priceText": "Quotas are per project; no plan", "concurrency": 100, "concurrencyText": "100 streaming sessions per project" }
      ],
      "overLimit": null,
      "quotes": [
        "ConcurrentStreamingSessionsPerProject: 100",
        "Chirp3RequestsPerMinutePerProject: 200",
        "RequestsPerMinutePerProject: 1,000",
        "Streaming Cloud Text-to-Speech is only compatible with Chirp 3: HD voices.",
        "You can request an increase to the requests limit from the Google Cloud console."
      ],
      "sources": ["https://docs.cloud.google.com/text-to-speech/quotas", "https://docs.cloud.google.com/text-to-speech/docs/create-audio-text-streaming"]
    },
    {
      "provider": "Amazon Polly",
      "name": "Amazon Polly SynthesizeSpeech, generative",
      "product": "SynthesizeSpeech with generative voices",
      "plans": [
        { "plan": "Any account", "billing": "usage", "monthlyUSD": 0, "priceText": "Pay as you go, per region and account", "concurrency": 26, "concurrencyText": "up to 26 concurrent requests" }
      ],
      "overLimit": "These requests would return a response with HTTP status 400, and a response header indicating `ThrottlingException`.",
      "quotes": [
        "For **generative voice**, Amazon Polly supports up to 26 concurrent requests.",
        "For **StartSpeechSynthesisStream**, Amazon Polly supports up to 8 concurrent requests.",
        "You can use the AWS Management Console to request quota increases for the adjustable quotas when needed."
      ],
      "sources": ["https://docs.aws.amazon.com/polly/latest/dg/limits.html"]
    },
    {
      "provider": "Amazon Polly",
      "name": "Amazon Polly SynthesizeSpeech, neural",
      "product": "SynthesizeSpeech with neural voices",
      "plans": [
        { "plan": "Any account", "billing": "usage", "monthlyUSD": 0, "priceText": "Pay as you go, per region and account", "concurrency": 18, "concurrencyText": "up to 18 concurrent requests" }
      ],
      "overLimit": "These requests would return a response with HTTP status 400, and a response header indicating `ThrottlingException`.",
      "quotes": [
        "For **neural voice**, Amazon Polly supports 8 tps with a burst limit of 10 tps, for up to 18 concurrent requests."
      ],
      "sources": ["https://docs.aws.amazon.com/polly/latest/dg/limits.html"]
    }
  ],
  "requestRates": [
    {
      "provider": "Google Cloud",
      "name": "Google Cloud TTS",
      "limit": "1,000 requests a minute per project; 200 a minute for Chirp 3 HD",
      "quotes": ["RequestsPerMinutePerProject: 1,000", "Chirp3RequestsPerMinutePerProject: 200"],
      "sources": ["https://docs.cloud.google.com/text-to-speech/quotas"]
    },
    {
      "provider": "Amazon Polly",
      "name": "Amazon Polly",
      "limit": "SynthesizeSpeech: 8 a second for generative and neural voices (neural bursts to 10), 80 for standard voices",
      "quotes": ["`SynthesizeSpeech` | Generative voice: 8 tps<br />Long-form voice: 8 tps with a burst limit of 10 tps<br />Neural voice: 8 tps with a burst limit of 10 tps<br />Standard voice: 80 tps with a burst limit of 100 tps"],
      "sources": ["https://docs.aws.amazon.com/polly/latest/dg/limits.html"]
    },
    {
      "provider": "Azure",
      "name": "Azure Speech",
      "limit": "Free (F0): 20 a minute, fixed; Standard (S0): 30 a second by default, adjustable up to 1,000",
      "quotes": [
        "| Maximum number of transactions per time period for standard voices and custom voices | 20 transactions per 60 secondsThis limit isn't adjustable. | 30 transactions per second (TPS) (default value)The rate is adjustable up to 1,000 TPS for Standard (S0) resources.",
        "The required TPS is: 1,000 calls / (2×5 seconds) = 100 TPS.",
        "Most HTTP 429 errors with text-to-speech standard voice are caused by limited backend service capacity for a specific voice in the selected region, not by quota limits.",
        "Increasing your quota doesn't resolve these errors."
      ],
      "sources": ["https://learn.microsoft.com/en-us/azure/ai-services/speech-service/speech-services-quotas-and-limits"]
    },
    {
      "provider": "OpenAI",
      "name": "OpenAI tts-1",
      "limit": "Free: 3 a minute; Tier 1 ($5 paid): 500; Tier 5 ($1,000 paid): 10,000",
      "quotes": ["| free | 3 | 200 |", "| Tier 1 | 500 | - |", "| Tier 5 | 10,000 | - |", "| Tier 1 | $5 paid | $100 / month |", "| Tier 5 | $1,000 paid | $200,000 / month |"],
      "sources": ["https://developers.openai.com/api/docs/models/tts-1", "https://developers.openai.com/api/docs/guides/rate-limits"]
    },
    {
      "provider": "OpenAI",
      "name": "OpenAI gpt-4o-mini-tts",
      "limit": "Tier 1: 500 a minute and 50,000 tokens a minute; Tier 5: 10,000 and 8,000,000",
      "quotes": ["| Tier 1 | 500 | 50,000 |", "| Tier 5 | 10,000 | 8,000,000 |"],
      "sources": ["https://developers.openai.com/api/docs/models/gpt-4o-mini-tts"]
    },
    {
      "provider": "Hume",
      "name": "Hume",
      "limit": "15 a minute on Free and Starter, 75 on Creator and Pro, 150 on Scale, 225 on Business",
      "quotes": ["RPM (requests per minute): Free: 15 | Starter: 15 | Creator: 75 | Pro: 75 | Scale: 150 | Business: 225 | Enterprise: Custom"],
      "sources": ["https://www.hume.ai/pricing"]
    },
    {
      "provider": "MiniMax",
      "name": "MiniMax",
      "limit": "Pay as you go: 60 a minute, with no concurrency (CONN) figure; audio subscriptions from 10 a minute ($5) to 800 ($999)",
      "quotes": ["| T2A | speech-2.8-turbo/hd<br />speech-2.6-turbo/hd<br />speech-02-turbo/hd | 60 |", "Starter: $5, RPM 10; Standard: $30, RPM 50; Pro: $99, RPM 200; Scale: $249, RPM 500; Business: $999, RPM 800"],
      "sources": ["https://platform.minimax.io/docs/guides/rate-limits", "https://platform.minimax.io/docs/guides/pricing"]
    }
  ],
  "availability": [
    {
      "name": "Amazon Polly",
      "terms": "Covered by the Amazon Machine Learning Language Service Level Agreement (last updated 28 November 2023): a 10% service credit when a region's monthly uptime falls below 99.9%, 25% below 99.0%, 100% below 95.0%",
      "quotes": ["AWS will use commercially reasonable efforts to make each Amazon ML Language Service available with a Monthly Uptime Percentage for each AWS region, during any monthly billing cycle (the \"Service Commitment\").", "Less than 99.9% but greater than or equal to 99.0% | 10%"],
      "sources": ["https://aws.amazon.com/ai/services/language-sla/"]
    },
    {
      "name": "Deepgram",
      "terms": "\"Standard Uptime\" on Pay as you go and Growth; no percentage on the page",
      "quotes": ["Standard Uptime"],
      "sources": ["https://deepgram.com/pricing"]
    },
    {
      "name": "ElevenLabs",
      "terms": "SLAs on Enterprise only",
      "quotes": ["Custom terms & assurance around DPA/SLAs"],
      "sources": ["https://elevenlabs.io/pricing/api"]
    },
    {
      "name": "Inworld",
      "terms": "SLA on Enterprise only",
      "quotes": ["SLA & DPA"],
      "sources": ["https://inworld.ai/pricing"]
    },
    {
      "name": "Rime",
      "terms": "SLAs on Enterprise only",
      "quotes": ["SLAs + dedicated support"],
      "sources": ["https://rime.ai/pricing"]
    },
    {
      "name": "Cartesia, Hume, Gradium, Fish Audio",
      "terms": "No SLA or uptime figure on the pricing or limits pages read",
      "quotes": [],
      "sources": ["https://www.cartesia.ai/pricing", "https://www.hume.ai/pricing", "https://gradium.ai/pricing", "https://docs.fish.audio/developer-guide/models-pricing/pricing-and-rate-limits"]
    }
  ],
  "unreadable": [
    { "url": "https://help.elevenlabs.io/hc/en-us/articles/14312733311761-How-many-Text-to-Speech-requests-can-I-make-and-can-I-increase-it", "why": "HTTP 403 to our reader; the same limits are taken from the ElevenLabs docs instead" },
    { "url": "https://cloud.google.com/text-to-speech/sla", "why": "the page body did not render for our reader; Google's SLA terms are not quoted" },
    { "url": "https://cloud.google.com/text-to-speech/pricing", "why": "the page body did not render for our reader; Google's per-character prices are not quoted" },
    { "url": "https://www.microsoft.com/licensing/docs/view/Service-Level-Agreements-SLA-for-Online-Services", "why": "the SLA text is a downloadable document our reader could not open; Microsoft's Azure Speech SLA terms are not quoted" },
    { "url": "https://openai.com/api-scale-tier/", "why": "HTTP 403 to our reader; no OpenAI availability terms are quoted" }
  ]
}
