curl --request GET \
--url https://public-api.etoro.com/api/v1/users/personaldetails \
--header 'x-api-key: <api-key>' \
--header 'x-request-id: <x-request-id>' \
--header 'x-user-key: <api-key>'import requests
url = "https://public-api.etoro.com/api/v1/users/personaldetails"
headers = {
"x-request-id": "<x-request-id>",
"x-api-key": "<api-key>",
"x-user-key": "<api-key>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {
'x-request-id': '<x-request-id>',
'x-api-key': '<api-key>',
'x-user-key': '<api-key>'
}
};
fetch('https://public-api.etoro.com/api/v1/users/personaldetails', 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://public-api.etoro.com/api/v1/users/personaldetails",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>",
"x-request-id: <x-request-id>",
"x-user-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"
"net/http"
"io"
)
func main() {
url := "https://public-api.etoro.com/api/v1/users/personaldetails"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-request-id", "<x-request-id>")
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("x-user-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://public-api.etoro.com/api/v1/users/personaldetails")
.header("x-request-id", "<x-request-id>")
.header("x-api-key", "<api-key>")
.header("x-user-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://public-api.etoro.com/api/v1/users/personaldetails")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-request-id"] = '<x-request-id>'
request["x-api-key"] = '<api-key>'
request["x-user-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"gcid": 123456789,
"firstName": "John",
"middleName": "Q",
"lastName": "Doe",
"gender": 1,
"dateOfBirth": "1990-01-01",
"placeOfBirthCountry": "US",
"citizenshipCountry": "US",
"personalIdentification": {
"type": "NationalId",
"value": "AB1234567",
"issuingCountry": "US"
},
"taxIds": [
{
"taxId": "IL311111118",
"country": "IL",
"primary": false
},
{
"taxId": "44892353279",
"country": "DE",
"primary": true
}
],
"taxId": "44892353279",
"taxIdCountry": "DE",
"additionalCitizenship": {
"countryCode": "GB",
"personalIdentification": {
"type": "Passport",
"value": "GB9876543",
"issuingCountry": "GB"
}
}
}{
"errorCode": "<string>",
"errorMessage": "<string>"
}{
"errorCode": "<string>",
"errorMessage": "<string>"
}Get KYC Personal Details
Rate limit: 60 requests per 60 seconds. This is the default shared quota — it is shared with every other endpoint that has no dedicated limit, so requests across those endpoints all draw from the same budget.
Returns the authenticated user’s KYC personal details, including identification, citizenship and tax information.
curl --request GET \
--url https://public-api.etoro.com/api/v1/users/personaldetails \
--header 'x-api-key: <api-key>' \
--header 'x-request-id: <x-request-id>' \
--header 'x-user-key: <api-key>'import requests
url = "https://public-api.etoro.com/api/v1/users/personaldetails"
headers = {
"x-request-id": "<x-request-id>",
"x-api-key": "<api-key>",
"x-user-key": "<api-key>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {
'x-request-id': '<x-request-id>',
'x-api-key': '<api-key>',
'x-user-key': '<api-key>'
}
};
fetch('https://public-api.etoro.com/api/v1/users/personaldetails', 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://public-api.etoro.com/api/v1/users/personaldetails",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-api-key: <api-key>",
"x-request-id: <x-request-id>",
"x-user-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"
"net/http"
"io"
)
func main() {
url := "https://public-api.etoro.com/api/v1/users/personaldetails"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-request-id", "<x-request-id>")
req.Header.Add("x-api-key", "<api-key>")
req.Header.Add("x-user-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://public-api.etoro.com/api/v1/users/personaldetails")
.header("x-request-id", "<x-request-id>")
.header("x-api-key", "<api-key>")
.header("x-user-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://public-api.etoro.com/api/v1/users/personaldetails")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-request-id"] = '<x-request-id>'
request["x-api-key"] = '<api-key>'
request["x-user-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"gcid": 123456789,
"firstName": "John",
"middleName": "Q",
"lastName": "Doe",
"gender": 1,
"dateOfBirth": "1990-01-01",
"placeOfBirthCountry": "US",
"citizenshipCountry": "US",
"personalIdentification": {
"type": "NationalId",
"value": "AB1234567",
"issuingCountry": "US"
},
"taxIds": [
{
"taxId": "IL311111118",
"country": "IL",
"primary": false
},
{
"taxId": "44892353279",
"country": "DE",
"primary": true
}
],
"taxId": "44892353279",
"taxIdCountry": "DE",
"additionalCitizenship": {
"countryCode": "GB",
"personalIdentification": {
"type": "Passport",
"value": "GB9876543",
"issuingCountry": "GB"
}
}
}{
"errorCode": "<string>",
"errorMessage": "<string>"
}{
"errorCode": "<string>",
"errorMessage": "<string>"
}Authorizations
API key of the application. Only valid together with the x-user-key header — the pair is an alternative to OAuth bearer authentication, never sent alongside it. The pair is granted the same permissions the operation's OAuth scopes describe.
Demo credential for trying the API from these docs: lhgfaslk21490FAScVPkdsb53F9dNkfHG4faZSG5vfjndfcfgdssdgsdHF4663
User-specific authentication key. Only valid together with the x-api-key header — the pair is an alternative to OAuth bearer authentication, never sent alongside it.
Demo credential for trying the API from these docs: eyJlYW4iOiJVbnJlZ2lzdGVyZWRBcHBsaWNhdGlvbiIsImVrIjoiOE5sZ2cwcW5EUVdROUFNWGpXT2lmOWktZnpidG5KcUlqWGJ3WHJZZkpZcldrbG90ZEhvLVBjSWhQaU8xU1ZtMW84aU1WZGZqN2xWNzFjLXFxLmcybXE1dnh4Q1hUT25xaWRUaTFlcEhmVk1fIn0_
Headers
A unique request identifier.
"7158076e-12e7-4850-b896-c20101f21c69"
Response
Successfully retrieved KYC personal details.
Full KYC personal-details record for the authenticated user.
The user's global customer identifier.
The user's first name.
The user's middle name (optional).
The user's last name.
Gender code. Values: 0=Unspecified, 1=Male, 2=Female, 3=Other.
The user's date of birth (ISO 8601, YYYY-MM-DD).
ISO 3166-1 alpha-2 country code of the user's place of birth.
"US"
ISO 3166-1 alpha-2 country code of the user's primary citizenship.
"US"
A personal identification document (e.g. national ID, passport).
Show child attributes
Show child attributes
All tax identifications held by the user, one entry per issuing country.
Show child attributes
Show child attributes
Deprecated. Use taxIds[]. Mirrors the primary tax identification number. Retained for backward compatibility.
Deprecated. Use taxIds[]. ISO 3166-1 alpha-2 country code of the primary tax identification. Retained for backward compatibility.
"DE"
A secondary citizenship held by the user.
Show child attributes
Show child attributes