Skip to main content

Twilio

This page contains the setup guide and reference information for the Twilio source connector.

Prerequisites​

  • A Twilio Account SID and Auth Token. Find both in the Twilio Console.
  • Use credentials for the Twilio account whose resources you want to sync. Main account credentials can access main account resources and v2010 REST API resources for subaccounts. Subaccount credentials can access only that subaccount.
  • Resources on product-specific subdomains (Studio, Conversations, Verify) must be accessed with credentials for the account that owns those resources.

For more information, see the Twilio API authentication documentation.

Setup guide​

For Airbyte Cloud:

  1. Log into your Airbyte Cloud account.
  2. In the left navigation bar, click Sources. In the top-right corner, click +new source.
  3. On the Set up the source page, enter a name for the Twilio connector and select Twilio from the source type dropdown.
  4. Enter your Account ID (Twilio Account SID).
  5. Enter your Auth Token.
  6. Enter a Replication Start Date. Records created before this UTC date and time aren't synced. Use the format YYYY-MM-DDTHH:MM:SSZ (for example, 2020-10-01T00:00:00Z).
  7. Optionally, configure the following fields:
    • Lookback window: The number of minutes before the last cursor value to re-fetch on each incremental sync. Use this to catch late-arriving records. Defaults to 0.
    • Number of concurrent threads: The number of worker threads used during a sync. Defaults to 3. Maximum is 40.
    • Slice Step Duration: The time window size used for each slice of an incremental stream. See Tuning the slice step duration. Defaults to 1 Month (P1M).
  8. Click Set up source.

For Airbyte Open Source:

  1. Navigate to the Airbyte Open Source dashboard.
  2. Set a name for your source.
  3. Enter your Account ID (Twilio Account SID).
  4. Enter your Auth Token.
  5. Enter a Replication Start Date in the format YYYY-MM-DDTHH:MM:SSZ.
  6. Optionally, set the Lookback window, Number of concurrent threads, and Slice Step Duration. See the Cloud instructions above for details.
  7. Click Set up source.

Supported sync modes​

The Twilio source connector supports the following sync modes:

FeatureSupported?
Full Refresh SyncYes
Incremental SyncYes
Replicate Incremental DeletesNo
SSL connectionYes
NamespacesNo

Supported streams​

StreamSync modes
AccountsFull refresh
AddressesFull refresh
AlertsFull refresh, incremental
ApplicationsFull refresh
Available Phone Number CountriesFull refresh
Available Phone Numbers LocalFull refresh
Available Phone Numbers MobileFull refresh
Available Phone Numbers Toll FreeFull refresh
CallsFull refresh, incremental
Conference ParticipantsFull refresh
ConferencesFull refresh, incremental
ConversationsFull refresh
Conversation MessagesFull refresh
Conversation ParticipantsFull refresh
Dependent Phone NumbersFull refresh
ExecutionsFull refresh
FlowsFull refresh
Incoming Phone NumbersFull refresh
KeysFull refresh
Message MediaFull refresh, incremental
MessagesFull refresh, incremental
Messaging Pricing CountriesFull refresh
Outgoing Caller IDsFull refresh
Phone Number Pricing CountriesFull refresh
QueuesFull refresh
RecordingsFull refresh, incremental
RolesFull refresh
ServicesFull refresh
StepsFull refresh
TranscriptionsFull refresh
TrunksFull refresh
Usage RecordsFull refresh, incremental
Usage TriggersFull refresh
User ConversationsFull refresh
UsersFull refresh
Verify ServicesFull refresh
Voice Pricing CountriesFull refresh

Pricing streams​

The voice_pricing_countries, messaging_pricing_countries, and phone_number_pricing_countries streams return per-country price lists from Twilio's Pricing API. Each stream first pages through the list of supported countries, then makes one additional request per country to fetch that country's prices, so a sync of these streams makes more API requests than there are supported countries. Prices are specific to the account you authenticate with: base_price is Twilio's list price and current_price includes any volume or custom discounts on your account. Each record is keyed by iso_country.

Upgrading to 1.0.0​

Version 1.0.0 moves the services and roles streams from the deprecated Programmable Chat API to the Conversations API. If your connections sync either stream, refresh the source schema and clear data for those streams after upgrading. For the full list of schema changes and migration steps, see the migration guide.

Limitations​

400-day data availability window​

The messages, recordings, and message_media streams only sync data from the last 400 days, regardless of the configured Replication Start Date. This matches Twilio's default Message Log retention, which stores message records and media for up to 13 months (approximately 400 days). If your Replication Start Date is more than 400 days in the past, those streams begin from 400 days ago. Other streams respect the configured start date without this cap.

To retrieve records older than 400 days, use Twilio's Bulk Export API outside of this connector.

Conference participants cover only active conferences​

The conference_participants stream returns participants only for conferences that are still active (init or in-progress). Twilio's Participants subresource manages only active participants of in-progress conferences, so participants of a conference that has already completed aren't returned and can't be synced. To capture participant activity for the full lifetime of a conference, subscribe to Twilio conference status callbacks in your own application and store the events as participants join and leave.

