Changelog

This changelog lists API changes introduced in version 2026-04-16.

New Endpoints

/v3/did_history added read endpoints

/v3/did_history read endpoints are available.

What changed

  • Added GET /v3/did_history.

  • Added GET /v3/did_history/{id}.

  • The resource returns DID history records from the last 90 days.

  • The default sort order is created_at in descending order.

  • Pagination defaults to 50 records per page.

  • GET /v3/did_history supports filtering by id, did_number, action, method, created_at_gteq, and created_at_lteq.

  • GET /v3/did_history supports sorting by created_at.

Behavior notes

  • Records are sourced from events shown on the billing Histories page.

  • Supported action values are assigned, renewed, canceled, removed, billing_cycles_count_changed, and restored.

  • Supported method values are system, api2, api3, staff, and user_panel.

  • Records with action = billing_cycles_count_changed also return meta.from and meta.to.

  • id is the UUID of the DID history event.

  • Older billing history records in the 90-day window are backfilled with UUID values.

Affected resources

/v3/emergency_calling_services added read and delete endpoints

/v3/emergency_calling_services read and delete endpoints are available.

What changed

  • Added GET /v3/emergency_calling_services.

  • Added GET /v3/emergency_calling_services/{id}.

  • Added DELETE /v3/emergency_calling_services/{id}.

  • Emergency calling service responses include name, reference, status, activated_at, canceled_at, created_at, and renew_date.

  • Responses include meta.setup_price and meta.monthly_price.

  • Supported relationships are country, did_group_type, order, emergency_requirement, emergency_verification, and dids.

  • Collection filters include status, country.id, did_group_type.id, name, reference, address.id, and identity.id.

  • Collection sorting includes name, status, country.name, renew_date, and created_at.

Affected resources

/v3/emergency_requirement_validations added write endpoint

/v3/emergency_requirement_validations write endpoint is available.

What changed

  • Added POST /v3/emergency_requirement_validations.

  • The request validates an address and / or identity against a selected emergency_requirement.

  • Successful validation returns a JSON:API resource with type emergency_requirement_validations.

  • Validation failures return JSON:API 422 error objects.

Affected resources

/v3/emergency_requirements added read endpoints

/v3/emergency_requirements read endpoints are available.

What changed

  • Added GET /v3/emergency_requirements.

  • Added GET /v3/emergency_requirements/{id}.

  • Emergency requirement responses include identity_type, address_area_level, personal_area_level, business_area_level, address_mandatory_fields, personal_mandatory_fields, business_mandatory_fields, estimate_setup_time, and requirement_restriction_message.

  • Responses include meta.setup_price and meta.monthly_price.

  • Supported relationships are country and did_group_type.

  • Collection filters include id, country.id, and did_group_type.id.

Behavior notes

  • meta.setup_price is returned as 0 when the customer’s emergency plan has a matching rate for the requirement, even if the configured setup price is greater than zero.

  • meta.monthly_price returns the monthly price from the matching emergency plan rate.

  • meta.setup_price and meta.monthly_price are both null when the customer has no matching emergency plan rate for that country and DID group type.

Affected resources

/v3/emergency_verifications added read, write, and update endpoints

/v3/emergency_verifications read, write, and update endpoints are available.

What changed

  • Added GET /v3/emergency_verifications.

  • Added GET /v3/emergency_verifications/{id}.

  • Added POST /v3/emergency_verifications for create and resubmission flows.

  • Added PATCH /v3/emergency_verifications/{id}.

  • Only external_reference_id can be updated through the emergency verification update flow.

  • Emergency verification responses include reference, status, reject_reasons, reject_comment, callback_url, callback_method, created_at, and external_reference_id.

  • Supported relationships are address, emergency_calling_service, and dids.

  • Collection filters include status and emergency_calling_service.id.

Behavior notes

  • The verification flow supports creating a new Emergency Calling Service by sending address plus dids.

  • The same endpoint supports resubmitting / updating an existing calling service by sending emergency_calling_service plus address.

  • Emergency Calling Services support filtering by address.id and identity.id of the last linked verification.

  • Requests can return per-DID validation errors under pointers like /data/relationships/dids/{uuid}.

Affected resources

Breaking Changes

/v3/requirement_validations changed to /v3/address_requirement_validations

