curl --request POST \
--url https://api.sendrealm.com/push/live-activity-tests \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"app_id": "<string>",
"device_id": "<string>",
"activity_type": "<string>",
"attributes_type": "<string>",
"title": "<string>",
"subtitle": "<string>",
"body": "<string>",
"status": "<string>",
"progress": 0.5,
"eta": "<string>",
"image_url": "<string>",
"accent_color": "<string>",
"launch_url": "<string>",
"content_state": {},
"attributes": {},
"stale_at": "2023-11-07T05:31:56Z",
"dismiss_at": "2023-11-07T05:31:56Z",
"relevance_score": 0.5,
"sound": "<string>",
"data": {},
"stale_date": "2023-11-07T05:31:56Z",
"dismissal_date": "2023-11-07T05:31:56Z",
"buttons": [
{
"id": "<string>",
"text": "<string>",
"title": "<string>",
"icon": "<string>",
"launch_url": "<string>"
}
]
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
app_id: '<string>',
device_id: '<string>',
activity_type: '<string>',
attributes_type: '<string>',
title: '<string>',
subtitle: '<string>',
body: JSON.stringify('<string>'),
status: '<string>',
progress: 0.5,
eta: '<string>',
image_url: '<string>',
accent_color: '<string>',
launch_url: '<string>',
content_state: {},
attributes: {},
stale_at: '2023-11-07T05:31:56Z',
dismiss_at: '2023-11-07T05:31:56Z',
relevance_score: 0.5,
sound: '<string>',
data: {},
stale_date: '2023-11-07T05:31:56Z',
dismissal_date: '2023-11-07T05:31:56Z',
buttons: [
{
id: '<string>',
text: '<string>',
title: '<string>',
icon: '<string>',
launch_url: '<string>'
}
]
})
};
fetch('https://api.sendrealm.com/push/live-activity-tests', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.sendrealm.com/push/live-activity-tests"
payload = {
"app_id": "<string>",
"device_id": "<string>",
"activity_type": "<string>",
"attributes_type": "<string>",
"title": "<string>",
"subtitle": "<string>",
"body": "<string>",
"status": "<string>",
"progress": 0.5,
"eta": "<string>",
"image_url": "<string>",
"accent_color": "<string>",
"launch_url": "<string>",
"content_state": {},
"attributes": {},
"stale_at": "2023-11-07T05:31:56Z",
"dismiss_at": "2023-11-07T05:31:56Z",
"relevance_score": 0.5,
"sound": "<string>",
"data": {},
"stale_date": "2023-11-07T05:31:56Z",
"dismissal_date": "2023-11-07T05:31:56Z",
"buttons": [
{
"id": "<string>",
"text": "<string>",
"title": "<string>",
"icon": "<string>",
"launch_url": "<string>"
}
]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"data": {
"test_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"activity_id": "<string>",
"device_id": "<string>",
"state": "<string>",
"recipients": {
"total": 123,
"sent": 123,
"failed": 123
},
"events": [
"<string>"
],
"events_has_more": true,
"links": {}
},
"status": 123,
"metadata": {
"total": 123,
"items": 123,
"limit": 123,
"after": "<string>",
"next": "<string>",
"has_more": true
}
}{
"status": 123,
"error": {
"code": "<string>",
"message": "<string>",
"details": "<string>",
"issues": [
{
"code": "<string>",
"path": "<string>",
"message": "<string>"
}
]
}
}{
"status": 123,
"error": {
"code": "<string>",
"message": "<string>",
"details": "<string>",
"issues": [
{
"code": "<string>",
"path": "<string>",
"message": "<string>"
}
]
}
}{
"status": 123,
"error": {
"code": "<string>",
"message": "<string>",
"details": "<string>",
"issues": [
{
"code": "<string>",
"path": "<string>",
"message": "<string>"
}
]
}
}{
"status": 123,
"error": {
"code": "<string>",
"message": "<string>",
"details": "<string>",
"issues": [
{
"code": "<string>",
"path": "<string>",
"message": "<string>"
}
]
}
}{
"status": 123,
"error": {
"code": "<string>",
"message": "<string>",
"details": "<string>",
"issues": [
{
"code": "<string>",
"path": "<string>",
"message": "<string>"
}
]
}
}Start Live Activity Test
Start a real Live Activity test on one explicitly selected device.
curl --request POST \
--url https://api.sendrealm.com/push/live-activity-tests \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"app_id": "<string>",
"device_id": "<string>",
"activity_type": "<string>",
"attributes_type": "<string>",
"title": "<string>",
"subtitle": "<string>",
"body": "<string>",
"status": "<string>",
"progress": 0.5,
"eta": "<string>",
"image_url": "<string>",
"accent_color": "<string>",
"launch_url": "<string>",
"content_state": {},
"attributes": {},
"stale_at": "2023-11-07T05:31:56Z",
"dismiss_at": "2023-11-07T05:31:56Z",
"relevance_score": 0.5,
"sound": "<string>",
"data": {},
"stale_date": "2023-11-07T05:31:56Z",
"dismissal_date": "2023-11-07T05:31:56Z",
"buttons": [
{
"id": "<string>",
"text": "<string>",
"title": "<string>",
"icon": "<string>",
"launch_url": "<string>"
}
]
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
app_id: '<string>',
device_id: '<string>',
activity_type: '<string>',
attributes_type: '<string>',
title: '<string>',
subtitle: '<string>',
body: JSON.stringify('<string>'),
status: '<string>',
progress: 0.5,
eta: '<string>',
image_url: '<string>',
accent_color: '<string>',
launch_url: '<string>',
content_state: {},
attributes: {},
stale_at: '2023-11-07T05:31:56Z',
dismiss_at: '2023-11-07T05:31:56Z',
relevance_score: 0.5,
sound: '<string>',
data: {},
stale_date: '2023-11-07T05:31:56Z',
dismissal_date: '2023-11-07T05:31:56Z',
buttons: [
{
id: '<string>',
text: '<string>',
title: '<string>',
icon: '<string>',
launch_url: '<string>'
}
]
})
};
fetch('https://api.sendrealm.com/push/live-activity-tests', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.sendrealm.com/push/live-activity-tests"
payload = {
"app_id": "<string>",
"device_id": "<string>",
"activity_type": "<string>",
"attributes_type": "<string>",
"title": "<string>",
"subtitle": "<string>",
"body": "<string>",
"status": "<string>",
"progress": 0.5,
"eta": "<string>",
"image_url": "<string>",
"accent_color": "<string>",
"launch_url": "<string>",
"content_state": {},
"attributes": {},
"stale_at": "2023-11-07T05:31:56Z",
"dismiss_at": "2023-11-07T05:31:56Z",
"relevance_score": 0.5,
"sound": "<string>",
"data": {},
"stale_date": "2023-11-07T05:31:56Z",
"dismissal_date": "2023-11-07T05:31:56Z",
"buttons": [
{
"id": "<string>",
"text": "<string>",
"title": "<string>",
"icon": "<string>",
"launch_url": "<string>"
}
]
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text){
"data": {
"test_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"activity_id": "<string>",
"device_id": "<string>",
"state": "<string>",
"recipients": {
"total": 123,
"sent": 123,
"failed": 123
},
"events": [
"<string>"
],
"events_has_more": true,
"links": {}
},
"status": 123,
"metadata": {
"total": 123,
"items": 123,
"limit": 123,
"after": "<string>",
"next": "<string>",
"has_more": true
}
}{
"status": 123,
"error": {
"code": "<string>",
"message": "<string>",
"details": "<string>",
"issues": [
{
"code": "<string>",
"path": "<string>",
"message": "<string>"
}
]
}
}{
"status": 123,
"error": {
"code": "<string>",
"message": "<string>",
"details": "<string>",
"issues": [
{
"code": "<string>",
"path": "<string>",
"message": "<string>"
}
]
}
}{
"status": 123,
"error": {
"code": "<string>",
"message": "<string>",
"details": "<string>",
"issues": [
{
"code": "<string>",
"path": "<string>",
"message": "<string>"
}
]
}
}{
"status": 123,
"error": {
"code": "<string>",
"message": "<string>",
"details": "<string>",
"issues": [
{
"code": "<string>",
"path": "<string>",
"message": "<string>"
}
]
}
}{
"status": 123,
"error": {
"code": "<string>",
"message": "<string>",
"details": "<string>",
"issues": [
{
"code": "<string>",
"path": "<string>",
"message": "<string>"
}
]
}
}push.test.send, an explicitly selected project, app, and registered device. The server generates test_id; the test remains bound to its creator, project, app, and device. Save that handle for inspection, updates, and ending. The test delivers a real notification; provider acceptance does not prove display.Authorizations
Integration key for backend workloads, or a scoped personal key (sr_user_) for account discovery and supported project operations. MCP accepts only personal keys.
Headers
Explicit project context. Required for personal-key project resource calls; integration keys retain their configured default. MCP clients supply project_id in each tool call instead.
Body
Push app short ID or resource UUID.
Registered device identifier.
Native activity type.
Native activity attributes type.
Activity title.
Activity subtitle.
Activity message.
Application status.
0 <= x <= 1Application ETA.
Image URL.
Accent color.
Tap destination.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
5, 10 ISO 8601 stale time.
ISO 8601 dismiss time.
0 <= x <= 1Native sound.
Show child attributes
Show child attributes
Legacy alias for stale_at.
Legacy alias for dismiss_at.
Native activity buttons.
3Show child attributes
Show child attributes