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.
[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