From 0ccf46f9adfab40ede652d974a686717742aa221 Mon Sep 17 00:00:00 2001 From: yechang hu Date: Mon, 14 Sep 2026 16:01:18 +0800 Subject: [PATCH 1/2] docs: add September 14 concurrency and billing updates --- content/guides/changelog.mdx | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/content/guides/changelog.mdx b/content/guides/changelog.mdx index 713a68a..c61b8e0 100644 --- a/content/guides/changelog.mdx +++ b/content/guides/changelog.mdx @@ -3,6 +3,24 @@ title: What's New description: Track CALL-E Developer API and SDK product updates. --- +## September 14, 2026 + +**Updated concurrent call limits:** The shared number pool supports 1 simultaneous +call, purchased numbers support 10 simultaneous calls, and SIP integrations have +no CALL-E-imposed concurrent call limit. These limits refer to calls active at the +same time, not call initiation rate (calls per second, or CPS). + +**Updated billing model:** Calls are now billed in 10-second increments, with total +cost consisting of a Call fee and a Success fee. The Call fee covers actual carrier +charges and model resource usage, including a small preparation and pre-connection +model cost even when a call is not connected. + +The Success fee applies only when the task's defined business success criteria are +met. A connected call, an answered call, or a completed conversation alone does not +qualify as success. For example, a reservation task succeeds only when the requested +booking is confirmed—not simply when someone answers or discusses availability. +Call fees may still apply when those success criteria are not met. + ## September 10, 2026 **Windows-compatible agent commands:** Updated agent integrations now run correctly From 9175d3a4ee114b89345cffb6ab40db5ec8f00fef Mon Sep 17 00:00:00 2001 From: "lin.si" Date: Mon, 14 Sep 2026 16:19:50 +0800 Subject: [PATCH 2/2] fix(docs): align region table with upstream default line column --- src/regions.mjs | 2 +- tests/docs-site.spec.ts | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/regions.mjs b/src/regions.mjs index 84de1e1..8e3a050 100644 --- a/src/regions.mjs +++ b/src/regions.mjs @@ -18,7 +18,7 @@ export function extractRegions(readme) { !rows || rows.length < 3 || rows[0] !== - "| Country | Country Code | Calling Code | Languages | Line Region |" || + "| Country | Country Code | Calling Code | Languages | Default Line |" || !/^\|(?:[ \t]*:?-+:?[ \t]*\|){5}$/.test(rows[1]) || rows.some((row) => row.split("|").length !== 7) || rows.slice(2).some((row) => diff --git a/tests/docs-site.spec.ts b/tests/docs-site.spec.ts index da7e116..d7d7c9e 100644 --- a/tests/docs-site.spec.ts +++ b/tests/docs-site.spec.ts @@ -51,7 +51,7 @@ test("serves prerendered guides on clean URLs", async ({ page, request }) => { const regionSection = `Use these country codes with recipient settings. -| Country | Country Code | Calling Code | Languages | Line Region | +| Country | Country Code | Calling Code | Languages | Default Line | | --- | --- | --- | --- | --- | | Updated test destination | ZZ | +999 | Test language | International | @@ -95,6 +95,7 @@ test("refreshes region coverage without rebuilding the docs", async ({ page }) = body: regionsReadme, })); await page.goto("/regions"); + await expect(page.getByRole("columnheader", { name: "Default Line" })).toBeVisible(); await expect(page.getByRole("cell", { name: "Updated test destination" })).toBeVisible(); await expect(page.getByRole("cell", { name: "Test language" })).toBeVisible(); await expect(page.getByText("Unrelated examples.")).toHaveCount(0); @@ -112,7 +113,7 @@ test("refreshes region coverage without rebuilding the docs", async ({ page }) = test("retains a readable region snapshot when refresh fails", async ({ page, request }) => { await page.setViewportSize({ width: 390, height: 844 }); - const tableHeader = "| Country | Country Code | Calling Code | Languages | Line Region |"; + const tableHeader = "| Country | Country Code | Calling Code | Languages | Default Line |"; const html = await request.get("/regions"); expect(await html.text()).toContain("