All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[Unreleased]
[0.1.3] - 2026-06-09
Changed
- Updated Twilio OpenAPI specs from 2.6.7 to 2.6.9.
- Added generated services and resources for Conversations v2, Intelligence v3, Knowledge v2, Memory v1, and Voice v3 APIs.
Fixed
- Service generator now merges caller-supplied
optsinto theClient.request/4call. Previously, generated service modules passed the caller'soptsas a nestedopts:key thatClient.request/4never read, and hardcodedbase_url: "https://api.twilio.com"so the caller's:base_urlcould not take effect.Client.request/4now also supports that legacy generated shape, so existing generated services honor caller-supplied:base_url(for local test simulators, sandbox/staging hosts, and self-hosted Twilio-compatible proxies),:content_type, and other request options without requiring regeneration. The explicitparamsargument continues to win over any:paramskey inopts.
[0.1.2] - 2026-04-16
Changed
- Updated Twilio OpenAPI specs from 2.6.4 to 2.6.7
- Added IAM v1 role permission service and resource
- Added Insights v2 voice report services/resources (account, inbound and outbound phone-number reports)
- Added Numbers v1 sender ID registration with embedded session support
- Added Messaging v3 typing indicator service
- Renamed
messaging.v1.service.us_app_to_personobject type to..._response - Removed deprecated
flex.v1.instanceobject type - Miscellaneous field and parameter updates across Assistants, Flex, Studio, Verify, Video, TaskRouter, and other services
[0.1.1] - 2026-03-03
Changed
- Updated Twilio OpenAPI specs from 2.6.3 to 2.6.4
- Added
BundleSidsandEndUserTypequery params to bundle listing - Added
Configurationobject param to video transcription updates - Trimmed redundant inequality descriptions from call StartTime/EndTime params
- Updated messaging sender vertical enum with new categories
- Fixed Flex API path capitalization (
/v1/Instances) - Cleaned IAM Organizations
apiStandardsfrom placeholder tov0.1 - Added OAuth v2 session metadata schema and authorize fields
[0.1.0] - 2026-03-03
Added
API Coverage
- Auto-generated SDK from Twilio's 54 OpenAPI spec files (v2.6.3)
- 440+ service modules covering 37+ Twilio products (Messaging, Voice, Verify, Conversations, Flex, Insights, Video, and more)
- 420+ typed resource structs with automatic JSON-to-struct deserialization
- Object types registry mapping schema names to Elixir modules
Client & HTTP
Twilio.Clientwith HTTP Basic auth (Account SID + Auth Token)- Region and edge URL construction (e.g.
ie1,dublin) - Subaccount support via
:account_sidoption - Connection pooling via Finch (auto-sized:
max(schedulers_online, 10)) - Request encoding: form-encoded for mutations, query params for reads
- Opt-in response metadata (
return_response: true) exposing status, headers, and request ID
Retry & Resilience
- Unified retry covering 429, 5xx, and connection errors (opt-in, default: 0)
Retry-Afterheader parsing on 429 responses- Exponential backoff with full jitter
- Idempotency token auto-generation (
I-Twilio-Idempotency-Token) on retryable POST requests Twilio.Errortyped error struct withretryable?/1helper
Pagination
Twilio.Pagewith dual-format auto-detection:- v2010 flat format (
next_page_uri) - v1/v2/v3 meta wrapper format (
meta.next_page_url)
- v2010 flat format (
stream/1for lazy auto-pagination viaStream.unfold
Webhooks
Twilio.WebhookHMAC-SHA1 signature verification- Form-encoded webhook validation (
valid?/4) - JSON body webhook validation (
valid_body?/4) - Constant-time comparison to prevent timing attacks
TwiML
Twilio.TwiML.VoiceResponse— Say, Play, Gather, Dial, Record, Redirect, Hangup, Reject, Pause, Enqueue, plus nested nouns (Number, Client, Sip, Queue)Twilio.TwiML.MessagingResponse— Message (with Body/Media children), Redirect- Automatic snake_case to camelCase attribute conversion
- XML escaping for text content and attribute values
Testing
Twilio.Testper-process HTTP stubs via NimbleOwnership- Full
async: truesupport with process isolation allow/1for sharing stubs with child processes
Observability
- Structured
:telemetryevents: start, stop, exception, retry
Code Generation
mix twilio.generateMix task with--clean,--dry-run,--statsscripts/sync_openapi.shfor downloading specs fromtwilio/twilio-oai- Auto-formatting of generated code
CI & Automation
- GitHub Actions CI: test matrix (Elixir 1.19-1.20, OTP 27-28), quality checks (Credo, format, Dialyzer), codegen determinism verification
- Weekly OpenAPI spec sync workflow with auto-PR generation
scripts/parity_report.shfor endpoint coverage reporting
Documentation
- Guides: Getting Started, Webhooks, TwiML, Testing, Telemetry
- ExDoc with module grouping by category