Skip to contentSkip to navigationSkip to topbar

Memory API (v1) - Observations endpoints


(information)

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(link takes you to an external page). 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(link takes you to an external page). 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.

Overview

overview page anchor

Tag description

Endpoints


POST/v1/Stores/{storeId}/Profiles/{profileId}/Observations

Base url: https://memory.twilio.com (base url)

Create one or more transient observations associated with the specified profile. Supports both single observation creation and batch creation of up to 10 observations. Supports request compression for large batch operations and response compression for the response. All observations will be automatically indexed for semantic search capabilities. The content can be up to 4KB in length and should contain relevant information about the profile. The createdAt and updatedAt timestamps will be automatically set to the current time. Each observation will be created with a unique ID in Twilio Type ID (TTID) format.

Request

create-profile-observation-request page anchor

Headers

create-profile-observation-headers page anchor
Property nameTypeRequiredPIIDescription
accept-Encodingstring

Optional

Not PII

Compression algorithms supported by the client (e.g., gzip, deflate, br)

Example: gzip, deflate, brPattern: ^[a-zA-Z0-9, .-]*$Max length: 200

content-Encodingenum<string>

Optional

Compression algorithm used for the request body (e.g., gzip, deflate, br)

Example: gzipPossible values:
gzipdeflatebrcompress
Property nameTypeRequiredPIIDescription
storeIdstring
required

A unique Memory Store ID using Twilio Type ID (TTID) format

Example: mem_store_00000000000000000000000000Pattern: ^mem_(store|service)_[0-7][0-9a-z]{25}$

profileIdstring
required

The unique identifier for the profile using Twilio Type ID (TTID) format.

Example: mem_profile_00000000000000000000000000Pattern: ^mem_profile_[0-7][0-9a-z]{25}$
Encoding type:application/json
SchemaExample
Property nameTypeRequiredPIIDescriptionChild properties
observationsarray[object]
required

Array of observations to create in a single batch operation.

Min items: 1Max items: 10
202308400401403404429500503

Observation creation accepted and is being processed.

Schema
Property nameTypeRequiredPIIDescriptionChild properties
messagestring

Optional

Confirmation message for the operation.

Example: Observations creation acceptedMin length: 1Max length: 255
Create ObservationsLink to code sample: Create Observations
1
// Download the helper library from https://www.twilio.com/docs/node/install
2
const twilio = require("twilio"); // Or, for ESM: import twilio from "twilio";
3
4
// Find your Account SID and Auth Token at twilio.com/console
5
// and set the environment variables. See http://twil.io/secure
6
const accountSid = process.env.TWILIO_ACCOUNT_SID;
7
const authToken = process.env.TWILIO_AUTH_TOKEN;
8
const client = twilio(accountSid, authToken);
9
10
async function createProfileObservation() {
11
const observation = await client.memory.v1
12
.observations(
13
"mem_store_00000000000000000000000000",
14
"mem_profile_00000000000000000000000000"
15
)
16
.create({
17
observations: [
18
{
19
content: "content",
20
occurredAt: "2009-07-06T20:30:00Z",
21
source: "conversational-intelligence",
22
conversationIds: ["conv_conversation_00000000000000000000000000"],
23
},
24
],
25
});
26
27
console.log(observation.message);
28
}
29
30
createProfileObservation();

Response

Note about this response
1
{
2
"message": "message"
3
}

GET/v1/Stores/{storeId}/Profiles/{profileId}/Observations

Base url: https://memory.twilio.com (base url)

Retrieve a paginated list of transient observations for a specific profile. Observations are sorted by creation time in descending order by default. Results can be filtered by source parameter. Supports response compression for large datasets.

Property nameTypeRequiredPIIDescription
accept-Encodingstring

Optional

Compression algorithms supported by the client (e.g., gzip, deflate, br)

Example: gzip, deflate, brPattern: ^[a-zA-Z0-9, .-]*$Max length: 200
Property nameTypeRequiredPIIDescription
storeIdstring
required

A unique Memory Store ID using Twilio Type ID (TTID) format

Example: mem_store_00000000000000000000000000Pattern: ^mem_(store|service)_[0-7][0-9a-z]{25}$

profileIdstring
required

The unique identifier for the profile using Twilio Type ID (TTID) format.

Example: mem_profile_00000000000000000000000000Pattern: ^mem_profile_[0-7][0-9a-z]{25}$
Property nameTypeRequiredPIIDescription
pageSizeinteger

Optional

The maximum number of items to return per page, maximum of 1000.

Default: 50Minimum: 1Maximum: 1000

pageTokenstring

Optional

The token for the page of results to retrieve.

Max length: 500

orderByenum<string>

Optional

Either 'ASC' or 'DESC' to sort results ascending or descending respectively.

Default: DESCPossible values:
ASCDESC

sourcestring

