Smart Support
Recover Abandoned Payments
Triggers automated outreach to recover abandoned payment flows by contacting the customer to complete their purchase.
POST
/
v1
/
smart-support
/
external
/
payments
Recover abandoned payments
curl --request POST \
--url https://api-sandbox.y.uno/v1/smart-support/external/payments \
--header 'Content-Type: application/json' \
--header 'private-secret-key: <api-key>' \
--header 'public-api-key: <api-key>' \
--data '
{
"checkout_session": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"channel": "SMS",
"language": "pt-BR"
}
'import requests
url = "https://api-sandbox.y.uno/v1/smart-support/external/payments"
payload = {
"checkout_session": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"channel": "SMS",
"language": "pt-BR"
}
headers = {
"public-api-key": "<api-key>",
"private-secret-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'public-api-key': '<api-key>',
'private-secret-key': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
checkout_session: 'a1b2c3d4-e5f6-7890-abcd-ef1234567890',
channel: 'SMS',
language: 'pt-BR'
})
};
fetch('https://api-sandbox.y.uno/v1/smart-support/external/payments', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api-sandbox.y.uno/v1/smart-support/external/payments",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'checkout_session' => 'a1b2c3d4-e5f6-7890-abcd-ef1234567890',
'channel' => 'SMS',
'language' => 'pt-BR'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"private-secret-key: <api-key>",
"public-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api-sandbox.y.uno/v1/smart-support/external/payments"
payload := strings.NewReader("{\n \"checkout_session\": \"a1b2c3d4-e5f6-7890-abcd-ef1234567890\",\n \"channel\": \"SMS\",\n \"language\": \"pt-BR\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("public-api-key", "<api-key>")
req.Header.Add("private-secret-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api-sandbox.y.uno/v1/smart-support/external/payments")
.header("public-api-key", "<api-key>")
.header("private-secret-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"checkout_session\": \"a1b2c3d4-e5f6-7890-abcd-ef1234567890\",\n \"channel\": \"SMS\",\n \"language\": \"pt-BR\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-sandbox.y.uno/v1/smart-support/external/payments")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["public-api-key"] = '<api-key>'
request["private-secret-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"checkout_session\": \"a1b2c3d4-e5f6-7890-abcd-ef1234567890\",\n \"channel\": \"SMS\",\n \"language\": \"pt-BR\"\n}"
response = http.request(request)
puts response.read_body{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"channel": "<string>",
"created_at": "2023-11-07T05:31:56Z"
}{
"code": "VALIDATION_ERROR",
"messages": [
"amount must be greater than 0",
"country must not be blank"
]
}Beta Feature. Smart Support (AI Caller) is currently in beta. Availability: Brazil and Mexico (Spanish and Portuguese). Contact your Yuno account manager for pricing and to enable this feature. Automated outbound calls require explicit customer consent under LGPD (Brazil) and LFPDPPP (Mexico) regulations.
Authorizations
Your public API key from the Yuno Dashboard
Your private secret key (server-side only)
Body
application/json
⌘I
Recover abandoned payments
curl --request POST \
--url https://api-sandbox.y.uno/v1/smart-support/external/payments \
--header 'Content-Type: application/json' \
--header 'private-secret-key: <api-key>' \
--header 'public-api-key: <api-key>' \
--data '
{
"checkout_session": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"channel": "SMS",
"language": "pt-BR"
}
'import requests
url = "https://api-sandbox.y.uno/v1/smart-support/external/payments"
payload = {
"checkout_session": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"channel": "SMS",
"language": "pt-BR"
}
headers = {
"public-api-key": "<api-key>",
"private-secret-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'public-api-key': '<api-key>',
'private-secret-key': '<api-key>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
checkout_session: 'a1b2c3d4-e5f6-7890-abcd-ef1234567890',
channel: 'SMS',
language: 'pt-BR'
})
};
fetch('https://api-sandbox.y.uno/v1/smart-support/external/payments', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api-sandbox.y.uno/v1/smart-support/external/payments",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'checkout_session' => 'a1b2c3d4-e5f6-7890-abcd-ef1234567890',
'channel' => 'SMS',
'language' => 'pt-BR'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"private-secret-key: <api-key>",
"public-api-key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api-sandbox.y.uno/v1/smart-support/external/payments"
payload := strings.NewReader("{\n \"checkout_session\": \"a1b2c3d4-e5f6-7890-abcd-ef1234567890\",\n \"channel\": \"SMS\",\n \"language\": \"pt-BR\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("public-api-key", "<api-key>")
req.Header.Add("private-secret-key", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api-sandbox.y.uno/v1/smart-support/external/payments")
.header("public-api-key", "<api-key>")
.header("private-secret-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"checkout_session\": \"a1b2c3d4-e5f6-7890-abcd-ef1234567890\",\n \"channel\": \"SMS\",\n \"language\": \"pt-BR\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api-sandbox.y.uno/v1/smart-support/external/payments")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["public-api-key"] = '<api-key>'
request["private-secret-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"checkout_session\": \"a1b2c3d4-e5f6-7890-abcd-ef1234567890\",\n \"channel\": \"SMS\",\n \"language\": \"pt-BR\"\n}"
response = http.request(request)
puts response.read_body{
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"channel": "<string>",
"created_at": "2023-11-07T05:31:56Z"
}{
"code": "VALIDATION_ERROR",
"messages": [
"amount must be greater than 0",
"country must not be blank"
]
}