Deriv API

Forget

Subscription

Immediately cancel the real-time stream of messages with a specific ID.

Quick comparison

AspectLegacyNewAction required
Endpoint
✅ Same
forgetforgetNone
Auth Required
✅ Same
NoNoNone
Stream ID Pattern
⚠️ Changed
^[\w-]{32,128}$Any stringNone
Response Field
⚠️ Changed
OptionalRequiredUpdate response handling

Breaking changes

1. Stream ID pattern validation relaxed

What Changed: Legacy enforced a strict pattern ^[\w-]{32,128}$ for stream IDs. New accepts any string value, providing more flexibility for stream identification.

2. Response field always present

What Changed: In Legacy, the forget field in the response was optional. In New, this field is always present and required, ensuring consistent response handling.

Request structure

Legacy Request Example

1{
2  "forget": "d1ee7d0d-3ca9-fbb4-720b-5312d487185b"
3  // Must match pattern: ^[\w-]{32,128}$
4}

New Request Example

1{
2  "forget": "d1ee7d0d-3ca9-fbb4-720b-5312d487185b"
3  // Any string value accepted
4}

Response structure

Legacy Response Example

1{
2  "forget": 1,  // Optional field
3  "echo_req": {
4    "forget": "d1ee7d0d-3ca9-fbb4-720b-5312d487185b"
5  },
6  "msg_type": "forget"
7}

New Response Example

1{
2  "forget": 1,  // ⚠️ Now required - always present
3  "echo_req": {
4    "forget": "d1ee7d0d-3ca9-fbb4-720b-5312d487185b"
5  },
6  "msg_type": "forget"
7}

Code examples

Legacy Implementation

1async function cancelStream(streamId) {
2  const request = {
3    forget: streamId  // Must be 32-128 chars, alphanumeric, underscore, or hyphen
4  };
5  
6  ws.send(JSON.stringify(request));
7  
8  // Handle response
9  ws.onmessage = (msg) => {
10    const response = JSON.parse(msg.data);
11    if (response.msg_type === 'forget') {
12      if (response.forget === 1) {
13        console.log('Stream successfully cancelled');
14      } else if (response.forget === 0) {
15        console.log('Stream did not exist');
16      } else {
17        console.log('Stream cancellation status unknown');
18      }
19    }
20  };
21}

New Implementation

1async function cancelStream(streamId) {
2  const request = {
3    forget: streamId  // Any string value accepted
4  };
5  
6  ws.send(JSON.stringify(request));
7  
8  // Handle response
9  ws.onmessage = (msg) => {
10    const response = JSON.parse(msg.data);
11    if (response.msg_type === 'forget') {
12      // forget field is always present in New
13      if (response.forget === 1) {
14        console.log('Stream successfully cancelled');
15      } else if (response.forget === 0) {
16        console.log('Stream did not exist');
17      }
18    }
19  };
20}