Skip to navigation

Iterable

Connect your AI agents to Iterable.

Authentication: API key. See Magic Link for the runtime auth flow.

Sample use cases

  • List the users in the Newsletter Subscribers list and flag the ones who unsubscribed this week
  • Look up user jane.doe@example.com and update their subscriptions
  • Activate the triggered campaign Order Shipped for a list of users

Available Tools

abort_campaign

Abort a campaign that is currently sending. Messages not yet delivered are not sent; those already delivered are unaf…

activate_triggered_campaign

Activate a triggered campaign so it can fire. Use list_campaigns to find a campaign whose type is ‘Triggered’. Use de…

archive_campaigns

Archive one or more campaigns, hiding them from the Campaigns page. Scheduled and recurring campaigns are cancelled a…

begin_sms_verification

Send a verification code by SMS to a phone number. This delivers a real text message. Check the code the user receive…

bulk_create_catalog_items

Create or overwrite up to 1000 catalog items in one request. Set replace_uploaded_fields_only true to change only the…

bulk_delete_catalog_items

Delete several items from a catalog in one request. Use list_catalog_items to find item IDs. Deletion is asynchronous…

bulk_delete_templates

Delete base templates by ID. A template any campaign references is reported in failed rather than deleted, so check t…

bulk_update_group_subscriptions

Subscribe or unsubscribe many users to or from one list, message type or channel. Name users by email in users, by us…

bulk_update_user_subscriptions

Set list, channel and message-type subscriptions for many users in one request. Each entry REPLACES the stored lists…

bulk_update_users

Create or update up to 1000 user profiles in one request. Each user is identified by email or user_id. Use list_user_…

cancel_campaign

