Memory API (v1) - Data Mapping endpoints
Legal information
Conversation Memory, including the APIs, may use artificial intelligence or machine learning technologies and is subject to the terms of the Predictive and Generative AI/ML Features Addendum. For more details on AI usage and data, see the AI Nutrition Facts.
Conversation Memory is not a HIPAA Eligible Service or PCI compliant and should not be enabled in workflows that are subject to HIPAA or PCI.
Conversation Memory is not intended for use with sensitive information about individuals. Twilio does not control what information comes from conversation channels and relies on you to ensure the data in customer profiles aligns with our acceptable use policy. Twilio does have limited guardrails in the form of a prompt exclusion that is designed to provide a minimal screening against inclusion of GDPR special category data. As a reminder our profile technology uses generative artificial intelligence. Because generative artificial intelligence can make mistakes, review all outputs to ensure that the profile is correct.
Create a Data Mapping
List Data Mappings
Retrieve a Data Mapping
Update a Data Mapping
Delete a Data Mapping
POST/v1/ControlPlane/Stores/{storeId}/DataMappings
Base url: https://memory.twilio.com (base url)
Create a new data mapping to connect an external data source to this Memory Store. For DATASET types, validates that all mapped Trait Groups and traits exist and that dataset field data types match their respective mapped trait data types.
A unique Memory Store ID using Twilio Type ID (TTID) format
mem_store_00000000000000000000000000Pattern: ^mem_(store|service)_[0-7][0-9a-z]{25}$application/jsonName of the data mapping.
crm-contactsPattern: ^[a-zA-Z][a-zA-Z0-9-_.]*$Min length: 1Max length: 128A human readable description of this resource, up to 512 characters.
Syncs customer data from CRM dataset to profile traitsMin length: 1Max length: 512Flag indicating whether the data mapping is active. When true, data will be ingested and mapped according to the configuration. When false, the data mapping will be inactive and no data will be ingested into the Memory Store.
trueExample: trueDetails of where to map data items to. Each data mapping to type has its own set of configuration parameters and destination specific properties.
{"type":"TRAITS","mappings":[{"fieldName":"primary_email","traitGroup":"Contact","traitName":"email"}]}Details of where to map data items from. Each data mapping from type has its own set of configuration parameters and source specific properties.
{"type":"DATASET","datasetId":"tdi_dataset_00000000000000000000000000"}1// Download the helper library from https://www.twilio.com/docs/node/install2const twilio = require("twilio"); // Or, for ESM: import twilio from "twilio";34// Find your Account SID and Auth Token at twilio.com/console5// and set the environment variables. See http://twil.io/secure6const accountSid = process.env.TWILIO_ACCOUNT_SID;7const authToken = process.env.TWILIO_AUTH_TOKEN;8const client = twilio(accountSid, authToken);910async function createDataMapping() {11const dataMapping = await client.memory.v112.dataMappings("mem_store_00000000000000000000000000")13.create({14displayName: "crm-contacts",15mappingTo: {16type: "TRAITS",17mappings: [18{19fieldName: "fieldName",20expression: "expression",21traitGroup: "Contact",22traitName: "email",23},24],25},26mappingFrom: {27type: "DATASET",28datasetId: "tdi_dataset_00000000000000000000000000",29},30});3132console.log(dataMapping.message);33}3435createDataMapping();
Response
1{2"message": "message",3"statusUrl": "statusUrl"4}
GET/v1/ControlPlane/Stores/{storeId}/DataMappings
Base url: https://memory.twilio.com (base url)
Get a list of data mappings configured for this Memory Store.
A unique Memory Store ID using Twilio Type ID (TTID) format
mem_store_00000000000000000000000000Pattern: ^mem_(store|service)_[0-7][0-9a-z]{25}$The maximum number of items to return per page, maximum of 100.
50Minimum: 1Maximum: 100Either 'ASC' or 'DESC' to sort results ascending or descending respectively.
DESCPossible values: ASCDESCFilter data mappings by type.
DATASETExample: DATASETPossible values: DATASET1// Download the helper library from https://www.twilio.com/docs/node/install2const twilio = require("twilio"); // Or, for ESM: import twilio from "twilio";34// Find your Account SID and Auth Token at twilio.com/console5// and set the environment variables. See http://twil.io/secure6const accountSid = process.env.TWILIO_ACCOUNT_SID;7const authToken = process.env.TWILIO_AUTH_TOKEN;8const client = twilio(accountSid, authToken);910async function listDataMappings() {11const dataMappings = await client.memory.v112.dataMappings("mem_store_00000000000000000000000000")13.list({14orderBy: "DESC",15type: "DATASET",16limit: 20,17});1819dataMappings.forEach((d) => console.log(d.displayName));20}2122listDataMappings();
Response
1{2"dataMappings": [3{4"displayName": "crm-contacts",5"description": "description",6"isEnabled": true,7"mappingTo": {},8"mappingFrom": {},9"id": "mem_datamapping_00000000000000000000000000",10"createdAt": "2009-07-06T20:30:00Z",11"updatedAt": "2009-07-06T20:30:00Z",12"version": 313}14],15"meta": {16"key": "key",17"pageSize": 50,18"nextToken": "nextToken",19"previousToken": "previousToken"20}21}
GET/v1/ControlPlane/Stores/{storeId}/DataMappings/{dataMappingId}
Base url: https://memory.twilio.com (base url)
Retrieve the details of a specific data mapping by its unique ID.
A unique Memory Store ID using Twilio Type ID (TTID) format
mem_store_00000000000000000000000000Pattern: ^mem_(store|service)_[0-7][0-9a-z]{25}$A unique DataMapping ID using Twilio Type ID (TTID) format
mem_datamapping_00000000000000000000000000Pattern: ^mem_datamapping_[0-7][0-9a-z]{25}$Data mapping details retrieved successfully.
Name of the data mapping.
crm-contactsPattern: ^[a-zA-Z][a-zA-Z0-9-_.]*$Min length: 1Max length: 128A human readable description of this resource, up to 512 characters.
Syncs customer data from CRM dataset to profile traitsMin length: 1Max length: 512Flag indicating whether the data mapping is active. When true, data will be ingested and mapped according to the configuration. When false, the data mapping will be inactive and no data will be ingested into the Memory Store.
trueExample: trueDetails of where to map data items to. Each data mapping to type has its own set of configuration parameters and destination specific properties.
{"type":"TRAITS","mappings":[{"fieldName":"primary_email","traitGroup":"Contact","traitName":"email"}]}Details of where to map data items from. Each data mapping from type has its own set of configuration parameters and source specific properties.
{"type":"DATASET","datasetId":"tdi_dataset_00000000000000000000000000"}The unique identifier for the data mapping.
mem_datamapping_00000000000000000000000000Pattern: ^mem_datamapping_[0-7][0-9a-z]{25}$The ISO 8601 timestamp when the data mapping was created.
2026-01-15T10:30:00ZThe ISO 8601 timestamp when the data mapping was last updated.
2026-01-15T11:45:00ZThe current version number of the DataMapping. Incremented on each successful update.
3Minimum: 11// Download the helper library from https://www.twilio.com/docs/node/install2const twilio = require("twilio"); // Or, for ESM: import twilio from "twilio";34// Find your Account SID and Auth Token at twilio.com/console5// and set the environment variables. See http://twil.io/secure6const accountSid = process.env.TWILIO_ACCOUNT_SID;7const authToken = process.env.TWILIO_AUTH_TOKEN;8const client = twilio(accountSid, authToken);910async function fetchDataMapping() {11const dataMapping = await client.memory.v112.dataMappings(13"mem_store_00000000000000000000000000",14"mem_datamapping_00000000000000000000000000"15)16.fetch();1718console.log(dataMapping.displayName);19}2021fetchDataMapping();
Response
1{2"createdAt": "2009-07-06T20:30:00Z",3"description": "description",4"displayName": "crm-contacts",5"id": "mem_datamapping_00000000000000000000000000",6"isEnabled": true,7"mappingFrom": {},8"mappingTo": {},9"updatedAt": "2009-07-06T20:30:00Z",10"version": 311}
PATCH/v1/ControlPlane/Stores/{storeId}/DataMappings/{dataMappingId}
Base url: https://memory.twilio.com (base url)
Partially update a data mapping. Only the fields provided in the request body will be updated,
including replacing the entire contents of the mappings array.
For DATASET types, validates that all mapped Trait Groups and traits exist and that dataset field data types match their respective mapped trait data types.
Allows for optimistic concurrency control by making the request conditional. Server will only act if the resource's current Entity Tag (ETag) matches the one provided, preventing accidental overwrites.
"eyJpZCI6ImFuX2lkIiwidiI6MX0"Max length: 100A unique Memory Store ID using Twilio Type ID (TTID) format
mem_store_00000000000000000000000000Pattern: ^mem_(store|service)_[0-7][0-9a-z]{25}$A unique DataMapping ID using Twilio Type ID (TTID) format
mem_datamapping_00000000000000000000000000Pattern: ^mem_datamapping_[0-7][0-9a-z]{25}$application/jsonName of the data mapping.
crm-contactsPattern: ^[a-zA-Z][a-zA-Z0-9-_.]*$Min length: 1Max length: 128A human readable description of this resource, up to 512 characters.
Syncs customer data from CRM dataset to profile traitsMin length: 1Max length: 512Flag indicating whether the data mapping is active. When true, data will be ingested and mapped according to the configuration. When false, the data mapping will be inactive and no data will be ingested into the Memory Store.
trueExample: trueDetails of where to map data items to. Each data mapping to type has its own set of configuration parameters and destination specific properties.
{"type":"TRAITS","mappings":[{"fieldName":"primary_email","traitGroup":"Contact","traitName":"email"}]}1// Download the helper library from https://www.twilio.com/docs/node/install2const twilio = require("twilio"); // Or, for ESM: import twilio from "twilio";34// Find your Account SID and Auth Token at twilio.com/console5// and set the environment variables. See http://twil.io/secure6const accountSid = process.env.TWILIO_ACCOUNT_SID;7const authToken = process.env.TWILIO_AUTH_TOKEN;8const client = twilio(accountSid, authToken);910async function patchDataMapping() {11const dataMapping = await client.memory.v112.dataMappings(13"mem_store_00000000000000000000000000",14"mem_datamapping_00000000000000000000000000"15)16.patch({17displayName: "crm-contacts",18});1920console.log(dataMapping.message);21}2223patchDataMapping();
Response
1{2"message": "message",3"statusUrl": "statusUrl"4}
DELETE/v1/ControlPlane/Stores/{storeId}/DataMappings/{dataMappingId}
Base url: https://memory.twilio.com (base url)
Delete a data mapping from the Memory Store. This action cannot be undone.
A unique Memory Store ID using Twilio Type ID (TTID) format
mem_store_00000000000000000000000000Pattern: ^mem_(store|service)_[0-7][0-9a-z]{25}$A unique DataMapping ID using Twilio Type ID (TTID) format
mem_datamapping_00000000000000000000000000Pattern: ^mem_datamapping_[0-7][0-9a-z]{25}$1// Download the helper library from https://www.twilio.com/docs/node/install2const twilio = require("twilio"); // Or, for ESM: import twilio from "twilio";34// Find your Account SID and Auth Token at twilio.com/console5// and set the environment variables. See http://twil.io/secure6const accountSid = process.env.TWILIO_ACCOUNT_SID;7const authToken = process.env.TWILIO_AUTH_TOKEN;8const client = twilio(accountSid, authToken);910async function deleteDataMapping() {11await client.memory.v112.dataMappings(13"mem_store_00000000000000000000000000",14"mem_datamapping_00000000000000000000000000"15)16.remove();17}1819deleteDataMapping();
Response
1{2"message": "message",3"statusUrl": "statusUrl"4}