curl --request POST \
--url https://app.sideshift.app/api/embed/accounts/check \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"externalId": "earn_user_123"
}
'import requests
url = "https://app.sideshift.app/api/embed/accounts/check"
payload = { "externalId": "earn_user_123" }
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({externalId: 'earn_user_123'})
};
fetch('https://app.sideshift.app/api/embed/accounts/check', 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://app.sideshift.app/api/embed/accounts/check",
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([
'externalId' => 'earn_user_123'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-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://app.sideshift.app/api/embed/accounts/check"
payload := strings.NewReader("{\n \"externalId\": \"earn_user_123\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-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://app.sideshift.app/api/embed/accounts/check")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"externalId\": \"earn_user_123\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.sideshift.app/api/embed/accounts/check")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"externalId\": \"earn_user_123\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"exists": true,
"isKycVerified": true,
"hasDuplicateVerifiedIdentity": false,
"geoRestricted": false,
"source": "stored_verification"
}
}Check an existing account and duplicate verified identity
Read-only check scoped to the API key’s integrator and environment. Supply exactly one selector. Accounts outside your integration are indistinguishable from absent accounts. Email matches the stored Connect email (lowercased), not a person’s identity; use externalId or sideshiftAccountId for accounts created with fallback emails. Flags use stored verification data and may lag provider events. A new email cannot detect a reused identity until verification links that account to an identity profile. This endpoint does not reserve an identity, block account creation, or move funds. No identity profile ID, bank details, tax ID, or other KYC data is returned.
curl --request POST \
--url https://app.sideshift.app/api/embed/accounts/check \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"externalId": "earn_user_123"
}
'import requests
url = "https://app.sideshift.app/api/embed/accounts/check"
payload = { "externalId": "earn_user_123" }
headers = {
"x-api-key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-api-key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({externalId: 'earn_user_123'})
};
fetch('https://app.sideshift.app/api/embed/accounts/check', 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://app.sideshift.app/api/embed/accounts/check",
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([
'externalId' => 'earn_user_123'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-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://app.sideshift.app/api/embed/accounts/check"
payload := strings.NewReader("{\n \"externalId\": \"earn_user_123\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-api-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://app.sideshift.app/api/embed/accounts/check")
.header("x-api-key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"externalId\": \"earn_user_123\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.sideshift.app/api/embed/accounts/check")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-api-key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"externalId\": \"earn_user_123\"\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"data": {
"exists": true,
"isKycVerified": true,
"hasDuplicateVerifiedIdentity": false,
"geoRestricted": false,
"source": "stored_verification"
}
}Authorizations
Your SideShift Connect API key (sk_live_* or sk_test_*). Generate from Settings → Connect.