Optional

Filter by source. Allows letters, numbers, spaces, and URL-safe symbols. Excludes URL-unsafe characters like quotes, angle brackets, and control characters.

Example: customer service platformPattern: ^[a-zA-Z0-9 _.-]+$Min length: 1Max length: 100

createdAfterstring<date-time>

Optional

Filter observations created after this timestamp (inclusive).

Example: 2025-01-01T00:00:00Z

createdBeforestring<date-time>

Optional

Filter observations created before this timestamp (exclusive).

Example: 2025-01-31T23:59:59Z
200301400401403404429500503

A list of observations for the profile.

SchemaExample
Property nameTypeRequiredPIIDescriptionChild properties
observationsarray[object]

Optional

Max items: 50

metaobject

Optional

1
// Download the helper library from https://www.twilio.com/docs/node/install
2
const twilio = require("twilio"); // Or, for ESM: import twilio from "twilio";
3
4
// Find your Account SID and Auth Token at twilio.com/console
5
// and set the environment variables. See http://twil.io/secure
6
const accountSid = process.env.TWILIO_ACCOUNT_SID;
7
const authToken = process.env.TWILIO_AUTH_TOKEN;
8
const client = twilio(accountSid, authToken);
9
10
async function listProfileObservations() {
11
const observations = await client.memory.v1
12
.observations(
13
"mem_store_00000000000000000000000000",
14
"mem_profile_00000000000000000000000000"
15
)
16
.list({
17
orderBy: "DESC",
18
limit: 20,
19
});
20
21
observations.forEach((o) => console.log(o.content));
22
}
23
24
listProfileObservations();

Response

Note about this response
1
{
2
"meta": {
3
"key": "key",
4
"pageSize": 50,
5
"nextToken": "nextToken",
6
"previousToken": "previousToken"
7
},
8
"observations": [
9
{
10
"content": "content",
11
"occurredAt": "2009-07-06T20:30:00Z",
12
"source": "conversational-intelligence",
13
"conversationIds": [
14
"conv_conversation_00000000000000000000000000"
15
],
16
"id": "mem_observation_00000000000000000000000000",
17
"createdAt": "2009-07-06T20:30:00Z",
18
"updatedAt": "2009-07-06T20:30:00Z"
19
}
20
]
21
}

GET/v1/Stores/{storeId}/Profiles/{profileId}/Observations/{observationId}

Base url: https://memory.twilio.com (base url)

Retrieve a specific transient observation by its ID for the given profile.

Property nameTypeRequiredPIIDescription
storeIdstring
required

A unique Memory Store ID using Twilio Type ID (TTID) format

Example: mem_store_00000000000000000000000000Pattern: ^mem_(store|service)_[0-7][0-9a-z]{25}$

profileIdstring
required

The unique identifier for the profile using Twilio Type ID (TTID) format.

Example: mem_profile_00000000000000000000000000Pattern: ^mem_profile_[0-7][0-9a-z]{25}$

observationIdstring
required

The observation ID.

Example: mem_observation_00000000000000000000000000Pattern: ^mem_observation_[0-7][0-9a-z]{25}$
200400401403404429500503

Observation retrieved successfully.

SchemaExample
Property nameTypeRequiredPIIDescriptionChild properties
contentstring

Optional

The main content of the observation.

Example: Customer expressed satisfaction with recent product update during support call.Min length: 1Max length: 4096

occurredAtstring<date-time>

Optional

The timestamp when the observation originally occurred.

Example: 2025-01-15T10:15:30Z

sourcestring

Optional

The source system that generated this observation. Allows letters, numbers, spaces, and URL-safe symbols. Excludes URL-unsafe characters like quotes, angle brackets, and control characters.

Example: conversational-intelligencePattern: ^[a-zA-Z0-9 _.-]+$Min length: 1Max length: 100

conversationIdsarray[string]

Optional

Array of conversation IDs associated with this observation.

Max items: 10

idstring

Optional

A unique identifier for the observation using Twilio Type ID (TTID) format.

Example: mem_observation_00000000000000000000000000Pattern: ^mem_observation_[0-7][0-9a-z]{25}$

createdAtstring<date-time>

Optional

The timestamp when the observation was created.

Example: 2025-01-15T10:30:45Z

updatedAtstring<date-time>

Optional

The timestamp when the observation was last updated.

Example: 2025-01-15T10:30:45Z
1
// Download the helper library from https://www.twilio.com/docs/node/install
2
const twilio = require("twilio"); // Or, for ESM: import twilio from "twilio";
3
4
// Find your Account SID and Auth Token at twilio.com/console
5
// and set the environment variables. See http://twil.io/secure
6
const accountSid = process.env.TWILIO_ACCOUNT_SID;
7
const authToken = process.env.TWILIO_AUTH_TOKEN;
8
const client = twilio(accountSid, authToken);
9
10
async function fetchProfileObservation() {
11
const observation = await client.memory.v1
12
.observations(
13
"mem_store_00000000000000000000000000",
14
"mem_profile_00000000000000000000000000",
15
"mem_observation_00000000000000000000000000"
16
)
17
.fetch();
18
19
console.log(observation.content);
20
}
21
22
fetchProfileObservation();