The conferences stream itself isn't affected by this limitation and syncs conferences in all statuses (init, in-progress, and completed).

Performance considerations​

The Twilio connector gracefully handles rate limits using the Retry-After header with an exponential backoff fallback. For more information, see Twilio's rate limit documentation.

By default, the connector syncs with 3 concurrent threads. Increase Number of concurrent threads only if your Twilio account can handle the extra API traffic. If syncs are repeatedly rate limited, reduce the thread count. If high-volume incremental streams time out, use a smaller slice step duration.

Alerts pagination limit​

The Alerts API limits each request to 10,000 Alert resources. When a time window contains more than 10,000 Alert records, the connector splits the window in half and reads each half, repeating up to 10 times. Twilio rejects a window only after the connector has read its first 10,000 records, so each split re-emits up to 10,000 records. Sync modes that deduplicate by primary key (sid) remove these duplicates; Append and Overwrite sync modes keep them. Because splitting stops after 10 halvings, the smallest window depends on Slice Step Duration: about 43 minutes with the default 1 Month and about 84 seconds with 1 Day. If the alerts stream still fails after splitting, decrease Slice Step Duration. If it is already 1 Day, deselect the alerts stream.

Tuning the slice step duration​

Incremental streams page the Twilio API in fixed-size time windows between the replication start date and now. The Slice Step Duration option controls the size of those windows and lets you trade request count against the amount of data each request returns.

OptionISO 8601 valueWhen to use
1 DayP1DVery high volume accounts where monthly or weekly windows trigger Twilio timeouts, or where alerts can't split a window within 10 splits.
1 WeekP1WHigh volume accounts that still time out with monthly windows.
1 MonthP1MDefault. Works well for most accounts and minimizes request count compared to shorter windows.
1 YearP1YLow volume accounts or short backfills where you want to minimize the number of slices per stream.

Smaller windows increase the number of API requests and are more likely to be rate limited, but they reduce the amount of data Twilio must return per request. Larger windows reduce request count but can time out on busy accounts. If syncs of the calls, messages, recordings, message_media, conference_participants, usage_records, or alerts streams fail with timeouts, lower the slice step duration.

IP allow list​

If you use Airbyte Cloud and your organization restricts access to specific IPs, add the Airbyte Cloud IP addresses to your allow list.

Reference​

This connector uses REST APIs, including the https://api.twilio.com/2010-04-01, https://monitor.twilio.com/v1, https://conversations.twilio.com/v1, https://studio.twilio.com/v1, https://trunking.twilio.com/v1, https://verify.twilio.com/v2, https://pricing.twilio.com/v1, and https://pricing.twilio.com/v2 API endpoints.

For programmatic configuration, use these parameter names:

FieldRequiredDescription
account_sidYesAccount identifier used as the HTTP Basic authentication username.
auth_tokenYesAuth Token used as the HTTP Basic authentication password.
start_dateYesDate and time in YYYY-MM-DDTHH:MM:SSZ format. Records before this date aren't replicated.
lookback_windowNoNumber of minutes before the last cursor value to re-fetch on each incremental sync. Defaults to 0.
num_workersNoNumber of concurrent threads to use during a sync. Valid values are 1 through 40. Defaults to 3.
slice_step_durationNoTime window size for each incremental stream slice. Valid values are P1D, P1W, P1M, and P1Y. Defaults to P1M.

Reference​

Config fields reference

Field
Type
Property name
string
account_sid
string
auth_token
string
start_date
integer
lookback_window
integer
num_workers
string
slice_step_duration

Changelog​