/v3/requirement_validations is renamed to /v3/address_requirement_validations.

Why this is a breaking change

Requests sent to the previous validation endpoint are no longer valid..

What changed

  • Renamed POST /v3/requirement_validations to POST /v3/address_requirement_validations.

  • Requests to the previous endpoint path now return 400 Bad Request.

Affected resources

Upgrade

  • Replace /v3/requirement_validations with /v3/address_requirement_validations in validation requests and tests.

/v3/requirements changed to /v3/address_requirements

/v3/requirements is renamed to /v3/address_requirements.

Why this is a breaking change

Requests sent to the previous requirements endpoints are no longer valid.

What changed

  • Renamed GET /v3/requirements to GET /v3/address_requirements.

  • Renamed GET /v3/requirements/{id} to GET /v3/address_requirements/{id}.

  • Requests to the previous endpoint path now return 400 Bad Request.

Affected resources

Upgrade

  • Replace /v3/requirements with /v3/address_requirements in all requests, tests, and internal references.

/v3/address_requirement_validations rename requirement relationship to address_requirement

/v3/address_requirement_validations now uses address_requirement instead of requirement for this relationship.

Why this is a breaking change

Integrations that still send or parse the requirement relationship must switch to address_requirement.

What changed

  • Renamed the requirement relationship in validation payloads to address_requirement.

  • DID group responses also use address_requirement in place of the previous requirement relationship name.

  • The JSON:API resource type now uses address_requirements / address_requirement_validations.

Affected resources

Upgrade

  • Replace the requirement relationship key with address_requirement in request payloads and response parsing.

  • Update JSON:API type values and fixtures accordingly.

/v3/address_verifications attribute reject_reasons changed from string to array of strings

/v3/address_verifications now returns reject_reasons as an array of strings.

Why this is a breaking change

Integrations that still parse reject_reasons as a single string must update their response handling.

What changed

  • reject_reasons is now returned as an array of strings instead of a single string.

Affected resources

Upgrade

  • Update response parsing, serializers, and tests to treat reject_reasons as an array.

/v3/available_dids filter did_group.features no longer include sms_out value

/v3/available_dids no longer supports sms_out for the did_group.features filter.

Why this is a breaking change

Requests that still use sms_out in filter[did_group.features] must be updated to the supported values.

What changed

  • GET /v3/available_dids?filter[did_group.features] no longer accepts sms_out.

Affected resources

Upgrade

  • Replace sms_out in available DID feature filtering with the supported values.

/v3/dids filter did_group.features no longer includes sms_out value

/v3/dids no longer supports sms_out for the did_group.features filter.

Why this is a breaking change

Requests that still use sms_out in DID feature filtering must be updated to the supported values.

What changed

  • GET /v3/dids?filter[did_group.features] no longer accepts sms_out.

Affected resources

Upgrade

  • Replace sms_out in DID feature filters with the supported values.

/v3/did_groups features attribute and filter no longer include sms_out value

/v3/did_groups features attribute and filter no longer include sms_out value.

Why this is a breaking change

Integrations that still read or send sms_out in DID group feature values or feature filters must switch to the updated feature set.

What changed

  • DID group features no longer include sms_out.

  • DID group feature filtering no longer accepts sms_out.

Affected resources

Upgrade

  • Remove sms_out from DID group feature parsing and feature filters.

  • Update any typed models or tests that still expect sms_out.

/v3/did_reservations attribute expire_at renamed to expires_at

/v3/did_reservations now uses expires_at instead of expire_at.

Why this is a breaking change

Integrations that still read expire_at from DID reservation responses must switch to expires_at.

What changed

  • Renamed the DID reservation expiry attribute from expire_at to expires_at.

  • GET and POST DID reservation responses now return expires_at.

Affected resources

Upgrade

  • Replace expire_at with expires_at in response parsing, typed models, and tests.

/v3/encrypted_files attribute expire_at renamed to expires_at

/v3/encrypted_files now uses expires_at instead of expire_at.

Why this is a breaking change

Integrations that still read expire_at from encrypted file responses must switch to expires_at.

What changed

  • Renamed the encrypted file expiry attribute from expire_at to expires_at.

  • GET /v3/encrypted_files now returns expires_at.

  • GET /v3/encrypted_files/{id} now returns expires_at.

Affected resources

