curl --request GET \
--url https://api.social-api.ai/v1/users/me \
--header 'Authorization: <api-key>'const options = {method: 'GET', headers: {Authorization: '<api-key>'}};
fetch('https://api.social-api.ai/v1/users/me', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.social-api.ai/v1/users/me"
headers = {"Authorization": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text){
"allowed_platforms": [
"instagram",
"facebook"
],
"avatar_url": "https://example.com/avatar.jpg",
"beta_tester": false,
"billing_block_reason": "past_due",
"billing_blocked": false,
"billing_blocked_at": "<string>",
"email": "user@example.com",
"experiment_enrolled": false,
"experiment_variant": "control",
"facebook_page_selection": false,
"id": "550e8400-e29b-41d4-a716-446655440000",
"job_role": "Founder / CEO",
"lock_accounts_to_brand": false,
"onboarding": true,
"plan": "free",
"role": "admin",
"use_case": "Managing clients' accounts (agency)"
}{
"error": {
"code": "resource.not_found",
"message": "Account not found",
"meta": {}
}
}{
"error": {
"code": "resource.not_found",
"message": "Account not found",
"meta": {}
}
}Get current user
Returns the authenticated user’s profile (id, email, plan tier, onboarding flag, beta_tester flag, allowed_platforms list, billing_blocked state).
curl --request GET \
--url https://api.social-api.ai/v1/users/me \
--header 'Authorization: <api-key>'const options = {method: 'GET', headers: {Authorization: '<api-key>'}};
fetch('https://api.social-api.ai/v1/users/me', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://api.social-api.ai/v1/users/me"
headers = {"Authorization": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text){
"allowed_platforms": [
"instagram",
"facebook"
],
"avatar_url": "https://example.com/avatar.jpg",
"beta_tester": false,
"billing_block_reason": "past_due",
"billing_blocked": false,
"billing_blocked_at": "<string>",
"email": "user@example.com",
"experiment_enrolled": false,
"experiment_variant": "control",
"facebook_page_selection": false,
"id": "550e8400-e29b-41d4-a716-446655440000",
"job_role": "Founder / CEO",
"lock_accounts_to_brand": false,
"onboarding": true,
"plan": "free",
"role": "admin",
"use_case": "Managing clients' accounts (agency)"
}{
"error": {
"code": "resource.not_found",
"message": "Account not found",
"meta": {}
}
}{
"error": {
"code": "resource.not_found",
"message": "Account not found",
"meta": {}
}
}Authorizations
Prefix your API key with "Bearer ". Example: Authorization: Bearer sapi_key_...
Response
User profile
["instagram", "facebook"]
"https://example.com/avatar.jpg"
false
BillingBlockReason is why access is paused, empty when it is not. "past_due": a payment failed, and settling it restores access. "ban": the account was suspended for a Terms of Service violation. Paying does not lift it, and every route except this one returns 403 auth.suspended. Contact support to appeal.
"past_due"
BillingBlocked is true when API access and webhook delivery are paused. Read BillingBlockReason to tell why and whether paying lifts it.
false
BillingBlockedAt is when the block began, or null when not blocked.
"user@example.com"
ExperimentEnrolled is true only when ExperimentVariant was assigned by the experiment itself. False means the "control" above is a fallback (not enrolled, flag off, or evaluation failed) and must not be recorded as the caller's arm.
false
ExperimentVariant is the caller's variant for staged feature rollouts: "control" or "treatment". "control" unless the caller is enrolled.
"control"
FacebookPageSelection, when true, enables the Facebook Page selection connect flow in the dashboard. Read-only here.
false
"550e8400-e29b-41d4-a716-446655440000"
JobRole is what best describes the user, as answered during onboarding. Null until answered.
"Founder / CEO"
LockAccountsToBrand, when true, rejects connecting a social account that is already connected to another of your brands (409 account.already_linked) instead of moving it. Default false.
false
true
"free"
Role is the caller's team role: "admin", "developer", or "" for the account Owner, who holds no Role. An API key and an OAuth token both read "".
"admin"
"Managing clients' accounts (agency)"