Expand to review
VersionDatePull RequestSubject
1.1.62026-10-1388836Update dependencies
1.1.52026-10-0688048Update dependencies
1.1.42026-10-0587049Automatically split Alerts time windows that exceed Twilio's 10,000-result limit instead of failing the sync
1.1.32026-09-2987367Update dependencies
1.1.22026-09-2286857Update dependencies
1.1.12026-09-1584774Update dependencies
1.1.02026-09-0885748Promoting release candidate 1.1.0-rc.1 to a main version.
1.1.0-rc.12026-08-1384203Add voice, messaging, and phone number pricing country streams
1.0.132026-08-1184128Update dependencies
1.0.122026-07-2883194Update to CDK 7.23.8 (fixes AirbyteCustomCodeNotPermittedError for bundled custom components) and remove the temporary Cloud version override
1.0.112026-07-281082Roll Cloud back to 1.0.9 — 1.0.10 is built on SDM 7.23.7, which breaks bundled custom components
1.0.102026-07-2883134Update dependencies
1.0.92026-07-2182618Update dependencies
1.0.82026-07-1482053Update dependencies
1.0.72026-07-0980330Add Status filter to conferences and conference_participants streams to retrieve conferences in all statuses (init, in-progress, completed) after Twilio's July 2026 API default change
1.0.62026-06-3081294Update dependencies
1.0.52026-06-2380703Update dependencies
1.0.42026-06-2280282Fix messages and recordings incremental state getting stuck near the start date by aligning cursor_granularity with the second-precision datetime_format.
1.0.32026-06-1680075Update dependencies
1.0.22026-06-0979553Update dependencies
1.0.12026-06-0279027Update dependencies
1.0.02026-05-2176911Migrate services and roles streams from the deprecated Programmable Chat API to the Conversations API. See the migration guide.
0.17.112026-05-2178322Revert concurrency tuning rollout
0.17.102026-05-1277988Improve the Twilio Alerts pagination-limit error message.
0.17.92026-04-3077593Fix usage_records start_date schema format from date-time to date to prevent null primary key in Iceberg destination
0.17.82026-04-2877453Update dependencies
0.17.72026-04-2272494Add configurable slice step duration (default: 1 month)
0.17.62026-04-2176801Update dependencies
0.17.52026-04-1376276Rename "concurrent workers" to "concurrent threads" in connector spec
0.17.42026-01-2272260Update CDK version from 7.0.1 to 7.6.5
0.17.32025-11-0668680Handle 404 errors gracefully for date ranges with no data
0.17.22025-10-2268591Add suggestedStreams
0.17.12025-09-1566090Update to CDK v7
0.17.02025-09-0565955Promoting release candidate 0.17.0-rc.2 to a main version.
0.17.0-rc.22025-09-0465936Fix lookback window
0.17.0-rc.12025-08-2565072Migrate to manifest-only
0.16.02025-08-2865593Promoting release candidate 0.16.0-rc.1 to a main version.
0.16.0-rc.12025-08-2565072Migrate incremental streams
0.15.02025-08-1965085Promoting release candidate 0.15.0-rc.1 to a main version.
0.15.0-rc.12025-08-1864918Migrate nested full refresh streams
0.14.02025-08-1865066Promoting release candidate 0.14.0-rc.1 to a main version.
0.14.0-rc.12025-08-1464880Migrated all full refresh streams that have no parent streams
0.13.02025-08-1464929Promoting release candidate 0.13.0-rc.1 to a main version.
0.13.0-rc.12025-08-1264877Update CDK to v6
0.12.12025-06-1656258Update dependencies
0.12.02025-06-0249097Fix per partition states for nested streams
0.11.172025-02-2354486Update dependencies
0.11.162025-01-2452089Fix typo to fix pagination for TwilioStream class
0.11.152025-01-1951966Update dependencies
0.11.142024-12-2950803Update dependencies
0.11.132024-11-2543769Starting with this version, the Docker image is now rootless. Please note that this and future versions will not be compatible with Airbyte versions earlier than 0.64
0.11.122024-08-0443132Update dependencies
0.11.112024-07-2842593Update dependencies
0.11.102024-07-2142177Update dependencies
0.11.92024-07-1441845Update dependencies
0.11.82024-07-1141478Update dependencies
0.11.72024-06-2740527Update dependencies
0.11.62024-06-2340030Update dependencies
0.11.52024-06-1139252[autopull] Upgrade base image to v1.2.2
0.11.42024-05-2238564Migrate authenticator to requests_native_auth package
0.11.32024-05-2038262Replace AirbyteLogger with logging.Logger
0.11.22024-05-0736666Updating to 0.80.0 CDK
0.11.12024-05-0736666Schema descriptions
0.11.02024-03-2136267Pin airbyte-cdk version to ^0
0.10.22024-02-1235153Manage dependencies with Poetry
0.10.12023-11-2732718Base image migration: remove Dockerfile and use the python-connector-base image
0.10.02023-07-2727323Add new stream Step
0.9.02023-07-1327221Add new stream UserConversations with parent Users
0.8.12023-07-1228216Add property channel_metadata to ConversationMessages schema
0.8.02023-06-2727231Add new stream VerifyServices
0.7.02023-05-2325781Add new stream Trunks
0.6.02023-05-2325783Add new stream Roles with parent Services
0.5.02023-04-1323995Add new stream Conversation Participants
0.4.02023-04-1122875Add new stream Conversation Messages
0.3.02023-04-1022874Add new stream Executions with parent Flows
0.2.02023-03-2124320Add Conversations stream
0.1.162023-03-0222825Specified date formatting in specification
0.1.152023-01-3022025Set AvailabilityStrategy for streams explicitly to None
0.1.142022-11-2919479Fix date range slicing
0.1.132022-10-2618423Implement datetime slicing for streams supporting incremental syncs
0.1.112022-09-3017478Add lookback_window parameters
0.1.102022-09-3017410Migrate to per-stream states
0.1.92022-09-2617134Add test data for Message Media and Conferences
0.1.82022-08-2916110Add state checkpoint interval
0.1.72022-08-2915972Shift start date for stream if it exceeds 400 days
0.1.62022-06-2714000Update Records stream schema and align tests with connectors' best practices
0.1.52022-06-2213896Add lookback window parameters to fetch messages with a rolling window and catch status updates
0.1.42022-04-2212157Use Retry-After header for backoff
0.1.32022-04-2112183Add new subresource on the call stream + declare a valid primary key for conference_participants stream
0.1.22021-12-279092Correct specification doc URL
0.1.12021-10-187034Update schemas and transform data types according to the API schema
0.1.02021-07-034070Native Twilio connector implemented