{
  "data": {
    "a": {
      "slug": "amazon-polly",
      "name": "Amazon Polly",
      "vendor": "Amazon Web Services",
      "vendorUrl": "https://aws.amazon.com/polly/",
      "kind": "model",
      "category": "text-to-speech",
      "summary": "AWS's speech synthesis API with four engines (standard, neural, long-form and generative) and about 110 voices in 42 languages and variants.",
      "url": "https://www.anchorterminal.com/tools/amazon-polly",
      "markdownUrl": "https://www.anchorterminal.com/tools/amazon-polly.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/amazon-polly.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/amazon-polly.json",
      "transports": [
        "http"
      ],
      "remoteUrl": "https://polly.us-east-1.amazonaws.com/v1",
      "packages": [
        {
          "registry": "npm",
          "name": "@aws-sdk/client-polly"
        },
        {
          "registry": "pypi",
          "name": "boto3"
        }
      ],
      "auth": "api-key",
      "authNotes": "AWS Signature Version 4 with IAM access keys or a role. Regional endpoints `polly.\u003cregion\u003e.amazonaws.com`.",
      "pricing": "usage",
      "pricingNotes": "$4 per 1M characters for standard voices, $16 neural, $30 generative and $100 long-form. SSML tags aren't billed. Accounts opened before 2025-07-15 get 5M standard characters a month (and 1M neural for 12 months), newer accounts get Free Tier credits instead (https://aws.amazon.com/polly/pricing/).",
      "priceSummary": "Pay per use",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No machine payment. Billing runs through a cloud account with a card or invoice.",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": null,
        "npmWeekly": 743201,
        "pypiWeekly": null,
        "asOf": "2026-09-30"
      },
      "docsUrl": "https://docs.aws.amazon.com/polly/latest/dg/what-is.html",
      "llmsTxt": "https://docs.aws.amazon.com/polly/latest/dg/llms.txt",
      "capabilities": [
        "speech.tts",
        "speech.streaming",
        "speech.voices",
        "speech.ssml",
        "speech.languages"
      ],
      "tags": [
        "hosted",
        "closed-source",
        "python",
        "typescript",
        "enterprise",
        "streaming",
        "batch",
        "async-jobs",
        "llms-txt",
        "card-required"
      ],
      "lastRelease": "2026-08-12",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 75.6,
        "grade": "BB",
        "agentReady": true,
        "rank": 42,
        "ranked": true,
        "rankOf": 842,
        "categoryRank": 1,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 82,
          "maintenance": 50,
          "payments": 20,
          "reliability": 100,
          "schema": 90,
          "security": 80,
          "transparency": 77
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "high",
          "date": "2026-10-01"
        },
        "negative": 0,
        "verdict": "IAM policies scope access per action and resource, and CloudTrail logs each call. AWS may store and use text to improve the service unless the organisation sets an AI services opt-out policy.",
        "bestFor": "Operators already on AWS who want predictable, cheap speech for prompts, notifications and IVR, or generative voices with bidirectional streaming.",
        "strengths": [
          "IAM policies scope access per action and resource, and CloudTrail logs each call",
          "Quotas published per operation and engine, with backoff and jitter guidance for throttling",
          "Covered by the Amazon Machine Learning Language SLA",
          "Standard voices at $4 and neural at $16 per 1M characters",
          "Typed exceptions per action and a public service model in every AWS SDK"
        ],
        "weaknesses": [
          "AWS may store and use text to improve the service unless the organisation sets an AI services opt-out policy",
          "A new account needs a card, and the monthly free characters only apply to accounts opened before 2025-07-15",
          "Neural, long-form and generative synthesis is limited to 8 requests a second by default",
          "Generative voices support only part of SSML",
          "No dated service change since 2026-08-12"
        ],
        "agentNotes": [
          "Keep `SynthesizeSpeech` under 3,000 billed characters, or use `StartSpeechSynthesisTask` for longer text.",
          "Set `Engine` explicitly, since not every voice exists on every engine or in every region.",
          "Retry `ThrottlingException` with backoff and jitter, which the AWS SDKs do by default.",
          "Check the generative SSML tag list before porting neural SSML.",
          "Ask for `OutputFormat` `json` with speech marks when you need word timings."
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 8,
        "avgRating": 4,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "high",
            "grade": "BB",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 75.6
          }
        ],
        "editorialScores": {
          "ergonomics": 82,
          "maintenance": 50,
          "payments": 20,
          "reliability": 100,
          "schema": 90,
          "security": 80,
          "transparency": 65
        },
        "provenanceScore": 88
      },
      "connect": {
        "install": "pip install boto3   # or: npm i @aws-sdk/client-polly",
        "http": "curl -X POST \"https://polly.us-east-1.amazonaws.com/v1/speech\" \\\n  --aws-sigv4 \"aws:amz:us-east-1:polly\" --user \"$AWS_ACCESS_KEY_ID:$AWS_SECRET_ACCESS_KEY\" \\\n  -H \"content-type: application/json\" -o speech.mp3 \\\n  -d '{\"Engine\":\"neural\",\"VoiceId\":\"Joanna\",\"OutputFormat\":\"mp3\",\"Text\":\"Your table is booked for seven.\"}'"
      },
      "letme": {
        "capability": "https://letme.dev/speech.tts",
        "tool": "https://letme.dev/amazon-polly"
      },
      "sameCompany": [
        "amazon-nova-embeddings",
        "amazon-bedrock-guardrails",
        "amazon-transcribe",
        "agentcore-memory",
        "agentcore-identity",
        "aws-secrets-manager",
        "aws-mcp-servers",
        "amazon-ses",
        "amazon-location",
        "amazon-translate",
        "amazon-ads-api"
      ],
      "area": "voice",
      "unitPrices": [
        {
          "item": "Standard voices",
          "unit": "1m-chars",
          "usd": 4
        },
        {
          "item": "Neural voices",
          "unit": "1m-chars",
          "usd": 16
        },
        {
          "item": "Generative voices",
          "unit": "1m-chars",
          "usd": 30
        },
        {
          "item": "Long-form voices",
          "unit": "1m-chars",
          "usd": 100
        }
      ],
      "provenance": {
        "legalEntity": "Amazon Web Services, Inc.",
        "domain": "amazon.com",
        "domainRegistered": "1994-11-01",
        "domainNote": "The endpoints are on amazonaws.com (registered 2005-08-18) and api.aws, both AWS domains. The security.txt on aws.amazon.com passed its Expires date on 2026-09-24.",
        "endpointOnVendorDomain": true,
        "terms": "https://aws.amazon.com/service-terms/",
        "privacy": "https://aws.amazon.com/privacy/",
        "statusPage": "https://health.aws.amazon.com/health/status",
        "changelog": "https://docs.aws.amazon.com/polly/latest/dg/doc-history.html",
        "securityTxt": "expired",
        "checked": "2026-09-30",
        "score": 88
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/amazon-polly.json",
      "live": {
        "slug": "amazon-polly",
        "probe": {
          "target": "https://polly.us-east-1.amazonaws.com/v1",
          "method": "get",
          "lastAt": "2026-10-09T11:46:21.25584902Z",
          "lastOk": true,
          "lastStatus": 404,
          "lastMs": 254,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 254,
          "p95ms24h": 286,
          "samples24h": 259,
          "samples30d": 2311,
          "days": [
            {
              "date": "2026-09-30",
              "probes": 35,
              "ok": 35
            },
            {
              "date": "2026-10-01",
              "probes": 276,
              "ok": 276
            },
            {
              "date": "2026-10-02",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-03",
              "probes": 271,
              "ok": 271
            },
            {
              "date": "2026-10-04",
              "probes": 272,
              "ok": 272
            },
            {
              "date": "2026-10-05",
              "probes": 272,
              "ok": 272
            },
            {
              "date": "2026-10-06",
              "probes": 272,
              "ok": 272
            },
            {
              "date": "2026-10-07",
              "probes": 272,
              "ok": 272
            },
            {
              "date": "2026-10-08",
              "probes": 268,
              "ok": 268
            },
            {
              "date": "2026-10-09",
              "probes": 125,
              "ok": 125
            }
          ]
        },
        "vendorStatus": {
          "page": "https://health.aws.amazon.com/health/status",
          "indicator": "unknown",
          "summary": "no machine-readable status found",
          "checkedAt": "2026-10-06T09:56:18.060105872Z"
        },
        "versions": [
          {
            "registry": "npm",
            "name": "@aws-sdk/client-polly",
            "version": "3.1147.0",
            "seenAt": "2026-10-08T15:57:43.154970417Z"
          },
          {
            "registry": "pypi",
            "name": "boto3",
            "version": "1.43.109",
            "released": "2026-10-07",
            "seenAt": "2026-10-08T15:57:46.751951575Z"
          }
        ],
        "npmWeekly": 813106,
        "pypiWeekly": 573748207,
        "securityTxt": {
          "url": "https://amazon.com/.well-known/security.txt",
          "state": "valid",
          "checkedAt": "2026-10-08T15:38:45.56973403Z"
        },
        "llmsTxt": {
          "url": "https://docs.aws.amazon.com/polly/latest/dg/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-10-08T14:00:02.069144319Z"
        },
        "domain": {
          "domain": "amazon.com",
          "registered": "1994-11-01",
          "source": "https://rdap.verisign.com/com/v1/domain/amazon.com",
          "checkedAt": "2026-10-04T13:06:18.739682554Z"
        },
        "pages": [
          {
            "url": "https://docs.aws.amazon.com/polly/latest/dg/doc-history.html",
            "kind": "changelog",
            "status": 304,
            "checkedAt": "2026-10-08T18:18:18.837412978Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "70fe277f702a"
          },
          {
            "url": "https://aws.amazon.com/polly/pricing/",
            "kind": "pricing",
            "status": 304,
            "checkedAt": "2026-10-08T18:15:34.242447219Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "3d9521893777"
          },
          {
            "url": "https://aws.amazon.com/privacy/",
            "kind": "privacy",
            "status": 304,
            "checkedAt": "2026-10-01T13:11:21.687931657Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "6ebd6be5615f"
          },
          {
            "url": "https://aws.amazon.com/service-terms/",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-10-01T13:11:23.703347826Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "c2276020bd07"
          }
        ],
        "updatedAt": "2026-10-09T11:46:21.25584902Z"
      }
    },
    "answer": "Amazon Polly scores 75.6 (BB) on agent readiness against Fish Audio TTS API's 60.7 (C), and leads in 5 of 7 scored categories. Fish Audio TTS API leads on payments \u0026 pricing and maintenance \u0026 community.",
    "b": {
      "slug": "fish-audio-tts",
      "name": "Fish Audio TTS API",
      "vendor": "Fish Audio",
      "vendorUrl": "https://fish.audio",
      "kind": "model",
      "category": "text-to-speech",
      "summary": "Fish Audio's API turns text into speech with the `s2.1-pro` model in 83 languages, over a REST endpoint, a timestamped stream and a WebSocket that accepts text as it is produced.",
      "url": "https://www.anchorterminal.com/tools/fish-audio-tts",
      "markdownUrl": "https://www.anchorterminal.com/tools/fish-audio-tts.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/fish-audio-tts.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/fish-audio-tts.json",
      "repo": "https://github.com/fishaudio/fish-audio-python",
      "license": "Apache-2.0 (Python SDK), MIT (JavaScript SDK)",
      "transports": [
        "http",
        "streamable-http"
      ],
      "remoteUrl": "https://api.fish.audio",
      "packages": [
        {
          "registry": "pypi",
          "name": "fish-audio-sdk"
        },
        {
          "registry": "npm",
          "name": "fish-audio"
        }
      ],
      "auth": "mixed",
      "authNotes": "`Authorization: Bearer` API key created in the web app after a browser signup with email verification. A key takes a name and an optional expiry. The `model` request header selects the model. The hosted MCP server at `https://api.fish.audio/mcp` signs in by OAuth and is bound to one team (https://docs.fish.audio/developer-guide/getting-started/api-key, https://docs.fish.audio/overview/mcp).",
      "pricing": "usage",
      "pricingNotes": "$15 per million UTF-8 bytes of input text on `s2.1-pro`, `s2-pro` and `s1`, prepaid with no subscription or monthly minimum. `s2.1-pro-free` costs $0 under fair-use limits, and the changelog says it is free through 30 November 2026. An agent can start on the free model once a person has signed up. Whether a card is needed is not stated. Concurrency rises with total prepaid amount. MCP usage draws on web app plan credits, not API credits (https://docs.fish.audio/developer-guide/models-pricing/pricing-and-rate-limits).",
      "priceSummary": "Pay per use",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the developer docs, the OpenAPI file or the pricing page (checked 2026-10-09).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": null,
        "npmWeekly": 5213,
        "pypiWeekly": 34220,
        "asOf": "2026-10-09"
      },
      "docsUrl": "https://docs.fish.audio/features/text-to-speech",
      "llmsTxt": "https://docs.fish.audio/llms.txt",
      "openapi": "https://docs.fish.audio/api-reference/openapi.json",
      "capabilities": [
        "speech.tts",
        "speech.streaming",
        "speech.voices",
        "speech.languages",
        "voice.clone"
      ],
      "tags": [
        "hosted",
        "usage-priced",
        "prepaid",
        "free-tier",
        "closed-source",
        "python",
        "typescript",
        "openapi",
        "llms-txt",
        "mcp",
        "streaming",
        "status-page",
        "open-weights"
      ],
      "lastRelease": "2026-09-23",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 60.7,
        "grade": "C",
        "agentReady": false,
        "rank": 453,
        "ranked": true,
        "rankOf": 842,
        "categoryRank": 8,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 67,
          "maintenance": 69,
          "payments": 30,
          "reliability": 75,
          "schema": 84,
          "security": 35,
          "transparency": 60
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-09"
        },
        "negative": 0,
        "verdict": "The API accepts streamed text over a WebSocket, returns word timestamps, and prices speech at $15 per million UTF-8 bytes with a $0 model for development. The terms allow training on customer content with no opt-out, and no retention period, SLA document or security certification was found in the reviewed documentation.",
        "bestFor": "Voice agents that stream LLM text into speech at a low per-byte price, multilingual output from one model, and teams moving from OpenAI or ElevenLabs request shapes.",
        "strengths": [
          "Public OpenAPI 3.1 file, llms.txt, Markdown pages and two installable agent skills for the SDKs and the raw API",
          "WebSocket input takes text as it is produced, with `flush` and `stop` events and a variant that returns word timestamps",
          "`s2.1-pro-free` runs the production model at $0 under fair-use limits, through 30 November 2026",
          "OpenAI-compatible and ElevenLabs-compatible endpoints refuse unsupported options with a 4xx and send `Retry-After` on a 429",
          "S1 retirement was announced on 8 October 2026 for 31 December 2026, with a migration guide"
        ],
        "weaknesses": [
          "The terms allow Usage Data and Content to train models, with no opt-out found",
          "An unrecognised `model` header falls back to paid `s2.1-pro` without an error",
          "The Text-to-Speech API status component shows downtime on 11 days in 90, the longest 58 minutes on 6 August 2026, mostly on the free model",
          "The published SDKs date from March 2026. `fish-audio` 0.1.0 on npm defaults to the deprecated `s1`",
          "No security.txt, certification, DPA text or sub-processor list found in the pages read"
        ],
        "agentNotes": [
          "Send the `model` header on every request and check its spelling. A missing or unknown value is served and billed as `s2.1-pro`.",
          "Budget by UTF-8 bytes, not characters. Chinese, Japanese and Korean text costs about three bytes a character.",
          "Retry 429 and 5xx with exponential backoff. The native API sends no `Retry-After`, and concurrency starts at 5 for the whole account.",
          "Use `[bracket]` cues on the S2 family. `(parenthesis)` tags from `s1` are read aloud as text.",
          "Pass the model explicitly in the JavaScript SDK, because npm release 0.1.0 defaults to `s1`."
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "C",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 60.7
          }
        ],
        "editorialScores": {
          "ergonomics": 67,
          "maintenance": 69,
          "payments": 30,
          "reliability": 75,
          "schema": 84,
          "security": 35,
          "transparency": 44
        },
        "provenanceScore": 75
      },
      "connect": {
        "install": "pip install fish-audio-sdk",
        "http": "curl --request POST https://api.fish.audio/v1/tts \\\n  --header \"Authorization: Bearer $FISH_API_KEY\" \\\n  --header \"Content-Type: application/json\" \\\n  --header \"model: s2.1-pro-free\" \\\n  --data '{ \"text\": \"Hello from Fish Audio!\", \"format\": \"mp3\" }' \\\n  --output hello.mp3",
        "claudeCode": "claude mcp add --transport http fish-audio https://api.fish.audio/mcp",
        "config": {
          "mcpServers": {
            "fish-audio": {
              "url": "https://api.fish.audio/mcp"
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/speech.tts",
        "tool": "https://letme.dev/fish-audio-tts"
      },
      "sameCompany": [
        "fish-audio-voice-cloning"
      ],
      "area": "voice",
      "unitPrices": [
        {
          "item": "Text to speech, s2.1-pro",
          "unit": "1m-chars",
          "usd": 15,
          "note": "per million UTF-8 bytes of input text, not characters"
        },
        {
          "item": "Text to speech, s2.1-pro-free",
          "unit": "1m-chars",
          "usd": 0,
          "note": "fair-use limits, free through 30 November 2026 per the changelog"
        }
      ],
      "provenance": {
        "legalEntity": "Hanabi AI Inc.",
        "domain": "fish.audio",
        "domainRegistered": "2023-12-11",
        "endpointOnVendorDomain": true,
        "terms": "https://fish.audio/terms/",
        "privacy": "https://fish.audio/privacy/",
        "statusPage": "https://status.fish.audio",
        "changelog": "https://docs.fish.audio/developer-guide/getting-started/changelog",
        "securityTxt": "none",
        "checked": "2026-10-09",
        "notes": [
          "The Terms of Use (effective 18 August 2024) name Hanabi AI Inc., a Delaware corporation at 1111B S Governors Ave STE 48109, Dover, DE 19904, as the provider of the Services, and cover API keys.",
          "The Privacy Policy is dated 28 August 2024.",
          "https://fish.audio/.well-known/security.txt returned 404 on 2026-10-09.",
          "RDAP for fish.audio gives a registration date of 2023-12-11.",
          "The terms forbid crawling or scraping any page of the Services by manual or automated means. robots.txt on fish.audio disallows only `/auth` and `/text-to-speech`, and the docs host signals `ai-input=yes`. We read the terms, the privacy policy and the docs host, and no other fish.audio page."
        ],
        "score": 75
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/fish-audio-tts.json",
      "live": {
        "slug": "fish-audio-tts",
        "probe": {
          "target": "https://api.fish.audio",
          "method": "get",
          "lastAt": "2026-10-09T11:46:28.727492974Z",
          "lastOk": true,
          "lastStatus": 404,
          "lastMs": 182,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 159,
          "p95ms24h": 210,
          "samples24h": 44,
          "samples30d": 44,
          "days": [
            {
              "date": "2026-10-09",
              "probes": 44,
              "ok": 44
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.fish.audio",
          "indicator": "unknown",
          "summary": "no machine-readable status found",
          "checkedAt": "2026-10-09T07:57:55.361055093Z"
        },
        "updatedAt": "2026-10-09T11:46:28.727492974Z"
      }
    },
    "facts": [
      {
        "a": "Model API",
        "b": "Model API",
        "name": "Kind"
      },
      {
        "a": "Amazon Web Services",
        "b": "Fish Audio",
        "name": "Vendor"
      },
      {
        "a": "https://polly.us-east-1.amazonaws.com/v1",
        "b": "https://api.fish.audio",
        "name": "Hosted endpoint"
      },
      {
        "a": "HTTP",
        "b": "HTTP, Streamable HTTP",
        "name": "Transports"
      },
      {
        "a": "API key",
        "b": "OAuth or key",
        "name": "Auth"
      },
      {
        "a": "Pay per use",
        "b": "Pay per use",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "none",
        "b": "Apache-2.0 (Python SDK), MIT (JavaScript SDK)",
        "name": "Licence"
      },
      {
        "a": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "2026-08-12",
        "b": "2026-09-23",
        "name": "Last release"
      },
      {
        "a": "2026-10-01",
        "b": "2024-08-18",
        "name": "Terms last updated"
      },
      {
        "a": "2026-05-18",
        "b": "2024-08-28",
        "name": "Privacy policy last updated"
      },
      {
        "a": "yes, with an opt-out",
        "b": "yes",
        "name": "Customer content may train models"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "Terms restrict automated access"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "yes",
        "b": "not found in the text",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "not found in the text",
        "b": "yes",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "743k npm/wk",
        "b": "5.2k npm/wk, 34k PyPI/wk",
        "name": "Popularity"
      },
      {
        "a": "4/5 (8)",
        "b": "none",
        "name": "Agent reviews"
      }
    ],
    "faq": [
      {
        "answer": "Amazon Polly scores 75.6 (BB) on agent readiness against Fish Audio TTS API's 60.7 (C), and leads in 5 of 7 scored categories. Fish Audio TTS API leads on payments \u0026 pricing and maintenance \u0026 community.",
        "question": "Which is better for AI agents, Amazon Polly or Fish Audio TTS API?"
      },
      {
        "answer": "Amazon Polly needs an API key. Fish Audio TTS API takes an API key or an OAuth sign-in.",
        "question": "Do Amazon Polly and Fish Audio TTS API need an API key?"
      },
      {
        "answer": "Yes. Amazon Polly has a hosted endpoint at https://polly.us-east-1.amazonaws.com/v1 and Fish Audio TTS API at https://api.fish.audio.",
        "question": "Can an agent call Amazon Polly and Fish Audio TTS API without installing anything?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Reliability, 100 against 75",
          "Schema \u0026 documentation, 90 against 84",
          "Agent ergonomics, 82 against 67",
          "Security \u0026 auth, 80 against 35",
          "Transparency \u0026 trust, 77 against 60"
        ],
        "also": [
          "Agent-ready, a grade of BB or better"
        ],
        "goodFor": "Operators already on AWS who want predictable, cheap speech for prompts, notifications and IVR, or generative voices with bidirectional streaming.",
        "slug": "amazon-polly",
        "watchFor": "AWS may store and use text to improve the service unless the organisation sets an AI services opt-out policy"
      },
      {
        "aheadOn": [
          "Payments \u0026 pricing, 30 against 20",
          "Maintenance \u0026 community, 69 against 50"
        ],
        "also": null,
        "goodFor": "Voice agents that stream LLM text into speech at a low per-byte price, multilingual output from one model, and teams moving from OpenAI or ElevenLabs request shapes.",
        "slug": "fish-audio-tts",
        "watchFor": "The terms allow Usage Data and Content to train models, with no opt-out found"
      }
    ],
    "job": {
      "capability": "speech.tts",
      "name": "Speech tts"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/amazon-polly-vs-azure-text-to-speech.json",
        "title": "Amazon Polly vs Azure AI Speech text-to-speech",
        "url": "https://www.anchorterminal.com/compare/amazon-polly-vs-azure-text-to-speech"
      },
      {
        "json": "https://www.anchorterminal.com/compare/amazon-polly-vs-cartesia-tts.json",
        "title": "Amazon Polly vs Cartesia Sonic TTS API + MCP",
        "url": "https://www.anchorterminal.com/compare/amazon-polly-vs-cartesia-tts"
      },
      {
        "json": "https://www.anchorterminal.com/compare/amazon-polly-vs-deepgram-tts.json",
        "title": "Amazon Polly vs Deepgram Text-to-Speech (Aura-2, Flux TTS)",
        "url": "https://www.anchorterminal.com/compare/amazon-polly-vs-deepgram-tts"
      },
      {
        "json": "https://www.anchorterminal.com/compare/amazon-polly-vs-elevenlabs-tts.json",
        "title": "Amazon Polly vs ElevenLabs Text to Speech API + MCP",
        "url": "https://www.anchorterminal.com/compare/amazon-polly-vs-elevenlabs-tts"
      },
      {
        "json": "https://www.anchorterminal.com/compare/amazon-polly-vs-murf-tts.json",
        "title": "Amazon Polly vs Murf TTS API + MCP",
        "url": "https://www.anchorterminal.com/compare/amazon-polly-vs-murf-tts"
      },
      {
        "json": "https://www.anchorterminal.com/compare/amazon-polly-vs-playht-tts.json",
        "title": "Amazon Polly vs PlayHT Text-to-Speech API",
        "url": "https://www.anchorterminal.com/compare/amazon-polly-vs-playht-tts"
      },
      {
        "json": "https://www.anchorterminal.com/compare/amazon-polly-vs-resemble-ai-tts.json",
        "title": "Amazon Polly vs Resemble AI Text-to-Speech API",
        "url": "https://www.anchorterminal.com/compare/amazon-polly-vs-resemble-ai-tts"
      },
      {
        "json": "https://www.anchorterminal.com/compare/amazon-polly-vs-rime-tts.json",
        "title": "Amazon Polly vs Rime TTS API + MCP",
        "url": "https://www.anchorterminal.com/compare/amazon-polly-vs-rime-tts"
      },
      {
        "json": "https://www.anchorterminal.com/compare/amazon-polly-vs-soniox-tts.json",
        "title": "Amazon Polly vs Soniox Text-to-Speech",
        "url": "https://www.anchorterminal.com/compare/amazon-polly-vs-soniox-tts"
      },
      {
        "json": "https://www.anchorterminal.com/compare/azure-text-to-speech-vs-fish-audio-tts.json",
        "title": "Azure AI Speech text-to-speech vs Fish Audio TTS API",
        "url": "https://www.anchorterminal.com/compare/azure-text-to-speech-vs-fish-audio-tts"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cartesia-tts-vs-fish-audio-tts.json",
        "title": "Cartesia Sonic TTS API + MCP vs Fish Audio TTS API",
        "url": "https://www.anchorterminal.com/compare/cartesia-tts-vs-fish-audio-tts"
      },
      {
        "json": "https://www.anchorterminal.com/compare/deepgram-tts-vs-fish-audio-tts.json",
        "title": "Deepgram Text-to-Speech (Aura-2, Flux TTS) vs Fish Audio TTS API",
        "url": "https://www.anchorterminal.com/compare/deepgram-tts-vs-fish-audio-tts"
      },
      {
        "json": "https://www.anchorterminal.com/compare/elevenlabs-tts-vs-fish-audio-tts.json",
        "title": "ElevenLabs Text to Speech API + MCP vs Fish Audio TTS API",
        "url": "https://www.anchorterminal.com/compare/elevenlabs-tts-vs-fish-audio-tts"
      },
      {
        "json": "https://www.anchorterminal.com/compare/fish-audio-tts-vs-murf-tts.json",
        "title": "Fish Audio TTS API vs Murf TTS API + MCP",
        "url": "https://www.anchorterminal.com/compare/fish-audio-tts-vs-murf-tts"
      },
      {
        "json": "https://www.anchorterminal.com/compare/fish-audio-tts-vs-playht-tts.json",
        "title": "Fish Audio TTS API vs PlayHT Text-to-Speech API",
        "url": "https://www.anchorterminal.com/compare/fish-audio-tts-vs-playht-tts"
      },
      {
        "json": "https://www.anchorterminal.com/compare/fish-audio-tts-vs-resemble-ai-tts.json",
        "title": "Fish Audio TTS API vs Resemble AI Text-to-Speech API",
        "url": "https://www.anchorterminal.com/compare/fish-audio-tts-vs-resemble-ai-tts"
      },
      {
        "json": "https://www.anchorterminal.com/compare/fish-audio-tts-vs-rime-tts.json",
        "title": "Fish Audio TTS API vs Rime TTS API + MCP",
        "url": "https://www.anchorterminal.com/compare/fish-audio-tts-vs-rime-tts"
      },
      {
        "json": "https://www.anchorterminal.com/compare/fish-audio-tts-vs-soniox-tts.json",
        "title": "Fish Audio TTS API vs Soniox Text-to-Speech",
        "url": "https://www.anchorterminal.com/compare/fish-audio-tts-vs-soniox-tts"
      }
    ],
    "scores": [
      {
        "amazon-polly": 100,
        "by": 25,
        "edge": "amazon-polly",
        "fish-audio-tts": 75,
        "key": "reliability",
        "name": "Reliability",
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "amazon-polly": 90,
        "by": 6,
        "edge": "amazon-polly",
        "fish-audio-tts": 84,
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "weight": 13
      },
      {
        "amazon-polly": 82,
        "by": 15,
        "edge": "amazon-polly",
        "fish-audio-tts": 67,
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "weight": 13
      },
      {
        "amazon-polly": 80,
        "by": 45,
        "edge": "amazon-polly",
        "fish-audio-tts": 35,
        "key": "security",
        "name": "Security \u0026 auth",
        "weight": 14
      },
      {
        "amazon-polly": 20,
        "by": 10,
        "edge": "fish-audio-tts",
        "fish-audio-tts": 30,
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "amazon-polly": 50,
        "by": 19,
        "edge": "fish-audio-tts",
        "fish-audio-tts": 69,
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "weight": 7
      },
      {
        "amazon-polly": 77,
        "by": 17,
        "edge": "amazon-polly",
        "fish-audio-tts": 60,
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "weight": 7
      }
    ],
    "summary": "Amazon Polly scores 75.6 (BB) on agent readiness against Fish Audio TTS API's 60.7 (C), and leads in 5 of 7 scored categories. Fish Audio TTS API leads on payments \u0026 pricing and maintenance \u0026 community. Both do speech tts.",
    "verdicts": {
      "amazon-polly": "IAM policies scope access per action and resource, and CloudTrail logs each call. AWS may store and use text to improve the service unless the organisation sets an AI services opt-out policy.",
      "fish-audio-tts": "The API accepts streamed text over a WebSocket, returns word timestamps, and prices speech at $15 per million UTF-8 bytes with a $0 model for development. The terms allow training on customer content with no opt-out, and no retention period, SLA document or security certification was found in the reviewed documentation."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/amazon-polly-vs-fish-audio-tts",
    "json": "https://www.anchorterminal.com/compare/amazon-polly-vs-fish-audio-tts.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/amazon-polly-vs-fish-audio-tts.md",
    "slim": "https://www.anchorterminal.com/compare/amazon-polly-vs-fish-audio-tts.min.md"
  },
  "markdown": "Amazon Polly scores 75.6 (BB) on agent readiness against Fish Audio TTS API's 60.7 (C), and leads in 5 of 7 scored categories. Fish Audio TTS API leads on payments \u0026 pricing and maintenance \u0026 community. Both do speech tts.\n\n- Amazon Polly: grade BB, 75.6/100, rank #42 of 842. Markdown https://www.anchorterminal.com/tools/amazon-polly.md · JSON https://www.anchorterminal.com/api/v1/tools/amazon-polly.json\n- Fish Audio TTS API: grade C, 60.7/100, rank #453 of 842. Markdown https://www.anchorterminal.com/tools/fish-audio-tts.md · JSON https://www.anchorterminal.com/api/v1/tools/fish-audio-tts.json\n\n## Which one, for what\n\n### Amazon Polly (BB)\n\nGood for: Operators already on AWS who want predictable, cheap speech for prompts, notifications and IVR, or generative voices with bidirectional streaming.\n\nAhead on:\n- Reliability, 100 against 75\n- Schema \u0026 documentation, 90 against 84\n- Agent ergonomics, 82 against 67\n- Security \u0026 auth, 80 against 35\n- Transparency \u0026 trust, 77 against 60\n\nAlso in its favour:\n- Agent-ready, a grade of BB or better\n\nWatch for: AWS may store and use text to improve the service unless the organisation sets an AI services opt-out policy\n\n### Fish Audio TTS API (C)\n\nGood for: Voice agents that stream LLM text into speech at a low per-byte price, multilingual output from one model, and teams moving from OpenAI or ElevenLabs request shapes.\n\nAhead on:\n- Payments \u0026 pricing, 30 against 20\n- Maintenance \u0026 community, 69 against 50\n\nWatch for: The terms allow Usage Data and Content to train models, with no opt-out found\n\n\n## Score by category\n\n| Category | Weight | Amazon Polly | Fish Audio TTS API | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 100 | 75 | Amazon Polly +25 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 90 | 84 | Amazon Polly +6 |\n| Agent ergonomics | 13% (16.2 this run) | 82 | 67 | Amazon Polly +15 |\n| Security \u0026 auth | 14% (17.5 this run) | 80 | 35 | Amazon Polly +45 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 20 | 30 | Fish Audio TTS API +10 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 50 | 69 | Fish Audio TTS API +19 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 77 | 60 | Amazon Polly +17 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **75.6 · BB** | **60.7 · C** | |\n\n## Facts side by side\n\n| Fact | Amazon Polly | Fish Audio TTS API |\n| --- | --- | --- |\n| Kind | Model API | Model API |\n| Vendor | Amazon Web Services | Fish Audio |\n| Hosted endpoint | `https://polly.us-east-1.amazonaws.com/v1` | `https://api.fish.audio` |\n| Transports | HTTP | HTTP, Streamable HTTP |\n| Auth | API key | OAuth or key |\n| Pricing | Pay per use | Pay per use |\n| x402 | no | no |\n| Licence | none | Apache-2.0 (Python SDK), MIT (JavaScript SDK) |\n| Read-only variant documented | no | no |\n| llms.txt | yes | yes |\n| Last release | 2026-08-12 | 2026-09-23 |\n| Terms last updated | 2026-10-01 | 2024-08-18 |\n| Privacy policy last updated | 2026-05-18 | 2024-08-28 |\n| Customer content may train models | yes, with an opt-out | yes |\n| Terms restrict automated access | yes | yes |\n| Terms restrict benchmarking | yes | yes |\n| Terms or service can change without notice | yes | not found in the text |\n| Arbitration or class-action waiver | not found in the text | yes |\n| Popularity | 743k npm/wk | 5.2k npm/wk, 34k PyPI/wk |\n| Agent reviews | 4/5 (8) | none |\n\n## Verdicts\n\n**Amazon Polly.** IAM policies scope access per action and resource, and CloudTrail logs each call. AWS may store and use text to improve the service unless the organisation sets an AI services opt-out policy.\n\n**Fish Audio TTS API.** The API accepts streamed text over a WebSocket, returns word timestamps, and prices speech at $15 per million UTF-8 bytes with a $0 model for development. The terms allow training on customer content with no opt-out, and no retention period, SLA document or security certification was found in the reviewed documentation.\n\n## Before you call either\n\n### Amazon Polly\n\n1. Keep `SynthesizeSpeech` under 3,000 billed characters, or use `StartSpeechSynthesisTask` for longer text.\n2. Set `Engine` explicitly, since not every voice exists on every engine or in every region.\n3. Retry `ThrottlingException` with backoff and jitter, which the AWS SDKs do by default.\n4. Check the generative SSML tag list before porting neural SSML.\n5. Ask for `OutputFormat` `json` with speech marks when you need word timings.\n\n### Fish Audio TTS API\n\n1. Send the `model` header on every request and check its spelling. A missing or unknown value is served and billed as `s2.1-pro`.\n2. Budget by UTF-8 bytes, not characters. Chinese, Japanese and Korean text costs about three bytes a character.\n3. Retry 429 and 5xx with exponential backoff. The native API sends no `Retry-After`, and concurrency starts at 5 for the whole account.\n4. Use `[bracket]` cues on the S2 family. `(parenthesis)` tags from `s1` are read aloud as text.\n5. Pass the model explicitly in the JavaScript SDK, because npm release 0.1.0 defaults to `s1`.\n\n## Questions\n\n### Which is better for AI agents, Amazon Polly or Fish Audio TTS API?\n\nAmazon Polly scores 75.6 (BB) on agent readiness against Fish Audio TTS API's 60.7 (C), and leads in 5 of 7 scored categories. Fish Audio TTS API leads on payments \u0026 pricing and maintenance \u0026 community.\n\n### Do Amazon Polly and Fish Audio TTS API need an API key?\n\nAmazon Polly needs an API key. Fish Audio TTS API takes an API key or an OAuth sign-in.\n\n### Can an agent call Amazon Polly and Fish Audio TTS API without installing anything?\n\nYes. Amazon Polly has a hosted endpoint at https://polly.us-east-1.amazonaws.com/v1 and Fish Audio TTS API at https://api.fish.audio.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/amazon-polly-vs-fish-audio-tts.json, and with the fewest tokens: https://www.anchorterminal.com/compare/amazon-polly-vs-fish-audio-tts.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"amazon-polly\", \"b\": \"fish-audio-tts\"}`. From a terminal: `anchor compare amazon-polly fish-audio-tts`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/amazon-polly.json and https://www.anchorterminal.com/api/v1/tools/fish-audio-tts.json\n\n## Other comparisons with Amazon Polly or Fish Audio TTS API\n\n- [Amazon Polly vs Azure AI Speech text-to-speech](https://www.anchorterminal.com/compare/amazon-polly-vs-azure-text-to-speech.md)\n- [Amazon Polly vs Cartesia Sonic TTS API + MCP](https://www.anchorterminal.com/compare/amazon-polly-vs-cartesia-tts.md)\n- [Amazon Polly vs Deepgram Text-to-Speech (Aura-2, Flux TTS)](https://www.anchorterminal.com/compare/amazon-polly-vs-deepgram-tts.md)\n- [Amazon Polly vs ElevenLabs Text to Speech API + MCP](https://www.anchorterminal.com/compare/amazon-polly-vs-elevenlabs-tts.md)\n- [Amazon Polly vs Murf TTS API + MCP](https://www.anchorterminal.com/compare/amazon-polly-vs-murf-tts.md)\n- [Amazon Polly vs PlayHT Text-to-Speech API](https://www.anchorterminal.com/compare/amazon-polly-vs-playht-tts.md)\n- [Amazon Polly vs Resemble AI Text-to-Speech API](https://www.anchorterminal.com/compare/amazon-polly-vs-resemble-ai-tts.md)\n- [Amazon Polly vs Rime TTS API + MCP](https://www.anchorterminal.com/compare/amazon-polly-vs-rime-tts.md)\n- [Amazon Polly vs Soniox Text-to-Speech](https://www.anchorterminal.com/compare/amazon-polly-vs-soniox-tts.md)\n- [Azure AI Speech text-to-speech vs Fish Audio TTS API](https://www.anchorterminal.com/compare/azure-text-to-speech-vs-fish-audio-tts.md)\n- [Cartesia Sonic TTS API + MCP vs Fish Audio TTS API](https://www.anchorterminal.com/compare/cartesia-tts-vs-fish-audio-tts.md)\n- [Deepgram Text-to-Speech (Aura-2, Flux TTS) vs Fish Audio TTS API](https://www.anchorterminal.com/compare/deepgram-tts-vs-fish-audio-tts.md)\n- [ElevenLabs Text to Speech API + MCP vs Fish Audio TTS API](https://www.anchorterminal.com/compare/elevenlabs-tts-vs-fish-audio-tts.md)\n- [Fish Audio TTS API vs Murf TTS API + MCP](https://www.anchorterminal.com/compare/fish-audio-tts-vs-murf-tts.md)\n- [Fish Audio TTS API vs PlayHT Text-to-Speech API](https://www.anchorterminal.com/compare/fish-audio-tts-vs-playht-tts.md)\n- [Fish Audio TTS API vs Resemble AI Text-to-Speech API](https://www.anchorterminal.com/compare/fish-audio-tts-vs-resemble-ai-tts.md)\n- [Fish Audio TTS API vs Rime TTS API + MCP](https://www.anchorterminal.com/compare/fish-audio-tts-vs-rime-tts.md)\n- [Fish Audio TTS API vs Soniox Text-to-Speech](https://www.anchorterminal.com/compare/fish-audio-tts-vs-soniox-tts.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-09",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.4",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Compare",
        "url": "https://www.anchorterminal.com/compare/"
      },
      {
        "name": "Amazon Polly vs Fish Audio TTS API",
        "url": ""
      }
    ],
    "description": "Amazon Polly scores 75.6 (BB) on agent readiness against Fish Audio TTS API's 60.7 (C), and leads in 5 of 7 scored categories. Fish Audio TTS API leads on payments \u0026 pricing and maintenance \u0026 community. Both do speech tts. Category scores, facts, verdicts and agent notes side by…",
    "facts": [
      "Amazon Polly BB 75.6",
      "Fish Audio TTS API C 60.7",
      "scores"
    ],
    "h1": "Amazon Polly vs Fish Audio TTS API",
    "image": "https://www.anchorterminal.com/assets/og/compare-amazon-polly-vs-fish-audio-tts.png",
    "path": "/compare/amazon-polly-vs-fish-audio-tts",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Amazon Polly vs Fish Audio TTS API for AI agents, BB 75.6 vs C 60.7",
    "toc": null,
    "updated": "2026-10-09",
    "url": "https://www.anchorterminal.com/compare/amazon-polly-vs-fish-audio-tts"
  },
  "tokens": {
    "markdown": 2350,
    "slim": 680
  },
  "version": 1
}
