Customer.io Newsletter Variants API

A newsletter variant is a translation or an A/B test. You can create, update, or delete variants in newsletters from these endpoints. You can also create a new A/B test group. If your newsletters include assets like images or PDFs, host them in your [workspace's assets](/integrations/api/app/#tag/assets) or at another public URL, and include the URL in your message content.

Operations 13

Each operation below carries the questions people ask an LLM about it and the instructions they give an agent to run it. Generated by API Evangelist overlay

GET /v1/newsletters/{newsletter_id}/contents List a newsletter's content variants · List newsletter variants #
Ask an LLM
“What language and A/B test variants does my newsletter have?”
“How do I find the content IDs of a newsletter's variants?”
Tell an agent
List the content variants of newsletter {newsletter_id}.
Show every language and test version of newsletter {newsletter_id}.
GET /v1/newsletters/{newsletter_id}/contents/{content_id} Get one newsletter variant by content ID · Get a newsletter variant #
Ask an LLM
“How do I read the content of one specific newsletter variant?”
“Can I fetch a newsletter variant by its content ID?”
Tell an agent
Get variant {content_id} of newsletter {newsletter_id}.
Show newsletter {newsletter_id} content {content_id}.
PUT /v1/newsletters/{newsletter_id}/contents/{content_id} Update a newsletter variant by content ID · Update a newsletter variant #
Ask an LLM
“How do I change the body or subject of a newsletter variant?”
“Can I update the from address on a newsletter email variant?”
Tell an agent
Update content {content_id} of newsletter {newsletter_id}.
Edit the body of newsletter {newsletter_id} variant {content_id}.
POST /v1/newsletters/{newsletter_id}/language Add a translation to a newsletter · Add a translation to a newsletter #
Ask an LLM
“How do I add a French translation to my newsletter?”
“What gets copied when I add a language to a newsletter without full content?”
Tell an agent
Add a language translation to newsletter {newsletter_id}.
Create a new language variant for newsletter {newsletter_id}.
GET /v1/newsletters/{newsletter_id}/language/{language} Get a newsletter translation · Get a newsletter translation #
Ask an LLM
“How do I see the German version of a newsletter without A/B tests?”
“Can I fetch a newsletter translation by language code?”
Tell an agent
Get the {language} translation of newsletter {newsletter_id}.
Show newsletter {newsletter_id} in {language}.
PUT /v1/newsletters/{newsletter_id}/language/{language} Update a newsletter translation · Update a translation of a newsletter #
Ask an LLM
“How do I edit the Spanish translation of a newsletter that has no A/B test?”
“Can I change one language of a newsletter by language code?”
Tell an agent
Update the {language} translation of newsletter {newsletter_id}.
Edit newsletter {newsletter_id}'s {language} copy.
DELETE /v1/newsletters/{newsletter_id}/language/{language} Delete a newsletter translation · Delete a translation of a newsletter #
Ask an LLM
“How do I remove a language from my newsletter?”
“Can I delete a newsletter translation after it has been sent?”
Tell an agent destructive · confirm first
Delete the {language} translation of newsletter {newsletter_id}.
Remove {language} from newsletter {newsletter_id}.
GET /v1/newsletters/{newsletter_id}/test_groups List a newsletter's A/B test groups · List a newsletter's A/B test groups #
Ask an LLM
“What A/B test groups does my newsletter have?”
“How do I find the test group IDs for a newsletter?”
Tell an agent
List the A/B test groups of newsletter {newsletter_id}.
Show test groups and their content IDs for newsletter {newsletter_id}.
POST /v1/newsletters/{newsletter_id}/test_groups Create an A/B test group for a newsletter · Create an A/B test group for a newsletter #
Ask an LLM
“How do I set up an A/B test on my newsletter?”
“Does a new newsletter test group start as a copy of the existing content?”
Tell an agent
Create an A/B test group for newsletter {newsletter_id}.
Add a new test group to newsletter {newsletter_id}.
POST /v1/newsletters/{newsletter_id}/test_group/{test_group_id}/language Add a translation to a newsletter test group · Add a translation to a newsletter test group #
Ask an LLM
“How do I add a translation to one A/B test group of my newsletter?”
“Can each newsletter test group have its own languages?”
Tell an agent
Add a translation to test group {test_group_id} of newsletter {newsletter_id}.
Create a language variant in newsletter {newsletter_id} test group {test_group_id}.
GET /v1/newsletters/{newsletter_id}/test_group/{test_group_id}/language/{language} Get a translation in a newsletter test group · Get a translation in a newsletter test group #
Ask an LLM
“How do I see the French version inside one A/B test group of a newsletter?”
“Can I read a translation from a specific newsletter test group?”
Tell an agent
Get the {language} translation in test group {test_group_id} of newsletter {newsletter_id}.
Show newsletter {newsletter_id} test group {test_group_id} in {language}.
PUT /v1/newsletters/{newsletter_id}/test_group/{test_group_id}/language/{language} Update a translation in a newsletter test group · Update a translation in a newsletter test group #
Ask an LLM
“How do I edit a translation that belongs to a newsletter A/B test group?”
“Can I change one language in just one newsletter test group?”
Tell an agent
Update the {language} translation in test group {test_group_id} of newsletter {newsletter_id}.
Edit newsletter {newsletter_id} test group {test_group_id}'s {language} copy.
DELETE /v1/newsletters/{newsletter_id}/test_group/{test_group_id}/language/{language} Delete a translation in a newsletter test group · Delete a translation in a newsletter test group #
Ask an LLM
“How do I remove a language from one A/B test group of my newsletter?”
“Can I delete the default language of a newsletter test group?”
Tell an agent destructive · confirm first
Delete the {language} translation in test group {test_group_id} of newsletter {newsletter_id}.
Remove {language} from newsletter {newsletter_id} test group {test_group_id}.

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/customer-io:customer-io-newsletter-variants-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

customer-io-newsletter-variants-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  version: 1.0.0
  title: Customer.io App Newsletter Variants API
  description: Our App API provides ways to trigger messages and retrieve information about people, campaigns, broadcasts, and more.
servers:
- url: https://api.customer.io
  description: The base URL for broadcasts, transactional messages, and data-retrieval APIs. These endpoints use bearer authorization, and require a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app).
- url: https://api-eu.customer.io
  description: The base URL for broadcasts, transactional messages, and data-retrieval APIs (EU region). These endpoints use bearer authorization, and require a [token that you generate in the UI](https://fly.customer.io/settings/api_credentials?keyType=app).
tags:


# --- truncated at 32 KB (144 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/customer-io/refs/heads/main/openapi/customer-io-newsletter-variants-api-openapi.yml