Upgrade

  • Replace expire_at with expires_at in response parsing, typed models, and tests.

/v3/encrypted_files POST request body format changed: single file per request instead of batch items array

/v3/encrypted_files now uses the updated POST request body format.

Why this is a breaking change

API no longer uses the legacy batch request format or plain JSON response bodies for POST /v3/encrypted_files.

What changed

  • POST /v3/encrypted_files now accepts flat single-file parameters: - encrypted_files[encryption_fingerprint] - encrypted_files[description] - encrypted_files[file]

  • POST /v3/encrypted_files now returns a JSON:API resource object on success.

  • POST /v3/encrypted_files now returns JSON:API error objects for 400 and 422 responses.

  • Legacy batch parameters such as encrypted_files[items][][file] are not supported.

Affected resources

Upgrade

  • Stop sending legacy batch parameters such as encrypted_files[items][][file].

  • Send exactly one file per request using encrypted_files[file].

  • Parse successful and error responses as JSON:API documents.

/v3/exports filters year and month replaced with from and to datetime filters for cdr_in and cdr_out export types

/v3/exports now uses from and to datetime filters for cdr_in and cdr_out export types instead of year and month.

Why this is a breaking change

Requests that still use the previous year and month filters for cdr_in and cdr_out exports must be updated.

What changed

  • Replaced the previous year and month filters with from and to datetime filters for cdr_in and cdr_out export types.

Affected resources

Upgrade

  • Replace year and month with from and to in export creation and filtering workflows.

/v3/voice_out_trunks attributes allowed_sip_ips, allowed_rtp_ips, username, password removed in favor of authentication_method object

/v3/voice_out_trunks now uses authentication_method object instead of the previous attributes.

Why this is a breaking change

Integrations must stop reading or writing top-level authentication fields and must move authentication handling into authentication_method. allowed_rtp_ips is now handled as a top-level outbound trunk attribute.

What changed

  • Added the authentication_method object with supported types credentials_and_ip, ip_only, and twilio.

  • GET endpoints return authentication data only inside authentication_method.

  • allowed_rtp_ips is now a top-level outbound trunk attribute.

  • Changing the authentication type clears the previous authentication attributes.

  • PATCH /v3/voice_out_trunks/{id} does not allow changing authentication_method.type to ip_only.

Behavior notes

  • credentials_and_ip returns allowed_sip_ips, tech_prefix, username, and password inside authentication_method.attributes.

  • ip_only returns allowed_sip_ips and tech_prefix inside authentication_method.attributes and does not return credentials.

  • twilio returns only twilio_account_sid inside authentication_method.attributes.

Affected resources

Upgrade

  • Move outbound trunk authentication parsing and request building into authentication_method.

  • Move any allowed_rtp_ips handling to data.attributes.allowed_rtp_ips.

  • Update tests and serializers to stop expecting flat authentication fields.

multiple resources attribute values standardized to lowercase snake_case format

Multiple APIv3 resources now use lowercase snake_case values consistently in responses, write requests, filters, and sorting-related value descriptions.

Why this is a breaking change

Integrations that still send or parse Title Case, uppercase, or space-separated values must update to the normalized lowercase snake_case values.

What changed

  • Order statuses now use pending, completed, and canceled.

  • Export statuses now use pending, processing, and completed.

  • Address verification statuses now use pending, approved, and rejected.

  • Emergency Calling Service statuses now use new, in_process, changes_required, active, pending_update, and canceled.

  • Outbound trunk status and enum-like attributes now use lowercase snake_case values such as active, blocked, reject_call, replace_cli, send_original_cli, allow_all, reject_all, disabled, srtp_sdes, srtp_dtls, and zrtp.

  • Identity types now use personal and business.

  • Callback methods now use get and post.

  • Requirement area-level values now use world_wide, country, area, and city where applicable.

Behavior notes

  • The normalization applies to GET responses, supported POST / PATCH request values, filter values, and the documented value sets used in collection sorting and query parameter tables.

  • Values that were already using lowercase snake_case, such as cdr_in, cdr_out, voice_in and credentials_and_ip, are unchanged.

Affected resources

Upgrade

  • Update request payloads, filter values, response parsing, fixtures, and tests to use lowercase snake_case values only.

  • Treat previous Title Case, uppercase, and space-separated values as obsolete.

