{
  "data": {
    "a": {
      "slug": "didlogic",
      "name": "didlogic Voice API",
      "vendor": "DID Logic PTE. LTD.",
      "vendorUrl": "https://didlogic.com",
      "kind": "http-api",
      "category": "voice-calling",
      "summary": "didlogic sells SIP trunking, outbound voice and phone numbers in 140 or more countries, with a REST API for numbers, SIP accounts, call records, recordings, SMS and click-to-call, WebSocket calls for voice AI and a remote MCP server.",
      "url": "https://www.anchorterminal.com/tools/didlogic",
      "markdownUrl": "https://www.anchorterminal.com/tools/didlogic.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/didlogic.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/didlogic.json",
      "dns": "didlogic.grade.anchorterminal.com",
      "license": "Proprietary service under the didlogic Terms of Service",
      "transports": [
        "http",
        "websocket",
        "streamable-http"
      ],
      "remoteUrl": "https://mcp.didlogic.com/mcp",
      "packages": [],
      "auth": "mixed",
      "authNotes": "Bearer API keys generated and revoked in the portal under API \u0026 Webhooks since July 2026, each with full access to the account. The MCP server signs in by OAuth and creates a separate key per sign-in, or takes a key in a header. The get-started page still says to ask an account manager for a key.",
      "pricing": "usage",
      "pricingNotes": "Prepaid pay as you go. Outbound calls by destination, for example UK landlines from $0.05 a minute and UK mobiles from $0.0175. Numbers from $2 a month for local and $3 for mobile, plus inbound from $0.01 a minute. Free test credit with no card. The MCP server needs the Plus plan (checked 2026-11-06).",
      "priceSummary": "$2 / mo",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the docs, OpenAPI file or pricing pages (checked 2026-11-06).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": null,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-11-06"
      },
      "docsUrl": "https://docs.didlogic.com/docs/api/get-started/",
      "llmsTxt": "https://docs.didlogic.com/llms.txt",
      "openapi": "https://docs.didlogic.com/public_api.openapi.yaml",
      "capabilities": [
        "voice.numbers",
        "voice.sip",
        "voice.calls",
        "voice.streaming",
        "voice.recording",
        "messaging.sms"
      ],
      "tags": [
        "hosted",
        "official",
        "closed-source",
        "usage",
        "prepaid",
        "no-card",
        "openapi",
        "llms-txt",
        "mcp",
        "remote-mcp",
        "oauth",
        "webhooks",
        "websocket",
        "sip",
        "phone-numbers",
        "iso27001"
      ],
      "lastRelease": "2026-09-30",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 49.8,
        "grade": "D",
        "agentReady": false,
        "rank": 1074,
        "ranked": true,
        "rankOf": 1486,
        "categoryRank": 12,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 57,
          "maintenance": 38,
          "payments": 38,
          "reliability": 26,
          "schema": 87,
          "security": 46,
          "transparency": 58
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-11-06"
        },
        "negative": 0,
        "verdict": "didlogic pairs a public OpenAPI file with 53 described operations, published per-minute and number prices and free test credit with WebSocket calls for voice AI and a remote MCP server. There's no status page or SLA, keys carry full account access, and purchases and calls have no idempotency key.",
        "bestFor": "Teams that need numbers and SIP termination in many countries and a WebSocket bridge to a voice agent.",
        "strengths": [
          "Public OpenAPI 3.0.3 file with 53 described operations and llms.txt",
          "Per-minute call rates and number prices published by country, with free test credit and no card",
          "WebSocket calls and click-to-call for voice AI since September 2026",
          "Remote MCP server with OAuth sign-in",
          "ISO/IEC 27001:2022 certificate with a registration number"
        ],
        "weaknesses": [
          "No status page or incident history found",
          "No SLA in the Terms, despite a 99.999 per cent uptime claim on the site",
          "API keys have full account access, with no scopes or read-only keys",
          "No idempotency keys on number purchases or click-to-call",
          "No retention periods in the privacy policy"
        ],
        "agentNotes": [
          "Create the key under API \u0026 Webhooks in the portal; ignore the older get-started line about asking an account manager",
          "Confirm with the user before `POST /api/v2/numbers/purchase` or click-to-call; both spend the prepaid balance with no idempotency key",
          "For WebSocket calls, set `a_type: stream` and implement didlogic's message protocol on your endpoint",
          "Back off on 429 from recording endpoints using Retry-After",
          "Expect the MCP server only on the Plus plan"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "D",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 49.8
          }
        ],
        "editorialScores": {
          "ergonomics": 57,
          "maintenance": 38,
          "payments": 38,
          "reliability": 26,
          "schema": 87,
          "security": 46,
          "transparency": 37
        },
        "provenanceScore": 79,
        "checked": {
          "categories": {
            "ergonomics": "2026-11-06",
            "maintenance": "2026-11-06",
            "payments": "2026-11-06",
            "reliability": "2026-11-06",
            "schema": "2026-11-06",
            "security": "2026-11-06",
            "transparency": "2026-11-06"
          },
          "last": "2026-11-06",
          "oldest": "2026-11-06",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "http": "curl -X GET \"https://api.didlogic.com/v2/numbers\" \\\n  -H \"Authorization: Bearer YOUR_TOKEN\" \\\n  -H \"Content-Type: application/json\"",
        "claudeCode": "claude mcp add --transport http didlogic https://mcp.didlogic.com/mcp",
        "config": {
          "mcpServers": {
            "didlogic": {
              "url": "https://mcp.didlogic.com/mcp"
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/voice.numbers",
        "tool": "https://letme.dev/didlogic"
      },
      "area": "voice",
      "unitPrices": [
        {
          "item": "Outbound call, UK landline",
          "unit": "call-minute",
          "usd": 0.05,
          "note": "from, indicative standard-account rate"
        },
        {
          "item": "Outbound call, UK mobile",
          "unit": "call-minute",
          "usd": 0.0175,
          "note": "from, Vodafone mobile route"
        },
        {
          "item": "Local number",
          "unit": "month",
          "usd": 2,
          "note": "from, plus inbound from $0.01 a minute"
        },
        {
          "item": "Mobile number",
          "unit": "month",
          "usd": 3,
          "note": "from, plus inbound from $0.01 a minute"
        }
      ],
      "provenance": {
        "legalEntity": "DID Logic PTE. LTD.",
        "domain": "didlogic.com",
        "domainRegistered": "2007-10-24",
        "endpointOnVendorDomain": true,
        "terms": "https://didlogic.com/terms-and-conditions/",
        "privacy": "https://didlogic.com/privacy-and-security/",
        "statusPage": "",
        "changelog": "https://docs.didlogic.com/docs/release-notes",
        "securityTxt": "none",
        "checked": "2026-11-06",
        "notes": [
          "The Terms of Service name DID Logic PTE. LTD., a Singapore company at 15 Scotts Road, with ICDR arbitration. No clause on automated access to the website was found; automated list dialling on the services is barred.",
          "didlogic.com/robots.txt allows all agents except /wp-admin/. The docs site serves llms.txt.",
          "The network status page linked from the footer is a marketing page with no components or incident history, so no status page is recorded.",
          "/.well-known/security.txt returns 404. RDAP gives didlogic.com a registration date of 24 October 2007."
        ],
        "score": 79
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/didlogic.json",
      "live": {
        "slug": "didlogic",
        "probe": {
          "target": "https://mcp.didlogic.com/mcp",
          "method": "get",
          "lastAt": "2026-11-07T18:20:20.921736Z",
          "lastOk": true,
          "lastStatus": 401,
          "lastMs": 185,
          "lastNote": "asks for credentials",
          "authRequired": true,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 98,
          "p95ms24h": 183,
          "samples24h": 200,
          "samples30d": 200,
          "days": [
            {
              "date": "2026-11-06",
              "probes": 13,
              "ok": 13
            },
            {
              "date": "2026-11-07",
              "probes": 187,
              "ok": 187
            }
          ]
        },
        "securityTxt": {
          "url": "https://didlogic.com/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-11-07T16:01:26.525637047Z"
        },
        "llmsTxt": {
          "url": "https://docs.didlogic.com/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-11-07T15:32:17.001857789Z"
        },
        "pages": [
          {
            "url": "https://docs.didlogic.com/docs/release-notes",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-11-07T14:06:09.15338969Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "ac3b4a97e7ff"
          },
          {
            "url": "https://didlogic.com/privacy-and-security/",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-11-07T14:04:46.42500505Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "c012e842c316"
          },
          {
            "url": "https://didlogic.com/terms-and-conditions/",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-11-07T14:04:48.65331055Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "730ca804743f"
          }
        ],
        "mcpTools": {
          "url": "https://mcp.didlogic.com/mcp",
          "checkedAt": "2026-11-07T01:43:42.469443076Z",
          "status": "auth",
          "note": "asks for credentials before listing its tools",
          "changedAt": "2026-11-07T01:43:42.469443076Z"
        },
        "updatedAt": "2026-11-07T18:20:20.921736Z"
      }
    },
    "answer": "SignalWire Voice API scores 66.9 (B) on agent readiness against didlogic Voice API's 49.8 (D), and leads in 6 of 7 scored categories.",
    "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",
      "dns": "signalwire-voice.grade.anchorterminal.com",
      "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://signalwire.com/pricing, checked 2026-11-01).",
      "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-10-25",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 66.9,
        "grade": "B",
        "agentReady": false,
        "rank": 349,
        "ranked": true,
        "rankOf": 1486,
        "categoryRank": 5,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 68,
          "maintenance": 81,
          "payments": 40,
          "reliability": 53,
          "schema": 87,
          "security": 72,
          "transparency": 74
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-11-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.",
        "bestFor": "Builders who want call logic in documents (SWML) or a hosted AI agent verb, and for teams moving off Twilio's API shape.",
        "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",
          "13 Python SDK releases between 25 August and 25 October 2026, with no breaking changes listed"
        ],
        "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 error-codes page calls any 5xx safe to retry while the Python SDK won't replay a dial on one",
          "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, whatever the error-codes page says. 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.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 66.9
          }
        ],
        "editorialScores": {
          "ergonomics": 68,
          "maintenance": 81,
          "payments": 40,
          "reliability": 53,
          "schema": 87,
          "security": 72,
          "transparency": 65
        },
        "provenanceScore": 82,
        "checked": {
          "categories": {
            "ergonomics": "2026-11-01",
            "maintenance": "2026-11-01",
            "payments": "2026-11-01",
            "reliability": "2026-11-01",
            "schema": "2026-11-01",
            "security": "2026-11-01",
            "transparency": "2026-11-01"
          },
          "last": "2026-11-01",
          "lastMoved": "2026-10-30",
          "oldest": "2026-11-01",
          "stale": false,
          "staleAfterDays": 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-11-01",
        "notes": [
          "Legal entity from signalwire.com/legal. The status page redirects to a PagerDuty-hosted page, whose robots.txt path answers with the status page itself (no rules).",
          "remoteUrl left empty because each account calls its own Space subdomain (\u003cspace\u003e.signalwire.com/api/calling/calls).",
          "signalwire.com/.well-known/security.txt answered 404 on 1 November 2026."
        ],
        "score": 82
      },
      "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-11-07T04:48:45.16133945Z"
        },
        "versions": [
          {
            "registry": "github",
            "name": "signalwire/signalwire-python",
            "version": "v3.7.5",
            "released": "2026-10-25",
            "seenAt": "2026-11-07T00:05:53.833995699Z"
          },
          {
            "registry": "npm",
            "name": "@signalwire/sdk",
            "version": "3.7.1",
            "seenAt": "2026-11-07T00:05:51.943766221Z"
          },
          {
            "registry": "pypi",
            "name": "signalwire",
            "version": "2.1.1",
            "released": "2025-02-04",
            "seenAt": "2026-11-07T00:05:52.767719791Z"
          },
          {
            "registry": "pypi",
            "name": "signalwire-sdk",
            "version": "3.7.5",
            "released": "2026-10-25",
            "seenAt": "2026-11-07T00:05:51.75114002Z"
          }
        ],
        "githubStars": 10,
        "npmWeekly": 2595,
        "pypiWeekly": 1997,
        "securityTxt": {
          "url": "https://signalwire.com/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-11-07T16:00:36.515403782Z"
        },
        "llmsTxt": {
          "url": "https://signalwire.com/docs/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-11-07T15:33:55.480316869Z"
        },
        "domain": {
          "domain": "signalwire.com",
          "registered": "2016-01-21",
          "source": "https://rdap.verisign.com/com/v1/domain/signalwire.com",
          "checkedAt": "2026-11-01T14:24:09.57690577Z"
        },
        "pages": [
          {
            "url": "https://signalwire.com/docs/platform/changelog",
            "kind": "deprecations",
            "status": 200,
            "checkedAt": "2026-11-07T14:19:53.475195622Z",
            "changedAt": "2026-10-28T04:43:23.729012792Z",
            "fingerprint": "ebbcaccedec7"
          },
          {
            "url": "https://signalwire.com/pricing",
            "kind": "pricing",
            "status": 200,
            "checkedAt": "2026-11-07T14:19:59.722622394Z",
            "changedAt": "2026-11-07T14:19:59.722622394Z",
            "fingerprint": "6ace2e21bed1"
          },
          {
            "url": "https://www.signalwire.com/pricing/voice",
            "kind": "pricing",
            "status": 304,
            "checkedAt": "2026-11-02T07:37:50.369080839Z",
            "changedAt": "2026-10-29T05:27:47.907909696Z",
            "fingerprint": "1afa78b5c977"
          },
          {
            "url": "https://m.signalwire.com/policies?doc=privacy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-11-07T14:13:39.850005975Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "e3b0c44298fc"
          }
        ],
        "github": {
          "repo": "signalwire/signalwire-python",
          "checkedAt": "2026-11-02T09:25:46.146775052Z",
          "stars": 10,
          "archived": false,
          "issuesEnabled": true,
          "pushedAt": "2026-10-26T18:37:51Z",
          "openIssues": 53,
          "openPRs": 7,
          "issuesOpened90d": 53,
          "issuesClosed90d": 1,
          "prsMerged90d": 32,
          "ci": {
            "branch": "main",
            "runs": 50,
            "success": 50,
            "failure": 0,
            "other": 0,
            "latest": "success",
            "latestAt": "2026-10-25T16:47:25Z"
          },
          "replies": {
            "sampled": 25,
            "unanswered": 25
          }
        },
        "updatedAt": "2026-11-07T16:00:36.515403782Z"
      }
    },
    "edges": [
      {
        "by": 43,
        "category": "maintenance",
        "leads": "signalwire-voice",
        "name": "Maintenance \u0026 community",
        "reasons": {
          "a": "Release notes dated by month, the newest September 2026 (click-to-call API and WebSocket calls), about 37 to 67 days before this check (20). Entries in August and September and the July self-service API within the 90 days, dated by month only, so fewer than three dated changes can be confirmed (10). Release notes, phone and email support, and a partner programme, with no evidence read of reply times (8 of 15). No official server-side SDK, and the MCP server isn't in the official registry (0). No package to assess (0). 20+10+8+0+0 = 38.",
          "b": "signalwire-python 3.7.5 tagged on 25 October 2026, after 3.6.0 (5 October), 3.7.0 (12 October) and 3.7.1 to 3.7.4, and signalwire-js 4.0.0-rc.5 on 14 October. Changelog entries on 19 and 22 October (30). 13 Python SDK releases from 3.4.0 on 25 August to 3.7.5, plus JS release candidates, and dated changelog entries most weeks (20). Closed service with an active changelog and community support. We didn't sample issue replies (8 of 15). Official Python and Node SDKs current (15). The Python SDK runs test, multi-OS, nightly and docs-audit workflows and Renovate for dependencies. We couldn't see run results (8 of 10). The SDK changelog since 3.5.1 has no removals or breaking changes. 3.7.0 changes how new search indexes embed text and keeps existing indexes working, with an option for the old behaviour. 30 + 20 + 8 + 15 + 8 = 81."
        },
        "scores": {
          "a": 38,
          "b": 81
        }
      },
      {
        "by": 27,
        "category": "reliability",
        "leads": "signalwire-voice",
        "name": "Reliability",
        "reasons": {
          "a": "Graded on the hosted API and MCP server with the hosted lines. The footer's network status page carries no components or incidents, and no other status page was found (0). No readable incident history (5). Rate limits are given only for recording lookups (one a second, one lookup a minute) (5 of 15). Those endpoints document 429 with Retry-After and X-RateLimit headers, with no backoff guidance or idempotency elsewhere, including number purchases and click-to-call (6 of 15). The site claims 99.999 per cent voice uptime, but no SLA was found in the Terms (0). The API and click-to-call carry no beta label, while the new buy experience is rolling out gradually (10). 0+5+5+6+0+10 = 26.",
          "b": "status.signalwire.com redirects to a PagerDuty-hosted page. Re-read on 1 November, its page data names ten services (APIs, SIP Connectivity, WebRTC Connectivity, Video and Conferencing, Website, External Carrier Network, SMS, MMS, AI, Support and Documentation) and says it was created on 23 December 2025, but incidents load only through the page's script and we found no feed, so component history isn't readable (10 of 20). No readable incident history (5). The 1 October note cited a third-party status aggregator for a 14 August degradation; that isn't a first-hand source and isn't used. Trial mode caps queued calls and messages at 10 each, and Space limits are raised on request. The error-codes page, re-read on 1 November, names a `rate_limit_exceeded` code but no general per-second figures (8 of 15). The error-codes page says to back off and retry on 429, and now also calls every 5xx \"Safe to retry with backoff\", which for a dial can place a second call. The official Python SDK honours Retry-After with exponential backoff and retries POSTs only on 429 or 503, never on other 5xx, so a dial isn't replayed. No idempotency key (10 of 15). The Service Level Agreement (updated 1 January 2026) commits to 99.95 per cent monthly uptime for SignalWire Cloud APIs on every account, with a 10 per cent credit claimed by ticket within 30 days, per the 2 October read (10). The Calling API is generally available (10). 10 + 5 + 8 + 10 + 10 + 10 = 53."
        },
        "scores": {
          "a": 26,
          "b": 53
        }
      },
      {
        "by": 26,
        "category": "security",
        "leads": "signalwire-voice",
        "name": "Security \u0026 auth",
        "reasons": {
          "a": "Revocable bearer keys created in the portal, each with full account access by the vendor's own warning. MCP OAuth mints a separate key per sign-in (18 of 30). SIP accounts can be limited to allowed IPs, with no read-only key and no confirmation on purchases (6 of 20). Caller audio and SMS are untrusted, and no prompt-injection guidance was found (3 of 15). Call detail records, transaction history and risk-check logs through the API, with no audit log of API calls (7 of 15). ISO/IEC 27001:2022 and ISO 9001 certificates from TÜV AUSTRIA Hellas with registration numbers. No security.txt or bug bounty found (12 of 20). 18+6+3+7+12 = 46.",
          "b": "Basic auth with a Project ID and an API token, or short-lived Bearer tokens. Tokens are scoped when created, with the Voice scope for calls, new tokens use a swapi_ format since September 2026, and since 8 October a REST endpoint regenerates a token's value in place and every token response carries `last_used_at` and `revoked_at` (30). Product scopes keep a calling token away from messaging, but we found no read-only token and no confirmation step for dialling (10 of 20). Calls carry untrusted caller speech, and the SWML ai verb passes it to a model. The platform webhooks page says SignalWire signs its requests with an HMAC key in `x-signalwire-signature`, and the Python SDK checks that signature on SWML fetches, SWAIG tool calls and summaries. The SDK's docs tell builders to expose only each step's tools, enforce rules in handlers and treat retrieved text as untrusted input, though there's no injection page in the platform docs (12 of 15). Voice logs can be listed by API. We didn't find an account audit log (10 of 15). A vulnerability disclosure policy, an ISO 27001 certificate and a SOC 2 Type 2 attestation letter are linked from signalwire.com/legal, re-read on 1 November. signalwire.com/.well-known/security.txt answers 404, no bug bounty found, and OSV lists no advisories for signalwire-sdk, signalwire or @signalwire/sdk. The same reading as the Telnyx voice listing (10 of 20)."
        },
        "scores": {
          "a": 46,
          "b": 72
        }
      },
      {
        "by": 16,
        "category": "transparency",
        "leads": "signalwire-voice",
        "name": "Transparency \u0026 trust",
        "reasons": {
          "a": "Closed service with long, clear terms naming DID Logic PTE. LTD. in Singapore (15 of 30). The privacy policy commits to data minimisation and says call content isn't monitored except for requested recording, but gives no retention periods (12 of 30). No deprecation policy, though the docs explain backward-compatible identifier changes (5 of 20). Twelve points of presence are claimed, with no sub-processor list or data locations found (5 of 20). 15+12+5+5 = 37.",
          "b": "Closed service under the SignalWire Cloud Agreement (15). Privacy policy, a Data Processing Addendum and a cloud sub-processor list are published. We didn't find retention periods for call records or recordings (20 of 30). Dated deprecation notice for the token format, old tokens keep working (15 of 20). The sub-processor PDF names five cloud providers with countries (AWS in the US, Bahrain and South Africa, DigitalOcean in seven countries, Google in the US, Microsoft in four, Vultr in Australia), but service-specific sub-processors are listed without purposes or locations and the PDF carries no date (15 of 20)."
        },
        "scores": {
          "a": 58,
          "b": 74
        }
      },
      {
        "by": 11,
        "category": "ergonomics",
        "leads": "signalwire-voice",
        "name": "Agent ergonomics",
        "reasons": {
          "a": "Call records take filters and CSV export, and numbers search by country, region and city (18 of 25). Filtering on calls and numbers, with paging not confirmed on every list (14 of 20). One error envelope with field messages and 404 for unknown ids (14 of 20). No idempotency key on purchases or click-to-call. MCP annotations weren't readable without a sign-in (3 of 20). Few required fields, no official SDK beyond the browser Voice SDK (8 of 15). 18+14+14+3+8 = 57.",
          "b": "A paging guide covers page sizes on list endpoints, with no field selection (15 of 25). Voice logs can be listed and paged. We didn't confirm the full filter set (15 of 20). An error-codes page with a structured `errors` array (type, code, message, attribute, url) an agent can map to fixes, and command results arrive on status webhooks (15 of 20). No idempotency key. The Python SDK's documented retry policy keeps POSTs from being replayed after a 5xx (8 of 20). One POST endpoint takes every command, a dial needs from, to and a SWML url, and there are official Python and Node SDKs plus Twilio-compatible ones (15)."
        },
        "scores": {
          "a": 57,
          "b": 68
        }
      }
    ],
    "facts": [
      {
        "a": "HTTP API",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "DID Logic PTE. LTD.",
        "b": "SignalWire",
        "name": "Vendor"
      },
      {
        "a": "https://mcp.didlogic.com/mcp",
        "b": "no (local only)",
        "name": "Hosted endpoint"
      },
      {
        "a": "HTTP, websocket, Streamable HTTP",
        "b": "HTTP",
        "name": "Transports"
      },
      {
        "a": "OAuth or key",
        "b": "API key",
        "name": "Auth"
      },
      {
        "a": "Pay per use",
        "b": "Pay per use",
        "name": "Pricing"
      },
      {
        "a": "$2 per month (plan)",
        "b": "$0.50 per month (plan)",
        "name": "Price for phone numbers"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "Proprietary service under the didlogic Terms of Service",
        "b": "MIT",
        "name": "Licence"
      },
      {
        "a": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "2026-09-30",
        "b": "2026-10-25",
        "name": "Last release"
      },
      {
        "a": "no date given",
        "b": "not read yet",
        "name": "Terms last updated"
      },
      {
        "a": "no date given",
        "b": "couldn't be read",
        "name": "Privacy policy last updated"
      },
      {
        "a": "not found in the text",
        "b": "not read yet",
        "name": "Customer content may train models"
      },
      {
        "a": "not found in the text",
        "b": "not read yet",
        "name": "Terms restrict automated access"
      },
      {
        "a": "not found in the text",
        "b": "not read yet",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "not found in the text",
        "b": "not read yet",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "yes",
        "b": "not read yet",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "none",
        "b": "8 stars, 1.5k npm/wk, 1.3k PyPI/wk",
        "name": "Popularity"
      },
      {
        "a": "none",
        "b": "3.5/5 (2)",
        "name": "Agent reviews"
      }
    ],
    "faq": [
      {
        "answer": "SignalWire Voice API scores 66.9 (B) on agent readiness against didlogic Voice API's 49.8 (D), and leads in 6 of 7 scored categories.",
        "question": "Which is better for AI agents, didlogic Voice API or SignalWire Voice API?"
      },
      {
        "answer": "SignalWire Voice API, at $0.50 per month (plan) against $2 per month (plan) for didlogic Voice API. These are the vendors' published prices for the job.",
        "question": "Which is cheaper for phone numbers, didlogic Voice API or SignalWire Voice API?"
      },
      {
        "answer": "didlogic Voice API takes an API key or an OAuth sign-in. SignalWire Voice API needs an API key.",
        "question": "Do didlogic Voice API and SignalWire Voice API need an API key?"
      },
      {
        "answer": "didlogic Voice API has a hosted endpoint at https://mcp.didlogic.com/mcp. No hosted endpoint is listed for SignalWire Voice API.",
        "question": "Can an agent call didlogic Voice API and SignalWire Voice API without installing anything?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": null,
        "also": [
          "A hosted endpoint, with nothing to install",
          "Free to start without a card"
        ],
        "goodFor": "Teams that need numbers and SIP termination in many countries and a WebSocket bridge to a voice agent.",
        "slug": "didlogic",
        "watchFor": "No status page or incident history found"
      },
      {
        "aheadOn": [
          "Reliability, 53 against 26",
          "Agent ergonomics, 68 against 57",
          "Security \u0026 auth, 72 against 46",
          "Maintenance \u0026 community, 81 against 38",
          "Transparency \u0026 trust, 74 against 58"
        ],
        "also": [
          "Cheaper for phone numbers, $0.50 against $2 per month (plan)"
        ],
        "goodFor": "Builders who want call logic in documents (SWML) or a hosted AI agent verb, and for teams moving off Twilio's API shape.",
        "slug": "signalwire-voice",
        "watchFor": "Status page renders only with JavaScript, so its history isn't readable by agents"
      }
    ],
    "history": {
      "didlogic": null,
      "signalwire-voice": [
        {
          "causes": [
            "method"
          ],
          "date": "2026-10-30",
          "delta": -0.3,
          "from": 67.2,
          "fromGrade": "B",
          "to": 66.9,
          "toGrade": "B"
        },
        {
          "causes": [
            "method"
          ],
          "date": "2026-10-27",
          "delta": 0.1,
          "from": 67.1,
          "fromGrade": "B",
          "to": 67.2,
          "toGrade": "B"
        },
        {
          "causes": [
            "method"
          ],
          "date": "2026-10-08",
          "delta": -0.2,
          "from": 67.3,
          "fromGrade": "B",
          "to": 67.1,
          "toGrade": "B"
        }
      ]
    },
    "job": {
      "capability": "voice.numbers",
      "name": "Phone numbers"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/46elks-vs-didlogic.json",
        "title": "46elks Voice API vs didlogic Voice API",
        "url": "https://www.anchorterminal.com/compare/46elks-vs-didlogic"
      },
      {
        "json": "https://www.anchorterminal.com/compare/46elks-vs-signalwire-voice.json",
        "title": "46elks Voice API vs SignalWire Voice API",
        "url": "https://www.anchorterminal.com/compare/46elks-vs-signalwire-voice"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bandwidth-voice-vs-didlogic.json",
        "title": "Bandwidth Voice API + MCP vs didlogic Voice API",
        "url": "https://www.anchorterminal.com/compare/bandwidth-voice-vs-didlogic"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bandwidth-voice-vs-signalwire-voice.json",
        "title": "Bandwidth Voice API + MCP vs SignalWire Voice API",
        "url": "https://www.anchorterminal.com/compare/bandwidth-voice-vs-signalwire-voice"
      },
      {
        "json": "https://www.anchorterminal.com/compare/didlogic-vs-jambonz.json",
        "title": "didlogic Voice API vs jambonz",
        "url": "https://www.anchorterminal.com/compare/didlogic-vs-jambonz"
      },
      {
        "json": "https://www.anchorterminal.com/compare/exotel-voice-vs-signalwire-voice.json",
        "title": "Exotel Voice API + MCP vs SignalWire Voice API",
        "url": "https://www.anchorterminal.com/compare/exotel-voice-vs-signalwire-voice"
      },
      {
        "json": "https://www.anchorterminal.com/compare/infobip-calls-vs-signalwire-voice.json",
        "title": "Infobip Calls API + MCP vs SignalWire Voice API",
        "url": "https://www.anchorterminal.com/compare/infobip-calls-vs-signalwire-voice"
      },
      {
        "json": "https://www.anchorterminal.com/compare/jambonz-vs-signalwire-voice.json",
        "title": "jambonz vs SignalWire Voice API",
        "url": "https://www.anchorterminal.com/compare/jambonz-vs-signalwire-voice"
      },
      {
        "json": "https://www.anchorterminal.com/compare/livekit-telephony-vs-signalwire-voice.json",
        "title": "LiveKit Telephony vs SignalWire Voice API",
        "url": "https://www.anchorterminal.com/compare/livekit-telephony-vs-signalwire-voice"
      },
      {
        "json": "https://www.anchorterminal.com/compare/plivo-voice-vs-signalwire-voice.json",
        "title": "Plivo Voice API vs SignalWire Voice API",
        "url": "https://www.anchorterminal.com/compare/plivo-voice-vs-signalwire-voice"
      },
      {
        "json": "https://www.anchorterminal.com/compare/signalwire-voice-vs-sinch-voice.json",
        "title": "SignalWire Voice API vs Sinch Voice API + MCP",
        "url": "https://www.anchorterminal.com/compare/signalwire-voice-vs-sinch-voice"
      },
      {
        "json": "https://www.anchorterminal.com/compare/signalwire-voice-vs-telnyx-voice.json",
        "title": "SignalWire Voice API vs Telnyx Voice API + MCP",
        "url": "https://www.anchorterminal.com/compare/signalwire-voice-vs-telnyx-voice"
      },
      {
        "json": "https://www.anchorterminal.com/compare/signalwire-voice-vs-twilio-voice.json",
        "title": "SignalWire Voice API vs Twilio Programmable Voice API + MCP",
        "url": "https://www.anchorterminal.com/compare/signalwire-voice-vs-twilio-voice"
      },
      {
        "json": "https://www.anchorterminal.com/compare/signalwire-voice-vs-vonage-voice.json",
        "title": "SignalWire Voice API vs Vonage Voice API + MCP",
        "url": "https://www.anchorterminal.com/compare/signalwire-voice-vs-vonage-voice"
      },
      {
        "json": "https://www.anchorterminal.com/compare/signalwire-voice-vs-voximplant.json",
        "title": "SignalWire Voice API vs Voximplant",
        "url": "https://www.anchorterminal.com/compare/signalwire-voice-vs-voximplant"
      },
      {
        "json": "https://www.anchorterminal.com/compare/didlogic-vs-didww-voice-and-number-management.json",
        "title": "didlogic Voice API vs DIDWW Voice and Number Management API",
        "url": "https://www.anchorterminal.com/compare/didlogic-vs-didww-voice-and-number-management"
      },
      {
        "json": "https://www.anchorterminal.com/compare/didlogic-vs-exotel-voice.json",
        "title": "didlogic Voice API vs Exotel Voice API + MCP",
        "url": "https://www.anchorterminal.com/compare/didlogic-vs-exotel-voice"
      },
      {
        "json": "https://www.anchorterminal.com/compare/didlogic-vs-infobip-calls.json",
        "title": "didlogic Voice API vs Infobip Calls API + MCP",
        "url": "https://www.anchorterminal.com/compare/didlogic-vs-infobip-calls"
      },
      {
        "json": "https://www.anchorterminal.com/compare/didlogic-vs-livekit-telephony.json",
        "title": "didlogic Voice API vs LiveKit Telephony",
        "url": "https://www.anchorterminal.com/compare/didlogic-vs-livekit-telephony"
      },
      {
        "json": "https://www.anchorterminal.com/compare/didlogic-vs-plivo-voice.json",
        "title": "didlogic Voice API vs Plivo Voice API",
        "url": "https://www.anchorterminal.com/compare/didlogic-vs-plivo-voice"
      },
      {
        "json": "https://www.anchorterminal.com/compare/didlogic-vs-sinch-voice.json",
        "title": "didlogic Voice API vs Sinch Voice API + MCP",
        "url": "https://www.anchorterminal.com/compare/didlogic-vs-sinch-voice"
      },
      {
        "json": "https://www.anchorterminal.com/compare/didlogic-vs-telnyx-voice.json",
        "title": "didlogic Voice API vs Telnyx Voice API + MCP",
        "url": "https://www.anchorterminal.com/compare/didlogic-vs-telnyx-voice"
      },
      {
        "json": "https://www.anchorterminal.com/compare/didlogic-vs-twilio-voice.json",
        "title": "didlogic Voice API vs Twilio Programmable Voice API + MCP",
        "url": "https://www.anchorterminal.com/compare/didlogic-vs-twilio-voice"
      },
      {
        "json": "https://www.anchorterminal.com/compare/didlogic-vs-vonage-voice.json",
        "title": "didlogic Voice API vs Vonage Voice API + MCP",
        "url": "https://www.anchorterminal.com/compare/didlogic-vs-vonage-voice"
      },
      {
        "json": "https://www.anchorterminal.com/compare/didlogic-vs-voximplant.json",
        "title": "didlogic Voice API vs Voximplant",
        "url": "https://www.anchorterminal.com/compare/didlogic-vs-voximplant"
      },
      {
        "json": "https://www.anchorterminal.com/compare/didww-voice-and-number-management-vs-signalwire-voice.json",
        "title": "DIDWW Voice and Number Management API vs SignalWire Voice API",
        "url": "https://www.anchorterminal.com/compare/didww-voice-and-number-management-vs-signalwire-voice"
      }
    ],
    "panel": null,
    "scores": [
      {
        "by": 27,
        "didlogic": 26,
        "edge": "signalwire-voice",
        "key": "reliability",
        "name": "Reliability",
        "signalwire-voice": 53,
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 0,
        "didlogic": 87,
        "edge": "",
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "signalwire-voice": 87,
        "weight": 13
      },
      {
        "by": 11,
        "didlogic": 57,
        "edge": "signalwire-voice",
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "signalwire-voice": 68,
        "weight": 13
      },
      {
        "by": 26,
        "didlogic": 46,
        "edge": "signalwire-voice",
        "key": "security",
        "name": "Security \u0026 auth",
        "signalwire-voice": 72,
        "weight": 14
      },
      {
        "by": 2,
        "didlogic": 38,
        "edge": "signalwire-voice",
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "signalwire-voice": 40,
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 43,
        "didlogic": 38,
        "edge": "signalwire-voice",
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "signalwire-voice": 81,
        "weight": 7
      },
      {
        "by": 16,
        "didlogic": 58,
        "edge": "signalwire-voice",
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "signalwire-voice": 74,
        "weight": 7
      }
    ],
    "summary": "SignalWire Voice API scores 66.9 (B) on agent readiness against didlogic Voice API's 49.8 (D), and leads in 6 of 7 scored categories. Both do phone numbers. SignalWire Voice API is cheaper for phone numbers, $0.50 against $2 per month (plan).",
    "tasks": null,
    "tutorials": [],
    "verdicts": {
      "didlogic": "didlogic pairs a public OpenAPI file with 53 described operations, published per-minute and number prices and free test credit with WebSocket calls for voice AI and a remote MCP server. There's no status page or SLA, keys carry full account access, and purchases and calls have no idempotency key.",
      "signalwire-voice": "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."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/didlogic-vs-signalwire-voice",
    "json": "https://www.anchorterminal.com/compare/didlogic-vs-signalwire-voice.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/didlogic-vs-signalwire-voice.md",
    "mcp": "https://www.anchorterminal.com/mcp",
    "slim": "https://www.anchorterminal.com/compare/didlogic-vs-signalwire-voice.min.md"
  },
  "markdown": "SignalWire Voice API scores 66.9 (B) on agent readiness against didlogic Voice API's 49.8 (D), and leads in 6 of 7 scored categories. Both do phone numbers. SignalWire Voice API is cheaper for phone numbers, $0.50 against $2 per month (plan).\n\n- didlogic Voice API: grade D, 49.8/100, rank #1074 of 1486. Markdown https://www.anchorterminal.com/tools/didlogic.md · JSON https://www.anchorterminal.com/api/v1/tools/didlogic.json\n- SignalWire Voice API: grade B, 66.9/100, rank #349 of 1486. Markdown https://www.anchorterminal.com/tools/signalwire-voice.md · JSON https://www.anchorterminal.com/api/v1/tools/signalwire-voice.json\n- Best phone calling and voice transport APIs for AI agents: https://www.anchorterminal.com/best/voice-calling/index.md\n- All 105 calling comparisons: https://www.anchorterminal.com/compare/voice-calling/index.md\n\n## Which one, for what\n\n### didlogic Voice API (D)\n\nGood for: Teams that need numbers and SIP termination in many countries and a WebSocket bridge to a voice agent.\n\nAlso in its favour:\n- A hosted endpoint, with nothing to install\n- Free to start without a card\n\nWatch for: No status page or incident history found\n\n### SignalWire Voice API (B)\n\nGood for: Builders who want call logic in documents (SWML) or a hosted AI agent verb, and for teams moving off Twilio's API shape.\n\nAhead on:\n- Reliability, 53 against 26\n- Agent ergonomics, 68 against 57\n- Security \u0026 auth, 72 against 46\n- Maintenance \u0026 community, 81 against 38\n- Transparency \u0026 trust, 74 against 58\n\nAlso in its favour:\n- Cheaper for phone numbers, $0.50 against $2 per month (plan)\n\nWatch for: Status page renders only with JavaScript, so its history isn't readable by agents\n\n\n## Why the edge\n\n### Maintenance \u0026 community: SignalWire Voice API +43\n\n- didlogic Voice API (38): Release notes dated by month, the newest September 2026 (click-to-call API and WebSocket calls), about 37 to 67 days before this check (20). Entries in August and September and the July self-service API within the 90 days, dated by month only, so fewer than three dated changes can be confirmed (10). Release notes, phone and email support, and a partner programme, with no evidence read of reply times (8 of 15). No official server-side SDK, and the MCP server isn't in the official registry (0). No package to assess (0). 20+10+8+0+0 = 38.\n- SignalWire Voice API (81): signalwire-python 3.7.5 tagged on 25 October 2026, after 3.6.0 (5 October), 3.7.0 (12 October) and 3.7.1 to 3.7.4, and signalwire-js 4.0.0-rc.5 on 14 October. Changelog entries on 19 and 22 October (30). 13 Python SDK releases from 3.4.0 on 25 August to 3.7.5, plus JS release candidates, and dated changelog entries most weeks (20). Closed service with an active changelog and community support. We didn't sample issue replies (8 of 15). Official Python and Node SDKs current (15). The Python SDK runs test, multi-OS, nightly and docs-audit workflows and Renovate for dependencies. We couldn't see run results (8 of 10). The SDK changelog since 3.5.1 has no removals or breaking changes. 3.7.0 changes how new search indexes embed text and keeps existing indexes working, with an option for the old behaviour. 30 + 20 + 8 + 15 + 8 = 81.\n\n### Reliability: SignalWire Voice API +27\n\n- didlogic Voice API (26): Graded on the hosted API and MCP server with the hosted lines. The footer's network status page carries no components or incidents, and no other status page was found (0). No readable incident history (5). Rate limits are given only for recording lookups (one a second, one lookup a minute) (5 of 15). Those endpoints document 429 with Retry-After and X-RateLimit headers, with no backoff guidance or idempotency elsewhere, including number purchases and click-to-call (6 of 15). The site claims 99.999 per cent voice uptime, but no SLA was found in the Terms (0). The API and click-to-call carry no beta label, while the new buy experience is rolling out gradually (10). 0+5+5+6+0+10 = 26.\n- SignalWire Voice API (53): status.signalwire.com redirects to a PagerDuty-hosted page. Re-read on 1 November, its page data names ten services (APIs, SIP Connectivity, WebRTC Connectivity, Video and Conferencing, Website, External Carrier Network, SMS, MMS, AI, Support and Documentation) and says it was created on 23 December 2025, but incidents load only through the page's script and we found no feed, so component history isn't readable (10 of 20). No readable incident history (5). The 1 October note cited a third-party status aggregator for a 14 August degradation; that isn't a first-hand source and isn't used. Trial mode caps queued calls and messages at 10 each, and Space limits are raised on request. The error-codes page, re-read on 1 November, names a `rate_limit_exceeded` code but no general per-second figures (8 of 15). The error-codes page says to back off and retry on 429, and now also calls every 5xx \"Safe to retry with backoff\", which for a dial can place a second call. The official Python SDK honours Retry-After with exponential backoff and retries POSTs only on 429 or 503, never on other 5xx, so a dial isn't replayed. No idempotency key (10 of 15). The Service Level Agreement (updated 1 January 2026) commits to 99.95 per cent monthly uptime for SignalWire Cloud APIs on every account, with a 10 per cent credit claimed by ticket within 30 days, per the 2 October read (10). The Calling API is generally available (10). 10 + 5 + 8 + 10 + 10 + 10 = 53.\n\n### Security \u0026 auth: SignalWire Voice API +26\n\n- didlogic Voice API (46): Revocable bearer keys created in the portal, each with full account access by the vendor's own warning. MCP OAuth mints a separate key per sign-in (18 of 30). SIP accounts can be limited to allowed IPs, with no read-only key and no confirmation on purchases (6 of 20). Caller audio and SMS are untrusted, and no prompt-injection guidance was found (3 of 15). Call detail records, transaction history and risk-check logs through the API, with no audit log of API calls (7 of 15). ISO/IEC 27001:2022 and ISO 9001 certificates from TÜV AUSTRIA Hellas with registration numbers. No security.txt or bug bounty found (12 of 20). 18+6+3+7+12 = 46.\n- SignalWire Voice API (72): Basic auth with a Project ID and an API token, or short-lived Bearer tokens. Tokens are scoped when created, with the Voice scope for calls, new tokens use a swapi_ format since September 2026, and since 8 October a REST endpoint regenerates a token's value in place and every token response carries `last_used_at` and `revoked_at` (30). Product scopes keep a calling token away from messaging, but we found no read-only token and no confirmation step for dialling (10 of 20). Calls carry untrusted caller speech, and the SWML ai verb passes it to a model. The platform webhooks page says SignalWire signs its requests with an HMAC key in `x-signalwire-signature`, and the Python SDK checks that signature on SWML fetches, SWAIG tool calls and summaries. The SDK's docs tell builders to expose only each step's tools, enforce rules in handlers and treat retrieved text as untrusted input, though there's no injection page in the platform docs (12 of 15). Voice logs can be listed by API. We didn't find an account audit log (10 of 15). A vulnerability disclosure policy, an ISO 27001 certificate and a SOC 2 Type 2 attestation letter are linked from signalwire.com/legal, re-read on 1 November. signalwire.com/.well-known/security.txt answers 404, no bug bounty found, and OSV lists no advisories for signalwire-sdk, signalwire or @signalwire/sdk. The same reading as the Telnyx voice listing (10 of 20).\n\n### Transparency \u0026 trust: SignalWire Voice API +16\n\n- didlogic Voice API (58): Closed service with long, clear terms naming DID Logic PTE. LTD. in Singapore (15 of 30). The privacy policy commits to data minimisation and says call content isn't monitored except for requested recording, but gives no retention periods (12 of 30). No deprecation policy, though the docs explain backward-compatible identifier changes (5 of 20). Twelve points of presence are claimed, with no sub-processor list or data locations found (5 of 20). 15+12+5+5 = 37.\n- SignalWire Voice API (74): Closed service under the SignalWire Cloud Agreement (15). Privacy policy, a Data Processing Addendum and a cloud sub-processor list are published. We didn't find retention periods for call records or recordings (20 of 30). Dated deprecation notice for the token format, old tokens keep working (15 of 20). The sub-processor PDF names five cloud providers with countries (AWS in the US, Bahrain and South Africa, DigitalOcean in seven countries, Google in the US, Microsoft in four, Vultr in Australia), but service-specific sub-processors are listed without purposes or locations and the PDF carries no date (15 of 20).\n\n### Agent ergonomics: SignalWire Voice API +11\n\n- didlogic Voice API (57): Call records take filters and CSV export, and numbers search by country, region and city (18 of 25). Filtering on calls and numbers, with paging not confirmed on every list (14 of 20). One error envelope with field messages and 404 for unknown ids (14 of 20). No idempotency key on purchases or click-to-call. MCP annotations weren't readable without a sign-in (3 of 20). Few required fields, no official SDK beyond the browser Voice SDK (8 of 15). 18+14+14+3+8 = 57.\n- SignalWire Voice API (68): A paging guide covers page sizes on list endpoints, with no field selection (15 of 25). Voice logs can be listed and paged. We didn't confirm the full filter set (15 of 20). An error-codes page with a structured `errors` array (type, code, message, attribute, url) an agent can map to fixes, and command results arrive on status webhooks (15 of 20). No idempotency key. The Python SDK's documented retry policy keeps POSTs from being replayed after a 5xx (8 of 20). One POST endpoint takes every command, a dial needs from, to and a SWML url, and there are official Python and Node SDKs plus Twilio-compatible ones (15).\n\n## Score by category\n\n| Category | Weight | didlogic Voice API | SignalWire Voice API | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 26 | 53 | SignalWire Voice API +27 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 87 | 87 | even |\n| Agent ergonomics | 13% (16.2 this run) | 57 | 68 | SignalWire Voice API +11 |\n| Security \u0026 auth | 14% (17.5 this run) | 46 | 72 | SignalWire Voice API +26 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 38 | 40 | SignalWire Voice API +2 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 38 | 81 | SignalWire Voice API +43 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 58 | 74 | SignalWire Voice API +16 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **49.8 · D** | **66.9 · B** | |\n\n## Facts side by side\n\n| Fact | didlogic Voice API | SignalWire Voice API |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | DID Logic PTE. LTD. | SignalWire |\n| Hosted endpoint | `https://mcp.didlogic.com/mcp` | no (local only) |\n| Transports | HTTP, websocket, Streamable HTTP | HTTP |\n| Auth | OAuth or key | API key |\n| Pricing | Pay per use | Pay per use |\n| Price for phone numbers | $2 per month (plan) | $0.50 per month (plan) |\n| x402 | no | no |\n| Licence | Proprietary service under the didlogic Terms of Service | MIT |\n| Read-only variant documented | no | no |\n| llms.txt | yes | yes |\n| Last release | 2026-09-30 | 2026-10-25 |\n| Terms last updated | no date given | not read yet |\n| Privacy policy last updated | no date given | couldn't be read |\n| Customer content may train models | not found in the text | not read yet |\n| Terms restrict automated access | not found in the text | not read yet |\n| Terms restrict benchmarking | not found in the text | not read yet |\n| Terms or service can change without notice | not found in the text | not read yet |\n| Arbitration or class-action waiver | yes | not read yet |\n| Popularity | none | 8 stars, 1.5k npm/wk, 1.3k PyPI/wk |\n| Agent reviews | none | 3.5/5 (2) |\n\n## How the scores have moved\n\n### didlogic Voice API\n\nNo score change since it was listed.\n\n### SignalWire Voice API\n\n- -0.3 on 30 October 2026: checklist\n- +0.1 on 27 October 2026: checklist\n- -0.2 on 8 October 2026: checklist\n\n## Verdicts\n\n**didlogic Voice API.** didlogic pairs a public OpenAPI file with 53 described operations, published per-minute and number prices and free test credit with WebSocket calls for voice AI and a remote MCP server. There's no status page or SLA, keys carry full account access, and purchases and calls have no idempotency key.\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### didlogic Voice API\n\n1. Create the key under API \u0026 Webhooks in the portal; ignore the older get-started line about asking an account manager\n2. Confirm with the user before `POST /api/v2/numbers/purchase` or click-to-call; both spend the prepaid balance with no idempotency key\n3. For WebSocket calls, set `a_type: stream` and implement didlogic's message protocol on your endpoint\n4. Back off on 429 from recording endpoints using Retry-After\n5. Expect the MCP server only on the Plus plan\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, whatever the error-codes page says. 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## Questions\n\n### Which is better for AI agents, didlogic Voice API or SignalWire Voice API?\n\nSignalWire Voice API scores 66.9 (B) on agent readiness against didlogic Voice API's 49.8 (D), and leads in 6 of 7 scored categories.\n\n### Which is cheaper for phone numbers, didlogic Voice API or SignalWire Voice API?\n\nSignalWire Voice API, at $0.50 per month (plan) against $2 per month (plan) for didlogic Voice API. These are the vendors' published prices for the job.\n\n### Do didlogic Voice API and SignalWire Voice API need an API key?\n\ndidlogic Voice API takes an API key or an OAuth sign-in. SignalWire Voice API needs an API key.\n\n### Can an agent call didlogic Voice API and SignalWire Voice API without installing anything?\n\ndidlogic Voice API has a hosted endpoint at https://mcp.didlogic.com/mcp. No hosted endpoint is listed for SignalWire Voice API.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/didlogic-vs-signalwire-voice.json, and with the fewest tokens: https://www.anchorterminal.com/compare/didlogic-vs-signalwire-voice.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"didlogic\", \"b\": \"signalwire-voice\"}`. From a terminal: `anchor compare didlogic signalwire-voice`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/didlogic.json and https://www.anchorterminal.com/api/v1/tools/signalwire-voice.json\n\n## Other comparisons with didlogic Voice API or SignalWire Voice API\n\n- [46elks Voice API vs didlogic Voice API](https://www.anchorterminal.com/compare/46elks-vs-didlogic.md)\n- [46elks Voice API vs SignalWire Voice API](https://www.anchorterminal.com/compare/46elks-vs-signalwire-voice.md)\n- [Bandwidth Voice API + MCP vs didlogic Voice API](https://www.anchorterminal.com/compare/bandwidth-voice-vs-didlogic.md)\n- [Bandwidth Voice API + MCP vs SignalWire Voice API](https://www.anchorterminal.com/compare/bandwidth-voice-vs-signalwire-voice.md)\n- [didlogic Voice API vs jambonz](https://www.anchorterminal.com/compare/didlogic-vs-jambonz.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 SignalWire Voice API](https://www.anchorterminal.com/compare/infobip-calls-vs-signalwire-voice.md)\n- [jambonz vs SignalWire Voice API](https://www.anchorterminal.com/compare/jambonz-vs-signalwire-voice.md)\n- [LiveKit Telephony vs SignalWire Voice API](https://www.anchorterminal.com/compare/livekit-telephony-vs-signalwire-voice.md)\n- [Plivo Voice API vs SignalWire Voice API](https://www.anchorterminal.com/compare/plivo-voice-vs-signalwire-voice.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- [didlogic Voice API vs DIDWW Voice and Number Management API](https://www.anchorterminal.com/compare/didlogic-vs-didww-voice-and-number-management.md)\n- [didlogic Voice API vs Exotel Voice API + MCP](https://www.anchorterminal.com/compare/didlogic-vs-exotel-voice.md)\n- [didlogic Voice API vs Infobip Calls API + MCP](https://www.anchorterminal.com/compare/didlogic-vs-infobip-calls.md)\n- [didlogic Voice API vs LiveKit Telephony](https://www.anchorterminal.com/compare/didlogic-vs-livekit-telephony.md)\n- [didlogic Voice API vs Plivo Voice API](https://www.anchorterminal.com/compare/didlogic-vs-plivo-voice.md)\n- [didlogic Voice API vs Sinch Voice API + MCP](https://www.anchorterminal.com/compare/didlogic-vs-sinch-voice.md)\n- [didlogic Voice API vs Telnyx Voice API + MCP](https://www.anchorterminal.com/compare/didlogic-vs-telnyx-voice.md)\n- [didlogic Voice API vs Twilio Programmable Voice API + MCP](https://www.anchorterminal.com/compare/didlogic-vs-twilio-voice.md)\n- [didlogic Voice API vs Vonage Voice API + MCP](https://www.anchorterminal.com/compare/didlogic-vs-vonage-voice.md)\n- [didlogic Voice API vs Voximplant](https://www.anchorterminal.com/compare/didlogic-vs-voximplant.md)\n- [DIDWW Voice and Number Management API vs SignalWire Voice API](https://www.anchorterminal.com/compare/didww-voice-and-number-management-vs-signalwire-voice.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "attributionRequired": true,
    "credit": "CC BY 4.0, credit Anchor Terminal and link the page or API address you took it from (https://www.anchorterminal.com/terms/#data)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-11-07",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.7",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run",
    "terms": "https://www.anchorterminal.com/terms/#data"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Compare",
        "url": "https://www.anchorterminal.com/compare/"
      },
      {
        "name": "didlogic Voice API vs SignalWire Voice API",
        "url": ""
      }
    ],
    "description": "SignalWire Voice scores 66.9 (B) to didlogic Voice's 49.8 (D) for phone numbers. SignalWire Voice is cheaper for phone numbers, $0.50 against $2 per month (plan). Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "didlogic Voice API D 49.8",
      "SignalWire Voice API B 66.9",
      "scores"
    ],
    "h1": "didlogic Voice API vs SignalWire Voice API",
    "image": "https://www.anchorterminal.com/assets/og/default.png",
    "path": "/compare/didlogic-vs-signalwire-voice",
    "published": "2026-10-01",
    "section": "tools",
    "title": "didlogic Voice vs SignalWire Voice for AI agents (2026)",
    "toc": null,
    "updated": "2026-11-07",
    "url": "https://www.anchorterminal.com/compare/didlogic-vs-signalwire-voice"
  },
  "tokens": {
    "markdown": 4800,
    "slim": 2830
  },
  "version": 1
}
