Customer.io · Schema
Update the contents of an email newsletter variant. You can set the sender with `from_id`. If you don't provide it, the existing sender is preserved.
Behavioral DataBroadcastCampaignsCDPCustomer DataCustomer Data PlatformData IngestionEmailEvent TrackingMarketing AutomationMessagingPush NotificationsSegmentsSMSTransactional EmailA2A
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://raw.githubusercontent.com/api-evangelist/customer-io/main/json-schema/customer-io-update-email-content-schema.json",
"title": "Email",
"description": "Update the contents of an email newsletter variant. You can set the sender with `from_id`. If you don't provide it, the existing sender is preserved.\n",
"x-generated": "2026-10-12",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/customer-io-newsletter-variants-api-openapi.yml#/components/schemas/updateEmailContent",
"allOf": [
{
"type": "object",
"properties": {
"type": {
"x-scalar-ignore": true,
"description": "Channel type for a newsletter or newsletter content variant.",
"type": "string",
"enum": [
"email",
"webhook",
"twilio",
"push",
"in_app",
"inbox"
],
"readOnly": true
},
"deduplicate_id": {
"x-scalar-ignore": true,
"type": "string",
"readOnly": true,
"description": "An identifier in the format `id:timestamp` where the id is for the object you're working with (Campaigns, Deliveries, Exports, Identities, Newsletters, Segments, and Templates), and the timestamp is the last time the object was updated."
}
}
},
{
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"email"
],
"readOnly": true
},
"body": {
"type": "string",
"description": "The HTML body of the email. You cannot modify the body if you created the newsletter with Design Studio or the drag-and-drop editor."
},
"body_amp": {
"x-scalar-ignore": true,
"type": "string",
"description": "AMP-enabled content for your email. If a recipient's email client doesn't support AMP, they receive your `body` content instead. Make sure you're [set up to send AMP](/journeys/channels/email/layouts/amp-for-email/) first."
},
"body_plain": {
"x-scalar-ignore": true,
"type": "string",
"description": "By default, your workspace generates a plaintext version of your message body for each delivery. Use this key to override the default plain text body."
},
"subject": {
"x-scalar-ignore": true,
"type": "string",
"description": "The subject line for an `email` action."
},
"preheader_text": {
"x-scalar-ignore": true,
"type": "string",
"description": "[Also known as \"preview text\"](/journeys/channels/email/headers/custom-preheader-text/), this is the small block of text shown in an email inbox next to or underneath the subject line.\n"
},
"from_id": {
"x-scalar-ignore": true,
"type": "integer",
"description": "The identifier of the `from` address, commonly known as the \"sender\". Use [List sender identities](#tag/sender-identities/listSenders) to find valid IDs."
},
"reply_to_id": {
"x-scalar-ignore": true,
"type": [
"integer",
"null"
],
"description": "The identifier for the `reply_to` address, if applicable. Use [List sender identities](#tag/sender-identities/listSenders) to find valid IDs."
},
"recipient": {
"type": "string",
"description": "The recipient address for the newsletter. By default, it's `{{customer.email}}`."
}
}
}
]
}
Work with this as data
Every JSON Schema 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 schemas
4 MCP tools reach this
find_json_schemasBrowse and filter every JSON Schema in the catalog.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.
Call it yourself
curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/customer-io-update-email-content"
All schemas
curl "https://apis.io/api/v1/json-schemas?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.