Response

Note about this response
1
{
2
"id": "mem_observation_00000000000000000000000001",
3
"content": "Customer expressed frustration with billing process during call on 2025-01-15. Mentioned difficulty understanding charges.",
4
"source": "customer_service",
5
"occurredAt": "2025-01-15T14:30:00Z",
6
"conversationIds": [
7
"conv_conversation_00000000000000000000000000"
8
],
9
"createdAt": "2025-01-15T10:30:45Z",
10
"updatedAt": "2025-01-15T10:30:45Z"
11
}

PATCH/v1/Stores/{storeId}/Profiles/{profileId}/Observations/{observationId}

Base url: https://memory.twilio.com (base url)

Update a specific transient observation by its ID. Only provided fields will be updated. The updated timestamp will be automatically set. This allows for selective updates without needing to provide all fields.

Property nameTypeRequiredPIIDescription
storeIdstring
required

A unique Memory Store ID using Twilio Type ID (TTID) format

Example: mem_store_00000000000000000000000000Pattern: ^mem_(store|service)_[0-7][0-9a-z]{25}$

profileIdstring
required

The unique identifier for the profile using Twilio Type ID (TTID) format.

Example: mem_profile_00000000000000000000000000Pattern: ^mem_profile_[0-7][0-9a-z]{25}$

observationIdstring
required

The observation ID.

Example: mem_observation_00000000000000000000000000Pattern: ^mem_observation_[0-7][0-9a-z]{25}$
Encoding type:application/json
SchemaExample
Property nameTypeRequiredPIIDescriptionChild properties
contentstring
required

The main content of the observation.

Example: Customer expressed satisfaction with recent product update during support call.Min length: 1Max length: 4096

occurredAtstring<date-time>
required

The timestamp when the observation originally occurred.

Example: 2025-01-15T10:15:30Z

sourcestring
required

The source system that generated this observation. Allows letters, numbers, spaces, and URL-safe symbols. Excludes URL-unsafe characters like quotes, angle brackets, and control characters.

Example: conversational-intelligencePattern: ^[a-zA-Z0-9 _.-]+$Min length: 1Max length: 100

conversationIdsarray[string]

Optional

Array of conversation IDs associated with this observation.

Max items: 10
202308400401403404429500503

Observation update accepted and is being processed.

Schema
Property nameTypeRequiredPIIDescriptionChild properties
messagestring

Optional

Example: Observation update acceptedMax length: 512
1
// Download the helper library from https://www.twilio.com/docs/node/install
2
const twilio = require("twilio"); // Or, for ESM: import twilio from "twilio";
3
4
// Find your Account SID and Auth Token at twilio.com/console
5
// and set the environment variables. See http://twil.io/secure
6
const accountSid = process.env.TWILIO_ACCOUNT_SID;
7
const authToken = process.env.TWILIO_AUTH_TOKEN;
8
const client = twilio(accountSid, authToken);
9
10
async function patchProfileObservation() {
11
const observation = await client.memory.v1
12
.observations(
13
"mem_store_00000000000000000000000000",
14
"mem_profile_00000000000000000000000000",
15
"mem_observation_00000000000000000000000000"
16
)
17
.patch({
18
content: "content",
19
occurredAt: "2009-07-06T20:30:00Z",
20
source: "conversational-intelligence",
21
});
22
23
console.log(observation.message);
24
}
25
26
patchProfileObservation();

Response

Note about this response
1
{
2
"message": "message"
3
}

DELETE/v1/Stores/{storeId}/Profiles/{profileId}/Observations/{observationId}

Base url: https://memory.twilio.com (base url)

Delete a specific transient observation by its ID. This action is irreversible.

Property nameTypeRequiredPIIDescription
storeIdstring
required

A unique Memory Store ID using Twilio Type ID (TTID) format

Example: mem_store_00000000000000000000000000Pattern: ^mem_(store|service)_[0-7][0-9a-z]{25}$

profileIdstring
required

The unique identifier for the profile using Twilio Type ID (TTID) format.

Example: mem_profile_00000000000000000000000000Pattern: ^mem_profile_[0-7][0-9a-z]{25}$

observationIdstring
required

The observation ID.

Example: mem_observation_00000000000000000000000000Pattern: ^mem_observation_[0-7][0-9a-z]{25}$
202308400401403404429500503

Observation deletion accepted and is being processed.

Schema
Property nameTypeRequiredPIIDescriptionChild properties
messagestring

