This connector is optimized for AI agents. For the data replication connector, see Customer Io .
This is the full reference documentation for the Customer-Io agent connector.
Supported entities and actions
The Customer-Io connector supports the following entities and actions.
Entity Actions Campaigns List , Get , Context Store Search Campaign Actions List , Get , Context Store Search Newsletters List , Get , Context Store Search Segments List , Create , Get Messages List , Get Activities List Sender Identities List , Get Snippets List , Create , Update Collections List , Create , Get , Update Reporting Webhooks List , Create , Get , Update Exports List , Create , Get Transactional Messages List , Get Transactional Message Contents List , Update Transactional Email Create Transactional Sms Create Transactional Push Create Transactional Inbox Message Create Broadcast Trigger Create
Campaigns
Campaigns List
Returns a list of all campaigns in the workspace.
Python SDK
await customer_io . campaigns . list ( )
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {your_auth_token}' \ --data '{ "entity": "campaigns", "action": "list" }'
Response Schema Records Field Name Type Description idnull | integernamenull | stringtypenull | stringstatenull | stringactivenull | booleancreatednull | integerupdatednull | integerfirst_startednull | integerdeduplicate_idnull | stringtagsnull | arrayactionsnull | arraymsg_templatesnull | arraytrigger_segment_idsnull | arrayfilter_segment_idsnull | arrayfrequencynull | stringevent_namenull | stringdate_attributenull | stringstart_hournull | integerstart_minutesnull | integertimezonenull | stringuse_customer_timezonenull | booleancreated_bynull | stringscheduled_startnull | integerscheduled_start_should_backfillnull | booleanscheduled_stopnull | integerscheduled_stop_should_sunsetnull | boolean
Campaigns Get
Returns a single campaign by ID.
Python SDK
await customer_io . campaigns . get ( campaign_id = 0 )
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {your_auth_token}' \ --data '{ "entity": "campaigns", "action": "get", "params": { "campaign_id": 0 } }'
Parameters
Parameter Name Type Required Description campaign_idintegerYes The campaign identifier
Response Schema Records Field Name Type Description idnull | integernamenull | stringtypenull | stringstatenull | stringactivenull | booleancreatednull | integerupdatednull | integerfirst_startednull | integerdeduplicate_idnull | stringtagsnull | arrayactionsnull | arraymsg_templatesnull | arraytrigger_segment_idsnull | arrayfilter_segment_idsnull | arrayfrequencynull | stringevent_namenull | stringdate_attributenull | stringstart_hournull | integerstart_minutesnull | integertimezonenull | stringuse_customer_timezonenull | booleancreated_bynull | stringscheduled_startnull | integerscheduled_start_should_backfillnull | booleanscheduled_stopnull | integerscheduled_stop_should_sunsetnull | boolean
Campaigns Context Store Search
Search and filter campaigns records powered by Airbyte's data sync. This often provides additional fields and operators beyond what the API natively supports, making it easier to narrow down results before performing further operations. Only available in hosted mode.
Python SDK
await customer_io . campaigns . context_store_search ( query = { "filter" : { "eq" : { "actions" : [ ] } } } )
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {your_auth_token}' \ --data '{ "entity": "campaigns", "action": "context_store_search", "params": { "query": {"filter": {"eq": {"actions": []}}} } }'
Parameters
Parameter Name Type Required Description queryobjectYes Filter and sort conditions. Supports operators: eq, neq, gt, gte, lt, lte, in, like, fuzzy, keyword, not, and, or query.filterobjectNo Filter conditions query.sortarrayNo Sort conditions limitintegerNo Maximum results to return (default 1000) cursorstringNo Pagination cursor from previous response's meta.cursor fieldsarrayNo Field paths to include in results
Searchable Fields
Field Name Type Description actionsarrayActions defined in this campaign activebooleanWhether the campaign is active createdintegerCreation timestamp (Unix) created_bystringWho created the campaign date_attributestringDate attribute used for date-triggered campaigns deduplicate_idstringDeduplication identifier event_namestringEvent name that triggers the campaign first_startedintegerWhen the campaign was first started (Unix) frequencystringHow frequently a person can receive this campaign idintegerUnique campaign identifier msg_templatesarrayMessage templates used in the campaign namestringCampaign name start_hourintegerHour of the day to trigger start_minutesintegerMinute of the hour to trigger statestringCampaign status (draft, active, stopped) tagsarrayTags associated with the campaign timezonestringTimezone for trigger scheduling trigger_segment_idsarraySegment IDs that trigger this campaign typestringCampaign trigger type updatedintegerLast update timestamp (Unix) use_customer_timezonebooleanWhether to use the customer's timezone
Response Schema Field Name Type Description dataarrayList of matching records metaobjectPagination metadata meta.has_morebooleanWhether additional pages are available meta.cursorstring | nullCursor for next page of results meta.took_msnumber | nullQuery execution time in milliseconds data[].actionsarrayActions defined in this campaign data[].activebooleanWhether the campaign is active data[].createdintegerCreation timestamp (Unix) data[].created_bystringWho created the campaign data[].date_attributestringDate attribute used for date-triggered campaigns data[].deduplicate_idstringDeduplication identifier data[].event_namestringEvent name that triggers the campaign data[].first_startedintegerWhen the campaign was first started (Unix) data[].frequencystringHow frequently a person can receive this campaign data[].idintegerUnique campaign identifier data[].msg_templatesarrayMessage templates used in the campaign data[].namestringCampaign name data[].start_hourintegerHour of the day to trigger data[].start_minutesintegerMinute of the hour to trigger data[].statestringCampaign status (draft, active, stopped) data[].tagsarrayTags associated with the campaign data[].timezonestringTimezone for trigger scheduling data[].trigger_segment_idsarraySegment IDs that trigger this campaign data[].typestringCampaign trigger type data[].updatedintegerLast update timestamp (Unix) data[].use_customer_timezonebooleanWhether to use the customer's timezone
Campaign Actions
Campaign Actions List
Returns a paginated list of actions for a campaign.
Python SDK
await customer_io . campaign_actions . list ( campaign_id = 0 )
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {your_auth_token}' \ --data '{ "entity": "campaign_actions", "action": "list", "params": { "campaign_id": 0 } }'
Parameters
Parameter Name Type Required Description campaign_idintegerYes The campaign identifier startstringNo Pagination cursor for the next page
Response Schema Records Field Name Type Description idnull | integer | stringnamenull | stringtypenull | stringcampaign_idnull | integercreatednull | integerupdatednull | integerdeduplicate_idnull | stringbodynull | stringlayoutnull | stringfromnull | stringfrom_idnull | integersubjectnull | stringpreheader_textnull | stringrecipientnull | stringreply_tonull | stringreply_to_idnull | integerbccnull | stringfake_bccnull | booleanheadersnull | stringsending_statenull | stringlanguagenull | stringparent_action_idnull | integerpreprocessornull | stringbody_ampnull | stringbroadcast_idnull | integereditornull | stringurlnull | stringbody_plainnull | string
Field Name Type Description nextstring
Campaign Actions Get
Returns a single campaign action by ID.
Python SDK
await customer_io . campaign_actions . get ( campaign_id = 0 , action_id = 0 )
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {your_auth_token}' \ --data '{ "entity": "campaign_actions", "action": "get", "params": { "campaign_id": 0, "action_id": 0 } }'
Parameters
Parameter Name Type Required Description campaign_idintegerYes The campaign identifier action_idintegerYes The action identifier
Response Schema Records Field Name Type Description idnull | integer | stringnamenull | stringtypenull | stringcampaign_idnull | integercreatednull | integerupdatednull | integerdeduplicate_idnull | stringbodynull | stringlayoutnull | stringfromnull | stringfrom_idnull | integersubjectnull | stringpreheader_textnull | stringrecipientnull | stringreply_tonull | stringreply_to_idnull | integerbccnull | stringfake_bccnull | booleanheadersnull | stringsending_statenull | stringlanguagenull | stringparent_action_idnull | integerpreprocessornull | stringbody_ampnull | stringbroadcast_idnull | integereditornull | stringurlnull | stringbody_plainnull | string
Campaign Actions Context Store Search
Search and filter campaign actions records powered by Airbyte's data sync. This often provides additional fields and operators beyond what the API natively supports, making it easier to narrow down results before performing further operations. Only available in hosted mode.
Python SDK
await customer_io . campaign_actions . context_store_search ( query = { "filter" : { "eq" : { "bcc" : "<str>" } } } )
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {your_auth_token}' \ --data '{ "entity": "campaign_actions", "action": "context_store_search", "params": { "query": {"filter": {"eq": {"bcc": "<str>"}}} } }'
Parameters
Parameter Name Type Required Description queryobjectYes Filter and sort conditions. Supports operators: eq, neq, gt, gte, lt, lte, in, like, fuzzy, keyword, not, and, or query.filterobjectNo Filter conditions query.sortarrayNo Sort conditions limitintegerNo Maximum results to return (default 1000) cursorstringNo Pagination cursor from previous response's meta.cursor fieldsarrayNo Field paths to include in results
Searchable Fields
Field Name Type Description bccstringBCC addresses bodystringAction body content (HTML for emails) campaign_idintegerParent campaign ID createdintegerCreation timestamp (Unix) deduplicate_idstringDeduplication identifier editorstringEditor used to create the action fake_bccbooleanWhether to use fake BCC fromstringFrom address from_idstringSender identity ID headersstringCustom email headers as JSON idstringUnique action identifier languagestringLanguage variant layoutstringLayout template used namestringAction name parent_action_idintegerParent action ID for language variants preheader_textstringEmail preheader/preview text preprocessorstringCSS preprocessor setting recipientstringRecipient address recipient_environment_idintegerRecipient environment ID reply_tostringReply-to address reply_to_idstringReply-to sender identity ID request_methodstringHTTP request method for webhook actions sending_statestringSending behavior (automatic or draft) subjectstringEmail subject line typestringAction type (email, webhook, twilio, push, slack, in_app, whatsapp) updatedintegerLast update timestamp (Unix) urlstringWebhook URL (for webhook actions)
Response Schema Field Name Type Description dataarrayList of matching records metaobjectPagination metadata meta.has_morebooleanWhether additional pages are available meta.cursorstring | nullCursor for next page of results meta.took_msnumber | nullQuery execution time in milliseconds data[].bccstringBCC addresses data[].bodystringAction body content (HTML for emails) data[].campaign_idintegerParent campaign ID data[].createdintegerCreation timestamp (Unix) data[].deduplicate_idstringDeduplication identifier data[].editorstringEditor used to create the action data[].fake_bccbooleanWhether to use fake BCC data[].fromstringFrom address data[].from_idstringSender identity ID data[].headersstringCustom email headers as JSON data[].idstringUnique action identifier data[].languagestringLanguage variant data[].layoutstringLayout template used data[].namestringAction name data[].parent_action_idintegerParent action ID for language variants data[].preheader_textstringEmail preheader/preview text data[].preprocessorstringCSS preprocessor setting data[].recipientstringRecipient address data[].recipient_environment_idintegerRecipient environment ID data[].reply_tostringReply-to address data[].reply_to_idstringReply-to sender identity ID data[].request_methodstringHTTP request method for webhook actions data[].sending_statestringSending behavior (automatic or draft) data[].subjectstringEmail subject line data[].typestringAction type (email, webhook, twilio, push, slack, in_app, whatsapp) data[].updatedintegerLast update timestamp (Unix) data[].urlstringWebhook URL (for webhook actions)
Newsletters
Newsletters List
Returns a paginated list of newsletters.
Python SDK
await customer_io . newsletters . list ( )
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {your_auth_token}' \ --data '{ "entity": "newsletters", "action": "list" }'
Parameters
Parameter Name Type Required Description startstringNo Pagination cursor for the next page limitintegerNo Maximum number of newsletters to return sort"asc" | "desc"No Sort order
Response Schema Records Field Name Type Description idnull | integernamenull | stringtypenull | stringcreatednull | integerupdatednull | integersent_atnull | integerdeduplicate_idnull | stringtagsnull | arraycontent_idsnull | arrayrecipient_segment_idsnull | arraysubscription_topic_idnull | integer
Field Name Type Description nextstring
Newsletters Get
Returns a single newsletter by ID.
Python SDK
await customer_io . newsletters . get ( newsletter_id = 0 )
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {your_auth_token}' \ --data '{ "entity": "newsletters", "action": "get", "params": { "newsletter_id": 0 } }'
Parameters
Parameter Name Type Required Description newsletter_idintegerYes The newsletter identifier
Response Schema Records Field Name Type Description idnull | integernamenull | stringtypenull | stringcreatednull | integerupdatednull | integersent_atnull | integerdeduplicate_idnull | stringtagsnull | arraycontent_idsnull | arrayrecipient_segment_idsnull | arraysubscription_topic_idnull | integer
Newsletters Context Store Search
Search and filter newsletters records powered by Airbyte's data sync. This often provides additional fields and operators beyond what the API natively supports, making it easier to narrow down results before performing further operations. Only available in hosted mode.
Python SDK
await customer_io . newsletters . context_store_search ( query = { "filter" : { "eq" : { "content_ids" : [ ] } } } )
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {your_auth_token}' \ --data '{ "entity": "newsletters", "action": "context_store_search", "params": { "query": {"filter": {"eq": {"content_ids": []}}} } }'
Parameters
Parameter Name Type Required Description queryobjectYes Filter and sort conditions. Supports operators: eq, neq, gt, gte, lt, lte, in, like, fuzzy, keyword, not, and, or query.filterobjectNo Filter conditions query.sortarrayNo Sort conditions limitintegerNo Maximum results to return (default 1000) cursorstringNo Pagination cursor from previous response's meta.cursor fieldsarrayNo Field paths to include in results
Searchable Fields
Field Name Type Description content_idsarrayContent variant IDs for this newsletter createdintegerCreation timestamp (Unix) deduplicate_idstringDeduplication identifier idintegerUnique newsletter identifier namestringNewsletter name sent_atintegerWhen the newsletter was last sent (Unix) tagsarrayTags associated with the newsletter typestringChannel type (email, webhook, twilio, push, in_app, inbox) updatedintegerLast update timestamp (Unix)
Response Schema Field Name Type Description dataarrayList of matching records metaobjectPagination metadata meta.has_morebooleanWhether additional pages are available meta.cursorstring | nullCursor for next page of results meta.took_msnumber | nullQuery execution time in milliseconds data[].content_idsarrayContent variant IDs for this newsletter data[].createdintegerCreation timestamp (Unix) data[].deduplicate_idstringDeduplication identifier data[].idintegerUnique newsletter identifier data[].namestringNewsletter name data[].sent_atintegerWhen the newsletter was last sent (Unix) data[].tagsarrayTags associated with the newsletter data[].typestringChannel type (email, webhook, twilio, push, in_app, inbox) data[].updatedintegerLast update timestamp (Unix)
Segments
Segments List
Returns all segments in the workspace.
Python SDK
await customer_io . segments . list ( )
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {your_auth_token}' \ --data '{ "entity": "segments", "action": "list" }'
Response Schema Records Field Name Type Description idnull | integernamenull | stringdescriptionnull | stringtypenull | stringstatenull | stringcreated_atnull | integerupdated_atnull | integerdeduplicate_idnull | stringtagsnull | arrayprogressnull | integerconditionsnull | object
Segments Create
Creates a new empty manual segment. People can be added to it separately.
Python SDK
await customer_io . segments . create ( segment = { "name" : "<str>" } )
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {your_auth_token}' \ --data '{ "entity": "segments", "action": "create", "params": { "segment": { "name": "<str>" } } }'
Parameters
Parameter Name Type Required Description segmentobjectYes segment.namestringYes Name of the manual segment segment.descriptionstringNo Optional description of the segment
Segments Get
Returns a single segment by ID.
Python SDK
await customer_io . segments . get ( segment_id = 0 )
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {your_auth_token}' \ --data '{ "entity": "segments", "action": "get", "params": { "segment_id": 0 } }'
Parameters
Parameter Name Type Required Description segment_idintegerYes The segment identifier
Response Schema Records Field Name Type Description idnull | integernamenull | stringdescriptionnull | stringtypenull | stringstatenull | stringcreated_atnull | integerupdated_atnull | integerdeduplicate_idnull | stringtagsnull | arrayprogressnull | integerconditionsnull | object
Messages
Messages List
Returns a paginated list of message deliveries.
Python SDK
await customer_io . messages . list ( )
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {your_auth_token}' \ --data '{ "entity": "messages", "action": "list" }'
Parameters
Parameter Name Type Required Description startstringNo Pagination cursor for the next page limitintegerNo Maximum number of messages to return type"email" | "webhook" | "twilio" | "whatsapp" | "slack" | "push" | "in_app"No Filter messages by channel type metric"attempted" | "sent" | "delivered" | "opened" | "clicked" | "converted" | "bounced" | "spammed" | "unsubscribed" | "dropped" | "failed" | "undeliverable"No Filter messages by delivery metric campaign_idintegerNo Filter by campaign ID newsletter_idintegerNo Filter by newsletter ID
Response Schema Records Field Name Type Description idnull | stringtypenull | stringcreatednull | integerdeduplicate_idnull | stringcustomer_idnull | stringcustomer_identifiersnull | objectcampaign_idnull | integernewsletter_idnull | integerbroadcast_idnull | integercontent_idnull | integeraction_idnull | integerparent_action_idnull | integermessage_template_idnull | integerrecipientnull | stringsubjectnull | stringforgottennull | booleanfailure_messagenull | stringtrigger_event_idnull | stringmetricsnull | object
Field Name Type Description nextstring
Messages Get
Returns a single message delivery by ID. Untested because the test workspace has no message deliveries to retrieve.
Python SDK
await customer_io . messages . get ( message_id = "<str>" )
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {your_auth_token}' \ --data '{ "entity": "messages", "action": "get", "params": { "message_id": "<str>" } }'
Parameters
Parameter Name Type Required Description message_idstringYes The message delivery identifier
Response Schema Records Field Name Type Description idnull | stringtypenull | stringcreatednull | integerdeduplicate_idnull | stringcustomer_idnull | stringcustomer_identifiersnull | objectcampaign_idnull | integernewsletter_idnull | integerbroadcast_idnull | integercontent_idnull | integeraction_idnull | integerparent_action_idnull | integermessage_template_idnull | integerrecipientnull | stringsubjectnull | stringforgottennull | booleanfailure_messagenull | stringtrigger_event_idnull | stringmetricsnull | object
Activities
Activities List
Returns a paginated list of activities in the workspace.
Python SDK
await customer_io . activities . list ( )
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {your_auth_token}' \ --data '{ "entity": "activities", "action": "list" }'
Parameters
Parameter Name Type Required Description startstringNo Pagination cursor for the next page limitintegerNo Maximum number of activities to return typestringNo Filter by activity type namestringNo Filter by event name
Response Schema Records Field Name Type Description idnull | stringtypenull | stringtimestampnull | integercustomer_idnull | stringcustomer_identifiersnull | objectdelivery_idnull | stringdelivery_typenull | stringdatanull | object
Field Name Type Description nextstring
Sender Identities
Sender Identities List
Returns a paginated list of sender identities.
Python SDK
await customer_io . sender_identities . list ( )
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {your_auth_token}' \ --data '{ "entity": "sender_identities", "action": "list" }'
Parameters
Parameter Name Type Required Description startstringNo Pagination cursor for the next page limitintegerNo Maximum number of sender identities to return sort"asc" | "desc"No Sort order
Response Schema Records Field Name Type Description idnull | integernamenull | stringemailnull | stringaddressnull | stringtemplate_typenull | stringauto_generatednull | booleandeduplicate_idnull | stringphonenull | string
Field Name Type Description nextstring
Sender Identities Get
Returns a single sender identity by ID.
Python SDK
await customer_io . sender_identities . get ( sender_id = 0 )
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {your_auth_token}' \ --data '{ "entity": "sender_identities", "action": "get", "params": { "sender_id": 0 } }'
Parameters
Parameter Name Type Required Description sender_idintegerYes The sender identity identifier
Response Schema Records Field Name Type Description idnull | integernamenull | stringemailnull | stringaddressnull | stringtemplate_typenull | stringauto_generatednull | booleandeduplicate_idnull | stringphonenull | string
Snippets
Snippets List
Returns all snippets in the workspace.
Python SDK
await customer_io . snippets . list ( )
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {your_auth_token}' \ --data '{ "entity": "snippets", "action": "list" }'
Response Schema Records Field Name Type Description namenull | stringvaluenull | stringupdated_atnull | integer
Snippets Create
Creates a new reusable content snippet. Returns 422 if a snippet with the same name already exists.
Python SDK
await customer_io . snippets . create ( name = "<str>" , value = "<str>" )
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {your_auth_token}' \ --data '{ "entity": "snippets", "action": "create", "params": { "name": "<str>", "value": "<str>" } }'
Parameters
Parameter Name Type Required Description namestringYes Unique snippet name (used as the liquid tag identifier) valuestringYes Snippet content (plain text, HTML, or Liquid)
Snippets Update
Updates an existing snippet by name, or creates it if it does not exist (upsert behavior).
Python SDK
await customer_io . snippets . update ( name = "<str>" , value = "<str>" )
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {your_auth_token}' \ --data '{ "entity": "snippets", "action": "update", "params": { "name": "<str>", "value": "<str>" } }'
Parameters
Parameter Name Type Required Description namestringYes Snippet name to update (or create if it does not exist) valuestringYes New snippet content (plain text, HTML, or Liquid)
Collections
Collections List
Returns all collections in the workspace.
Python SDK
await customer_io . collections . list ( )
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {your_auth_token}' \ --data '{ "entity": "collections", "action": "list" }'
Response Schema Records Field Name Type Description idnull | integernamenull | stringbytesnull | integerrowsnull | integerschemanull | arraycreated_atnull | integerupdated_atnull | integer
Collections Create
Creates a new data collection with inline data or a URL source.
Python SDK
await customer_io . collections . create ( name = "<str>" , data = [ ] , url = "<str>" )
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {your_auth_token}' \ --data '{ "entity": "collections", "action": "create", "params": { "name": "<str>", "data": [], "url": "<str>" } }'
Parameters
Parameter Name Type Required Description namestringYes Collection name, referenced in Liquid as collection_name.property dataarray<object>No Inline collection data (array of objects). Provide either data or url, not both. urlstringNo URL to a CSV or JSON file containing collection data. Provide either data or url, not both.
Collections Get
Returns a single collection by ID.
Python SDK
await customer_io . collections . get ( collection_id = 0 )
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {your_auth_token}' \ --data '{ "entity": "collections", "action": "get", "params": { "collection_id": 0 } }'
Parameters
Parameter Name Type Required Description collection_idintegerYes The collection identifier
Response Schema Records Field Name Type Description idnull | integernamenull | stringbytesnull | integerrowsnull | integerschemanull | arraycreated_atnull | integerupdated_atnull | integer
Collections Update
Updates an existing collection's name, data, or URL source.
Python SDK
await customer_io . collections . update ( name = "<str>" , data = [ ] , url = "<str>" , collection_id = 0 )
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {your_auth_token}' \ --data '{ "entity": "collections", "action": "update", "params": { "name": "<str>", "data": [], "url": "<str>", "collection_id": 0 } }'
Parameters
Parameter Name Type Required Description namestringNo Rename the collection dataarray<object>No Replace collection data entirely (array of objects). Provide either data or url, not both. urlstringNo Replace the URL source for collection data. Provide either data or url, not both. collection_idintegerYes The collection identifier
Reporting Webhooks
Reporting Webhooks List
Returns all reporting webhooks in the workspace.
Python SDK
await customer_io . reporting_webhooks . list ( )
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {your_auth_token}' \ --data '{ "entity": "reporting_webhooks", "action": "list" }'
Response Schema Records Field Name Type Description idnull | integernamenull | stringendpointnull | stringdisablednull | booleanfull_resolutionnull | booleanwith_contentnull | booleaneventsnull | array
Reporting Webhooks Create
Creates a new reporting webhook to receive event notifications at the specified endpoint.
Python SDK
await customer_io . reporting_webhooks . create ( name = "<str>" , endpoint = "<str>" , events = [ ] , disabled = True , full_resolution = True , with_content = True )
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {your_auth_token}' \ --data '{ "entity": "reporting_webhooks", "action": "create", "params": { "name": "<str>", "endpoint": "<str>", "events": [], "disabled": True, "full_resolution": True, "with_content": True } }'
Parameters
Parameter Name Type Required Description namestringYes Webhook display name endpointstringYes The URL to receive webhook notifications eventsarray<string>Yes Event types to report (e.g. customer_subscribed, email_sent, email_opened, email_clicked, email_bounced, email_converted, email_unsubscribed, sms_sent, sms_delivered, push_sent) disabledbooleanNo Whether the webhook should be disabled initially full_resolutionbooleanNo Send all events instead of only unique events with_contentbooleanNo Include the message body in sent events
Response Schema Records Field Name Type Description idnull | integernamenull | stringendpointnull | stringdisablednull | booleanfull_resolutionnull | booleanwith_contentnull | booleaneventsnull | array
Reporting Webhooks Get
Returns a single reporting webhook by ID.
Python SDK
await customer_io . reporting_webhooks . get ( webhook_id = 0 )
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {your_auth_token}' \ --data '{ "entity": "reporting_webhooks", "action": "get", "params": { "webhook_id": 0 } }'
Parameters
Parameter Name Type Required Description webhook_idintegerYes The reporting webhook identifier
Response Schema Records Field Name Type Description idnull | integernamenull | stringendpointnull | stringdisablednull | booleanfull_resolutionnull | booleanwith_contentnull | booleaneventsnull | array
Reporting Webhooks Update
Updates an existing reporting webhook's configuration.
Python SDK
await customer_io . reporting_webhooks . update ( name = "<str>" , endpoint = "<str>" , events = [ ] , disabled = True , full_resolution = True , with_content = True , webhook_id = 0 )
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {your_auth_token}' \ --data '{ "entity": "reporting_webhooks", "action": "update", "params": { "name": "<str>", "endpoint": "<str>", "events": [], "disabled": True, "full_resolution": True, "with_content": True, "webhook_id": 0 } }'
Parameters
Parameter Name Type Required Description namestringYes Webhook display name endpointstringYes The URL to receive webhook notifications eventsarray<string>Yes Event types to report disabledbooleanNo Whether the webhook is disabled full_resolutionbooleanNo Send all events instead of only unique events with_contentbooleanNo Include the message body in sent events webhook_idintegerYes The reporting webhook identifier
Response Schema Records Field Name Type Description idnull | integernamenull | stringendpointnull | stringdisablednull | booleanfull_resolutionnull | booleanwith_contentnull | booleaneventsnull | array
Exports
Exports List
Returns all exports in the workspace.
Python SDK
await customer_io . exports . list ( )
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {your_auth_token}' \ --data '{ "entity": "exports", "action": "list" }'
Response Schema Records Field Name Type Description idnull | integertypenull | stringstatusnull | stringdescriptionnull | stringtotalnull | integerdownloadsnull | integerfailednull | booleancreated_atnull | integerupdated_atnull | integerdeduplicate_idnull | stringuser_idnull | integeruser_emailnull | string
Exports Create
Triggers a new export of customer data. Use filters to select which customers to export.
Python SDK
await customer_io . exports . create ( filters = { } )
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {your_auth_token}' \ --data '{ "entity": "exports", "action": "create", "params": { "filters": {} } }'
Parameters
Parameter Name Type Required Description filtersobjectYes Audience filter conditions to select which customers to export. Uses boolean logic with "and", "or", "not" arrays of conditions, "segment" objects with an "id" field, and "attribute" objects with "field", "operator", and "value" fields. Example: {"and": [{"segment": {"id": 3}}, {"attribute": {"field": "plan", "operator": "eq", "value": "premium"}}]}
Exports Get
Returns a single export by ID.
Python SDK
await customer_io . exports . get ( export_id = 0 )
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {your_auth_token}' \ --data '{ "entity": "exports", "action": "get", "params": { "export_id": 0 } }'
Parameters
Parameter Name Type Required Description export_idintegerYes The export identifier
Response Schema Records Field Name Type Description idnull | integertypenull | stringstatusnull | stringdescriptionnull | stringtotalnull | integerdownloadsnull | integerfailednull | booleancreated_atnull | integerupdated_atnull | integerdeduplicate_idnull | stringuser_idnull | integeruser_emailnull | string
Transactional Messages
Transactional Messages List
Returns a list of all transactional message templates in the workspace.
Python SDK
await customer_io . transactional_messages . list ( )
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {your_auth_token}' \ --data '{ "entity": "transactional_messages", "action": "list" }'
Response Schema Records Field Name Type Description idnull | integernamenull | stringdescriptionnull | stringsend_to_unsubscribednull | booleanlink_trackingnull | booleanopen_trackingnull | booleanhide_message_bodynull | booleanqueue_draftsnull | booleantrigger_namenull | stringcreated_atnull | integerupdated_atnull | integer
Transactional Messages Get
Returns a single transactional message template by ID.
Python SDK
await customer_io . transactional_messages . get ( transactional_id = 0 )
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {your_auth_token}' \ --data '{ "entity": "transactional_messages", "action": "get", "params": { "transactional_id": 0 } }'
Parameters
Parameter Name Type Required Description transactional_idintegerYes The transactional message identifier
Response Schema Records Field Name Type Description idnull | integernamenull | stringdescriptionnull | stringsend_to_unsubscribednull | booleanlink_trackingnull | booleanopen_trackingnull | booleanhide_message_bodynull | booleanqueue_draftsnull | booleantrigger_namenull | stringcreated_atnull | integerupdated_atnull | integer
Transactional Message Contents
Transactional Message Contents List
Returns all content variants (including language translations) for a transactional message template.
Python SDK
await customer_io . transactional_message_contents . list ( transactional_id = 0 )
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {your_auth_token}' \ --data '{ "entity": "transactional_message_contents", "action": "list", "params": { "transactional_id": 0 } }'
Parameters
Parameter Name Type Required Description transactional_idintegerYes The transactional message identifier
Response Schema Records Field Name Type Description idnull | integernamenull | stringcreatednull | integerupdatednull | integerbodynull | stringlanguagenull | stringtypenull | stringfromnull | stringfrom_idnull | integerreply_tonull | stringreply_to_idnull | integerpreprocessornull | stringrecipientnull | stringsubjectnull | stringbccnull | stringfake_bccnull | booleanpreheader_textnull | stringbody_ampnull | stringheadersnull | string
Transactional Message Contents Update
Updates the content of a specific variant of a transactional message template by content ID.
Python SDK
await customer_io . transactional_message_contents . update ( body = "<str>" , from_id = 0 , reply_to_id = 0 , recipient = "<str>" , subject = "<str>" , preheader_text = "<str>" , body_amp = "<str>" , headers = [ ] , transactional_id = 0 , content_id = 0 )
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {your_auth_token}' \ --data '{ "entity": "transactional_message_contents", "action": "update", "params": { "body": "<str>", "from_id": 0, "reply_to_id": 0, "recipient": "<str>", "subject": "<str>", "preheader_text": "<str>", "body_amp": "<str>", "headers": [], "transactional_id": 0, "content_id": 0 } }'
Parameters
Parameter Name Type Required Description bodystringNo HTML body content of the message from_idintegerNo Sender identity ID reply_to_idinteger | nullNo Reply-to sender identity ID recipientstringNo Recipient expression (e.g. "{{customer.email}}") subjectstringNo Email subject line preheader_textstringNo Email preheader/preview text body_ampstringNo AMP HTML body content headersarray<object>No Custom email headers as an array of name-value objects headers.namestringNo Header name headers.valuestringNo Header value transactional_idintegerYes The transactional message identifier content_idintegerYes The content variant identifier
Response Schema Records Field Name Type Description idnull | integernamenull | stringcreatednull | integerupdatednull | integerbodynull | stringlanguagenull | stringtypenull | stringfromnull | stringfrom_idnull | integerreply_tonull | stringreply_to_idnull | integerpreprocessornull | stringrecipientnull | stringsubjectnull | stringbccnull | stringfake_bccnull | booleanpreheader_textnull | stringbody_ampnull | stringheadersnull | string
Transactional Email
Transactional Email Create
Sends a transactional email to a single recipient. Can use a pre-built template (via transactional_message_id) or provide inline content (subject, body, from). Creates the recipient profile if it does not already exist.
Python SDK
await customer_io . transactional_email . create ( transactional_message_id = 0 , to = "<str>" , identifiers = { } , message_data = { } , from_ = "<str>" , subject = "<str>" , body = "<str>" , body_plain = "<str>" , reply_to = "<str>" , bcc = "<str>" , headers = { } , preheader_text = "<str>" , attachments = { } , disable_message_retention = True , send_to_unsubscribed = True , tracked = True , queue_draft = True , send_at = 0 )
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {your_auth_token}' \ --data '{ "entity": "transactional_email", "action": "create", "params": { "transactional_message_id": 0, "to": "<str>", "identifiers": {}, "message_data": {}, "from": "<str>", "subject": "<str>", "body": "<str>", "body_plain": "<str>", "reply_to": "<str>", "bcc": "<str>", "headers": {}, "preheader_text": "<str>", "attachments": {}, "disable_message_retention": True, "send_to_unsubscribed": True, "tracked": True, "queue_draft": True, "send_at": 0 } }'
Parameters
Parameter Name Type Required Description transactional_message_idinteger | stringNo Template ID (number) or trigger name (string). Required if not providing inline body/subject/from. tostringYes Recipient email address. Supports display name format: "Name <email>" identifiersobjectYes Recipient identity. One of: {"id": "..."}, {"email": "..."}, or {"cio_id": "..."} message_dataobjectNo Key-value pairs available as {{trigger.<key>}} in templates fromstringNo Sender address (must be verified domain). Overrides template if provided. subjectstringNo Email subject line. Overrides template if provided. bodystringNo HTML email body. Overrides template if provided. body_plainstringNo Plaintext email body reply_tostringNo Reply-to email address bccstringNo BCC address(es), comma-separated. Max 15 total recipients. headersobjectNo Custom email headers (ASCII only) preheader_textstringNo Email preview text attachmentsobjectNo Map of filename to base64 content: {"file.pdf": "<base64>"}. Max 2MB total. disable_message_retentionbooleanNo Do not store message body (for sensitive data) send_to_unsubscribedbooleanNo Send even if person is unsubscribed trackedbooleanNo Enable open and click tracking queue_draftbooleanNo Queue as draft instead of sending immediately send_atintegerNo Unix timestamp for scheduled delivery (up to 90 days in the future)
Response Schema Records Field Name Type Description delivery_idnull | stringqueued_atnull | integer
Transactional Sms
Transactional Sms Create
Sends a transactional SMS to a single recipient. Always requires a pre-built template (transactional_message_id). Requires Twilio integration to be configured in the workspace.
Python SDK
await customer_io . transactional_sms . create ( transactional_message_id = 0 , to = "<str>" , identifiers = { } , message_data = { } , from_ = "<str>" , send_to_unsubscribed = True , tracked = True , queue_draft = True , disable_message_retention = True )
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {your_auth_token}' \ --data '{ "entity": "transactional_sms", "action": "create", "params": { "transactional_message_id": 0, "to": "<str>", "identifiers": {}, "message_data": {}, "from": "<str>", "send_to_unsubscribed": True, "tracked": True, "queue_draft": True, "disable_message_retention": True } }'
Parameters
Parameter Name Type Required Description transactional_message_idinteger | stringYes Template ID (number) or trigger name (string). Always required for SMS. tostringYes Phone number in E.164 format (e.g. +15551234567) identifiersobjectYes Recipient identity. One of: {"id": "..."}, {"email": "..."}, or {"cio_id": "..."} message_dataobjectNo Key-value pairs available as {{trigger.<key>}} in templates fromstringNo Override sender phone number (must be verified in Twilio) send_to_unsubscribedbooleanNo Send even if person is unsubscribed trackedbooleanNo Enable link tracking queue_draftbooleanNo Queue as draft instead of sending immediately disable_message_retentionbooleanNo Do not store message content
Response Schema Records Field Name Type Description delivery_idnull | stringqueued_atnull | integer
Transactional Push
Transactional Push Create
Sends a transactional push notification to a single recipient. Can use a template or provide inline title and message. Requires push notifications to be configured in the workspace.
Python SDK
await customer_io . transactional_push . create ( transactional_message_id = 0 , to = "<str>" , identifiers = { } , message_data = { } , title = "<str>" , message = "<str>" , link = "<str>" , image_url = "<str>" , custom_data = { } , custom_payload = { } , sound = "<str>" , send_to_unsubscribed = True , queue_draft = True , disable_message_retention = True , send_at = 0 )
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {your_auth_token}' \ --data '{ "entity": "transactional_push", "action": "create", "params": { "transactional_message_id": 0, "to": "<str>", "identifiers": {}, "message_data": {}, "title": "<str>", "message": "<str>", "link": "<str>", "image_url": "<str>", "custom_data": {}, "custom_payload": {}, "sound": "<str>", "send_to_unsubscribed": True, "queue_draft": True, "disable_message_retention": True, "send_at": 0 } }'
Parameters
Parameter Name Type Required Description transactional_message_idinteger | stringNo Template ID or trigger name. Required if not providing inline title/message. tostringNo Device target: "last_used" for most recent device, or a specific device token. Defaults to all devices. identifiersobjectYes Recipient identity. One of: {"id": "..."}, {"email": "..."}, or {"cio_id": "..."} message_dataobjectNo Key-value pairs available as {{trigger.<key>}} in templates titlestringNo Push notification title (overrides template) messagestringNo Push notification body (overrides template) linkstringNo Deep link URL image_urlstringNo Image URL to display in the notification custom_dataobjectNo Custom key-value data included in the push payload custom_payloadobjectNo Platform-specific payload overrides (iOS/Android) soundstringNo Notification sound name send_to_unsubscribedbooleanNo Send even if person is unsubscribed queue_draftbooleanNo Queue as draft instead of sending immediately disable_message_retentionbooleanNo Do not store message content send_atintegerNo Unix timestamp for scheduled delivery
Response Schema Records Field Name Type Description delivery_idnull | stringqueued_atnull | integer
Transactional Inbox Message
Transactional Inbox Message Create
Sends a transactional in-app inbox message to a single recipient. Always requires a pre-built Inbox-type transactional message template (transactional_message_id). Messages appear in the recipient's notification inbox via the Customer.io SDK.
Python SDK
await customer_io . transactional_inbox_message . create ( transactional_message_id = 0 , identifiers = { } , message_data = { } )
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {your_auth_token}' \ --data '{ "entity": "transactional_inbox_message", "action": "create", "params": { "transactional_message_id": 0, "identifiers": {}, "message_data": {} } }'
Parameters
Parameter Name Type Required Description transactional_message_idinteger | stringYes Template ID or trigger name. Must reference an Inbox-type transactional message. identifiersobjectYes Recipient identity. One of: {"id": "..."}, {"email": "..."}, or {"cio_id": "..."} message_dataobjectNo Key-value pairs available as {{trigger.<key>}} in the inbox message template
Response Schema Records Field Name Type Description delivery_idnull | stringqueued_atnull | integer
Broadcast Trigger
Broadcast Trigger Create
Triggers an API-triggered broadcast campaign. The broadcast must be configured as API-triggered in the Customer.io UI. Cannot be triggered more than once every 10 seconds, with a maximum of 5 queued broadcasts per campaign. Recipients must already exist in the workspace.
Python SDK
await customer_io . broadcast_trigger . create ( data = { } , recipients = { } , ids = [ ] , emails = [ ] , per_user_data = [ ] , data_file_url = "<str>" , id_ignore_missing = True , email_ignore_missing = True , email_add_duplicates = True , campaign_id = 0 )
API
curl --location 'https://api.airbyte.ai/api/v1/integrations/connectors/{your_connector_id}/execute' \ --header 'Content-Type: application/json' \ --header 'Authorization: Bearer {your_auth_token}' \ --data '{ "entity": "broadcast_trigger", "action": "create", "params": { "data": {}, "recipients": {}, "ids": [], "emails": [], "per_user_data": [], "data_file_url": "<str>", "id_ignore_missing": True, "email_ignore_missing": True, "email_add_duplicates": True, "campaign_id": 0 } }'
Parameters
Parameter Name Type Required Description dataobjectNo Global data available as {{trigger.<key>}} in broadcast messages recipientsobjectNo Filter object to define audience (overrides UI-defined recipients). Supports and/or/not/segment/attribute conditions. idsarray<string>No List of profile IDs to target (max 10,000) emailsarray<string>No List of email addresses to target (max 10,000) per_user_dataarray<object>No Per-recipient custom data: [{"id": "user1", "data": {...}}, ...] data_file_urlstringNo URL to a JSON Lines file with per-user data id_ignore_missingbooleanNo Ignore IDs that do not match existing profiles (default false) email_ignore_missingbooleanNo Ignore emails that do not match existing profiles email_add_duplicatesbooleanNo Send to all profiles sharing an email address campaign_idintegerYes The broadcast campaign identifier (found in Triggering Details)
Response Schema Records Field Name Type Description idnull | integer