{
  "data": {
    "a": {
      "slug": "46elks",
      "name": "46elks Voice API",
      "vendor": "46elks AB",
      "vendorUrl": "https://46elks.com",
      "kind": "http-api",
      "category": "voice-calling",
      "summary": "46elks is a Swedish telecom operator's REST API for phone calls, SMS and virtual numbers in 48 countries, with JSON call actions, call recording, SIP and WebRTC clients, and a WebSocket Realtime Voice API for connecting AI agents to calls.",
      "url": "https://www.anchorterminal.com/tools/46elks",
      "markdownUrl": "https://www.anchorterminal.com/tools/46elks.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/46elks.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/46elks.json",
      "dns": "46elks.grade.anchorterminal.com",
      "repo": "https://github.com/46elks/46elks-getting-started",
      "license": "Proprietary service under the 46elks Terms of Service (effective 12 March 2024). Example code and the Swagger file are in the public 46elks-getting-started repository",
      "transports": [
        "http",
        "websocket"
      ],
      "remoteUrl": "https://api.46elks.com/a1",
      "packages": [],
      "auth": "api-key",
      "authNotes": "HTTP Basic auth with an API username and password from the dashboard after a browser signup. Subaccounts have their own credentials. No scopes or read-only credentials found. Webhook origin can be verified per the Verify Callback Origin guide.",
      "pricing": "usage",
      "pricingNotes": "Per started minute, published by destination. UK calls cost €0.02 to landlines and €0.456 to mobiles, forwarding to a WebSocket €0.015 and to a SIP trunk €0.01. Incoming calls are free. Numbers usually €3 a month. Prepaid balance or invoice (checked 2026-11-06).",
      "priceSummary": "$3.50 / mo",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in llms.txt, the docs or the pricing page (checked 2026-11-06).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": null,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-11-06"
      },
      "docsUrl": "https://46elks.com/docs/make-call",
      "llmsTxt": "https://46elks.com/llms.txt",
      "openapi": "https://raw.githubusercontent.com/46elks/46elks-getting-started/master/code-examples/Swagger/46elksAPI.yaml",
      "capabilities": [
        "voice.calls",
        "voice.numbers",
        "voice.streaming",
        "voice.sip",
        "voice.recording",
        "messaging.sms"
      ],
      "tags": [
        "hosted",
        "official",
        "closed-source",
        "usage",
        "prepaid",
        "llms-txt",
        "openapi",
        "webhooks",
        "websocket",
        "sip",
        "phone-numbers",
        "status-page",
        "eu"
      ],
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 44.4,
        "grade": "E",
        "agentReady": false,
        "rank": 1203,
        "ranked": true,
        "rankOf": 1486,
        "categoryRank": 14,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 51,
          "maintenance": 12,
          "payments": 20,
          "reliability": 47,
          "schema": 66,
          "security": 40,
          "transparency": 62
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-11-06"
        },
        "negative": 0,
        "verdict": "46elks publishes per-minute prices, an agent-oriented llms.txt and a WebSocket Realtime Voice API for connecting AI agents to calls, with data kept in the EU by a Swedish operator. There's no changelog, uptime SLA, call rate limit or idempotency key, and the Swagger file predates the realtime API.",
        "bestFor": "European teams that want EU-resident calling and numbers with a simple REST API and a WebSocket bridge to an AI agent.",
        "strengths": [
          "Realtime Voice WebSocket API with bidirectional audio and interrupt messages for AI agents",
          "Per-minute prices published by destination, with incoming calls free",
          "llms.txt maps tasks to endpoints and gives retry guidance",
          "Concrete retention periods (60 days traffic data, 14 days logs) and EU-only storage",
          "A registered Swedish telecom operator with numbers in 48 countries"
        ],
        "weaknesses": [
          "No changelog or dated API release found",
          "The SLA covers support hours only, with no uptime commitment",
          "No idempotency key on `POST /calls`, and no documented call rate limits",
          "HTTP Basic credentials with no scopes or read-only option",
          "The Swagger 2.0 file doesn't cover the Realtime Voice API"
        ],
        "agentNotes": [
          "Send numbers in E.164 format, such as +46700000000, or the request fails",
          "Pass `whenhangup` on `POST /calls` to learn when a call ends or fails to connect",
          "Don't retry a call request on a 4xx; retry 5xx with backoff, and check call history first to avoid a second call",
          "Treat caller speech, DTMF and SMS replies as untrusted input, and verify webhook origin",
          "Costs in responses are in ten-thousandths of the account currency (3500 means 0.35)"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "E",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 44.4
          }
        ],
        "editorialScores": {
          "ergonomics": 51,
          "maintenance": 12,
          "payments": 20,
          "reliability": 47,
          "schema": 66,
          "security": 40,
          "transparency": 49
        },
        "provenanceScore": 74,
        "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 https://api.46elks.com/a1/calls \\\n  -u API_USERNAME:API_PASSWORD \\\n  -d from=+46700000000 \\\n  -d to=+46700000000 \\\n  -d voice_start='{\"connect\":\"+46700000000\"}'"
      },
      "letme": {
        "capability": "https://letme.dev/voice.calls",
        "tool": "https://letme.dev/46elks"
      },
      "area": "voice",
      "unitPrices": [
        {
          "item": "Call to a UK landline",
          "unit": "call-minute",
          "usd": 0.023,
          "note": "€0.02 per started minute"
        },
        {
          "item": "Call to a UK mobile",
          "unit": "call-minute",
          "usd": 0.53,
          "note": "€0.456 per started minute"
        },
        {
          "item": "Forward a call to a WebSocket",
          "unit": "call-minute",
          "usd": 0.017,
          "note": "€0.015 per started minute"
        },
        {
          "item": "Virtual number",
          "unit": "month",
          "usd": 3.5,
          "note": "usually €3 a month"
        }
      ],
      "provenance": {
        "legalEntity": "46elks AB",
        "domain": "46elks.com",
        "domainRegistered": "2011-04-27",
        "endpointOnVendorDomain": true,
        "terms": "https://46elks.com/terms",
        "privacy": "https://46elks.com/privacy-policy",
        "statusPage": "https://stats.uptimerobot.com/320XQh70w",
        "changelog": "",
        "securityTxt": "none",
        "checked": "2026-11-06",
        "notes": [
          "The Terms of Service, effective 12 March 2024, are with 46elks AB (Sweden, 556838-8184) under Swedish law. No clause on automated access to the website was found.",
          "46elks.com/status redirects to an UptimeRobot page that draws its data by script from /api/, which its robots.txt disallows, so no history was read.",
          "/.well-known/security.txt returns 404. No changelog was found; the newest blog post in the sitemap is from 2014.",
          "Euro prices converted at about 1.16 dollars to the euro for unitPrices; the pricing page lists euro and kronor.",
          "RDAP gives 46elks.com a registration date of 27 April 2011."
        ],
        "score": 74
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/46elks.json",
      "live": {
        "slug": "46elks",
        "probe": {
          "target": "https://api.46elks.com/a1",
          "method": "get",
          "lastAt": "2026-11-07T18:20:08.122651517Z",
          "lastOk": true,
          "lastStatus": 401,
          "lastMs": 426,
          "lastNote": "asks for credentials",
          "authRequired": true,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 318,
          "p95ms24h": 457,
          "samples24h": 200,
          "samples30d": 200,
          "days": [
            {
              "date": "2026-11-06",
              "probes": 13,
              "ok": 13
            },
            {
              "date": "2026-11-07",
              "probes": 187,
              "ok": 187
            }
          ]
        },
        "vendorStatus": {
          "page": "https://stats.uptimerobot.com/320XQh70w",
          "indicator": "unknown",
          "summary": "no machine-readable status found",
          "checkedAt": "2026-11-07T04:47:03.46439958Z"
        },
        "githubStars": 57,
        "securityTxt": {
          "url": "https://46elks.com/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-11-07T16:02:02.719722143Z"
        },
        "llmsTxt": {
          "url": "https://46elks.com/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-11-07T15:31:04.362648825Z"
        },
        "pages": [
          {
            "url": "https://46elks.com/privacy-policy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-11-07T13:58:27.545226578Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "bff2a55e1a02"
          },
          {
            "url": "https://46elks.com/terms",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-11-07T13:58:29.648545838Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "be068526a0d6"
          }
        ],
        "updatedAt": "2026-11-07T18:20:08.122651517Z"
      }
    },
    "answer": "jambonz scores 45.4 (E) on agent readiness against 46elks Voice API's 44.4 (E), and leads in 3 of 7 scored categories. 46elks Voice API leads on reliability, schema \u0026 documentation and transparency \u0026 trust.",
    "b": {
      "slug": "jambonz",
      "name": "jambonz",
      "vendor": "FirstFive8, Inc.",
      "vendorUrl": "https://jambonz.org",
      "kind": "http-api",
      "category": "voice-calling",
      "summary": "jambonz is a programmable voice platform from FirstFive8 for calls over a customer's own SIP carriers. Applications control calls through a REST API, webhooks or a WebSocket API, on the hosted jambonz.cloud or a self-hosted cluster under a commercial licence.",
      "url": "https://www.anchorterminal.com/tools/jambonz",
      "markdownUrl": "https://www.anchorterminal.com/tools/jambonz.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/jambonz.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/jambonz.json",
      "dns": "jambonz.grade.anchorterminal.com",
      "repo": "https://github.com/jambonz/jambonz-feature-server",
      "license": "Proprietary. jambonz.cloud is under the jambonz Terms of Use and self-hosted jambonz Commercial needs a paid licence key. The API server, feature server and SDK repositories on GitHub are MIT",
      "transports": [
        "http"
      ],
      "packages": [
        {
          "registry": "npm",
          "name": "@jambonz/sdk"
        },
        {
          "registry": "pypi",
          "name": "jambonz-python-sdk"
        },
        {
          "registry": "npm",
          "name": "@jambonz/mcp-schema-server"
        }
      ],
      "auth": "api-key",
      "authNotes": "A bearer token sent as `Authorization: Bearer \u003ctoken\u003e`, created in the jambonz.cloud portal or with `POST /ApiKeys` by an existing token. A token belongs to one account or one service provider and reaches everything that owner can. No scopes or read-only keys were found. Access is self-serve after a browser sign-up with email, Google or GitHub. Webhooks to the application are signed with a `Jambonz-Signature` header on the hosted platform, or protected with HTTP basic authentication.",
      "pricing": "paid",
      "pricingNotes": "jambonz.cloud costs $8 a concurrent session a month for 5 to 249 sessions, $6 for 250 to 499 and $5 for 500 or more, with no per-minute charge. A three-week trial comes first, and the terms describe choosing a subscription at its end. Self-hosted licences cost $7 a session a month or $2,000 a month for unlimited sessions on one cluster, after a 30-day trial of 10 sessions. Carrier minutes, phone numbers, speech and LLM usage are bought from other vendors. Air-gapped, OEM and Enterprise support prices are by quote (https://jambonz.org/pricing, checked 2026-10-08).",
      "priceSummary": "$8 / mo",
      "where": "local",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the docs index, the three OpenAPI files or the pricing page (checked 2026-10-08).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": 103,
        "npmWeekly": 1368,
        "pypiWeekly": null,
        "asOf": "2026-10-08"
      },
      "docsUrl": "https://docs.jambonz.org",
      "llmsTxt": "https://docs.jambonz.org/llms.txt",
      "openapi": "https://docs.jambonz.org/openapi/rest-call-control.json",
      "capabilities": [
        "voice.calls",
        "voice.sip",
        "voice.streaming",
        "voice.recording",
        "voice.agent"
      ],
      "tags": [
        "hosted",
        "self-hosted",
        "sip",
        "webrtc",
        "open-source",
        "openapi",
        "llms-txt",
        "typescript",
        "python",
        "webhooks",
        "websocket",
        "free-trial"
      ],
      "lastRelease": "2026-10-29",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 45.4,
        "grade": "E",
        "agentReady": false,
        "rank": 1180,
        "ranked": true,
        "rankOf": 1486,
        "categoryRank": 13,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 54,
          "maintenance": 78,
          "payments": 40,
          "reliability": 38,
          "schema": 53,
          "security": 40,
          "transparency": 52
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-11-04"
        },
        "negative": -3,
        "negativeNotes": [
          "24 September 2026, fixed and documented. The 11.1.5 release notes list API server flaws found in a security review, among them privilege escalation in user management, accounts able to write operator-only fields and limits, and a call-logs route that could read arbitrary CloudWatch log groups. The 11.0.0 notes of 8 July 2026 also mention cross-account authorisation hardening. On 11 October 2026 commit b16a6f9 in jambonz-api-server changed IP rate limiting to stop trusting a client-controlled header, released in v0.9.15 on 23 October. No advisory or CVE was published for any of them. One term of 3 for released fixes with no advisory (https://docs.jambonz.org/changelog/2026/9/24)"
        ],
        "verdict": "An llms.txt and Markdown pages cover the REST and WebSocket APIs, session prices are public and the SDKs shipped five tags in October 2026. No status page, security.txt or advisory was found, API keys carry no scopes, and server security fixes ship without advisories.",
        "bestFor": "Teams that already have a SIP carrier and speech and LLM vendors and want call control with flat session pricing, or that must run the voice layer in their own network.",
        "strengths": [
          "The API reference marks enums and required fields, and the verb pages explain each call-control action at length",
          "The docs publish an llms.txt, every page as Markdown and a docs MCP server at `https://docs.jambonz.org/_mcp/server`",
          "Prices are per concurrent session a month ($8, $6 or $5 on the cloud), with no per-minute charge and recording and streaming included",
          "`@jambonz/sdk` was tagged three times from 24 to 29 October 2026, and the Python SDK and both servers once each",
          "The API server, feature server and both SDKs are public under MIT, and the same platform can run in the customer's own network"
        ],
        "weaknesses": [
          "No status page, uptime SLA, security.txt, `SECURITY.md` or published advisory was found for jambonz.cloud or the repositories",
          "Security fixes in the API server, such as the 11 October rate-limit header fix, shipped with no advisory",
          "API keys are bearer tokens for a whole account or service provider, with no scopes, no read-only key and no delete operation in the published reference",
          "The rate limit page gives 600 requests per 5 minutes per IP address. The 4 October release notes give 4,000 call creations a minute per account",
          "No idempotency key was found on `POST /Accounts/{AccountSid}/Calls`, so a retried request can place a second call",
          "jambonz sells no phone numbers or minutes. Every call needs a SIP trunk from another carrier and the customer's own speech vendor keys"
        ],
        "agentNotes": [
          "Send `Authorization: Bearer \u003ctoken\u003e`. The REST introduction page gives `https://jambonz.cloud/api` as the base URL and the Node.js SDK adds `/v1` to the base URL it is given, so confirm the base URL with the operator",
          "Create a call with `from`, `to` and either `application_sid` or `call_hook`. Do not retry a timed-out create without checking `GET /Accounts/{AccountSid}/Calls` first",
          "Read `ratelimit-remaining` and `ratelimit-reset` on every response and stop when a `429` arrives",
          "Append `#rc=3\u0026rp=5xx,ct` to an application URL to turn on webhook retries. HTTP webhooks are not retried by default",
          "Check the account has a carrier and speech credentials before dialling. jambonz does not supply numbers, minutes or speech services"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "E",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 45.4
          }
        ],
        "editorialScores": {
          "ergonomics": 54,
          "maintenance": 78,
          "payments": 40,
          "reliability": 38,
          "schema": 53,
          "security": 40,
          "transparency": 43
        },
        "provenanceScore": 60,
        "checked": {
          "categories": {
            "ergonomics": "2026-11-04",
            "maintenance": "2026-11-04",
            "payments": "2026-11-04",
            "reliability": "2026-11-04",
            "schema": "2026-11-04",
            "security": "2026-11-04",
            "transparency": "2026-11-04"
          },
          "last": "2026-11-04",
          "lastMoved": "2026-11-04",
          "oldest": "2026-11-04",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "install": "npm install @jambonz/sdk",
        "http": "POST https://api.jambonz.cloud/v1/Accounts/{AccountSid}/Calls\nAuthorization: Bearer \u003ctoken\u003e\nContent-Type: application/json"
      },
      "letme": {
        "capability": "https://letme.dev/voice.calls",
        "tool": "https://letme.dev/jambonz"
      },
      "area": "voice",
      "unitPrices": [
        {
          "item": "Cloud, concurrent session (5 to 249 sessions)",
          "unit": "month",
          "usd": 8,
          "note": "monthly subscription, no per-minute charge"
        },
        {
          "item": "Cloud, concurrent session (250 to 499 sessions)",
          "unit": "month",
          "usd": 6,
          "note": "monthly subscription"
        },
        {
          "item": "Cloud, concurrent session (500 or more sessions)",
          "unit": "month",
          "usd": 5,
          "note": "monthly subscription"
        },
        {
          "item": "Self-hosted licence, concurrent session",
          "unit": "month",
          "usd": 7,
          "note": "one cluster, keyed to its domain"
        },
        {
          "item": "Self-hosted licence, unlimited sessions",
          "unit": "month",
          "usd": 2000,
          "note": "one cluster, keyed to its domain"
        },
        {
          "item": "Installation support package",
          "unit": "tx",
          "usd": 1000,
          "note": "one-time fee for one month of installation support"
        }
      ],
      "provenance": {
        "legalEntity": "FirstFive8, Inc.",
        "domain": "jambonz.org",
        "domainRegistered": "2019-08-13",
        "endpointOnVendorDomain": false,
        "terms": "https://jambonz.org/terms",
        "privacy": "https://jambonz.org/privacy",
        "statusPage": "",
        "changelog": "https://docs.jambonz.org/changelog",
        "securityTxt": "none",
        "checked": "2026-11-04",
        "notes": [
          "The terms link is the jambonz Terms of Use, labelled Terms of Service (Cloud) in the site footer, last updated 13 October 2026 (4 May 2021 at the 8 October check), between the user and FirstFive8, Inc of Charlestown, Massachusetts, under Massachusetts law. Self-hosted and OEM customers have separate terms at https://jambonz.org/legal-terms-selfhosted and https://jambonz.org/legal-terms-oem.",
          "The privacy policy was last updated 4 May 2021. It says it is intended for residents of the United States. No data processing addendum or sub-processor list was found.",
          "The hosted API answers on jambonz.cloud (`https://jambonz.cloud/api` in the REST introduction), a second domain of the vendor's. The schema MCP server is on jambonz.app.",
          "No status page is linked from jambonz.org, the docs or the jambonz.cloud landing page.",
          "https://jambonz.org/.well-known/security.txt returned 404. No `SECURITY.md` was found in jambonz-api-server, jambonz-feature-server, node-sdk or python-sdk.",
          "docs.jambonz.org/llms.txt opens with a block headed Instructions for AI Agents (append `.md` for Markdown, connect to the docs MCP server). We recorded it and did not act on it.",
          "The Terms of Use bar using manual or automated software to crawl, spider, index or store information from any page of the Service, which they define as the jambonz website and platform. robots.txt on jambonz.org allows every path. From 4 November 2026 we read nothing on jambonz hosts beyond robots.txt and the terms.",
          "The registration date 2019-08-13 for jambonz.org rests on an earlier registry lookup, not repeated on 4 November 2026."
        ],
        "score": 60
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/jambonz.json",
      "live": {
        "slug": "jambonz",
        "versions": [
          {
            "registry": "npm",
            "name": "@jambonz/mcp-schema-server",
            "version": "0.5.5",
            "seenAt": "2026-11-06T23:35:34.342343167Z"
          },
          {
            "registry": "npm",
            "name": "@jambonz/sdk",
            "version": "0.12.1",
            "seenAt": "2026-11-06T23:35:33.723490556Z"
          },
          {
            "registry": "pypi",
            "name": "jambonz-python-sdk",
            "version": "0.4.0",
            "released": "2026-10-24",
            "seenAt": "2026-11-06T23:35:34.050932112Z"
          }
        ],
        "githubStars": 104,
        "npmWeekly": 716,
        "pypiWeekly": 710,
        "securityTxt": {
          "url": "https://jambonz.org/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-11-07T16:01:40.645058931Z"
        },
        "llmsTxt": {
          "url": "https://docs.jambonz.org/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-11-07T15:32:47.971869722Z"
        },
        "domain": {
          "domain": "jambonz.org",
          "registered": "2019-08-13",
          "source": "https://rdap.publicinterestregistry.org/rdap/domain/jambonz.org",
          "checkedAt": "2026-11-01T14:10:14.180224601Z"
        },
        "pages": [
          {
            "url": "https://docs.jambonz.org/changelog",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-11-07T14:06:43.152583842Z",
            "changedAt": "2026-11-07T14:06:43.152583842Z",
            "fingerprint": "ae013134d250"
          },
          {
            "url": "https://jambonz.org/pricing",
            "kind": "pricing",
            "status": 304,
            "checkedAt": "2026-11-07T14:11:43.248213806Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "33d7f7d4a48c"
          },
          {
            "url": "https://jambonz.org/privacy",
            "kind": "privacy",
            "status": 304,
            "checkedAt": "2026-11-07T14:11:45.382787432Z",
            "changedAt": "2026-10-14T20:43:30.161792657Z",
            "fingerprint": "a5d3035f83ee"
          },
          {
            "url": "https://jambonz.org/terms",
            "kind": "terms",
            "status": 304,
            "checkedAt": "2026-11-07T14:11:47.413591672Z",
            "changedAt": "2026-10-14T20:43:32.179727603Z",
            "fingerprint": "da8e3f3830a3"
          }
        ],
        "github": {
          "repo": "jambonz/jambonz-feature-server",
          "checkedAt": "2026-11-02T08:57:00.273625296Z",
          "stars": 104,
          "archived": false,
          "issuesEnabled": true,
          "pushedAt": "2026-10-30T16:14:17Z",
          "openIssues": 184,
          "openPRs": 62,
          "issuesOpened90d": 2,
          "issuesClosed90d": 6,
          "prsMerged90d": 12,
          "ci": {
            "branch": "main",
            "runs": 50,
            "success": 47,
            "failure": 3,
            "other": 0,
            "latest": "success",
            "latestAt": "2026-10-23T17:04:21Z"
          },
          "replies": {
            "sampled": 25,
            "unanswered": 7,
            "medianDays": 3.1
          }
        },
        "updatedAt": "2026-11-07T16:01:40.645058931Z"
      }
    },
    "edges": [
      {
        "by": 66,
        "category": "maintenance",
        "leads": "jambonz",
        "name": "Maintenance \u0026 community",
        "reasons": {
          "a": "No changelog, release notes or dated API change was found, the sitemap's newest blog post is from 2014, and the Swagger file predates Realtime Voice (0). No dated changes in the 90 days from 8 August (0). Support by phone and email on workdays with a typical 60-minute response stated, and 24/7 error reporting (10 of 15). No official SDK (0). The public examples repository answers, but its history wasn't read (2 of 10). 0+0+10+0+2 = 12.",
          "b": "Releases read from depth-200 clones on 4 November. `@jambonz/sdk` was tagged v0.11.0 on 24 October, v0.12.0 on 27 October and v0.12.1 on 29 October, `jambonz-python-sdk` v0.4.0 on 24 October, and jambonz-api-server and jambonz-feature-server v0.9.15 on 23 October (30). From 6 August that is at least five tags across the listed packages and servers, with the 11.1.5 and 11.1.6 release notes of 24 September and 4 October per the 8 October check (20). Of the 30 newest open issues and pull requests on jambonz-feature-server, 10 had a comment per the 8 October check. GitHub's pages were not re-read (10 of 25). The Node.js SDK is current and the Python SDK is still marked Alpha (12 of 15). The API server runs lint and tests in CI on every push and pull request. We did not see the latest run's result (6 of 10). 30 + 20 + 10 + 12 + 6 = 78."
        },
        "scores": {
          "a": 12,
          "b": 78
        }
      },
      {
        "by": 20,
        "category": "payments",
        "leads": "jambonz",
        "name": "Payments \u0026 pricing",
        "reasons": {
          "a": "No x402, MPP or L402 (0). Per-minute prices by destination are public without login, also in kronor, with incoming calls free (20). No free credit; only SMS to the test number +46700000000 costs nothing, and accounts are prepaid or invoiced against a deposit (0). A person signs up in a browser and copies the credentials (0). 0+20+0+0 = 20.",
          "b": "Scored on the hosted option, jambonz.cloud, with prices per the 8 October check, not re-read on 4 November under the terms pause. No x402, MPP or L402 found (0). Prices per concurrent session a month are public without a login for the cloud and for self-hosted licences (20). The Terms of Use (updated 13 October 2026) describe a 21-day trial that needs a name, company and email, and a subscription chosen when it ends, with payments through Stripe. No card is mentioned for the trial, so we counted it as needing none. The sign-up page is drawn by script and was not read (20). An account is created in a browser. `POST /ApiKeys` needs an existing token, so it does not help a new agent (0). 0 + 20 + 20 + 0 = 40."
        },
        "scores": {
          "a": 20,
          "b": 40
        }
      },
      {
        "by": 13,
        "category": "schema",
        "leads": "46elks",
        "name": "Schema \u0026 documentation",
        "reasons": {
          "a": "A Swagger 2.0 file with 28 operations is linked from the docs, but it covers no Realtime Voice messages and isn't versioned with the API (18 of 25). An llms.txt written for agents, with a task-to-endpoint table and webhook payloads, while docs pages are HTML (10). Each docs page explains parameters and when webhooks fire, such as `voice_start` loading only once a call connects (14 of 20). Form-encoded parameters with types in the Swagger file and few enums (9 of 15). Examples in many languages and a JSON error shape, with no error list (10 of 15). The `/a1/` path, with no changelog found (5 of 15). 18+10+14+9+10+5 = 66.",
          "b": "Per the 8 October check, not re-read on 4 November under the terms pause. OpenAPI 3.1 files and an AsyncAPI 2.6.0 file on docs.jambonz.org were read on 8 October, but no page read then or since was recorded as linking them as visible downloads, and the docs host is now paused, so they aren't counted as a published contract (0). llms.txt, per-section indexes and every page as Markdown (10). The verb pages explain use at length. Operation descriptions in the API reference are mostly one line (12 of 20). Enums for call status, direction and mid-call actions and required fields are marked in the reference. `to`, `call_hook`, `tag` and `amd` are objects, a partial held (11 of 15). The SDK and verb pages carry code examples. Errors are a single `msg` string, a partial held (8 of 15). The Node.js SDK adds `/v1` to the base URL it is given, and the changelog is dated with component version tables (12 of 15). 0 + 10 + 12 + 11 + 8 + 12 = 53."
        },
        "scores": {
          "a": 66,
          "b": 53
        }
      },
      {
        "by": 10,
        "category": "transparency",
        "leads": "46elks",
        "name": "Transparency \u0026 trust",
        "reasons": {
          "a": "Closed service with clear terms naming 46elks AB with its Swedish registration (15 of 30). The privacy policy gives concrete retention, 60 days of traffic data under Swedish law, 14 days of troubleshooting logs and a 90-day history for the customer, with EU storage, and a GDPR page and data protection page exist (24 of 30). No deprecation policy or dated notices found (0 of 20). Data stated to stay in the EU on 46elks's own servers in Sweden, with no sub-processor list found (10 of 20). 15+24+0+10 = 49.",
          "b": "Per the 8 October check for the privacy policy and docs, not re-read on 4 November under the terms pause. The API server, feature server and SDKs are public under MIT. The product on jambonz.cloud and in the self-hosted packages is jambonz Commercial, which needs a licence key and whose terms forbid modifying its proprietary portions, while the docs still call jambonz open source (20 of 30). The privacy policy is dated 4 May 2021. It gives 30 days for usage data and an opt-out for call detail records. It says audio is never stored on jambonz servers, and the 11.1.6 notes of 4 October 2026 say support keeps SIP and RTP from calls for a few days, with an opt-out added in that release. No DPA was found (10 of 30). No deprecation policy was found. Removals are announced in the release that makes them, such as SMPP and five speech vendors in July and August 2026 (6 of 20). No sub-processor list was found. The policy says servers are in the United States and names a third-party billing partner. Telemetry from self-hosted instances is listed field by field (7 of 20). 20 + 10 + 6 + 7 = 43."
        },
        "scores": {
          "a": 62,
          "b": 52
        }
      },
      {
        "by": 9,
        "category": "reliability",
        "leads": "46elks",
        "name": "Reliability",
        "reasons": {
          "a": "Graded on the hosted REST and Realtime Voice APIs with the hosted lines. A status page exists, linked from 46elks.com/status on UptimeRobot (20). It draws its data by script from a path its robots.txt disallows, so no history was readable (5). SMS sending speed is documented in the FAQ, but no limit for calls, numbers or WebSocket sessions was found (5 of 15). llms.txt says to retry 5xx with exponential backoff and not to retry 4xx unchanged, with no Retry-After or idempotency for `POST /calls` (7 of 15). The SLA page commits to support hours and 24/7 error reporting with no uptime figure, and extended SLAs are by sales (0). Voice and Realtime Voice carry no beta label (10). 20+5+5+7+0+10 = 47.",
          "b": "Graded as a hosted service, the API on jambonz.cloud, which the docs name as the simplest way to start. jambonz's Terms of Use (updated 13 October 2026) bar automated software that crawls or indexes any page of the website, so jambonz pages are per the 8 October check, not re-read on 4 November under the terms pause. No status page is linked from jambonz.org, the docs or the jambonz.cloud landing page (0), so there is no readable incident history (5). Rate limits are published with numbers, 600 requests per 5 minute fixed window per client IP address on the docs page, while the 11.1.6 notes of 4 October 2026 give 4,000 call creations and 600 call status reads a minute per account, a disagreement held as a partial (13 of 15). The API server's code sets `standardHeaders` on its limiter, so responses carry `RateLimit-*` headers including the reset, and a client over a limit receives 429. No backoff guidance or idempotency key was found for the REST API (10 of 15). No uptime SLA was found for jambonz.cloud. Support SLAs are sold only with Enterprise support for self-hosted systems (0). The REST and WebSocket APIs carry no beta label (10). 0 + 5 + 13 + 10 + 0 + 10 = 38."
        },
        "scores": {
          "a": 47,
          "b": 38
        }
      }
    ],
    "facts": [
      {
        "a": "HTTP API",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "46elks AB",
        "b": "FirstFive8, Inc.",
        "name": "Vendor"
      },
      {
        "a": "https://api.46elks.com/a1",
        "b": "no (local only)",
        "name": "Hosted endpoint"
      },
      {
        "a": "HTTP, websocket",
        "b": "HTTP",
        "name": "Transports"
      },
      {
        "a": "API key",
        "b": "API key",
        "name": "Auth"
      },
      {
        "a": "Pay per use",
        "b": "Paid",
        "name": "Pricing"
      },
      {
        "a": "$0.017 per minute of call",
        "b": "not published",
        "name": "Price for phone calls"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "Proprietary service under the 46elks Terms of Service (effective 12 March 2024). Example code and the Swagger file are in the public 46elks-getting-started repository",
        "b": "Proprietary. jambonz.cloud is under the jambonz Terms of Use and self-hosted jambonz Commercial needs a paid licence key. The API server, feature server and SDK repositories on GitHub are MIT",
        "name": "Licence"
      },
      {
        "a": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "none",
        "b": "2026-10-29",
        "name": "Last release"
      },
      {
        "a": "2024-03-12",
        "b": "2021-05-04",
        "name": "Terms last updated"
      },
      {
        "a": "2018-05-20",
        "b": "2021-05-04",
        "name": "Privacy policy last updated"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Customer content may train models"
      },
      {
        "a": "not found in the text",
        "b": "yes",
        "name": "Terms restrict automated access"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "yes",
        "b": "not found in the text",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "none",
        "b": "103 stars, 1.4k npm/wk",
        "name": "Popularity"
      }
    ],
    "faq": [
      {
        "answer": "jambonz scores 45.4 (E) on agent readiness against 46elks Voice API's 44.4 (E), and leads in 3 of 7 scored categories. 46elks Voice API leads on reliability, schema \u0026 documentation and transparency \u0026 trust.",
        "question": "Which is better for AI agents, 46elks Voice API or jambonz?"
      },
      {
        "answer": "Both need an API key.",
        "question": "Do 46elks Voice API and jambonz need an API key?"
      },
      {
        "answer": "46elks Voice API has a hosted endpoint at https://api.46elks.com/a1. No hosted endpoint is listed for jambonz.",
        "question": "Can an agent call 46elks Voice API and jambonz without installing anything?"
      },
      {
        "answer": "No open-source release is listed for 46elks Voice API. jambonz is open source (Proprietary. jambonz.cloud is under the jambonz Terms of Use and self-hosted jambonz Commercial needs a paid licence key. The API server, feature server and SDK repositories on GitHub are MIT).",
        "question": "Are 46elks Voice API and jambonz open source?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Reliability, 47 against 38",
          "Schema \u0026 documentation, 66 against 53",
          "Transparency \u0026 trust, 62 against 52"
        ],
        "also": [
          "A hosted endpoint, with nothing to install",
          "No incidents deducted, where jambonz loses 3 points for them"
        ],
        "goodFor": "European teams that want EU-resident calling and numbers with a simple REST API and a WebSocket bridge to an AI agent.",
        "slug": "46elks",
        "watchFor": "No changelog or dated API release found"
      },
      {
        "aheadOn": [
          "Payments \u0026 pricing, 40 against 20",
          "Maintenance \u0026 community, 78 against 12"
        ],
        "also": [
          "Open source"
        ],
        "goodFor": "Teams that already have a SIP carrier and speech and LLM vendors and want call control with flat session pricing, or that must run the voice layer in their own network.",
        "slug": "jambonz",
        "watchFor": "No status page, uptime SLA, security.txt, `SECURITY.md` or published advisory was found for jambonz.cloud or the repositories"
      }
    ],
    "history": {
      "46elks": null,
      "jambonz": [
        {
          "causes": [
            "correction"
          ],
          "date": "2026-11-04",
          "delta": -4,
          "from": 49.4,
          "fromGrade": "D",
          "to": 45.4,
          "toGrade": "E"
        },
        {
          "causes": [
            "correction"
          ],
          "date": "2026-10-28",
          "delta": -0.1,
          "from": 49.5,
          "fromGrade": "D",
          "to": 49.4,
          "toGrade": "D"
        },
        {
          "causes": [
            "method"
          ],
          "date": "2026-10-27",
          "delta": 0.3,
          "from": 49.2,
          "fromGrade": "D",
          "to": 49.5,
          "toGrade": "D"
        }
      ]
    },
    "job": {
      "capability": "voice.calls",
      "name": "Phone calls"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/46elks-vs-bandwidth-voice.json",
        "title": "46elks Voice API vs Bandwidth Voice API + MCP",
        "url": "https://www.anchorterminal.com/compare/46elks-vs-bandwidth-voice"
      },
      {
        "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-exotel-voice.json",
        "title": "46elks Voice API vs Exotel Voice API + MCP",
        "url": "https://www.anchorterminal.com/compare/46elks-vs-exotel-voice"
      },
      {
        "json": "https://www.anchorterminal.com/compare/46elks-vs-infobip-calls.json",
        "title": "46elks Voice API vs Infobip Calls API + MCP",
        "url": "https://www.anchorterminal.com/compare/46elks-vs-infobip-calls"
      },
      {
        "json": "https://www.anchorterminal.com/compare/46elks-vs-livekit-telephony.json",
        "title": "46elks Voice API vs LiveKit Telephony",
        "url": "https://www.anchorterminal.com/compare/46elks-vs-livekit-telephony"
      },
      {
        "json": "https://www.anchorterminal.com/compare/46elks-vs-plivo-voice.json",
        "title": "46elks Voice API vs Plivo Voice API",
        "url": "https://www.anchorterminal.com/compare/46elks-vs-plivo-voice"
      },
      {
        "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/46elks-vs-sinch-voice.json",
        "title": "46elks Voice API vs Sinch Voice API + MCP",
        "url": "https://www.anchorterminal.com/compare/46elks-vs-sinch-voice"
      },
      {
        "json": "https://www.anchorterminal.com/compare/46elks-vs-telnyx-voice.json",
        "title": "46elks Voice API vs Telnyx Voice API + MCP",
        "url": "https://www.anchorterminal.com/compare/46elks-vs-telnyx-voice"
      },
      {
        "json": "https://www.anchorterminal.com/compare/46elks-vs-twilio-voice.json",
        "title": "46elks Voice API vs Twilio Programmable Voice API + MCP",
        "url": "https://www.anchorterminal.com/compare/46elks-vs-twilio-voice"
      },
      {
        "json": "https://www.anchorterminal.com/compare/46elks-vs-vonage-voice.json",
        "title": "46elks Voice API vs Vonage Voice API + MCP",
        "url": "https://www.anchorterminal.com/compare/46elks-vs-vonage-voice"
      },
      {
        "json": "https://www.anchorterminal.com/compare/46elks-vs-voximplant.json",
        "title": "46elks Voice API vs Voximplant",
        "url": "https://www.anchorterminal.com/compare/46elks-vs-voximplant"
      },
      {
        "json": "https://www.anchorterminal.com/compare/bandwidth-voice-vs-jambonz.json",
        "title": "Bandwidth Voice API + MCP vs jambonz",
        "url": "https://www.anchorterminal.com/compare/bandwidth-voice-vs-jambonz"
      },
      {
        "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-jambonz.json",
        "title": "Exotel Voice API + MCP vs jambonz",
        "url": "https://www.anchorterminal.com/compare/exotel-voice-vs-jambonz"
      },
      {
        "json": "https://www.anchorterminal.com/compare/infobip-calls-vs-jambonz.json",
        "title": "Infobip Calls API + MCP vs jambonz",
        "url": "https://www.anchorterminal.com/compare/infobip-calls-vs-jambonz"
      },
      {
        "json": "https://www.anchorterminal.com/compare/jambonz-vs-livekit-telephony.json",
        "title": "jambonz vs LiveKit Telephony",
        "url": "https://www.anchorterminal.com/compare/jambonz-vs-livekit-telephony"
      },
      {
        "json": "https://www.anchorterminal.com/compare/jambonz-vs-plivo-voice.json",
        "title": "jambonz vs Plivo Voice API",
        "url": "https://www.anchorterminal.com/compare/jambonz-vs-plivo-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/jambonz-vs-sinch-voice.json",
        "title": "jambonz vs Sinch Voice API + MCP",
        "url": "https://www.anchorterminal.com/compare/jambonz-vs-sinch-voice"
      },
      {
        "json": "https://www.anchorterminal.com/compare/jambonz-vs-telnyx-voice.json",
        "title": "jambonz vs Telnyx Voice API + MCP",
        "url": "https://www.anchorterminal.com/compare/jambonz-vs-telnyx-voice"
      },
      {
        "json": "https://www.anchorterminal.com/compare/jambonz-vs-twilio-voice.json",
        "title": "jambonz vs Twilio Programmable Voice API + MCP",
        "url": "https://www.anchorterminal.com/compare/jambonz-vs-twilio-voice"
      },
      {
        "json": "https://www.anchorterminal.com/compare/jambonz-vs-vonage-voice.json",
        "title": "jambonz vs Vonage Voice API + MCP",
        "url": "https://www.anchorterminal.com/compare/jambonz-vs-vonage-voice"
      },
      {
        "json": "https://www.anchorterminal.com/compare/jambonz-vs-voximplant.json",
        "title": "jambonz vs Voximplant",
        "url": "https://www.anchorterminal.com/compare/jambonz-vs-voximplant"
      },
      {
        "json": "https://www.anchorterminal.com/compare/46elks-vs-didww-voice-and-number-management.json",
        "title": "46elks Voice API vs DIDWW Voice and Number Management API",
        "url": "https://www.anchorterminal.com/compare/46elks-vs-didww-voice-and-number-management"
      },
      {
        "json": "https://www.anchorterminal.com/compare/didww-voice-and-number-management-vs-jambonz.json",
        "title": "DIDWW Voice and Number Management API vs jambonz",
        "url": "https://www.anchorterminal.com/compare/didww-voice-and-number-management-vs-jambonz"
      }
    ],
    "panel": null,
    "scores": [
      {
        "46elks": 47,
        "by": 9,
        "edge": "46elks",
        "jambonz": 38,
        "key": "reliability",
        "name": "Reliability",
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "46elks": 66,
        "by": 13,
        "edge": "46elks",
        "jambonz": 53,
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "weight": 13
      },
      {
        "46elks": 51,
        "by": 3,
        "edge": "jambonz",
        "jambonz": 54,
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "weight": 13
      },
      {
        "46elks": 40,
        "by": 0,
        "edge": "",
        "jambonz": 40,
        "key": "security",
        "name": "Security \u0026 auth",
        "weight": 14
      },
      {
        "46elks": 20,
        "by": 20,
        "edge": "jambonz",
        "jambonz": 40,
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "46elks": 12,
        "by": 66,
        "edge": "jambonz",
        "jambonz": 78,
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "weight": 7
      },
      {
        "46elks": 62,
        "by": 10,
        "edge": "46elks",
        "jambonz": 52,
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "weight": 7
      }
    ],
    "summary": "jambonz scores 45.4 (E) on agent readiness against 46elks Voice API's 44.4 (E), and leads in 3 of 7 scored categories. 46elks Voice API leads on reliability, schema \u0026 documentation and transparency \u0026 trust. Both do phone calls.",
    "tasks": null,
    "tutorials": [],
    "verdicts": {
      "46elks": "46elks publishes per-minute prices, an agent-oriented llms.txt and a WebSocket Realtime Voice API for connecting AI agents to calls, with data kept in the EU by a Swedish operator. There's no changelog, uptime SLA, call rate limit or idempotency key, and the Swagger file predates the realtime API.",
      "jambonz": "An llms.txt and Markdown pages cover the REST and WebSocket APIs, session prices are public and the SDKs shipped five tags in October 2026. No status page, security.txt or advisory was found, API keys carry no scopes, and server security fixes ship without advisories."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/46elks-vs-jambonz",
    "json": "https://www.anchorterminal.com/compare/46elks-vs-jambonz.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/46elks-vs-jambonz.md",
    "mcp": "https://www.anchorterminal.com/mcp",
    "slim": "https://www.anchorterminal.com/compare/46elks-vs-jambonz.min.md"
  },
  "markdown": "jambonz scores 45.4 (E) on agent readiness against 46elks Voice API's 44.4 (E), and leads in 3 of 7 scored categories. 46elks Voice API leads on reliability, schema \u0026 documentation and transparency \u0026 trust. Both do phone calls.\n\n- 46elks Voice API: grade E, 44.4/100, rank #1203 of 1486. Markdown https://www.anchorterminal.com/tools/46elks.md · JSON https://www.anchorterminal.com/api/v1/tools/46elks.json\n- jambonz: grade E, 45.4/100, rank #1180 of 1486. Markdown https://www.anchorterminal.com/tools/jambonz.md · JSON https://www.anchorterminal.com/api/v1/tools/jambonz.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### 46elks Voice API (E)\n\nGood for: European teams that want EU-resident calling and numbers with a simple REST API and a WebSocket bridge to an AI agent.\n\nAhead on:\n- Reliability, 47 against 38\n- Schema \u0026 documentation, 66 against 53\n- Transparency \u0026 trust, 62 against 52\n\nAlso in its favour:\n- A hosted endpoint, with nothing to install\n- No incidents deducted, where jambonz loses 3 points for them\n\nWatch for: No changelog or dated API release found\n\n### jambonz (E)\n\nGood for: Teams that already have a SIP carrier and speech and LLM vendors and want call control with flat session pricing, or that must run the voice layer in their own network.\n\nAhead on:\n- Payments \u0026 pricing, 40 against 20\n- Maintenance \u0026 community, 78 against 12\n\nAlso in its favour:\n- Open source\n\nWatch for: No status page, uptime SLA, security.txt, `SECURITY.md` or published advisory was found for jambonz.cloud or the repositories\n\n\n## Why the edge\n\n### Maintenance \u0026 community: jambonz +66\n\n- 46elks Voice API (12): No changelog, release notes or dated API change was found, the sitemap's newest blog post is from 2014, and the Swagger file predates Realtime Voice (0). No dated changes in the 90 days from 8 August (0). Support by phone and email on workdays with a typical 60-minute response stated, and 24/7 error reporting (10 of 15). No official SDK (0). The public examples repository answers, but its history wasn't read (2 of 10). 0+0+10+0+2 = 12.\n- jambonz (78): Releases read from depth-200 clones on 4 November. `@jambonz/sdk` was tagged v0.11.0 on 24 October, v0.12.0 on 27 October and v0.12.1 on 29 October, `jambonz-python-sdk` v0.4.0 on 24 October, and jambonz-api-server and jambonz-feature-server v0.9.15 on 23 October (30). From 6 August that is at least five tags across the listed packages and servers, with the 11.1.5 and 11.1.6 release notes of 24 September and 4 October per the 8 October check (20). Of the 30 newest open issues and pull requests on jambonz-feature-server, 10 had a comment per the 8 October check. GitHub's pages were not re-read (10 of 25). The Node.js SDK is current and the Python SDK is still marked Alpha (12 of 15). The API server runs lint and tests in CI on every push and pull request. We did not see the latest run's result (6 of 10). 30 + 20 + 10 + 12 + 6 = 78.\n\n### Payments \u0026 pricing: jambonz +20\n\n- 46elks Voice API (20): No x402, MPP or L402 (0). Per-minute prices by destination are public without login, also in kronor, with incoming calls free (20). No free credit; only SMS to the test number +46700000000 costs nothing, and accounts are prepaid or invoiced against a deposit (0). A person signs up in a browser and copies the credentials (0). 0+20+0+0 = 20.\n- jambonz (40): Scored on the hosted option, jambonz.cloud, with prices per the 8 October check, not re-read on 4 November under the terms pause. No x402, MPP or L402 found (0). Prices per concurrent session a month are public without a login for the cloud and for self-hosted licences (20). The Terms of Use (updated 13 October 2026) describe a 21-day trial that needs a name, company and email, and a subscription chosen when it ends, with payments through Stripe. No card is mentioned for the trial, so we counted it as needing none. The sign-up page is drawn by script and was not read (20). An account is created in a browser. `POST /ApiKeys` needs an existing token, so it does not help a new agent (0). 0 + 20 + 20 + 0 = 40.\n\n### Schema \u0026 documentation: 46elks Voice API +13\n\n- 46elks Voice API (66): A Swagger 2.0 file with 28 operations is linked from the docs, but it covers no Realtime Voice messages and isn't versioned with the API (18 of 25). An llms.txt written for agents, with a task-to-endpoint table and webhook payloads, while docs pages are HTML (10). Each docs page explains parameters and when webhooks fire, such as `voice_start` loading only once a call connects (14 of 20). Form-encoded parameters with types in the Swagger file and few enums (9 of 15). Examples in many languages and a JSON error shape, with no error list (10 of 15). The `/a1/` path, with no changelog found (5 of 15). 18+10+14+9+10+5 = 66.\n- jambonz (53): Per the 8 October check, not re-read on 4 November under the terms pause. OpenAPI 3.1 files and an AsyncAPI 2.6.0 file on docs.jambonz.org were read on 8 October, but no page read then or since was recorded as linking them as visible downloads, and the docs host is now paused, so they aren't counted as a published contract (0). llms.txt, per-section indexes and every page as Markdown (10). The verb pages explain use at length. Operation descriptions in the API reference are mostly one line (12 of 20). Enums for call status, direction and mid-call actions and required fields are marked in the reference. `to`, `call_hook`, `tag` and `amd` are objects, a partial held (11 of 15). The SDK and verb pages carry code examples. Errors are a single `msg` string, a partial held (8 of 15). The Node.js SDK adds `/v1` to the base URL it is given, and the changelog is dated with component version tables (12 of 15). 0 + 10 + 12 + 11 + 8 + 12 = 53.\n\n### Transparency \u0026 trust: 46elks Voice API +10\n\n- 46elks Voice API (62): Closed service with clear terms naming 46elks AB with its Swedish registration (15 of 30). The privacy policy gives concrete retention, 60 days of traffic data under Swedish law, 14 days of troubleshooting logs and a 90-day history for the customer, with EU storage, and a GDPR page and data protection page exist (24 of 30). No deprecation policy or dated notices found (0 of 20). Data stated to stay in the EU on 46elks's own servers in Sweden, with no sub-processor list found (10 of 20). 15+24+0+10 = 49.\n- jambonz (52): Per the 8 October check for the privacy policy and docs, not re-read on 4 November under the terms pause. The API server, feature server and SDKs are public under MIT. The product on jambonz.cloud and in the self-hosted packages is jambonz Commercial, which needs a licence key and whose terms forbid modifying its proprietary portions, while the docs still call jambonz open source (20 of 30). The privacy policy is dated 4 May 2021. It gives 30 days for usage data and an opt-out for call detail records. It says audio is never stored on jambonz servers, and the 11.1.6 notes of 4 October 2026 say support keeps SIP and RTP from calls for a few days, with an opt-out added in that release. No DPA was found (10 of 30). No deprecation policy was found. Removals are announced in the release that makes them, such as SMPP and five speech vendors in July and August 2026 (6 of 20). No sub-processor list was found. The policy says servers are in the United States and names a third-party billing partner. Telemetry from self-hosted instances is listed field by field (7 of 20). 20 + 10 + 6 + 7 = 43.\n\n### Reliability: 46elks Voice API +9\n\n- 46elks Voice API (47): Graded on the hosted REST and Realtime Voice APIs with the hosted lines. A status page exists, linked from 46elks.com/status on UptimeRobot (20). It draws its data by script from a path its robots.txt disallows, so no history was readable (5). SMS sending speed is documented in the FAQ, but no limit for calls, numbers or WebSocket sessions was found (5 of 15). llms.txt says to retry 5xx with exponential backoff and not to retry 4xx unchanged, with no Retry-After or idempotency for `POST /calls` (7 of 15). The SLA page commits to support hours and 24/7 error reporting with no uptime figure, and extended SLAs are by sales (0). Voice and Realtime Voice carry no beta label (10). 20+5+5+7+0+10 = 47.\n- jambonz (38): Graded as a hosted service, the API on jambonz.cloud, which the docs name as the simplest way to start. jambonz's Terms of Use (updated 13 October 2026) bar automated software that crawls or indexes any page of the website, so jambonz pages are per the 8 October check, not re-read on 4 November under the terms pause. No status page is linked from jambonz.org, the docs or the jambonz.cloud landing page (0), so there is no readable incident history (5). Rate limits are published with numbers, 600 requests per 5 minute fixed window per client IP address on the docs page, while the 11.1.6 notes of 4 October 2026 give 4,000 call creations and 600 call status reads a minute per account, a disagreement held as a partial (13 of 15). The API server's code sets `standardHeaders` on its limiter, so responses carry `RateLimit-*` headers including the reset, and a client over a limit receives 429. No backoff guidance or idempotency key was found for the REST API (10 of 15). No uptime SLA was found for jambonz.cloud. Support SLAs are sold only with Enterprise support for self-hosted systems (0). The REST and WebSocket APIs carry no beta label (10). 0 + 5 + 13 + 10 + 0 + 10 = 38.\n\n## Score by category\n\n| Category | Weight | 46elks Voice API | jambonz | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 47 | 38 | 46elks Voice API +9 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 66 | 53 | 46elks Voice API +13 |\n| Agent ergonomics | 13% (16.2 this run) | 51 | 54 | jambonz +3 |\n| Security \u0026 auth | 14% (17.5 this run) | 40 | 40 | even |\n| Payments \u0026 pricing | 10% (12.5 this run) | 20 | 40 | jambonz +20 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 12 | 78 | jambonz +66 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 62 | 52 | 46elks Voice API +10 |\n| Negative events | ≤15 | 0 | -3 | |\n| **Total** | | **44.4 · E** | **45.4 · E** | |\n\n## Facts side by side\n\n| Fact | 46elks Voice API | jambonz |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | 46elks AB | FirstFive8, Inc. |\n| Hosted endpoint | `https://api.46elks.com/a1` | no (local only) |\n| Transports | HTTP, websocket | HTTP |\n| Auth | API key | API key |\n| Pricing | Pay per use | Paid |\n| Price for phone calls | $0.017 per minute of call | not published |\n| x402 | no | no |\n| Licence | Proprietary service under the 46elks Terms of Service (effective 12 March 2024). Example code and the Swagger file are in the public 46elks-getting-started repository | Proprietary. jambonz.cloud is under the jambonz Terms of Use and self-hosted jambonz Commercial needs a paid licence key. The API server, feature server and SDK repositories on GitHub are MIT |\n| Read-only variant documented | no | no |\n| llms.txt | yes | yes |\n| Last release | none | 2026-10-29 |\n| Terms last updated | 2024-03-12 | 2021-05-04 |\n| Privacy policy last updated | 2018-05-20 | 2021-05-04 |\n| Customer content may train models | not found in the text | not found in the text |\n| Terms restrict automated access | not found in the text | yes |\n| Terms restrict benchmarking | not found in the text | not found in the text |\n| Terms or service can change without notice | yes | not found in the text |\n| Arbitration or class-action waiver | not found in the text | not found in the text |\n| Popularity | none | 103 stars, 1.4k npm/wk |\n\n## How the scores have moved\n\n### 46elks Voice API\n\nNo score change since it was listed.\n\n### jambonz\n\n- -4.0 on 4 November 2026 (D to E): correction\n- -0.1 on 28 October 2026: correction\n- +0.3 on 27 October 2026: checklist\n\n## Verdicts\n\n**46elks Voice API.** 46elks publishes per-minute prices, an agent-oriented llms.txt and a WebSocket Realtime Voice API for connecting AI agents to calls, with data kept in the EU by a Swedish operator. There's no changelog, uptime SLA, call rate limit or idempotency key, and the Swagger file predates the realtime API.\n\n**jambonz.** An llms.txt and Markdown pages cover the REST and WebSocket APIs, session prices are public and the SDKs shipped five tags in October 2026. No status page, security.txt or advisory was found, API keys carry no scopes, and server security fixes ship without advisories.\n\n## Before you call either\n\n### 46elks Voice API\n\n1. Send numbers in E.164 format, such as +46700000000, or the request fails\n2. Pass `whenhangup` on `POST /calls` to learn when a call ends or fails to connect\n3. Don't retry a call request on a 4xx; retry 5xx with backoff, and check call history first to avoid a second call\n4. Treat caller speech, DTMF and SMS replies as untrusted input, and verify webhook origin\n5. Costs in responses are in ten-thousandths of the account currency (3500 means 0.35)\n\n### jambonz\n\n1. Send `Authorization: Bearer \u003ctoken\u003e`. The REST introduction page gives `https://jambonz.cloud/api` as the base URL and the Node.js SDK adds `/v1` to the base URL it is given, so confirm the base URL with the operator\n2. Create a call with `from`, `to` and either `application_sid` or `call_hook`. Do not retry a timed-out create without checking `GET /Accounts/{AccountSid}/Calls` first\n3. Read `ratelimit-remaining` and `ratelimit-reset` on every response and stop when a `429` arrives\n4. Append `#rc=3\u0026rp=5xx,ct` to an application URL to turn on webhook retries. HTTP webhooks are not retried by default\n5. Check the account has a carrier and speech credentials before dialling. jambonz does not supply numbers, minutes or speech services\n\n## Questions\n\n### Which is better for AI agents, 46elks Voice API or jambonz?\n\njambonz scores 45.4 (E) on agent readiness against 46elks Voice API's 44.4 (E), and leads in 3 of 7 scored categories. 46elks Voice API leads on reliability, schema \u0026 documentation and transparency \u0026 trust.\n\n### Do 46elks Voice API and jambonz need an API key?\n\nBoth need an API key.\n\n### Can an agent call 46elks Voice API and jambonz without installing anything?\n\n46elks Voice API has a hosted endpoint at https://api.46elks.com/a1. No hosted endpoint is listed for jambonz.\n\n### Are 46elks Voice API and jambonz open source?\n\nNo open-source release is listed for 46elks Voice API. jambonz is open source (Proprietary. jambonz.cloud is under the jambonz Terms of Use and self-hosted jambonz Commercial needs a paid licence key. The API server, feature server and SDK repositories on GitHub are MIT).\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/46elks-vs-jambonz.json, and with the fewest tokens: https://www.anchorterminal.com/compare/46elks-vs-jambonz.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"46elks\", \"b\": \"jambonz\"}`. From a terminal: `anchor compare 46elks jambonz`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/46elks.json and https://www.anchorterminal.com/api/v1/tools/jambonz.json\n\n## Other comparisons with 46elks Voice API or jambonz\n\n- [46elks Voice API vs Bandwidth Voice API + MCP](https://www.anchorterminal.com/compare/46elks-vs-bandwidth-voice.md)\n- [46elks Voice API vs didlogic Voice API](https://www.anchorterminal.com/compare/46elks-vs-didlogic.md)\n- [46elks Voice API vs Exotel Voice API + MCP](https://www.anchorterminal.com/compare/46elks-vs-exotel-voice.md)\n- [46elks Voice API vs Infobip Calls API + MCP](https://www.anchorterminal.com/compare/46elks-vs-infobip-calls.md)\n- [46elks Voice API vs LiveKit Telephony](https://www.anchorterminal.com/compare/46elks-vs-livekit-telephony.md)\n- [46elks Voice API vs Plivo Voice API](https://www.anchorterminal.com/compare/46elks-vs-plivo-voice.md)\n- [46elks Voice API vs SignalWire Voice API](https://www.anchorterminal.com/compare/46elks-vs-signalwire-voice.md)\n- [46elks Voice API vs Sinch Voice API + MCP](https://www.anchorterminal.com/compare/46elks-vs-sinch-voice.md)\n- [46elks Voice API vs Telnyx Voice API + MCP](https://www.anchorterminal.com/compare/46elks-vs-telnyx-voice.md)\n- [46elks Voice API vs Twilio Programmable Voice API + MCP](https://www.anchorterminal.com/compare/46elks-vs-twilio-voice.md)\n- [46elks Voice API vs Vonage Voice API + MCP](https://www.anchorterminal.com/compare/46elks-vs-vonage-voice.md)\n- [46elks Voice API vs Voximplant](https://www.anchorterminal.com/compare/46elks-vs-voximplant.md)\n- [Bandwidth Voice API + MCP vs jambonz](https://www.anchorterminal.com/compare/bandwidth-voice-vs-jambonz.md)\n- [didlogic Voice API vs jambonz](https://www.anchorterminal.com/compare/didlogic-vs-jambonz.md)\n- [Exotel Voice API + MCP vs jambonz](https://www.anchorterminal.com/compare/exotel-voice-vs-jambonz.md)\n- [Infobip Calls API + MCP vs jambonz](https://www.anchorterminal.com/compare/infobip-calls-vs-jambonz.md)\n- [jambonz vs LiveKit Telephony](https://www.anchorterminal.com/compare/jambonz-vs-livekit-telephony.md)\n- [jambonz vs Plivo Voice API](https://www.anchorterminal.com/compare/jambonz-vs-plivo-voice.md)\n- [jambonz vs SignalWire Voice API](https://www.anchorterminal.com/compare/jambonz-vs-signalwire-voice.md)\n- [jambonz vs Sinch Voice API + MCP](https://www.anchorterminal.com/compare/jambonz-vs-sinch-voice.md)\n- [jambonz vs Telnyx Voice API + MCP](https://www.anchorterminal.com/compare/jambonz-vs-telnyx-voice.md)\n- [jambonz vs Twilio Programmable Voice API + MCP](https://www.anchorterminal.com/compare/jambonz-vs-twilio-voice.md)\n- [jambonz vs Vonage Voice API + MCP](https://www.anchorterminal.com/compare/jambonz-vs-vonage-voice.md)\n- [jambonz vs Voximplant](https://www.anchorterminal.com/compare/jambonz-vs-voximplant.md)\n- [46elks Voice API vs DIDWW Voice and Number Management API](https://www.anchorterminal.com/compare/46elks-vs-didww-voice-and-number-management.md)\n- [DIDWW Voice and Number Management API vs jambonz](https://www.anchorterminal.com/compare/didww-voice-and-number-management-vs-jambonz.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": "46elks Voice API vs jambonz",
        "url": ""
      }
    ],
    "description": "jambonz scores 45.4 (E) to 46elks Voice's 44.4 (E) for phone calls. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "46elks Voice API E 44.4",
      "jambonz E 45.4",
      "scores"
    ],
    "h1": "46elks Voice API vs jambonz",
    "image": "https://www.anchorterminal.com/assets/og/default.png",
    "path": "/compare/46elks-vs-jambonz",
    "published": "2026-10-01",
    "section": "tools",
    "title": "46elks Voice vs jambonz for AI agents in 2026: scores and prices",
    "toc": null,
    "updated": "2026-11-07",
    "url": "https://www.anchorterminal.com/compare/46elks-vs-jambonz"
  },
  "tokens": {
    "markdown": 4750,
    "slim": 2680
  },
  "version": 1
}