Enhancements

/v3/address_verifications attribute external_reference_id added

/v3/address_verifications now supports external_reference_id.

What changed

  • Added external_reference_id to address verification requests and responses.

  • external_reference_id is optional and has a maximum length of 100 characters.

Affected resources

/v3/address_verifications added update endpoint

PATCH /v3/address_verifications/{id} is available and only external_reference_id can be changed.

What changed

  • Added PATCH /v3/address_verifications/{id}.

  • Only external_reference_id can be updated through the address verification update flow.

Affected resources

/v3/address_verifications attribute reject_comment added

/v3/address_verifications now supports reject_comment.

What changed

  • Added reject_comment to address_verifications responses.

  • Added reject_comment to emergency_verifications responses.

  • Address verification callbacks now include reject_comment alongside the rejection fields.

  • Emergency verification callbacks now include reject_comment alongside the rejection fields.

Behavior notes

  • reject_comment provides the detailed compliance comment shown for rejected verifications.

Affected resources

/v3/addresses attribute external_reference_id added

/v3/addresses now supports external_reference_id.

What changed

  • Added external_reference_id to address requests and responses.

  • Added exact-match external_reference_id filtering on collection responses where supported.

  • external_reference_id is optional and has a maximum length of 100 characters.

Affected resources

/v3/available_dids filter did_group.features support new values emergency, cnam_out, a2p and p2p

/v3/available_dids now supports additional values for the did_group.features filter.

What changed

  • GET /v3/available_dids?filter[did_group.features] now supports emergency.

  • GET /v3/available_dids?filter[did_group.features] now supports cnam_out.

  • GET /v3/available_dids?filter[did_group.features] now supports a2p and p2p.

Affected resources

/v3/did_groups attribute service_restrictions added

/v3/did_groups now supports service_restrictions.

What changed

  • Added the service_restrictions attribute to DID group responses.

  • service_restrictions returns the DID group service restriction message when restrictions apply.

  • service_restrictions can be null when no restriction message applies.

Affected resources

/v3/did_groups features attribute and filter support new values emergency, cnam_out, a2p and p2p

/v3/did_groups features attribute and filter support new values emergency, cnam_out, a2p and p2p.

What changed

  • DID group features now support emergency.

  • DID group features now support cnam_out.

  • DID group features now support a2p and p2p for outbound messaging capabilities.

  • GET /v3/did_groups?filter[features]=emergency filters DID groups that support the emergency feature.

Affected resources

/v3/dids attribute emergency_enabled added

/v3/dids now supports emergency_enabled.

What changed

  • Added the emergency_enabled attribute to DID responses.

  • filter[emergency_enabled] can be used to find DIDs that are or are not assigned to an Emergency Calling Service.

Affected resources

/v3/dids filter did_group.features support new values emergency, cnam_out, a2p and p2p

/v3/dids now supports additional values for the did_group.features filter.

What changed

  • GET /v3/dids?filter[did_group.features] now supports emergency.

  • GET /v3/dids?filter[did_group.features] now supports cnam_out.

  • GET /v3/dids?filter[did_group.features] now supports a2p and p2p.

Affected resources

/v3/dids filter emergency_calling_service.id and filter emergency_enabled added

/v3/dids now supports the emergency_calling_service.id and filter emergency_enabled filter.

What changed

  • Added filter[emergency_calling_service.id].

  • Added filter[emergency_enabled].

Affected resources

/v3/dids relationship emergency_calling_service added

/v3/dids now exposes the emergency_calling_service relationship.

What changed

  • Added the emergency_calling_service relationship to DID responses.

  • When a DID is assigned to an Emergency Calling Service, relationship data identifies that service.

  • When a DID is not assigned to an Emergency Calling Service, relationship data is null when relationship data is present.

Affected resources

/v3/dids relationship emergency_verification added

/v3/dids now exposes the emergency_verification relationship.

What changed

  • Added the emergency_verification relationship to DID responses.

Affected resources

/v3/dids relationship identity added

/v3/dids now exposes the identity relationship.

What changed

  • Added the identity relationship to DID responses.

  • GET /v3/dids?include=identity returns included identity resources.

Behavior notes

  • The relationship represents the main identity assigned to the DID, or the porting identity as a fallback.

Affected resources

/v3/exports attribute external_reference_id added