Cancel a scheduled or recurring campaign so it does not send. Use list_campaigns with campaign_state [‘Scheduled’, ‘R…

cancel_email

Cancel a scheduled email before it is delivered. Identify it by scheduled_message_id, or by campaign_id plus the reci…

cancel_experiment

Stop a running experiment without choosing a winner. Use declare_experiment_winner to end it on a chosen arm instead…

cancel_export_job

Cancel a queued or running export job. Use list_export_jobs to find a job_id, or pass the one start_export returned…

cancel_in_app

Cancel a scheduled in-app message before it is delivered to the user’s device. Identify it by scheduled_message_id, o…

cancel_push

Cancel a scheduled mobile push notification before it is delivered. Identify it by scheduled_message_id, or by campai…

cancel_rcs

Cancel a scheduled RCS message before it is delivered. Identify it by scheduled_message_id, or by campaign_id plus th…

cancel_sms

Cancel a scheduled SMS before it is delivered. Identify it by scheduled_message_id, or by campaign_id plus the recipi…

cancel_web_push

Cancel a scheduled browser push notification before it is delivered. Identify it by scheduled_message_id, or by campa…

cancel_whatsapp

Cancel a scheduled WhatsApp message before it is delivered. Identify it by scheduled_message_id, or by campaign_id pl…

check_sms_verification

Check a verification code against the number begin_sms_verification sent it to. Use the same phone_number and verific…

create_campaign

Create a blast or triggered campaign from an existing template, in Ready state so it sends nothing until scheduled. S…

create_catalog

Create an empty catalog. The name must be unique in the project, use only alphanumeric characters and dashes, and be…

create_experiment

Attach a new experiment to a campaign, choosing what it varies. Use list_campaigns to find campaign IDs. experiment_t…

create_experiment_variant

Add a variant to an experiment by copying an existing template into it. Use list_templates for the template to copy a…

create_list

Create a static list. Returns the new list_id for use with subscribe_to_list and create_campaign. Dynamic (segment) l…

create_snippet

Create a snippet. The name must be unique in the project. Use upsert_snippet to create-or-update by name instead. Ret…

deactivate_triggered_campaign

Deactivate a triggered campaign so it stops firing. Use list_campaigns to find a campaign whose type is ‘Triggered’…

declare_experiment_winner

End an experiment by declaring one variant the winner, after which the campaign sends that variant to everyone. Use l…

delete_catalog

Delete a catalog and every collection that references it. Use list_catalogs to find catalog names. This is the invers…

delete_catalog_item

Delete one item from a catalog. Use list_catalog_items to find item IDs; they are case-sensitive. Deletion is asynchr…

delete_experiment

Delete an experiment from its campaign. Use cancel_experiment to stop a running experiment while keeping its results…

delete_list

Delete a list. The users on it are not deleted, only their membership. Use list_lists to find list IDs. This is the i…

delete_metadata_key

Delete one key and its value from a metadata table. The delete is asynchronous, so the key may still read back briefl…

delete_metadata_table

Delete a whole metadata table and every key in it. The delete is asynchronous, so the table may still list briefly -…

delete_snippet

Delete a snippet by its numeric ID or its name. Use list_snippets to find both. A template still referencing the snip…

export_data

Download campaign analytics immediately as CSV or JSON lines, without a background job. Supply range, or both start_d…

export_user_events

Download one user’s complete event history as JSON lines, identified by email or user_id. Use list_user_events for a…

get_campaign

Read one campaign by ID, including its state, template, lists and send times. Use list_campaigns to find campaign IDs…

get_campaign_metrics

Get send and engagement metrics for one or more campaigns as CSV. Use list_campaigns to find campaign IDs. Iterable r…

get_catalog_field_mappings

Read a catalog’s declared field types and the fields that have none. Call this before set_catalog_field_mappings - a…

get_catalog_item

Read one catalog item’s stored fields. Use list_catalog_items to find item IDs; they are case-sensitive. Use list_cat…

get_email_template

Read one email template’s full content: subject, HTML, plain text, sender and link settings. Use list_templates with…

get_embedded_template

Read one embedded-message template’s full content: title, body, elements and placement. Use list_templates to find te…

get_experiment

Read one experiment: its type, status, variants, traffic allocation and targeting. Use list_experiments to find exper…

get_experiment_metrics

Get a metrics report across several experiments or campaigns as rows of comma-separated values. Supply experiment_ids…

get_experiment_totals

Read lifetime send and conversion totals for every variant in an experiment. Use get_experiment_trends for the same n…

get_experiment_trends

Read an experiment’s per-variant metrics as a time series, with the holdout group reported separately. Use get_experi…

get_in_app_template

Read one in-app template’s full content: HTML, display settings, inbox metadata and expiry. Use list_templates with m…

get_list_size

Count the users on a list without reading them. Use list_lists to find list IDs. Iterable rate-limits this to 5 reque…

get_list_users

Read every user on a list as email addresses, or user IDs when prefer_user_id is true. Use get_list_size first for th…

get_metadata_value

Read one key’s stored JSON value from a metadata table. Use list_metadata_keys to find keys; they are case-sensitive…

get_priority_in_app_message

Read the single most relevant in-app message waiting for one user. Use list_in_app_messages to see everything queued…

get_push_template

Read one push template’s full content: title, message, deep links, buttons and payload. Use list_templates with messa…

get_sms_template

Read one SMS template’s full content: message body, image and link settings. Use list_templates with message_medium ’…

get_snippet

Read one snippet by its numeric ID or its name. Use list_snippets to find both. Read it before upsert_snippet, which…

get_template_by_client_id

Find the templates carrying a given client template ID, the secondary key set when a template is created through upse…

get_user_by_email

Read one user profile by email address, including every custom data field. Use get_user_by_user_id when you hold a us…

get_user_by_user_id

Read one user profile by user ID, including every custom data field. Use get_user_by_email when you hold an email add…

list_campaigns

List campaigns in the project, with optional state filter and sort. Use this to find a campaign_id before reading met…

list_catalog_items

List a catalog’s items with their stored fields, optionally ordered by a typed field. Use list_catalogs for catalog n…

list_catalogs

List the project’s catalog names. Use this to find a catalog_name before reading or writing catalog items. Page forwa…

list_channels

List the project’s message channels and whether each is Marketing or Transactional. Call this before upsert_email_tem…

list_child_campaigns

List the individual sends a recurring campaign has generated. Use list_campaigns with campaign_state [‘Recurring’] to…

list_embedded_messages

List the embedded messages waiting for one user, grouped by placement. Read messageId out of each message’s metadata…

list_experiment_variants

List an experiment’s variants with the template content each sends and its share of the audience. Use this to find th…

list_experiments

List the project’s experiments, filtered by campaign, state or start date. Use this to find an experiment_id before r…

list_export_files

Read an export job’s state and the files it has written, each with a signed download URL that expires after 30 minute…

list_export_jobs

List the project’s recent export jobs with their state and size. Use this to find a job_id when you no longer have th…

list_in_app_messages

List the in-app messages waiting for one user on a mobile platform, in display priority order. Use get_priority_in_ap…

list_journeys

List the project’s journeys with their trigger events and enabled state. Use this to find the journey id that trigger…

list_lists

List every list in the project with its type and size-relevant metadata. Use this to find a list_id before creating a…

list_message_types

List the project’s message types with their channel, subscription policy and send caps. Use this to find the message_…

list_metadata_keys

List the keys in one metadata table, without their values. Use list_metadata_tables to find table names and get_metad…

list_metadata_tables

List the project’s metadata tables. Metadata is Iterable’s own JSON key/value store, which templates read with the me…

list_sent_messages

List the messages Iterable has sent to one user, with campaign, date and channel filters. Identify the user by email…

list_snippets

List the project’s snippets with their content and variables. Use this to find a snippet’s ID or name before reading…

list_templates

List the project’s templates with their IDs, names and message types, filtered by type, channel or creation date. Use…

list_user_events

Read one user’s recent events, newest first, identified by email or user_id. Use this to see what a user has done bef…

list_user_fields

List every user-profile field defined in the project and its data type. Call this before update_user to learn which f…

list_web_in_app_messages

List the in-app messages waiting for one user in the browser. Use list_in_app_messages for mobile platforms. Identify…

list_webhooks

List the project’s system webhooks with their endpoints, authentication and scope. Use this to find the webhook id th…

patch_catalog_item

Set individual fields on a catalog item, leaving the rest as they are, creating the item if it does not exist. Use up…

preview_email_template

Render an email template against sample data and return the HTML, without sending anything. Use this to check merge f…

preview_in_app_template

Render an in-app template against sample data and return the HTML, without sending anything. Use this to check merge…

preview_list_users

Read a random sample of up to 5000 users on a list. Use this instead of get_list_users to inspect a large list cheapl…

schedule_campaign

Schedule an existing campaign to send at a given time. Use list_campaigns to find campaign IDs. Pass start_time_zone…

send_email_template_proof

Send a real test email rendered from a template to one recipient. This delivers an actual message - use preview_email…

send_in_app_template_proof

Send a real test in-app message rendered from a template to one recipient. This delivers an actual message - use prev…

send_push_template_proof

Send a real test push notification rendered from a template to one recipient. This delivers an actual notification to…

send_sms_template_proof

Send a real test SMS rendered from a template to one recipient. This delivers an actual text message to the phone num…

set_catalog_field_mappings

Declare data types for a catalog’s fields so they can be sorted and filtered on. Call get_catalog_field_mappings firs…

set_metadata_value

Create or REPLACE one key’s JSON value, creating the table if it does not exist. The write is asynchronous: a 200 mea…

start_experiment

Start an experiment so it begins allocating traffic across its variants. Add variants with create_experiment_variant…

start_export

Queue a background export of events or user profiles and return its job_id. Poll list_export_files with that job_id f…

subscribe_to_double_opt_in

Send a user an SMS confirmation and subscribe them to the named message types once they reply. Only SMS message types…

subscribe_to_list

Add users to a static list, creating profiles for identifiers that do not exist yet. Use list_lists to find a list wh…

subscribe_user_to_group

Subscribe one user to a list, message type or channel. Use list_lists, list_message_types or list_channels for the gr…

track_bulk_events

Record many custom events in one request. Iterable processes bulk and single event calls on separate pipelines, so se…

track_embedded_message_click

Record a click on an embedded message, creating an embeddedClick event. Iterable’s mobile SDKs send this themselves…

track_embedded_message_received

Record that a device retrieved an embedded message, creating an embeddedReceived event. This means retrieved, not dis…

track_embedded_message_session

Record a viewing session and one impression per embedded message seen during it, creating an embeddedSession event an…

track_event

Record one custom event against a user profile. An event whose name appears in a journey’s trigger_event_names enrols…

track_purchase

Record a completed purchase against a user profile, creating the profile if it does not exist. This also CLEARS the p…

trigger_campaign

Fire a triggered campaign at the members of one or more lists. This sends real messages immediately. Use list_campaig…

trigger_journey

Enrol one user, or every member of a list, in a journey. This starts real message sends on the journey’s schedule. Us…

unsubscribe_from_list

Remove users from a list. Set channel_unsubscribe true to also opt them out of the list’s whole channel, which is eff…

unsubscribe_user_from_group

Unsubscribe one user from a list, message type or channel. Use list_lists, list_message_types or list_channels for th…

update_cart

Replace the items in a user’s shopping cart, creating the profile if it does not exist. The list given REPLACES the s…

update_email_template

Update one existing email template by ID. Read it with get_email_template first and send back the fields you want kep…

update_embedded_template

Update one existing embedded-message template by ID. Read it with get_embedded_template first and send back the field…

update_experiment_settings

Change how an experiment splits traffic and picks a winner. Read the current settings with get_experiment first - a b…

update_in_app_template

Update one existing in-app template by ID. Read it with get_in_app_template first and send back the fields you want k…

update_push_template

Update one existing push template by ID. Read it with get_push_template first and send back the fields you want kept…

update_sms_template

Update one existing SMS template by ID. Read it with get_sms_template first and send back the fields you want kept -…

update_user

Create or update one user profile, merging the fields given into whatever is already stored. Identify the user by ema…

update_user_email

Move a user profile to a new email address. Identify the profile by current_email or current_user_id. This is for ema…

update_user_subscriptions

Set one user’s list, channel and message-type subscriptions. Each list given REPLACES the stored one rather than addi…

update_webhook

Change an existing webhook’s endpoint, authentication, scope or enabled state. Use list_webhooks to find webhook IDs…

upsert_catalog_item

Create a catalog item, or REPLACE an existing one entirely - fields left out of value are removed. Use patch_catalog_…

upsert_email_template

Create an email template, or update every template sharing the client_template_id. Use list_message_types for message…

upsert_embedded_template

Create an embedded-message template, or update every template sharing the client_template_id. Use list_message_types…

upsert_in_app_template

Create an in-app template, or update every template sharing the client_template_id. Use list_message_types to find an…

upsert_push_template

Create a push template, or update every template sharing the client_template_id. Use list_message_types to find a pus…

upsert_sms_template

Create an SMS template, or update every template sharing the client_template_id. message_type_id must belong to a cha…

upsert_snippet

Create or update a snippet by name, or update one by numeric ID. A numeric identifier only updates an existing snippe…

view_email_in_browser

Fetch the rendered HTML of an email already sent to a user, with that recipient’s merge data applied. Use list_sent_m…