curl --request POST \
--url https://api.exowpee.com/v1/auth/check-email \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"email": "jsmith@example.com",
"login_callback_url": "<string>",
"signup_callback_url": "<string>",
"register_callback_url": "<string>"
}
'import requests
url = "https://api.exowpee.com/v1/auth/check-email"
payload = {
"email": "jsmith@example.com",
"login_callback_url": "<string>",
"signup_callback_url": "<string>",
"register_callback_url": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
email: 'jsmith@example.com',
login_callback_url: '<string>',
signup_callback_url: '<string>',
register_callback_url: '<string>'
})
};
fetch('https://api.exowpee.com/v1/auth/check-email', 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.exowpee.com/v1/auth/check-email",
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([
'email' => 'jsmith@example.com',
'login_callback_url' => '<string>',
'signup_callback_url' => '<string>',
'register_callback_url' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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.exowpee.com/v1/auth/check-email"
payload := strings.NewReader("{\n \"email\": \"jsmith@example.com\",\n \"login_callback_url\": \"<string>\",\n \"signup_callback_url\": \"<string>\",\n \"register_callback_url\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.exowpee.com/v1/auth/check-email")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"email\": \"jsmith@example.com\",\n \"login_callback_url\": \"<string>\",\n \"signup_callback_url\": \"<string>\",\n \"register_callback_url\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.exowpee.com/v1/auth/check-email")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"email\": \"jsmith@example.com\",\n \"login_callback_url\": \"<string>\",\n \"signup_callback_url\": \"<string>\",\n \"register_callback_url\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"message": "<string>"
}{
"message": "<string>",
"errors": {}
}Start sign-up by email
Sends an email with a link that leads to sign-in if the address has an account, or to sign-up if not.
curl --request POST \
--url https://api.exowpee.com/v1/auth/check-email \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"email": "jsmith@example.com",
"login_callback_url": "<string>",
"signup_callback_url": "<string>",
"register_callback_url": "<string>"
}
'import requests
url = "https://api.exowpee.com/v1/auth/check-email"
payload = {
"email": "jsmith@example.com",
"login_callback_url": "<string>",
"signup_callback_url": "<string>",
"register_callback_url": "<string>"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
email: 'jsmith@example.com',
login_callback_url: '<string>',
signup_callback_url: '<string>',
register_callback_url: '<string>'
})
};
fetch('https://api.exowpee.com/v1/auth/check-email', 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.exowpee.com/v1/auth/check-email",
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([
'email' => 'jsmith@example.com',
'login_callback_url' => '<string>',
'signup_callback_url' => '<string>',
'register_callback_url' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$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.exowpee.com/v1/auth/check-email"
payload := strings.NewReader("{\n \"email\": \"jsmith@example.com\",\n \"login_callback_url\": \"<string>\",\n \"signup_callback_url\": \"<string>\",\n \"register_callback_url\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
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.exowpee.com/v1/auth/check-email")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"email\": \"jsmith@example.com\",\n \"login_callback_url\": \"<string>\",\n \"signup_callback_url\": \"<string>\",\n \"register_callback_url\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.exowpee.com/v1/auth/check-email")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"email\": \"jsmith@example.com\",\n \"login_callback_url\": \"<string>\",\n \"signup_callback_url\": \"<string>\",\n \"register_callback_url\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"message": "<string>"
}{
"message": "<string>",
"errors": {}
}- No sign-in is needed; the route allows 5 calls per minute.
- The email must be a valid address (format and domain checked) of at most 255 characters; it is lower-cased and trimmed.
- Callback URLs cannot be sent (login_callback_url, signup_callback_url and register_callback_url are refused); links are built from server configuration.
- Sends an onboarding email with a link to the frontend chosen by app (company by default). The link carries a token valid for 1 day for that address and a has_account flag.
- The email content is the same type of mail for both cases, with type login when an account exists for the address and signup when it does not. The answer to the caller is identical in both cases.
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
Email address to start sign-up or sign-in for. It is lower-cased and trimmed; the link is sent there.
255Application the emailed link opens: company or organization. Optional; defaults to company.
company, organization Not accepted: links are built from server configuration; sending this field is refused.
Not accepted: links are built from server configuration; sending this field is refused.
Not accepted: links are built from server configuration; sending this field is refused.
Response
Confirmation text in the language of the request. Not meant to be parsed. It is the same whether or not an account exists for the address.