/v3/exports now supports external_reference_id.

What changed

  • Added external_reference_id to export requests and responses.

  • external_reference_id is optional and has a maximum length of 100 characters.

Affected resources

/v3/exports added update endpoint

/v3/exports update is available and only external_reference_id can be changed.

What changed

  • Added an export update endpoint.

  • Only external_reference_id can be updated through the export update flow.

Affected resources

/v3/exports attribute filters added

/v3/exports now supports filters.

What changed

  • Added the filters attribute to export responses.

Affected resources

/v3/exports cdr_in export CSV columns renamed and new columns added

/v3/exports cdr_in export CSV columns renamed and new columns added.

What changed

  • cdr_in export CSV columns were renamed.

  • Additional columns were added to cdr_in export files.

Affected resources

/v3/exports cdr_out export CSV columns renamed and new columns added

/v3/exports cdr_out export CSV columns renamed and new columns added.

What changed

  • cdr_out export CSV columns were renamed.

  • Additional columns were added to cdr_out export files.

Affected resources

/v3/exports export callback includes url attribute with the download link

/v3/exports callbacks now include additional export file information.

What changed

  • Added url to the export callback payload for supported export types.

  • The callback can include a direct download link to the exported file.

Affected resources

/v3/identities relationship birth_country added

/v3/identities now exposes the birth_country relationship.

What changed

  • Added the birth_country relationship to GET /v3/identities and GET /v3/identities/{id}.

  • POST /v3/identities supports sending birth_country separately from country.

  • PATCH /v3/identities/{id} supports updating birth_country separately from country.

  • PATCH /v3/identities/{id} supports removing birth_country by sending an empty string.

  • birth_country is no longer auto-assigned when country is set.

Affected resources

Upgrade

  • Send and parse birth_country independently from country.

/v3/orders attribute external_reference_id added

/v3/orders now supports external_reference_id.

What changed

  • Added external_reference_id to order requests and responses.

  • external_reference_id is optional.

  • external_reference_id has a maximum length of 100 characters.

Affected resources

/v3/orders added update endpoint

/v3/orders update is available and only external_reference_id can be changed.

What changed

  • Added an order update endpoint.

  • Only external_reference_id can be updated through the order update flow.

Affected resources

/v3/orders filter external_reference_id added

/v3/orders now supports the external_reference_id filter.

What changed

  • Added the external_reference_id collection filter to orders.

Affected resources

/v3/orders insufficient funds error response includes meta with total_cost and available_balance

/v3/orders now returns additional metadata in insufficient funds error responses.

What changed

  • Added errors[].meta.total_cost.

  • Added errors[].meta.available_balance.

  • Both values are returned as strings.

  • This applies to both DID order creation and capacity order creation.

Behavior notes

  • meta.total_cost contains the cost of the current order only.

  • meta.available_balance contains the customer’s available balance, including credit, at the time of the check.

Affected resources

Upgrade

  • Read errors[].meta.total_cost and errors[].meta.available_balance when presenting insufficient balance failures to users.

  • Update automated tests for insufficient balance responses.

/v3/orders attribute allow_back_ordering defaults to true when not provided in request

/v3/orders attribute allow_back_ordering defaults to true when not provided in request.

What changed

  • POST /v3/orders now defaults allow_back_ordering to true.

  • If allow_back_ordering is omitted, a DID order with pending inventory can be created instead of returning a validation error.

  • To limit ordering to currently available inventory only, requests must explicitly send allow_back_ordering: false.

Affected resources

Upgrade

  • Explicitly send allow_back_ordering: false if your workflow must reject out-of-stock DID orders.

/v3/orders Emergency order item attribute emergency_calling_service_id added

/v3/orders Emergency order item attribute emergency_calling_service_id added.

What changed

  • GET /v3/orders and GET /v3/orders/{id} can now return emergency_order_items.

  • emergency_order_items include emergency_calling_service_id.

  • Orders created by the Emergency Calling activation flow return callback_method: null and callback_url: null.

  • meta.api_version reflects the actual API version used to produce the response.

Behavior notes

  • Earlier API versions may continue to return emergency charges as generic_order_items for backward compatibility.

Affected resources

/v3/permanent_supporting_documents attribute external_reference_id added

/v3/permanent_supporting_documents now supports external_reference_id.

