<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:base="https://developers.contactivity.io/">
  <title>Contactivity Developers changelog</title>
  <id>https://developers.contactivity.io/changelog/</id>
  <link href="https://developers.contactivity.io/changelog/"/>
  <link rel="self" href="https://developers.contactivity.io/changelog.xml"/>
  <updated>2026-10-29T00:00:00Z</updated>
  <entry>
    <id>https://developers.contactivity.io/changelog/#2026-10-29-voice-billing</id>
    <title>Forwarding, recording and number billing</title>
    <updated>2026-10-29T00:00:00Z</updated>
    <link href="https://developers.contactivity.io/changelog/#2026-10-29-voice-billing"/>
    <category term="billing"/>
    <category term="voice"/>
    <content type="html">&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Forwarded calls&lt;/strong&gt; are billed per leg: the inbound leg at the number&amp;#39;s inbound rate, the outbound leg at the
destination&amp;#39;s rate.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Forwards between Contactivity numbers&lt;/strong&gt; stay on our network, billed at the &lt;code&gt;programmable_voice_sip&lt;/code&gt; rate. Each
number in a chain pays its own legs. More than 3 forwards in a row is refused with &lt;code&gt;482 Loop Detected&lt;/code&gt;, and nothing
is charged.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;BYOC numbers&lt;/strong&gt; go on to their route&amp;#39;s fallback only when you turn it on: &lt;code&gt;fallback: true&lt;/code&gt; on the number, or
&lt;strong&gt;Use fallback route&lt;/strong&gt; in the portal. It is off by default.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Recording&lt;/strong&gt; is charged per recorded minute when a recording completes. &lt;strong&gt;Storage&lt;/strong&gt; is free for 90 days, then
charged each month per stored minute.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;E911&lt;/strong&gt; shows as its own line in a number&amp;#39;s monthly price.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Ledger&lt;/strong&gt; amounts show 4 decimals, rounded up; your balance keeps 6.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;See &lt;a href="/guides/billing/"&gt;Billing&lt;/a&gt; and &lt;a href="/guides/byoc/#numbers"&gt;Bring your own carrier&lt;/a&gt;.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://developers.contactivity.io/changelog/#2026-10-28-account-tiers</id>
    <title>Simpler account tiers</title>
    <updated>2026-10-28T00:00:00Z</updated>
    <link href="https://developers.contactivity.io/changelog/#2026-10-28-account-tiers"/>
    <category term="account"/>
    <content type="html">&lt;p&gt;Tier 2 now needs only a card and a first payment. Identity verification moves to tier 3, and proof of address
is no longer a tier step: some countries still ask for it before you buy their numbers.&lt;/p&gt;
&lt;div class="table-wrap"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tier&lt;/th&gt;
&lt;th&gt;Needs&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;1 (sandbox)&lt;/td&gt;
&lt;td&gt;Verified email. Calls go only to your verified numbers&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;A card and a first payment&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Identity verification&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Business verification&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;Limits per tier are unchanged. International calling still needs tier 3 and an approved request. Accounts keep
their current tier. &lt;code&gt;403 kyc_required&lt;/code&gt; on starting a caller ID verification now means a sandbox account
already has 4 verified numbers.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://developers.contactivity.io/changelog/#2026-10-25-docs-for-agents</id>
    <title>Changelog, llms.txt and Markdown pages</title>
    <updated>2026-10-25T00:00:00Z</updated>
    <link href="https://developers.contactivity.io/changelog/#2026-10-25-docs-for-agents"/>
    <category term="docs"/>
    <content type="html">&lt;p&gt;Every guide is available as Markdown: add &lt;code&gt;.md&lt;/code&gt; to its URL. Coding agents can read &lt;code&gt;/llms.txt&lt;/code&gt; for an index and
&lt;code&gt;/llms-full.txt&lt;/code&gt; for every guide in one file. The changelog has an Atom feed at &lt;code&gt;/changelog.xml&lt;/code&gt;.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://developers.contactivity.io/changelog/#2026-10-24-voice-products</id>
    <title>Voice products and per-leg pricing</title>
    <updated>2026-10-24T00:00:00Z</updated>
    <link href="https://developers.contactivity.io/changelog/#2026-10-24-voice-products"/>
    <category term="billing"/>
    <category term="breaking"/>
    <content type="html">&lt;p&gt;Each call leg is billed as one product: &lt;code&gt;sip_trunking&lt;/code&gt;, &lt;code&gt;programmable_voice&lt;/code&gt;, &lt;code&gt;programmable_voice_sip&lt;/code&gt;,
