curl --location --request POST 'https://api.userorbit.com/v1/public/subscriber.identify' \
--header 'Authorization: Bearer YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data-raw '{
"email": "john@example.com",
"name": "John Doe",
"meta": {
"plan": "pro",
"mrr": 99,
"role": "Product Manager",
"team": "Acme Corp"
}
}'
const response = await fetch('https://api.userorbit.com/v1/public/subscriber.identify', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({
email: 'john@example.com',
name: 'John Doe',
meta: {
plan: 'pro',
mrr: 99,
role: 'Product Manager',
team: 'Acme Corp'
}
})
});
const data = await response.json();
import requests
response = requests.post(
'https://api.userorbit.com/v1/public/subscriber.identify',
headers={
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
json={
'email': 'john@example.com',
'name': 'John Doe',
'meta': {
'plan': 'pro',
'mrr': 99,
'role': 'Product Manager',
'team': 'Acme Corp'
}
}
)
data = response.json()
{
"data": {
"id": "87654321-1234-1234-1234-123456789012",
"name": "John Doe",
"email": "john@example.com",
"source": "api",
"meta": {
"plan": "pro",
"mrr": 99,
"role": "Product Manager",
"team": "Acme Corp"
},
"avatarUrl": null,
"createdAt": "2024-01-15T10:30:00Z",
"lastUpdated": "2024-01-15T10:30:00Z"
},
"code": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"isFirstSignin": true
}
Subscribers
Identify Subscriber
Identify or create a subscriber for tracking. Used to initialize the widget and track user activity.
POST
/
v1
/
public
/
subscriber.identify
curl --location --request POST 'https://api.userorbit.com/v1/public/subscriber.identify' \
--header 'Authorization: Bearer YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data-raw '{
"email": "john@example.com",
"name": "John Doe",
"meta": {
"plan": "pro",
"mrr": 99,
"role": "Product Manager",
"team": "Acme Corp"
}
}'
const response = await fetch('https://api.userorbit.com/v1/public/subscriber.identify', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({
email: 'john@example.com',
name: 'John Doe',
meta: {
plan: 'pro',
mrr: 99,
role: 'Product Manager',
team: 'Acme Corp'
}
})
});
const data = await response.json();
import requests
response = requests.post(
'https://api.userorbit.com/v1/public/subscriber.identify',
headers={
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
json={
'email': 'john@example.com',
'name': 'John Doe',
'meta': {
'plan': 'pro',
'mrr': 99,
'role': 'Product Manager',
'team': 'Acme Corp'
}
}
)
data = response.json()
{
"data": {
"id": "87654321-1234-1234-1234-123456789012",
"name": "John Doe",
"email": "john@example.com",
"source": "api",
"meta": {
"plan": "pro",
"mrr": 99,
"role": "Product Manager",
"team": "Acme Corp"
},
"avatarUrl": null,
"createdAt": "2024-01-15T10:30:00Z",
"lastUpdated": "2024-01-15T10:30:00Z"
},
"code": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"isFirstSignin": true
}
Authentication
This endpoint requires API key authentication via theAuthorization header.
Authorization: Bearer YOUR_API_KEY
Request Body
string
required
Subscriber’s email address. Used as unique identifier.
string
Subscriber’s display name. If not provided, will be derived from email or existing data.
object
Response
object
Subscriber object
string
JWT token for authenticating subsequent requests as this subscriber
boolean
True if this is a new subscriber, false if existing
curl --location --request POST 'https://api.userorbit.com/v1/public/subscriber.identify' \
--header 'Authorization: Bearer YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data-raw '{
"email": "john@example.com",
"name": "John Doe",
"meta": {
"plan": "pro",
"mrr": 99,
"role": "Product Manager",
"team": "Acme Corp"
}
}'
const response = await fetch('https://api.userorbit.com/v1/public/subscriber.identify', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({
email: 'john@example.com',
name: 'John Doe',
meta: {
plan: 'pro',
mrr: 99,
role: 'Product Manager',
team: 'Acme Corp'
}
})
});
const data = await response.json();
import requests
response = requests.post(
'https://api.userorbit.com/v1/public/subscriber.identify',
headers={
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
json={
'email': 'john@example.com',
'name': 'John Doe',
'meta': {
'plan': 'pro',
'mrr': 99,
'role': 'Product Manager',
'team': 'Acme Corp'
}
}
)
data = response.json()
{
"data": {
"id": "87654321-1234-1234-1234-123456789012",
"name": "John Doe",
"email": "john@example.com",
"source": "api",
"meta": {
"plan": "pro",
"mrr": 99,
"role": "Product Manager",
"team": "Acme Corp"
},
"avatarUrl": null,
"createdAt": "2024-01-15T10:30:00Z",
"lastUpdated": "2024-01-15T10:30:00Z"
},
"code": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"isFirstSignin": true
}
Behavior
- Existing Subscriber: If email exists, updates metadata and returns existing subscriber
- New Subscriber: Creates new subscriber with provided information
- Metadata Merge: New metadata is merged with existing metadata (doesn’t overwrite completely)
- Case Insensitive: Email matching is case-insensitive
Use Cases
- Widget Initialization: Identify user when loading feedback widget
- User Tracking: Track user activity and associate with account
- User Segmentation: Store custom attributes for targeting
- Personalization: Use metadata to customize user experience
Notes
- The returned
code(JWT token) should be stored and used for subsequent authenticated requests - Metadata fields are flexible - you can add any custom fields
- Only
mmr,plan,role,team, andcreated_atare automatically extracted from metadata - Email is case-insensitive and will be stored in lowercase
Was this page helpful?

