Effortless integration for unmatched performance and campaign insights.
Supercharged marketing communication sent across multiple channels.
Redefining Email marketing campaigns with highest deliverability at any volume.
SMS MarketingEasy creation of SMS campaigns, with no limits on the number of recipients.
Push MarketingEngagement, conversions, and customer loyalty going up with Mobile Push.
See all channelsMarketing solutions for business messaging.
Mobile push
built for speed
and scale
Streamline real-time transactional and marketing notifications across platforms with our push notifications API, minimizing integration efforts and maintenance hassles.
Get a demoDiscover a ready-to-use
solution for push notifications
Send campaigns at high speeds, reaching up to several million push messages per hour. Define push throughput per campaign, tailoring delivery to your needs.
Using webhooks we automatically pass on campaign results in real-time, including information on delivered, opened, and clicked notifications.
We employ advanced encryption and robust authentication measures to ensure the protection of your data, allowing you to communicate confidently.
Experience the convenience of our extensive assistance. Take advantage of our renowned concierge support available 24/7.









Your communication,
our tech you can rely on
Designed by developers for every industry, company size, and use case. Feel the functionality that fits your needs.
-
Diverse notification formats
-
Scheduled campaigns
Ready to use,
easy to integrate
Easily integrate your mobile app with the powerful MessageFlow push notification API, designed to help you send at scale.
-
Interactive API documentation
-
Pre-built SDKs
-
Support for Android and iOS platforms
-
Regular SDK updates to adapt to new Android and iOS versions
-
In-app event submission for advanced tracking
-
Test environment
-
Professional onboarding services
var client = new RestClient("https://api.messageflow.com/v2.1/push");
var request = new RestRequest(Method.POST);
request.AddHeader("content-type", "application/json");
request.AddHeader("authorization", "REPLACE_KEY_VALUE");
request.AddParameter("application/json", "{\"applications\":[\"XXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\"],\"to\":[{\"receiver\":\"example-device-id\",\"externalId\":\"xxx-xxx-xxx-xxx\",\"type\":1}],\"title\":{\"pl\":\"test\",\"en\":\"test\"},\"body\":{\"pl\":\"test\",\"en\":\"test\"},\"defaultLanguage\":\"pl\",\"image\":\"http://absolute.url/to/image\",\"silent\":false,\"sound\":\"sound-file.wav\",\"scheduleTime\":\"2020-01-01 12:12:12\",\"ttl\":1540377351,\"externalData\":{\"test\":\"x\",\"test1\":false},\"advanced\":{\"subtitle\":\"subtitle-only-ios\",\"lockscreenVisibility\":1,\"icon\":{\"small\":\"/relative-icon-file-path\",\"large\":\"/relative-icon-file-path\"}},\"action\":{\"url\":\"http://absolute.url/to/redirect/on/click\",\"type\":2},\"actionButtons\":[{\"button\":1,\"icon\":\"my_icon.png\",\"action\":{\"url\":\"www.google.com\",\"type\":1}}]}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.messageflow.com/v2.1/push"
payload := strings.NewReader("{\"applications\":[\"XXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\"],\"to\":[{\"receiver\":\"example-device-id\",\"externalId\":\"xxx-xxx-xxx-xxx\",\"type\":1}],\"title\":{\"pl\":\"test\",\"en\":\"test\"},\"body\":{\"pl\":\"test\",\"en\":\"test\"},\"defaultLanguage\":\"pl\",\"image\":\"http://absolute.url/to/image\",\"silent\":false,\"sound\":\"sound-file.wav\",\"scheduleTime\":\"2020-01-01 12:12:12\",\"ttl\":1540377351,\"externalData\":{\"test\":\"x\",\"test1\":false},\"advanced\":{\"subtitle\":\"subtitle-only-ios\",\"lockscreenVisibility\":1,\"icon\":{\"small\":\"/relative-icon-file-path\",\"large\":\"/relative-icon-file-path\"}},\"action\":{\"url\":\"http://absolute.url/to/redirect/on/click\",\"type\":2},\"actionButtons\":[{\"button\":1,\"icon\":\"my_icon.png\",\"action\":{\"url\":\"www.google.com\",\"type\":1}}]}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("content-type", "application/json")
req.Header.Add("authorization", "REPLACE_KEY_VALUE")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
HttpResponse<String> response = Unirest.post("https://api.messageflow.com/v2.1/push")
.header("content-type", "application/json") .header("authorization", "REPLACE_KEY_VALUE") .header("application-key", "REPLACE_KEY_VALUE") .body("{\"applications\":[\"XXXXXX-XXXX-XXXX-XXXX-
XXXXXXXXXXXX\"],\"to\":[{\"receiver\":\"example-device-id\",\"externalId\":\"xxx-xxx-xxx- xxx\",\"type\":1}],\"title\":{\"pl\":\"test\",\"en\":\"test\"},\"body\":{\"pl\":\"test\",\"en\":\"t est\"},\"defaultLanguage\":\"pl\",\"image\":\"http://absolute.url/to/image\",\"silent\":false, \"sound\":\"sound-file.wav\",\"scheduleTime\":\"2020-01-01 12:12:12\",\"ttl\":1540377351,\"externalData\":{\"test\":\"x\",\"test1\":false},\"advanced\": {\"subtitle\":\"subtitle-only-ios\",\"lockscreenVisibility\":1,\"icon\":{\"small\":\"/relative- icon-file-path\",\"large\":\"/relative-icon-file- path\"}},\"action\":{\"url\":\"http://absolute.url/to/redirect/on/click\",\"type\":2},\"actionB uttons\":[{\"button\":1,\"icon\":\"my_icon.png\",\"action\":{\"url\":\"www.google.com\",\"t ype\":1}}]}")
.asString();
var request = require("request");
var options = {
method: 'POST',
url: 'https://api.messageflow.com/v2.1/push',
headers: {'content-type': 'application/json', authorization: 'REPLACE_KEY_VALUE'},
body: {
applications: ['XXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'],
to: [{receiver: 'example-device-id', externalId: 'xxx-xxx-xxx-xxx', type: 1}],
title: {pl: 'test', en: 'test'},
body: {pl: 'test', en: 'test'},
defaultLanguage: 'pl',
image: 'http://absolute.url/to/image',
silent: false,
sound: 'sound-file.wav',
scheduleTime: '2020-01-01 12:12:12',
ttl: 1540377351,
externalData: {test: 'x', test1: false},
advanced: {
subtitle: 'subtitle-only-ios',
lockscreenVisibility: 1,
icon: {small: '/relative-icon-file-path', large: '/relative-icon-file-path'}
},
action: {url: 'http://absolute.url/to/redirect/on/click', type: 2},
actionButtons: [{button: 1, icon: 'my_icon.png', action: {url: 'www.google.com', type: 1}}]
},
json: true
};
request(options, function (error, response, body) {
if (error) throw new Error(error);
console.log(body);
});
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://api.messageflow.com/v2.1/push",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "{\"applications\":[\"XXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\"],\"to\":[{\"receiver\":\"example-device-id\",\"externalId\":\"xxx-xxx-xxx-xxx\",\"type\":1}],\"title\":{\"pl\":\"test\",\"en\":\"test\"},\"body\":{\"pl\":\"test\",\"en\":\"test\"},\"defaultLanguage\":\"pl\",\"image\":\"http://absolute.url/to/image\",\"silent\":false,\"sound\":\"sound-file.wav\",\"scheduleTime\":\"2020-01-01 12:12:12\",\"ttl\":1540377351,\"externalData\":{\"test\":\"x\",\"test1\":false},\"advanced\":{\"subtitle\":\"subtitle-only-ios\",\"lockscreenVisibility\":1,\"icon\":{\"small\":\"/relative-icon-file-path\",\"large\":\"/relative-icon-file-path\"}},\"action\":{\"url\":\"http://absolute.url/to/redirect/on/click\",\"type\":2},\"actionButtons\":[{\"button\":1,\"icon\":\"my_icon.png\",\"action\":{\"url\":\"www.google.com\",\"type\":1}}]}",
CURLOPT_HTTPHEADER => array(
"authorization: REPLACE_KEY_VALUE",
"content-type: application/json"
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
import requests
url = "https://api.messageflow.com/v2.1/push"
payload = "{\"applications\":[\"XXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\"],\"to\":[{\"receiver\":\"example-device-id\",\"externalId\":\"xxx-xxx-xxx-xxx\",\"type\":1}],\"title\":{\"pl\":\"test\",\"en\":\"test\"},\"body\":{\"pl\":\"test\",\"en\":\"test\"},\"defaultLanguage\":\"pl\",\"image\":\"http://absolute.url/to/image\",\"silent\":false,\"sound\":\"sound-file.wav\",\"scheduleTime\":\"2020-01-01 12:12:12\",\"ttl\":1540377351,\"externalData\":{\"test\":\"x\",\"test1\":false},\"advanced\":{\"subtitle\":\"subtitle-only-ios\",\"lockscreenVisibility\":1,\"icon\":{\"small\":\"/relative-icon-file-path\",\"large\":\"/relative-icon-file-path\"}},\"action\":{\"url\":\"http://absolute.url/to/redirect/on/click\",\"type\":2},\"actionButtons\":[{\"button\":1,\"icon\":\"my_icon.png\",\"action\":{\"url\":\"www.google.com\",\"type\":1}}]}"
headers = {
'content-type': "application/json",
'authorization': "REPLACE_KEY_VALUE"
}
response = requests.request("POST", url, data=payload, headers=headers)
print(response.text)
require 'uri'
require 'net/http'
require 'openssl'
url = URI("https://api.messageflow.com/v2.1/push")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Post.new(url)
request["content-type"] = 'application/json'
request["authorization"] = 'REPLACE_KEY_VALUE'
request.body = "{\"applications\":[\"XXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\"],\"to\":[{\"receiver\":\"example-device-id\",\"externalId\":\"xxx-xxx-xxx-xxx\",\"type\":1}],\"title\":{\"pl\":\"test\",\"en\":\"test\"},\"body\":{\"pl\":\"test\",\"en\":\"test\"},\"defaultLanguage\":\"pl\",\"image\":\"http://absolute.url/to/image\",\"silent\":false,\"sound\":\"sound-file.wav\",\"scheduleTime\":\"2020-01-01 12:12:12\",\"ttl\":1540377351,\"externalData\":{\"test\":\"x\",\"test1\":false},\"advanced\":{\"subtitle\":\"subtitle-only-ios\",\"lockscreenVisibility\":1,\"icon\":{\"small\":\"/relative-icon-file-path\",\"large\":\"/relative-icon-file-path\"}},\"action\":{\"url\":\"http://absolute.url/to/redirect/on/click\",\"type\":2},\"actionButtons\":[{\"button\":1,\"icon\":\"my_icon.png\",\"action\":{\"url\":\"www.google.com\",\"type\":1}}]}"
response = http.request(request)
puts response.read_body
echo '{"applications":["XXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"],"to":[{"receiver":"example-device-id","externalId":"xxx-xxx-xxx-xxx","type":1}],"title":{"pl":"test","en":"test"},"body":{"pl":"test","en":"test"},"defaultLanguage":"pl","image":"http://absolute.url/to/image","silent":false,"sound":"sound-file.wav","scheduleTime":"2020-01-01 12:12:12","ttl":1540377351,"externalData":{"test":"x","test1":false},"advanced":{"subtitle":"subtitle-only-ios","lockscreenVisibility":1,"icon":{"small":"/relative-icon-file-path","large":"/relative-icon-file-path"}},"action":{"url":"http://absolute.url/to/redirect/on/click","type":2},"actionButtons":[{"button":1,"icon":"my_icon.png","action":{"url":"www.google.com","type":1}}]}' | \
http POST https://api.messageflow.com/v2.1/push \
authorization:REPLACE_KEY_VALUE \
content-type:application/json":{"url":"www.google.com","type":1}}]}'

Real-time
campaign insights
Through webhooks, you receive automatic updates on campaign results, including delivery, open, and click statistics, providing you with invaluable real-time data. Our platform offers close tracking of reports ensuring a smooth and efficient experience for both developers and marketers.
Efficiency in theory and practice
Reliable campaigns you can trust.
The possibilities are limitless.
Always customized to your application.
Benefitting from our super reliable technology.
Global experience
Local knowledge
Glocal approach
Message Flow makes cross-channel messaging simple, seamless, and more profitable for any company looking to level up its communication efforts. Two decades of global experience and close cooperation with local providers positions us to offer a unique glocal approach that brings your cross-channel comms to an entirely new level.
var client = new RestClient("https://api.messageflow.com/v2.1/push");
var request = new RestRequest(Method.POST);
request.AddHeader("content-type", "application/json");
request.AddHeader("authorization", "REPLACE_KEY_VALUE");
request.AddParameter("application/json", "{\"applications\":[\"XXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\"],\"to\":[{\"receiver\":\"example-device-id\",\"externalId\":\"xxx-xxx-xxx-xxx\",\"type\":1}],\"title\":{\"pl\":\"test\",\"en\":\"test\"},\"body\":{\"pl\":\"test\",\"en\":\"test\"},\"defaultLanguage\":\"pl\",\"image\":\"http://absolute.url/to/image\",\"silent\":false,\"sound\":\"sound-file.wav\",\"scheduleTime\":\"2020-01-01 12:12:12\",\"ttl\":1540377351,\"externalData\":{\"test\":\"x\",\"test1\":false},\"advanced\":{\"subtitle\":\"subtitle-only-ios\",\"lockscreenVisibility\":1,\"icon\":{\"small\":\"/relative-icon-file-path\",\"large\":\"/relative-icon-file-path\"}},\"action\":{\"url\":\"http://absolute.url/to/redirect/on/click\",\"type\":2},\"actionButtons\":[{\"button\":1,\"icon\":\"my_icon.png\",\"action\":{\"url\":\"www.google.com\",\"type\":1}}]}", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
package main
import (
"fmt"
"strings"
"net/http"
"io/ioutil"
)
func main() {
url := "https://api.messageflow.com/v2.1/push"
payload := strings.NewReader("{\"applications\":[\"XXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\"],\"to\":[{\"receiver\":\"example-device-id\",\"externalId\":\"xxx-xxx-xxx-xxx\",\"type\":1}],\"title\":{\"pl\":\"test\",\"en\":\"test\"},\"body\":{\"pl\":\"test\",\"en\":\"test\"},\"defaultLanguage\":\"pl\",\"image\":\"http://absolute.url/to/image\",\"silent\":false,\"sound\":\"sound-file.wav\",\"scheduleTime\":\"2020-01-01 12:12:12\",\"ttl\":1540377351,\"externalData\":{\"test\":\"x\",\"test1\":false},\"advanced\":{\"subtitle\":\"subtitle-only-ios\",\"lockscreenVisibility\":1,\"icon\":{\"small\":\"/relative-icon-file-path\",\"large\":\"/relative-icon-file-path\"}},\"action\":{\"url\":\"http://absolute.url/to/redirect/on/click\",\"type\":2},\"actionButtons\":[{\"button\":1,\"icon\":\"my_icon.png\",\"action\":{\"url\":\"www.google.com\",\"type\":1}}]}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("content-type", "application/json")
req.Header.Add("authorization", "REPLACE_KEY_VALUE")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := ioutil.ReadAll(res.Body)
fmt.Println(res)
fmt.Println(string(body))
}
HttpResponse<String> response = Unirest.post("https://api.messageflow.com/v2.1/push")
.header("content-type", "application/json") .header("authorization", "REPLACE_KEY_VALUE") .header("application-key", "REPLACE_KEY_VALUE") .body("{\"applications\":[\"XXXXXX-XXXX-XXXX-XXXX-
XXXXXXXXXXXX\"],\"to\":[{\"receiver\":\"example-device-id\",\"externalId\":\"xxx-xxx-xxx- xxx\",\"type\":1}],\"title\":{\"pl\":\"test\",\"en\":\"test\"},\"body\":{\"pl\":\"test\",\"en\":\"t est\"},\"defaultLanguage\":\"pl\",\"image\":\"http://absolute.url/to/image\",\"silent\":false, \"sound\":\"sound-file.wav\",\"scheduleTime\":\"2020-01-01 12:12:12\",\"ttl\":1540377351,\"externalData\":{\"test\":\"x\",\"test1\":false},\"advanced\": {\"subtitle\":\"subtitle-only-ios\",\"lockscreenVisibility\":1,\"icon\":{\"small\":\"/relative- icon-file-path\",\"large\":\"/relative-icon-file- path\"}},\"action\":{\"url\":\"http://absolute.url/to/redirect/on/click\",\"type\":2},\"actionB uttons\":[{\"button\":1,\"icon\":\"my_icon.png\",\"action\":{\"url\":\"www.google.com\",\"t ype\":1}}]}")
.asString();
var request = require("request");
var options = {
method: 'POST',
url: 'https://api.messageflow.com/v2.1/push',
headers: {'content-type': 'application/json', authorization: 'REPLACE_KEY_VALUE'},
body: {
applications: ['XXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX'],
to: [{receiver: 'example-device-id', externalId: 'xxx-xxx-xxx-xxx', type: 1}],
title: {pl: 'test', en: 'test'},
body: {pl: 'test', en: 'test'},
defaultLanguage: 'pl',
image: 'http://absolute.url/to/image',
silent: false,
sound: 'sound-file.wav',
scheduleTime: '2020-01-01 12:12:12',
ttl: 1540377351,
externalData: {test: 'x', test1: false},
advanced: {
subtitle: 'subtitle-only-ios',
lockscreenVisibility: 1,
icon: {small: '/relative-icon-file-path', large: '/relative-icon-file-path'}
},
action: {url: 'http://absolute.url/to/redirect/on/click', type: 2},
actionButtons: [{button: 1, icon: 'my_icon.png', action: {url: 'www.google.com', type: 1}}]
},
json: true
};
request(options, function (error, response, body) {
if (error) throw new Error(error);
console.log(body);
});
<?php
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => "https://api.messageflow.com/v2.1/push",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => "{\"applications\":[\"XXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\"],\"to\":[{\"receiver\":\"example-device-id\",\"externalId\":\"xxx-xxx-xxx-xxx\",\"type\":1}],\"title\":{\"pl\":\"test\",\"en\":\"test\"},\"body\":{\"pl\":\"test\",\"en\":\"test\"},\"defaultLanguage\":\"pl\",\"image\":\"http://absolute.url/to/image\",\"silent\":false,\"sound\":\"sound-file.wav\",\"scheduleTime\":\"2020-01-01 12:12:12\",\"ttl\":1540377351,\"externalData\":{\"test\":\"x\",\"test1\":false},\"advanced\":{\"subtitle\":\"subtitle-only-ios\",\"lockscreenVisibility\":1,\"icon\":{\"small\":\"/relative-icon-file-path\",\"large\":\"/relative-icon-file-path\"}},\"action\":{\"url\":\"http://absolute.url/to/redirect/on/click\",\"type\":2},\"actionButtons\":[{\"button\":1,\"icon\":\"my_icon.png\",\"action\":{\"url\":\"www.google.com\",\"type\":1}}]}",
CURLOPT_HTTPHEADER => array(
"authorization: REPLACE_KEY_VALUE",
"content-type: application/json"
),
));
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
import requests
url = "https://api.messageflow.com/v2.1/push"
payload = "{\"applications\":[\"XXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\"],\"to\":[{\"receiver\":\"example-device-id\",\"externalId\":\"xxx-xxx-xxx-xxx\",\"type\":1}],\"title\":{\"pl\":\"test\",\"en\":\"test\"},\"body\":{\"pl\":\"test\",\"en\":\"test\"},\"defaultLanguage\":\"pl\",\"image\":\"http://absolute.url/to/image\",\"silent\":false,\"sound\":\"sound-file.wav\",\"scheduleTime\":\"2020-01-01 12:12:12\",\"ttl\":1540377351,\"externalData\":{\"test\":\"x\",\"test1\":false},\"advanced\":{\"subtitle\":\"subtitle-only-ios\",\"lockscreenVisibility\":1,\"icon\":{\"small\":\"/relative-icon-file-path\",\"large\":\"/relative-icon-file-path\"}},\"action\":{\"url\":\"http://absolute.url/to/redirect/on/click\",\"type\":2},\"actionButtons\":[{\"button\":1,\"icon\":\"my_icon.png\",\"action\":{\"url\":\"www.google.com\",\"type\":1}}]}"
headers = {
'content-type': "application/json",
'authorization': "REPLACE_KEY_VALUE"
}
response = requests.request("POST", url, data=payload, headers=headers)
print(response.text)
require 'uri'
require 'net/http'
require 'openssl'
url = URI("https://api.messageflow.com/v2.1/push")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
request = Net::HTTP::Post.new(url)
request["content-type"] = 'application/json'
request["authorization"] = 'REPLACE_KEY_VALUE'
request.body = "{\"applications\":[\"XXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\"],\"to\":[{\"receiver\":\"example-device-id\",\"externalId\":\"xxx-xxx-xxx-xxx\",\"type\":1}],\"title\":{\"pl\":\"test\",\"en\":\"test\"},\"body\":{\"pl\":\"test\",\"en\":\"test\"},\"defaultLanguage\":\"pl\",\"image\":\"http://absolute.url/to/image\",\"silent\":false,\"sound\":\"sound-file.wav\",\"scheduleTime\":\"2020-01-01 12:12:12\",\"ttl\":1540377351,\"externalData\":{\"test\":\"x\",\"test1\":false},\"advanced\":{\"subtitle\":\"subtitle-only-ios\",\"lockscreenVisibility\":1,\"icon\":{\"small\":\"/relative-icon-file-path\",\"large\":\"/relative-icon-file-path\"}},\"action\":{\"url\":\"http://absolute.url/to/redirect/on/click\",\"type\":2},\"actionButtons\":[{\"button\":1,\"icon\":\"my_icon.png\",\"action\":{\"url\":\"www.google.com\",\"type\":1}}]}"
response = http.request(request)
puts response.read_body
echo '{"applications":["XXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX"],"to":[{"receiver":"example-device-id","externalId":"xxx-xxx-xxx-xxx","type":1}],"title":{"pl":"test","en":"test"},"body":{"pl":"test","en":"test"},"defaultLanguage":"pl","image":"http://absolute.url/to/image","silent":false,"sound":"sound-file.wav","scheduleTime":"2020-01-01 12:12:12","ttl":1540377351,"externalData":{"test":"x","test1":false},"advanced":{"subtitle":"subtitle-only-ios","lockscreenVisibility":1,"icon":{"small":"/relative-icon-file-path","large":"/relative-icon-file-path"}},"action":{"url":"http://absolute.url/to/redirect/on/click","type":2},"actionButtons":[{"button":1,"icon":"my_icon.png","action":{"url":"www.google.com","type":1}}]}' | \
http POST https://api.messageflow.com/v2.1/push \
authorization:REPLACE_KEY_VALUE \
content-type:application/json":{"url":"www.google.com","type":1}}]}'
Powerful infrastructure with an easy integration process
Dive into our developer resource library, where you'll find quick-start guides, code snippets, SDKs, and more to power up your push notification infrastructure built with MessageFlow.

Enjoy ready integration with major systems
Seamless integrations with leading MA and CRM solutions - tried, tested, and ready to serve you. Our expertly-crafted integrations require zero development effort, making it a breeze to implement and utilize them.


We understand
security matters
Experience the power of secure communication with our tailored solutions for authentication and security. As a developer, you can rest easy knowing that we provide API keys, access tokens, and robust authentication methods to protect your interactions with our mobile push platform, ensuring your data and communications are in safe hands.
Beyond push API
MessageFlow serves as a glocal cross-communication platform where messages are successfully delivered, language transforms into actionable data, and businesses thrive as they harness the power of seamless communication.
Leverage our omnichannel API to effortlessly manage all your communication needs, including triggered marketing emails, email marketing campaigns, push notifications, and SMS, all from within a single, unified platform.
© 2023 messageflow.com | All rights reserved. | We use cookies.