curl --request GET \
--url https://api.1club.ai/v1/platform/contacts/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.1club.ai/v1/platform/contacts/{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.1club.ai/v1/platform/contacts/{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.1club.ai/v1/platform/contacts/{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;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.1club.ai/v1/platform/contacts/{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.1club.ai/v1/platform/contacts/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.1club.ai/v1/platform/contacts/{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_body{
"id": 123,
"uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"firstName": "<string>",
"lastName": "<string>",
"email": "<string>",
"phone": "<string>",
"type": "<string>",
"createdAt": "2023-11-07T05:31:56Z",
"overview": {
"severity": "error",
"alerts": [
{
"kind": "<string>",
"severity": "error"
}
],
"money": {
"currency": "<string>",
"amountDue": 123,
"walletBalance": 123,
"deposit": {
"requiredAmount": 123,
"depositHeld": 123,
"availableToSpend": 123,
"shortfall": 123
},
"totalBilled": 123,
"totalPaid": 123,
"transactions": 123
},
"activity": {
"lastVisitAt": "2023-11-07T05:31:56Z",
"bookings": 123,
"checkins": 123,
"classCheckins": 123,
"activeMemberships": 123,
"memberships": 123,
"passes": 123,
"dropIns": 123,
"documents": 123
},
"missingContactDetails": [
"phone"
],
"withheld": [
{
"family": "money",
"scope": "<string>"
}
]
}
}{
"error": "<string>",
"code": "<string>",
"details": {}
}{
"error": "<string>",
"code": "<string>",
"details": {}
}{
"error": "<string>",
"code": "<string>",
"details": {}
}{
"error": "<string>",
"code": "<string>",
"details": {}
}{
"error": "<string>",
"code": "<string>",
"details": {}
}Get a contact
Returns a single contact by its 1club id. With include=overview it also returns the contact’s overview as overview - what staff see on the contact’s profile before serving them: the alerts (an Amount Due, a Wallet below its Required Deposit, gear overdue, a required document unsigned, a required profile field missing, access suspended, archived), the money (Amount Due, Wallet balance, deposit, billed and paid to date), activity counts and the last visit, and the contact details the record lacks.
Money needs transactions:read and gear needs products:read on top of contacts:read. Without them the rest is still returned, and withheld names what was left out and the scope it needs, so a missing alert is never mistaken for nothing to report.
curl --request GET \
--url https://api.1club.ai/v1/platform/contacts/{id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.1club.ai/v1/platform/contacts/{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.1club.ai/v1/platform/contacts/{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.1club.ai/v1/platform/contacts/{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;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.1club.ai/v1/platform/contacts/{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.1club.ai/v1/platform/contacts/{id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.1club.ai/v1/platform/contacts/{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_body{
"id": 123,
"uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"firstName": "<string>",
"lastName": "<string>",
"email": "<string>",
"phone": "<string>",
"type": "<string>",
"createdAt": "2023-11-07T05:31:56Z",
"overview": {
"severity": "error",
"alerts": [
{
"kind": "<string>",
"severity": "error"
}
],
"money": {
"currency": "<string>",
"amountDue": 123,
"walletBalance": 123,
"deposit": {
"requiredAmount": 123,
"depositHeld": 123,
"availableToSpend": 123,
"shortfall": 123
},
"totalBilled": 123,
"totalPaid": 123,
"transactions": 123
},
"activity": {
"lastVisitAt": "2023-11-07T05:31:56Z",
"bookings": 123,
"checkins": 123,
"classCheckins": 123,
"activeMemberships": 123,
"memberships": 123,
"passes": 123,
"dropIns": 123,
"documents": 123
},
"missingContactDetails": [
"phone"
],
"withheld": [
{
"family": "money",
"scope": "<string>"
}
]
}
}{
"error": "<string>",
"code": "<string>",
"details": {}
}{
"error": "<string>",
"code": "<string>",
"details": {}
}{
"error": "<string>",
"code": "<string>",
"details": {}
}{
"error": "<string>",
"code": "<string>",
"details": {}
}{
"error": "<string>",
"code": "<string>",
"details": {}
}Authorizations
Organization-scoped bearer credential: a customer API key (1club_sk_live_...) or an MCP OAuth access token.
Path Parameters
1club contact id
Query Parameters
Embed the contact's overview as overview.
overview Response
The contact
A contact (customer) in the organization. Reference the id as contactId when creating a booking.
Stable unguessable identifier. Prefer this over id when storing a reference.
Derived contact type (e.g. contact, member, lead). archived marks a retired contact — hidden from the list and from search, but still readable by id.
What staff see on the contact's profile before serving them, present only with include=overview.
Show child attributes
Show child attributes
Was this page helpful?