Optional

Example: Observation deletion acceptedMax length: 255
1
// Download the helper library from https://www.twilio.com/docs/node/install
2
const twilio = require("twilio"); // Or, for ESM: import twilio from "twilio";
3
4
// Find your Account SID and Auth Token at twilio.com/console
5
// and set the environment variables. See http://twil.io/secure
6
const accountSid = process.env.TWILIO_ACCOUNT_SID;
7
const authToken = process.env.TWILIO_AUTH_TOKEN;
8
const client = twilio(accountSid, authToken);
9
10
async function deleteProfileObservation() {
11
await client.memory.v1
12
.observations(
13
"mem_store_00000000000000000000000000",
14
"mem_profile_00000000000000000000000000",
15
"mem_observation_00000000000000000000000000"
16
)
17
.remove();
18
}
19
20
deleteProfileObservation();

Response

Note about this response
1
{
2
"message": "message"
3
}

List Observation Revisions

list-observation-revisions page anchor

GET/v1/Stores/{storeId}/Profiles/{profileId}/Observations/{observationId}/Revisions

Base url: https://memory.twilio.com (base url)

Retrieve a chronologically ordered list of all past revisions of a specific observation by its ID. Revisions represent the complete history of updates and modifications made to an observation, with each revision capturing the full state at the time of change. Revisions are sorted by update time in descending order (newest first), allowing you to track how an observation has evolved through updates over time.

Property nameTypeRequiredPIIDescription
accept-Encodingstring

Optional

Compression algorithms supported by the client (e.g., gzip, deflate, br)

Example: gzip, deflate, brPattern: ^[a-zA-Z0-9, .-]*$Max length: 200
Property nameTypeRequiredPIIDescription
storeIdstring
required

A unique Memory Store ID using Twilio Type ID (TTID) format

Example: mem_store_00000000000000000000000000Pattern: ^mem_(store|service)_[0-7][0-9a-z]{25}$

profileIdstring
required

The unique identifier for the profile using Twilio Type ID (TTID) format.

Example: mem_profile_00000000000000000000000000Pattern: ^mem_profile_[0-7][0-9a-z]{25}$

observationIdstring
required

The observation ID.

Example: mem_observation_00000000000000000000000000Pattern: ^mem_observation_[0-7][0-9a-z]{25}$
Property nameTypeRequiredPIIDescription
pageSizeinteger

Optional

The maximum number of items to return per page, maximum of 1000.

Default: 50Minimum: 1Maximum: 1000

pageTokenstring

Optional

The token for the page of results to retrieve.

Max length: 500
200400401403404429500503

A chronologically ordered list of observation revisions.

SchemaExample
Property nameTypeRequiredPIIDescriptionChild properties
revisionsarray[object]

Optional

Array of observation revisions ordered chronologically descending by update time (newest first).

Max items: 50

metaobject

Optional

1
// Download the helper library from https://www.twilio.com/docs/node/install
2
const twilio = require("twilio"); // Or, for ESM: import twilio from "twilio";
3
4
// Find your Account SID and Auth Token at twilio.com/console
5
// and set the environment variables. See http://twil.io/secure
6
const accountSid = process.env.TWILIO_ACCOUNT_SID;
7
const authToken = process.env.TWILIO_AUTH_TOKEN;
8
const client = twilio(accountSid, authToken);
9
10
async function listObservationRevisions() {
11
const revisions = await client.memory.v1
12
.revisions(
13
"mem_store_00000000000000000000000000",
14
"mem_profile_00000000000000000000000000",
15
"mem_observation_00000000000000000000000000"
16
)
17
.list({ limit: 20 });
18
19
revisions.forEach((r) => console.log(r.content));
20
}
21
22
listObservationRevisions();

Response

Note about this response
1
{
2
"revisions": [
3
{
4
"id": "mem_observation_00000000000000000000000001",
5
"content": "Updated: Customer expressed satisfaction with recent product update during support call. Follow-up scheduled.",
6
"source": "customer_service",
7
"occurredAt": "2025-01-15T14:30:00Z",
8
"createdAt": "2025-01-15T10:30:45Z",
9
"updatedAt": "2025-01-15T14:20:15Z"
10
},
11
{
12
"id": "mem_observation_00000000000000000000000001",
13
"content": "Customer expressed frustration with billing process during call on 2025-01-15. Mentioned difficulty understanding charges.",
14
"source": "customer_service",
15
"occurredAt": "2025-01-15T14:30:00Z",
16
"createdAt": "2025-01-15T10:30:45Z",
17
"updatedAt": "2025-01-15T10:30:45Z"
18
}
19
],
20
"meta": {
21
"pageSize": 2,
22
"nextToken": "eyJlYXN0ZXIiOiJlZ2cifQ",
23
"key": "revisions"
24
}
25
}