What changed

  • Added external_reference_id to permanent supporting document requests and responses.

  • external_reference_id is optional and has a maximum length of 100 characters.

Affected resources

/v3/permanent_supporting_documents added read endpoints

/v3/permanent_supporting_documents read endpoints are available.

What changed

  • Added GET /v3/permanent_supporting_documents.

  • Added GET /v3/permanent_supporting_documents/{id}.

  • The collection endpoint supports JSON:API pagination and sparse fieldsets.

  • The collection endpoint supports exact-match filtering by external_reference_id.

Affected resources

/v3/proofs attribute external_reference_id added

/v3/proofs now supports external_reference_id.

What changed

  • Added external_reference_id to proof requests and responses.

  • external_reference_id is optional and has a maximum length of 100 characters.

Affected resources

/v3/proofs added read endpoints

/v3/proofs read endpoints are available.

What changed

  • Added GET /v3/proofs.

  • Added GET /v3/proofs/{id}.

  • The collection endpoint supports JSON:API pagination and sparse fieldsets.

  • The collection endpoint supports exact-match filtering by external_reference_id.

Affected resources

/v3/shared_capacity_groups attribute external_reference_id added

/v3/shared_capacity_groups now supports external_reference_id.

What changed

  • Added external_reference_id to Shared Capacity Group requests and responses.

  • Added exact-match external_reference_id filtering on collection responses where supported.

  • external_reference_id is optional and has a maximum length of 100 characters.

Affected resources

/v3/voice_in_trunk_groups attribute external_reference_id added

/v3/voice_in_trunk_groups now supports external_reference_id.

What changed

  • Added external_reference_id to Inbound Trunk Group requests and responses.

  • Added exact-match external_reference_id filtering on collection responses where supported.

  • external_reference_id is optional and has a maximum length of 100 characters.

Affected resources

/v3/voice_in_trunks SIP configuration attributes network_protocol_priority, enabled_sip_registration, use_did_in_ruri, diversion_relay_policy, diversion_inject_mode, and cnam_lookup added

/v3/voice_in_trunks now supports additional SIP configuration attributes.

What changed

  • Added network_protocol_priority.

  • Added enabled_sip_registration.

  • Added use_did_in_ruri.

  • Added diversion_relay_policy.

  • Added diversion_inject_mode.

  • Added cnam_lookup.

Behavior notes

  • use_did_in_ruri works only when enabled_sip_registration is true.

Affected resources

/v3/voice_out_trunks attribute authentication_method added with support for ip_only, credentials_and_ip, and twilio types

/v3/voice_out_trunks attribute authentication_method added with support for ip_only, credentials_and_ip, and twilio types.

What changed

  • Added the authentication_method object.

  • Supported authentication method types are ip_only, credentials_and_ip, and twilio.

  • POST /v3/voice_out_trunks supports creation with credentials_and_ip and twilio.

  • PATCH /v3/voice_out_trunks/{id} supports switching between supported updatable authentication types.

Affected resources

/v3/voice_out_trunks attribute emergency_enable_all added

/v3/voice_out_trunks now supports emergency_enable_all.

What changed

  • Added the emergency_enable_all attribute to outbound trunk requests and responses.

Affected resources

/v3/voice_out_trunks attribute rtp_timeout added

/v3/voice_out_trunks now supports rtp_timeout.

What changed

  • Added the rtp_timeout attribute to outbound trunk requests and responses.

Affected resources

/v3/voice_out_trunks attribute tech_prefix added

/v3/voice_out_trunks now supports tech_prefix.

What changed

  • Added tech_prefix inside authentication_method.attributes for credentials_and_ip and ip_only.

Affected resources

/v3/voice_out_trunks filter authentication_method.type added

/v3/voice_out_trunks now supports the authentication_method.type filter.

What changed

  • Added filter[authentication_method.type].

  • Supported values are credentials_and_ip, ip_only, and twilio.

Affected resources

/v3/voice_out_trunks relationship emergency_dids added

/v3/voice_out_trunks now exposes the emergency_dids relationship.

What changed

  • Added the emergency_dids relationship to outbound trunk responses.

  • GET /v3/voice_out_trunks?include=emergency_dids and GET /v3/voice_out_trunks/{id}?include=emergency_dids return related DID data in the included array.

Affected resources