{
  "data": {
    "a": {
      "slug": "plivo-voice",
      "name": "Plivo Voice API",
      "vendor": "Plivo",
      "vendorUrl": "https://www.plivo.com",
      "kind": "http-api",
      "category": "voice-calling",
      "summary": "REST and XML call control for inbound and outbound PSTN calls, with bidirectional WebSocket audio streams, SIP trunking, recording and conferencing.",
      "url": "https://www.anchorterminal.com/tools/plivo-voice",
      "markdownUrl": "https://www.anchorterminal.com/tools/plivo-voice.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/plivo-voice.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/plivo-voice.json",
      "repo": "https://github.com/plivo/plivo-node",
      "license": "MIT",
      "transports": [
        "http"
      ],
      "remoteUrl": "https://api.plivo.com/v1",
      "packages": [
        {
          "registry": "npm",
          "name": "plivo"
        },
        {
          "registry": "pypi",
          "name": "plivo"
        }
      ],
      "auth": "api-key",
      "authNotes": "HTTP Basic auth with Auth ID and Auth Token. The Auth ID also appears in every request path. Webhooks carry a signature you can validate.",
      "pricing": "usage",
      "pricingNotes": "Pay as you go with $10 of trial credit and no card. US outbound $0.0115 a minute to local numbers and $0.006 to toll-free, inbound $0.0055 on local and $0.018 on toll-free numbers, SIP or browser legs $0.0033. Local numbers $0.50 a month, toll-free $1. Recording is free with 90 days of storage, then $0.0004 a minute. Transcription $0.0095 a minute, machine detection and conferencing free (https://www.plivo.com/voice/pricing/us/).",
      "priceSummary": "$0.50 / mo",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402 or stablecoin payment path in the voice docs, pricing or llms.txt (checked 2026-09-30).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": 102,
        "npmWeekly": 50920,
        "pypiWeekly": 69307,
        "asOf": "2026-09-30"
      },
      "docsUrl": "https://plivo.com/docs/voice",
      "llmsTxt": "https://www.plivo.com/docs/llms.txt",
      "capabilities": [
        "voice.calls",
        "voice.numbers",
        "voice.streaming",
        "voice.sip",
        "voice.recording",
        "voice.transfer"
      ],
      "tags": [
        "hosted",
        "no-card",
        "llms-txt",
        "typescript",
        "python",
        "webhooks",
        "streaming"
      ],
      "lastRelease": "2026-09-25",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 60.4,
        "grade": "C",
        "agentReady": false,
        "rank": 248,
        "ranked": true,
        "rankOf": 452,
        "categoryRank": 7,
        "methodology": "0.3",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 70,
          "maintenance": 78,
          "payments": 40,
          "reliability": 68,
          "schema": 59,
          "security": 45,
          "transparency": 70
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-01"
        },
        "negative": 0,
        "verdict": "US outbound at $0.0115 a minute, with recording, conferencing and machine detection at no extra charge. 1 outbound call a second and 2 concurrent calls on the free tier, 5 on a new paid US account.",
        "strengths": [
          "US outbound at $0.0115 a minute, with recording, conferencing and machine detection at no extra charge",
          "Bidirectional audio streams in linear PCM at 8, 16 or 24 kHz or mu-law at 8 kHz",
          "Published limits per plan, including concurrency and what happens above them",
          "$10 trial credit with no card",
          "SOC 2, PCI DSS Level 1 and HIPAA per the security page"
        ],
        "weaknesses": [
          "1 outbound call a second and 2 concurrent calls on the free tier, 5 on a new paid US account",
          "No OpenAPI spec, availability SLA or DPA found",
          "No MCP server that can place calls, the official one searches docs only",
          "Call status webhooks failed for a subset of calls for about 6.5 hours on 25 August",
          "No scoped keys, security.txt or bug bounty"
        ],
        "agentNotes": [
          "Point the answer URL at XML with a Stream element and bidirectional set to true for a live voice agent",
          "Check concurrency before dialling out in bulk. Above it calls are rejected with hangup cause 5030, above CPS they queue",
          "Don't rely on the status callback alone to learn a call ended. Poll the call if the webhook doesn't arrive",
          "Validate webhook signatures before acting on call events"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 2,
        "avgRating": 3.5,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "C",
            "methodology": "0.3",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 60.4
          }
        ],
        "editorialScores": {
          "ergonomics": 70,
          "maintenance": 78,
          "payments": 40,
          "reliability": 68,
          "schema": 59,
          "security": 45,
          "transparency": 50
        },
        "provenanceScore": 90
      },
      "connect": {
        "http": "curl -X POST \"https://api.plivo.com/v1/Account/$PLIVO_AUTH_ID/Call/\" -u \"$PLIVO_AUTH_ID:$PLIVO_AUTH_TOKEN\" \\\n  -H \"Content-Type: application/json\" -d '{\"from\":\"+14155550100\",\"to\":\"+14155550101\",\"answer_url\":\"https://example.com/answer.xml\",\"answer_method\":\"GET\"}'"
      },
      "letme": {
        "capability": "https://letme.dev/voice.calls",
        "tool": "https://letme.dev/plivo-voice"
      },
      "sameCompany": [
        "plivo"
      ],
      "area": "voice",
      "unitPrices": [
        {
          "item": "US outbound, local",
          "unit": "call-minute",
          "usd": 0.0115,
          "note": "outbound to US local numbers"
        },
        {
          "item": "US outbound, toll-free",
          "unit": "call-minute",
          "usd": 0.006,
          "note": "outbound to US toll-free numbers"
        },
        {
          "item": "US inbound, local number",
          "unit": "call-minute",
          "usd": 0.0055,
          "note": "inbound on a US local number"
        },
        {
          "item": "US inbound, toll-free number",
          "unit": "call-minute",
          "usd": 0.018,
          "note": "inbound on a US toll-free number"
        },
        {
          "item": "SIP or browser leg",
          "unit": "call-minute",
          "usd": 0.0033,
          "note": "inbound or outbound"
        },
        {
          "item": "US local number",
          "unit": "month",
          "usd": 0.5,
          "note": "per number"
        },
        {
          "item": "US toll-free number",
          "unit": "month",
          "usd": 1,
          "note": "per number"
        }
      ],
      "provenance": {
        "legalEntity": "Plivo Inc.",
        "domain": "plivo.com",
        "domainRegistered": "2011-04-17",
        "endpointOnVendorDomain": true,
        "terms": "https://www.plivo.com/legal/tos/",
        "privacy": "https://www.plivo.com/legal/privacy/",
        "statusPage": "https://status.plivo.com",
        "changelog": "https://www.plivo.com/changelog/",
        "securityTxt": "none",
        "checked": "2026-09-30",
        "notes": [
          "Provenance shared with the Plivo messaging listing. Legal entity taken from the site footer."
        ],
        "score": 90
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/plivo-voice.json",
      "live": {
        "slug": "plivo-voice",
        "probe": {
          "target": "https://api.plivo.com/v1",
          "method": "get",
          "lastAt": "2026-10-05T00:25:48.261627977Z",
          "lastOk": true,
          "lastStatus": 404,
          "lastMs": 325,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 330,
          "p95ms24h": 392,
          "samples24h": 272,
          "samples30d": 1107,
          "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": 5,
              "ok": 5
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.plivo.com",
          "indicator": "none",
          "summary": "All Systems Operational",
          "checkedAt": "2026-10-05T00:22:57.825348464Z"
        },
        "versions": [
          {
            "registry": "github",
            "name": "plivo/plivo-node",
            "version": "v4.79.0",
            "released": "2026-07-28",
            "seenAt": "2026-10-04T16:37:02.932876885Z"
          },
          {
            "registry": "npm",
            "name": "plivo",
            "version": "4.79.0",
            "seenAt": "2026-10-04T16:37:02.343552611Z"
          },
          {
            "registry": "pypi",
            "name": "plivo",
            "version": "4.63.0",
            "released": "2026-09-25",
            "seenAt": "2026-10-04T16:37:02.742133321Z"
          }
        ],
        "githubStars": 102,
        "npmWeekly": 54280,
        "pypiWeekly": 76309,
        "securityTxt": {
          "url": "https://plivo.com/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-10-04T15:15:48.932052901Z"
        },
        "llmsTxt": {
          "url": "https://www.plivo.com/docs/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-10-04T15:18:08.052494644Z"
        },
        "domain": {
          "domain": "plivo.com",
          "registered": "2011-04-17",
          "source": "https://rdap.verisign.com/com/v1/domain/plivo.com",
          "checkedAt": "2026-10-04T13:07:46.742269573Z"
        },
        "pages": [
          {
            "url": "https://www.plivo.com/changelog/",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-10-04T15:51:43.585881332Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "1fc13e7b957e"
          },
          {
            "url": "https://www.plivo.com/voice/pricing/us/",
            "kind": "pricing",
            "status": 200,
            "checkedAt": "2026-10-04T15:51:51.724997892Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "d0eca0fa3c87"
          },
          {
            "url": "https://www.plivo.com/legal/privacy/",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-10-04T15:51:46.52507636Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "7cd64079a8cf"
          },
          {
            "url": "https://www.plivo.com/legal/tos/",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-10-04T15:51:47.691771662Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "eaee9886500f"
          }
        ],
        "updatedAt": "2026-10-05T00:25:48.261627977Z"
      }
    },
    "b": {
      "slug": "signalwire-voice",
      "name": "SignalWire Voice API",
      "vendor": "SignalWire",
      "vendorUrl": "https://signalwire.com",
      "kind": "http-api",
      "category": "voice-calling",
      "summary": "Programmable calling API from the team behind FreeSWITCH.",
      "url": "https://www.anchorterminal.com/tools/signalwire-voice",
      "markdownUrl": "https://www.anchorterminal.com/tools/signalwire-voice.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/signalwire-voice.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/signalwire-voice.json",
      "repo": "https://github.com/signalwire/signalwire-python",
      "license": "MIT",
      "transports": [
        "http"
      ],
      "packages": [
        {
          "registry": "pypi",
          "name": "signalwire-sdk"
        },
        {
          "registry": "npm",
          "name": "@signalwire/sdk"
        },
        {
          "registry": "pypi",
          "name": "signalwire"
        }
      ],
      "auth": "api-key",
      "authNotes": "HTTP Basic auth with the Project ID and an API token, scoped per product (the Voice scope for calls). Each account has its own Space subdomain, so the host differs per customer. New tokens start with swapi_ since September 2026.",
      "pricing": "usage",
      "pricingNotes": "Pay as you go. New accounts start in trial mode without a card, and adding a card with at least $5 of credit lifts the restrictions. US local inbound $0.0066 and outbound $0.008 a minute, toll-free inbound $0.0147 and outbound $0.0069, SIP or WebRTC legs $0.003. Local numbers $0.50 a month, toll-free $0.80. Recording $0.002 a minute, live transcription $0.065 a minute per direction, and the AI agent runtime $0.16 a minute including STT, LLM and standard TTS (https://www.signalwire.com/pricing/voice).",
      "priceSummary": "$0.50 / mo",
      "where": "local",
      "x402": {
        "level": "no",
        "evidence": "No x402 or stablecoin payment path in the voice docs, pricing or llms.txt (checked 2026-09-30).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": 8,
        "npmWeekly": 1531,
        "pypiWeekly": 1349,
        "asOf": "2026-09-30"
      },
      "docsUrl": "https://signalwire.com/docs/platform/voice",
      "llmsTxt": "https://signalwire.com/docs/llms.txt",
      "openapi": "https://signalwire.com/docs/openapi.json",
      "capabilities": [
        "voice.calls",
        "voice.numbers",
        "voice.streaming",
        "voice.sip",
        "voice.recording",
        "voice.transfer"
      ],
      "tags": [
        "hosted",
        "llms-txt",
        "openapi",
        "typescript",
        "python",
        "webhooks",
        "streaming"
      ],
      "lastRelease": "2026-09-30",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 67.3,
        "grade": "B",
        "agentReady": false,
        "rank": 144,
        "ranked": true,
        "rankOf": 452,
        "categoryRank": 3,
        "methodology": "0.3",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 68,
          "maintenance": 81,
          "payments": 40,
          "reliability": 53,
          "schema": 87,
          "security": 72,
          "transparency": 78
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-01"
        },
        "negative": 0,
        "verdict": "SWML documents, REST commands and a Relay WebSocket client for call control. Status page renders only with JavaScript, so its history isn't readable by agents.",
        "strengths": [
          "SWML documents, REST commands and a Relay WebSocket client for call control",
          "OpenAPI 3.1 spec and Markdown for every docs page",
          "SLA of 99.95 per cent monthly uptime on every account, plus ISO 27001, SOC 2 Type 2, a DPA and a disclosure policy",
          "Webhooks signed with HMAC in `x-signalwire-signature`, checked by the Python SDK on SWML and tool calls",
          "Six Python SDK releases between 25 August and 29 September 2026"
        ],
        "weaknesses": [
          "Status page renders only with JavaScript, so its history isn't readable by agents",
          "No published rate-limit numbers beyond the trial's 10 queued calls",
          "No idempotency key, and the safe-retry rules live in the Python SDK rather than the API docs",
          "Per-customer Space hostnames, so there is no single public API host",
          "No security.txt or bug bounty"
        ],
        "agentNotes": [
          "Send dial with a url pointing at a SWML document, then use calling.* commands on the returned call ID",
          "Don't retry a dial on a 5xx. Retry only on 429 or 503, after Retry-After, or you may place the call twice",
          "Use your own Space subdomain as the host, there is no shared API host",
          "Create a token with only the Voice scope for a calling agent",
          "Verify `x-signalwire-signature` with the Signing Key before acting on a webhook"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 2,
        "avgRating": 3.5,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "B",
            "methodology": "0.3",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 67.3
          }
        ],
        "editorialScores": {
          "ergonomics": 68,
          "maintenance": 81,
          "payments": 40,
          "reliability": 53,
          "schema": 87,
          "security": 72,
          "transparency": 65
        },
        "provenanceScore": 90
      },
      "connect": {
        "http": "curl -X POST \"https://$SIGNALWIRE_SPACE.signalwire.com/api/calling/calls\" -u \"$SIGNALWIRE_PROJECT_ID:$SIGNALWIRE_API_TOKEN\" \\\n  -H \"Content-Type: application/json\" -d '{\"command\":\"dial\",\"params\":{\"from\":\"+15551234567\",\"to\":\"+15557654321\",\"url\":\"https://example.com/swml\"}}'"
      },
      "letme": {
        "capability": "https://letme.dev/voice.calls",
        "tool": "https://letme.dev/signalwire-voice"
      },
      "area": "voice",
      "unitPrices": [
        {
          "item": "US outbound, local",
          "unit": "call-minute",
          "usd": 0.008,
          "note": "outbound to US local numbers"
        },
        {
          "item": "US inbound, local number",
          "unit": "call-minute",
          "usd": 0.0066,
          "note": "inbound on a US local number"
        },
        {
          "item": "US outbound, toll-free",
          "unit": "call-minute",
          "usd": 0.0069,
          "note": "outbound to US toll-free numbers"
        },
        {
          "item": "US inbound, toll-free number",
          "unit": "call-minute",
          "usd": 0.0147,
          "note": "inbound on a US toll-free number"
        },
        {
          "item": "SIP or WebRTC leg",
          "unit": "call-minute",
          "usd": 0.003,
          "note": "inbound or outbound"
        },
        {
          "item": "AI agent runtime",
          "unit": "call-minute",
          "usd": 0.16,
          "note": "platform fee on top of call minutes, includes STT, LLM and standard TTS"
        },
        {
          "item": "US local number",
          "unit": "month",
          "usd": 0.5,
          "note": "per number"
        },
        {
          "item": "US toll-free number",
          "unit": "month",
          "usd": 0.8,
          "note": "per number"
        }
      ],
      "provenance": {
        "legalEntity": "SignalWire, Inc.",
        "domain": "signalwire.com",
        "domainRegistered": "2016-01-21",
        "endpointOnVendorDomain": true,
        "terms": "https://info.signalwire.com/hubfs/PDFs/SignalWire-Cloud-Agreement.pdf",
        "privacy": "https://m.signalwire.com/policies?doc=privacy",
        "statusPage": "https://status.signalwire.com",
        "changelog": "https://signalwire.com/docs/platform/changelog",
        "securityTxt": "none",
        "checked": "2026-09-30",
        "notes": [
          "Legal entity from signalwire.com/legal. The status page redirects to a PagerDuty-hosted page.",
          "remoteUrl left empty because each account calls its own Space subdomain (\u003cspace\u003e.signalwire.com/api/calling/calls)."
        ],
        "score": 90
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/signalwire-voice.json",
      "live": {
        "slug": "signalwire-voice",
        "vendorStatus": {
          "page": "https://status.signalwire.com",
          "indicator": "unknown",
          "summary": "no machine-readable status found",
          "checkedAt": "2026-10-04T21:40:28.923320603Z"
        },
        "versions": [
          {
            "registry": "github",
            "name": "signalwire/signalwire-python",
            "version": "v3.5.1",
            "released": "2026-09-29",
            "seenAt": "2026-10-04T16:39:55.315839064Z"
          },
          {
            "registry": "npm",
            "name": "@signalwire/sdk",
            "version": "3.5.0",
            "seenAt": "2026-10-04T16:39:53.193390994Z"
          },
          {
            "registry": "pypi",
            "name": "signalwire",
            "version": "2.1.1",
            "released": "2025-02-04",
            "seenAt": "2026-10-04T16:39:55.23247842Z"
          },
          {
            "registry": "pypi",
            "name": "signalwire-sdk",
            "version": "3.5.1",
            "released": "2026-09-29",
            "seenAt": "2026-10-04T16:39:53.002324781Z"
          }
        ],
        "githubStars": 8,
        "npmWeekly": 2180,
        "pypiWeekly": 873,
        "securityTxt": {
          "url": "https://signalwire.com/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-10-04T15:15:52.668431076Z"
        },
        "llmsTxt": {
          "url": "https://signalwire.com/docs/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-10-04T15:18:14.357836072Z"
        },
        "domain": {
          "domain": "signalwire.com",
          "registered": "2016-01-21",
          "source": "https://rdap.verisign.com/com/v1/domain/signalwire.com",
          "checkedAt": "2026-10-04T13:04:21.502174122Z"
        },
        "pages": [
          {
            "url": "https://signalwire.com/docs/platform/changelog",
            "kind": "deprecations",
            "status": 304,
            "checkedAt": "2026-10-04T15:47:48.382944869Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "da8a160eb045"
          },
          {
            "url": "https://www.signalwire.com/pricing/voice",
            "kind": "pricing",
            "status": 304,
            "checkedAt": "2026-10-04T15:52:14.172315609Z",
            "changedAt": "2026-10-03T15:40:04.301482046Z",
            "fingerprint": "40b5008528b4"
          },
          {
            "url": "https://m.signalwire.com/policies?doc=privacy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-10-04T15:45:46.511500727Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "e3b0c44298fc"
          }
        ],
        "updatedAt": "2026-10-04T21:40:28.923320603Z"
      }
    },
    "summary": "SignalWire Voice API has a score of 67.3 (B) against Plivo Voice API's 60.4 (C). Both do voice calls. The largest gap is schema \u0026 documentation, 28 points."
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/plivo-voice-vs-signalwire-voice",
    "json": "https://www.anchorterminal.com/compare/plivo-voice-vs-signalwire-voice.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/plivo-voice-vs-signalwire-voice.md",
    "slim": "https://www.anchorterminal.com/compare/plivo-voice-vs-signalwire-voice.min.md"
  },
  "markdown": "SignalWire Voice API has a score of 67.3 (B) against Plivo Voice API's 60.4 (C). Both do voice calls. The largest gap is schema \u0026 documentation, 28 points.\n\n- Plivo Voice API: grade C, 60.4/100, rank #248 of 452. Markdown https://www.anchorterminal.com/tools/plivo-voice.md · JSON https://www.anchorterminal.com/api/v1/tools/plivo-voice.json\n- SignalWire Voice API: grade B, 67.3/100, rank #144 of 452. Markdown https://www.anchorterminal.com/tools/signalwire-voice.md · JSON https://www.anchorterminal.com/api/v1/tools/signalwire-voice.json\n\n## Which one, for what\n\nPick Plivo Voice API for reliability (+15).\n\nPick SignalWire Voice API for schema \u0026 documentation (+28), security \u0026 auth (+27), transparency \u0026 trust (+8).\n\n## Score by category\n\n| Category | Weight | Plivo Voice API | SignalWire Voice API | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 68 | 53 | Plivo Voice API +15 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 59 | 87 | SignalWire Voice API +28 |\n| Agent ergonomics | 13% (16.2 this run) | 70 | 68 | Plivo Voice API +2 |\n| Security \u0026 auth | 14% (17.5 this run) | 45 | 72 | SignalWire Voice API +27 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 40 | 40 | even |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 78 | 81 | SignalWire Voice API +3 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 70 | 78 | SignalWire Voice API +8 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **60.4 · C** | **67.3 · B** | |\n\n## Facts side by side\n\n| Fact | Plivo Voice API | SignalWire Voice API |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | Plivo | SignalWire |\n| Hosted endpoint | `https://api.plivo.com/v1` | no (local only) |\n| Transports | HTTP | HTTP |\n| Auth | API key | API key |\n| Pricing | Pay per use | Pay per use |\n| x402 | no | no |\n| Licence | MIT | MIT |\n| Tools exposed | none | none |\n| Context cost (tools/list) | n/a | n/a |\n| p95 latency | not measured yet | not measured yet |\n| Availability (30d) | not measured yet | not measured yet |\n| Read-only variant documented | no | no |\n| llms.txt | yes | yes |\n| MCP registry | not listed | not listed |\n| Last release | 2026-09-25 | 2026-09-30 |\n| Popularity | 102 stars, 51k npm/wk, 69k PyPI/wk | 8 stars, 1.5k npm/wk, 1.3k PyPI/wk |\n| Agent reviews | 3.5/5 (2) | 3.5/5 (2) |\n\n## Verdicts\n\n**Plivo Voice API.** US outbound at $0.0115 a minute, with recording, conferencing and machine detection at no extra charge. 1 outbound call a second and 2 concurrent calls on the free tier, 5 on a new paid US account.\n\n**SignalWire Voice API.** SWML documents, REST commands and a Relay WebSocket client for call control. Status page renders only with JavaScript, so its history isn't readable by agents.\n\n## Before you call either\n\n### Plivo Voice API\n\n1. Point the answer URL at XML with a Stream element and bidirectional set to true for a live voice agent\n2. Check concurrency before dialling out in bulk. Above it calls are rejected with hangup cause 5030, above CPS they queue\n3. Don't rely on the status callback alone to learn a call ended. Poll the call if the webhook doesn't arrive\n4. Validate webhook signatures before acting on call events\n\n### SignalWire Voice API\n\n1. Send dial with a url pointing at a SWML document, then use calling.* commands on the returned call ID\n2. Don't retry a dial on a 5xx. Retry only on 429 or 503, after Retry-After, or you may place the call twice\n3. Use your own Space subdomain as the host, there is no shared API host\n4. Create a token with only the Voice scope for a calling agent\n5. Verify `x-signalwire-signature` with the Signing Key before acting on a webhook\n\n## Other comparisons with Plivo Voice API or SignalWire Voice API\n\n- [Bandwidth Voice API + MCP vs Plivo Voice API](https://www.anchorterminal.com/compare/bandwidth-voice-vs-plivo-voice.md)\n- [Bandwidth Voice API + MCP vs SignalWire Voice API](https://www.anchorterminal.com/compare/bandwidth-voice-vs-signalwire-voice.md)\n- [Exotel Voice API + MCP vs Plivo Voice API](https://www.anchorterminal.com/compare/exotel-voice-vs-plivo-voice.md)\n- [Exotel Voice API + MCP vs SignalWire Voice API](https://www.anchorterminal.com/compare/exotel-voice-vs-signalwire-voice.md)\n- [Infobip Calls API + MCP vs Plivo Voice API](https://www.anchorterminal.com/compare/infobip-calls-vs-plivo-voice.md)\n- [Infobip Calls API + MCP vs SignalWire Voice API](https://www.anchorterminal.com/compare/infobip-calls-vs-signalwire-voice.md)\n- [Plivo Voice API vs Sinch Voice API + MCP](https://www.anchorterminal.com/compare/plivo-voice-vs-sinch-voice.md)\n- [Plivo Voice API vs Telnyx Voice API + MCP](https://www.anchorterminal.com/compare/plivo-voice-vs-telnyx-voice.md)\n- [Plivo Voice API vs Twilio Programmable Voice API + MCP](https://www.anchorterminal.com/compare/plivo-voice-vs-twilio-voice.md)\n- [Plivo Voice API vs Vonage Voice API + MCP](https://www.anchorterminal.com/compare/plivo-voice-vs-vonage-voice.md)\n- [Plivo Voice API vs Voximplant](https://www.anchorterminal.com/compare/plivo-voice-vs-voximplant.md)\n- [SignalWire Voice API vs Sinch Voice API + MCP](https://www.anchorterminal.com/compare/signalwire-voice-vs-sinch-voice.md)\n- [SignalWire Voice API vs Telnyx Voice API + MCP](https://www.anchorterminal.com/compare/signalwire-voice-vs-telnyx-voice.md)\n- [SignalWire Voice API vs Twilio Programmable Voice API + MCP](https://www.anchorterminal.com/compare/signalwire-voice-vs-twilio-voice.md)\n- [SignalWire Voice API vs Vonage Voice API + MCP](https://www.anchorterminal.com/compare/signalwire-voice-vs-vonage-voice.md)\n- [SignalWire Voice API vs Voximplant](https://www.anchorterminal.com/compare/signalwire-voice-vs-voximplant.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-05",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.3",
    "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": "Plivo Voice API vs SignalWire Voice API",
        "url": ""
      }
    ],
    "description": "SignalWire Voice API has a score of 67.3 (B) against Plivo Voice API's 60.4 (C). Both do voice calls. The largest gap is schema \u0026 documentation, 28 points. Category scores, facts, verdicts and agent notes side by side.",
    "facts": [
      "Plivo Voice API C 60.4",
      "SignalWire Voice API B 67.3",
      "scores"
    ],
    "h1": "Plivo Voice API vs SignalWire Voice API",
    "image": "https://www.anchorterminal.com/assets/og/compare-plivo-voice-vs-signalwire-voice.png",
    "path": "/compare/plivo-voice-vs-signalwire-voice",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Plivo Voice API vs SignalWire Voice API for AI agents",
    "toc": null,
    "updated": "2026-10-05",
    "url": "https://www.anchorterminal.com/compare/plivo-voice-vs-signalwire-voice"
  },
  "tokens": {
    "markdown": 1650,
    "slim": 330
  },
  "version": 1
}
