Get a customer
curl --request GET \
--url https://api.qonversion.io/v4/customers/{customer_id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.qonversion.io/v4/customers/{customer_id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.qonversion.io/v4/customers/{customer_id}', 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.qonversion.io/v4/customers/{customer_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}require 'uri'
require 'net/http'
url = URI("https://api.qonversion.io/v4/customers/{customer_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_bodypackage main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.qonversion.io/v4/customers/{customer_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.qonversion.io/v4/customers/{customer_id}")
.header("Authorization", "Bearer <token>")
.asString();{
"object": "customer",
"url": "/v4/customers/customer_abc123",
"data": {
"customer": {
"client_id": "customer_abc123",
"external_identity": "user@example.com",
"environment": 2,
"platform": "iOS",
"country": "US",
"status": "active",
"since": "2026-03-18T09:42:11Z",
"last_seen": "2026-04-22T18:05:33Z"
},
"device": {
"platform": "iOS",
"os_version": "17.4",
"device_model": "iPhone15,3",
"app_version": "4.12.0",
"sdk_version": "5.9.1"
},
"attributionData": [
{
"key": "source",
"value": "organic"
},
{
"key": "campaign",
"value": "spring_sale"
}
],
"userProperties": [
{
"key": "plan_tier",
"value": "premium"
},
{
"key": "onboarding_variant",
"value": "B"
}
],
"trackEvents": [
{
"event": "subscription_started",
"at": "2026-03-18T09:42:45Z",
"product_id": "com.example.pro.monthly",
"revenue_usd": 9.99
}
],
"netPayments": 59.97,
"currency": "USD",
"conversionRate": 1,
"canRemoveCustomer": true,
"canEditEntitlements": true
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": [
{
"field": "<string>",
"message": "<string>"
}
]
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": [
{
"field": "<string>",
"message": "<string>"
}
]
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": [
{
"field": "<string>",
"message": "<string>"
}
]
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": [
{
"field": "<string>",
"message": "<string>"
}
]
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": [
{
"field": "<string>",
"message": "<string>"
}
]
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": [
{
"field": "<string>",
"message": "<string>"
}
]
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": [
{
"field": "<string>",
"message": "<string>"
}
]
}
}Customers
Get a customer
Returns a single customer by ID.
GET
/
customers
/
{customer_id}
Get a customer
curl --request GET \
--url https://api.qonversion.io/v4/customers/{customer_id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.qonversion.io/v4/customers/{customer_id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.qonversion.io/v4/customers/{customer_id}', 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.qonversion.io/v4/customers/{customer_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}require 'uri'
require 'net/http'
url = URI("https://api.qonversion.io/v4/customers/{customer_id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_bodypackage main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.qonversion.io/v4/customers/{customer_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.qonversion.io/v4/customers/{customer_id}")
.header("Authorization", "Bearer <token>")
.asString();{
"object": "customer",
"url": "/v4/customers/customer_abc123",
"data": {
"customer": {
"client_id": "customer_abc123",
"external_identity": "user@example.com",
"environment": 2,
"platform": "iOS",
"country": "US",
"status": "active",
"since": "2026-03-18T09:42:11Z",
"last_seen": "2026-04-22T18:05:33Z"
},
"device": {
"platform": "iOS",
"os_version": "17.4",
"device_model": "iPhone15,3",
"app_version": "4.12.0",
"sdk_version": "5.9.1"
},
"attributionData": [
{
"key": "source",
"value": "organic"
},
{
"key": "campaign",
"value": "spring_sale"
}
],
"userProperties": [
{
"key": "plan_tier",
"value": "premium"
},
{
"key": "onboarding_variant",
"value": "B"
}
],
"trackEvents": [
{
"event": "subscription_started",
"at": "2026-03-18T09:42:45Z",
"product_id": "com.example.pro.monthly",
"revenue_usd": 9.99
}
],
"netPayments": 59.97,
"currency": "USD",
"conversionRate": 1,
"canRemoveCustomer": true,
"canEditEntitlements": true
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": [
{
"field": "<string>",
"message": "<string>"
}
]
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": [
{
"field": "<string>",
"message": "<string>"
}
]
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": [
{
"field": "<string>",
"message": "<string>"
}
]
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": [
{
"field": "<string>",
"message": "<string>"
}
]
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": [
{
"field": "<string>",
"message": "<string>"
}
]
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": [
{
"field": "<string>",
"message": "<string>"
}
]
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": [
{
"field": "<string>",
"message": "<string>"
}
]
}
}Authorizations
Bearer authentication using the project Secret Key (prefixed with sk_, or test_sk_ for sandbox). All v4 public endpoints require the Secret Key — see Authentication. Never expose the Secret Key in client-side code.
Path Parameters
Customer identifier.
Response
Customer details.
Customer object wrapped in the v4 envelope (object, url, data). The data block bundles the customer record with attribution, user properties, device info, and recent track events.
⌘I