&lt;code&gt;byoc_sip_trunking&lt;/code&gt; or &lt;code&gt;byoc_programmable_voice&lt;/code&gt;. Legs are billed per 60 seconds, rounded up, unless your
agreement says otherwise.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Calls, carrier legs and CDRs have a &lt;code&gt;product&lt;/code&gt; field. &lt;code&gt;GET /cdrs&lt;/code&gt; filters by &lt;code&gt;product&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GET /pricing&lt;/code&gt; lists prices per product under &lt;code&gt;products&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GET /pricing/check&lt;/code&gt; takes &lt;code&gt;product&lt;/code&gt; (default &lt;code&gt;sip_trunking&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Usage lines are &lt;code&gt;&amp;lt;product&amp;gt;_inbound&lt;/code&gt; and &lt;code&gt;&amp;lt;product&amp;gt;_outbound&lt;/code&gt;, replacing &lt;code&gt;voice_inbound&lt;/code&gt; and &lt;code&gt;voice_outbound&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;See &lt;a href="/guides/billing/#products"&gt;Products&lt;/a&gt; and &lt;a href="/guides/voice-apps/#pricing"&gt;Pricing&lt;/a&gt;.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://developers.contactivity.io/changelog/#2026-10-24-verified-numbers</id>
    <title>Caller IDs are now verified numbers</title>
    <updated>2026-10-24T00:00:00Z</updated>
    <link href="https://developers.contactivity.io/changelog/#2026-10-24-verified-numbers"/>
    <category term="numbers"/>
    <category term="breaking"/>
    <content type="html">&lt;p&gt;Verified caller IDs are renamed to verified numbers across the API:&lt;/p&gt;
&lt;div class="table-wrap"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Before&lt;/th&gt;
&lt;th&gt;Now&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/caller-ids&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/verified-numbers&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/caller-ids/{caller_id}&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/verified-numbers/{verified_number}&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;/caller-ids/verifications&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;/verified-numbers/verifications&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;caller_ids:read&lt;/code&gt;, &lt;code&gt;caller_ids:write&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;verified_numbers:read&lt;/code&gt;, &lt;code&gt;verified_numbers:write&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;403 caller_id_blocked&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;403 verified_number_blocked&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;409 caller_id_exists&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;409 verified_number_exists&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;Existing keys keep their access under the new scope names. See &lt;a href="/guides/numbers/#verified-numbers"&gt;Verified numbers&lt;/a&gt;.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://developers.contactivity.io/changelog/#2026-10-24-ring-strategy</id>
    <title>Ring strategies for registered devices</title>
    <updated>2026-10-24T00:00:00Z</updated>
    <link href="https://developers.contactivity.io/changelog/#2026-10-24-ring-strategy"/>
    <category term="sip"/>
    <content type="html">&lt;p&gt;&lt;code&gt;register&lt;/code&gt; trunks take a &lt;code&gt;ring_strategy&lt;/code&gt; (&lt;code&gt;ring_all&lt;/code&gt;, &lt;code&gt;sequential&lt;/code&gt;, &lt;code&gt;round_robin&lt;/code&gt;, &lt;code&gt;longest_idle&lt;/code&gt;, &lt;code&gt;random&lt;/code&gt;) and
&lt;code&gt;ring_secs&lt;/code&gt;. Set the ring order of credentials with &lt;code&gt;PUT /trunks/{trunk_id}/credentials/order&lt;/code&gt; or each
credential&amp;#39;s &lt;code&gt;position&lt;/code&gt;. See &lt;a href="/guides/trunks-routes/#ring-strategy"&gt;Ring strategy&lt;/a&gt;.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://developers.contactivity.io/changelog/#2026-10-24-call-quality-source</id>
    <title>Call quality per leg shows its source</title>
    <updated>2026-10-24T00:00:00Z</updated>
    <link href="https://developers.contactivity.io/changelog/#2026-10-24-call-quality-source"/>
    <category term="voice"/>
    <content type="html">&lt;p&gt;Each leg in a call&amp;#39;s &lt;code&gt;quality&lt;/code&gt; has a &lt;code&gt;source&lt;/code&gt;: &lt;code&gt;engine&lt;/code&gt; when the voice engine measured the leg, &lt;code&gt;relay&lt;/code&gt; when the
call was relayed without the voice engine, such as most SIP trunk calls. MOS, jitter, packet loss and round-trip
time read the same either way. See &lt;a href="/guides/calls/"&gt;Calls&lt;/a&gt;.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://developers.contactivity.io/changelog/#2026-10-24-byoc</id>
    <title>Bring your own carrier</title>
    <updated>2026-10-24T00:00:00Z</updated>
    <link href="https://developers.contactivity.io/changelog/#2026-10-24-byoc"/>
    <category term="voice"/>
    <category term="byoc"/>
    <content type="html">&lt;p&gt;Connect your own carrier to send and receive calls through Contactivity: &lt;code&gt;/byoc/carriers&lt;/code&gt; with gateways, source
IPs, numbers and 911 routing. BYOC calls work from SIP trunks and voice apps and are billed a platform fee per
minute, with no phone network rate.&lt;/p&gt;
&lt;p&gt;Creating or changing carriers and numbers needs account tier 2 (&lt;code&gt;403 tier_required&lt;/code&gt;). New scopes: &lt;code&gt;byoc:read&lt;/code&gt;,
&lt;code&gt;byoc:write&lt;/code&gt;. See &lt;a href="/guides/byoc/"&gt;Bring your own carrier&lt;/a&gt;.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://developers.contactivity.io/changelog/#2026-10-24-account-tiers</id>
    <title>Account tiers and limits</title>
    <updated>2026-10-24T00:00:00Z</updated>
    <link href="https://developers.contactivity.io/changelog/#2026-10-24-account-tiers"/>
    <category term="account"/>
    <content type="html">&lt;p&gt;Accounts move up four tiers as they complete verification steps:&lt;/p&gt;
&lt;div class="table-wrap"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tier&lt;/th&gt;
&lt;th&gt;Needs&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;&lt;tr&gt;
&lt;td&gt;1 (sandbox)&lt;/td&gt;
&lt;td&gt;Verified email. Calls go only to your verified numbers&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;A card, a first payment and identity verification&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Proof of address&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Business verification&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;&lt;/table&gt;&lt;/div&gt;
&lt;p&gt;Each tier raises calls per second, concurrent calls and spend limits. &lt;code&gt;GET /limits&lt;/code&gt; returns the project&amp;#39;s
current limits and today&amp;#39;s spend. Calls per second and concurrent calls are account limits: setting &lt;code&gt;cps_limit&lt;/code&gt;
or &lt;code&gt;session_limit&lt;/code&gt; on a trunk is refused. See &lt;a href="/guides/trunks-routes/#limits"&gt;Limits&lt;/a&gt;.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <id>https://developers.contactivity.io/changelog/#2026-10-22-native-api</id>
    <title>Native Contactivity API</title>
    <updated>2026-10-22T00:00:00Z</updated>
    <link href="https://developers.contactivity.io/changelog/#2026-10-22-native-api"/>
    <category term="api"/>
    <content type="html">&lt;p&gt;The native API is live under &lt;code&gt;https://api.contactivity.io/v1/projects/{project_id}/...&lt;/code&gt;: calls and call actions,
recordings, conferences, queues, numbers, SIP trunks and routes, voice apps, flows, billing, events and webhooks.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;One API key per project, with scopes per resource. See the &lt;a href="/guides/overview/#authentication"&gt;Overview&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Prices are money objects: &lt;code&gt;{&amp;quot;amount&amp;quot;: &amp;quot;0.0140&amp;quot;, &amp;quot;currency&amp;quot;: &amp;quot;USD&amp;quot;}&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Number search and ordering are part of the native API. See &lt;a href="/guides/numbers/"&gt;Numbers&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Events and signed webhooks, with a delivery log and error debugger. See &lt;a href="/guides/events/"&gt;Events and webhooks&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;OpenAPI 3.1 spec and SDKs: &lt;code&gt;@contactivity/sdk&lt;/code&gt; (Node) and &lt;code&gt;contactivity_sdk&lt;/code&gt; (Python).&lt;/li&gt;
&lt;/ul&gt;
</content>
  </entry>
  <entry>
    <id>https://developers.contactivity.io/changelog/#2026-10-22-compat-prefix</id>
    <title>Twilio and Telnyx compatible routes move under /compat</title>
    <updated>2026-10-22T00:00:00Z</updated>
    <link href="https://developers.contactivity.io/changelog/#2026-10-22-compat-prefix"/>
    <category term="compatibility"/>
    <category term="breaking"/>
    <content type="html">&lt;p&gt;The Twilio and Telnyx compatible URL layouts are served under &lt;code&gt;/compat/{vendor}&lt;/code&gt;. Set your SDK base URL to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Twilio REST: &lt;code&gt;https://api.contactivity.io/compat/twilio&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Telnyx Call Control v2 and TeXML: &lt;code&gt;https://api.contactivity.io/compat/telnyx/v2&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The unprefixed layouts (&lt;code&gt;/2010-04-01/...&lt;/code&gt;, &lt;code&gt;/v2/...&lt;/code&gt;) are no longer served. See
&lt;a href="/guides/compat-migration/"&gt;Migrating from Twilio or Telnyx&lt;/a&gt;.&lt;/p&gt;
</content>
  </entry>
</feed>
