Users and Account
Manage user profiles, subscriptions, workspaces, and business settings through the Talkturo API — retrieve current user data, check subscription limits, list workspaces, and update business profiles.
curl --request GET \
--url https://app.talkturo.com/api/users/me \
--header "Authorization: Bearer dt_example_9xmk7q2r"
const response = await fetch("https://app.talkturo.com/api/users/me", {
method: "GET",
headers: {
Authorization: "Bearer dt_example_9xmk7q2r"
}
});
const data = await response.json();
console.log(data);
{
"uid": "usr_7f3d2a91",
"email": "jane.chen@acme.com",
"display_name": "Jane Chen",
"auto_update_enabled": true,
"has_migrated_to_firebase": true
}
{
"error": "Unauthorized"
}
{
"error": "Internal server error"
}
curl --request PUT \
--url https://app.talkturo.com/api/users/me \
--header "Authorization: Bearer dt_example_9xmk7q2r" \
--header "Content-Type: application/json" \
--data '{
"display_name": "Jane Chen"
}'
const response = await fetch("https://app.talkturo.com/api/users/me", {
method: "PUT",
headers: {
Authorization: "Bearer dt_example_9xmk7q2r",
"Content-Type": "application/json"
},
body: JSON.stringify({
display_name: "Jane Chen"
})
});
const data = await response.json();
console.log(data);
{
"uid": "usr_7f3d2a91"
}
{
"error": "display_name is required"
}
{
"error": "Unauthorized"
}
{
"error": "Internal server error"
}
curl --request GET \
--url https://app.talkturo.com/api/users/me/subscription \
--header "Authorization: Bearer dt_example_9xmk7q2r" \
--header "X-Talkturo-Account: acme-sales"
const response = await fetch("https://app.talkturo.com/api/users/me/subscription", {
method: "GET",
headers: {
Authorization: "Bearer dt_example_9xmk7q2r",
"X-Talkturo-Account": "acme-sales"
}
});
const data = await response.json();
console.log(data);
{
"success": true,
"hasActiveSubscription": true,
"data": {
"active": true,
"plan": "desktop_pro",
"source": "stripe",
"current_period_end": "2026-01-31T23:59:59Z",
"trial_ends_at": null,
"account_id": "acc_3d92af11",
"account_slug": "acme-sales",
"access_blocked_reason": null,
"limits": {
"seats": 10,
"calls_per_month": 5000,
"session_max_minutes": 120,
"retention_days": 90,
"sales_modes": [
"inbound",
"outbound"
]
},
"usage": {
"calls_this_month": 1240,
"calls_limit": 5000
}
}
}
{
"error": "Forbidden"
}
{
"error": "Internal server error"
}
curl --request GET \
--url https://app.talkturo.com/api/users/me/workspaces \
--header "Authorization: Bearer dt_example_9xmk7q2r"
const response = await fetch("https://app.talkturo.com/api/users/me/workspaces", {
method: "GET",
headers: {
Authorization: "Bearer dt_example_9xmk7q2r"
}
});
const data = await response.json();
console.log(data);
{
"success": true,
"workspaces": [
{
"account_id": "acc_3d92af11",
"slug": "acme-sales",
"name": "Acme Sales",
"is_personal_account": false,
"role": "owner",
"has_desktop_plan": true,
"has_desktop_access": true,
"plan": "desktop_pro"
},
{
"account_id": "acc_7d61ce20",
"slug": "jane-chen",
"name": "Jane Chen",
"is_personal_account": true,
"role": "owner",
"has_desktop_plan": false,
"has_desktop_access": true,
"plan": null
}
]
}
{
"error": "Internal server error"
}
curl --request GET \
--url "https://app.talkturo.com/api/account/business?account=acme-sales" \
--header "Cookie: sb-access-token=sb_example_71k2xm; sb-refresh-token=sb_refresh_example_48znq1"
const response = await fetch("https://app.talkturo.com/api/account/business?account=acme-sales", {
method: "GET",
credentials: "include"
});
const data = await response.json();
console.log(data);
{
"success": true,
"business": {
"business_name": "Acme Sales",
"business_website": "https://acme.com",
"business_industry": "Software",
"business_phone": "+14155550123",
"business_city": "San Francisco",
"business_state": "CA",
"business_country": "US"
}
}
{
"error": "Missing required query parameter: account"
}
{
"error": "Unauthorized"
}
{
"error": "Workspace not found"
}
{
"error": "Internal server error"
}
curl --request PUT \
--url https://app.talkturo.com/api/account/business \
--header "Content-Type: application/json" \
--header "Cookie: sb-access-token=sb_example_71k2xm; sb-refresh-token=sb_refresh_example_48znq1" \
--data '{
"account": "acme-sales",
"businessName": "Acme Sales",
"businessWebsite": "https://acme.com",
"businessIndustry": "Software",
"businessPhone": "+14155550123",
"businessCity": "San Francisco",
"businessState": "CA",
"businessCountry": "US"
}'
const response = await fetch("https://app.talkturo.com/api/account/business", {
method: "PUT",
credentials: "include",
headers: {
"Content-Type": "application/json"
},
body: JSON.stringify({
account: "acme-sales",
businessName: "Acme Sales",
businessWebsite: "https://acme.com",
businessIndustry: "Software",
businessPhone: "+14155550123",
businessCity: "San Francisco",
businessState: "CA",
businessCountry: "US"
})
});
const data = await response.json();
console.log(data);
{
"success": true
}
{
"error": "Invalid request body"
}
{
"error": "Unauthorized"
}
{
"error": "Workspace not found"
}
{
"error": "Internal server error"
}
curl --request PUT \
--url https://app.talkturo.com/api/account/language \
--header "Content-Type: application/json" \
--header "Cookie: sb-access-token=sb_example_71k2xm; sb-refresh-token=sb_refresh_example_48znq1" \
--data '{
"account": "acme-sales",
"language": "en"
}'
const response = await fetch("https://app.talkturo.com/api/account/language", {
method: "PUT",
credentials: "include",
headers: {
"Content-Type": "application/json"
},
body: JSON.stringify({
account: "acme-sales",
language: "en"
})
});
const data = await response.json();
console.log(data);
{
"success": true,
"language": "en"
}
{
"error": "Invalid language"
}
{
"error": "Unauthorized"
}
{
"error": "Only workspace owners can update language"
}
{
"error": "Workspace not found"
}
{
"error": "Internal server error"
}
Endpoint summary
| Method | Path | Purpose | Auth |
|---|---|---|---|
GET | /api/users/me | Get the current desktop user profile | Desktop JWT |
PUT | /api/users/me | Update the current desktop user profile | Desktop JWT |
GET | /api/users/me/subscription | Get subscription status, limits, and usage | Desktop JWT |
GET | /api/users/me/workspaces | List workspaces available to the current user | Desktop JWT |
GET | /api/account/business | Get a workspace business profile | Session cookie |
PUT | /api/account/business | Update a workspace business profile | Session cookie |
GET | /api/account/language | Get a workspace language | Session cookie |
PUT | /api/account/language | Update a workspace language | Session cookie, owner only |
POST | /api/users/me/auto-update | Toggle desktop auto-update preference | Desktop JWT |
GET | /api/account/verifications | Get account verification status | Session cookie |
POST | /api/account/verifications | Submit account verification data | Session cookie |
Desktop user endpoints use desktop JWT authentication. Send the desktop token in the Authorization header as Bearer dt_example_9xmk7q2r.
Workspace business endpoints use a session cookie from an authenticated web app session instead of a desktop JWT.
Get current user
Returns the authenticated desktop user's profile and desktop-specific settings.
Endpoint
GET https://app.talkturo.com/api/users/me
Response fields
Unique identifier for the current user.
User email address.
Display name shown in Talkturo.
Whether desktop auto-updates are enabled for the current user.
Whether the user account has been migrated to Firebase-based authentication.
Update current user
Updates the authenticated desktop user's profile.
Endpoint
PUT https://app.talkturo.com/api/users/me
Body parameters
New display name for the current user.
Response fields
Unique identifier for the updated user.
Get subscription
Returns subscription state, account context, plan limits, and current usage for the authenticated desktop user.
Endpoint
GET https://app.talkturo.com/api/users/me/subscription
Headers
Workspace slug used to resolve subscription data in a specific account context.
Response fields
Whether the request completed successfully.
Whether the current user or selected workspace has an active subscription.
Subscription details for the current user and, when provided, the selected workspace.
Whether the subscription is currently active.
Plan identifier for the current subscription.
Billing source for the subscription.
ISO timestamp for the end of the current billing period.
ISO timestamp for the end of the trial period, or null when no trial is active.
Workspace account identifier associated with the subscription context.
Workspace slug associated with the subscription context.
Reason access is blocked, or null when access is allowed.
Plan limits applied to the current subscription.
Maximum number of seats included in the plan.
Maximum number of calls allowed each month.
Maximum session duration, in minutes.
Number of days data is retained under the plan.
Allowed sales modes for the plan.
Current usage values tracked against the plan.
Number of calls used in the current month.
Call limit applied to the current subscription context.
If you send X-Talkturo-Account, Talkturo resolves limits and usage for that workspace when the authenticated user has access to it.
List workspaces
Returns the workspaces available to the authenticated desktop user.
Endpoint
GET https://app.talkturo.com/api/users/me/workspaces
Response fields
Whether the request completed successfully.
Workspaces the current user can access.
Workspace account identifier.
Workspace slug.
Workspace display name.
Whether the workspace is a personal account.
Current user's role in the workspace.
Whether the workspace has a desktop plan.
Whether the current user can use desktop features in this workspace.
Workspace plan identifier, or null when no plan is attached.
Get business profile
Returns the business profile for a workspace identified by slug.
Endpoint
GET https://app.talkturo.com/api/account/business
Query parameters
Workspace slug whose business profile you want to retrieve.
Response fields
Whether the request completed successfully.
Business profile for the requested workspace.
Business name for the workspace.
Business website URL.
Business industry.
Business phone number.
Business city.
Business state or region.
Two-character country code when set for the workspace.
Update business profile
Updates the business profile for a workspace identified by slug.
Endpoint
PUT https://app.talkturo.com/api/account/business
Body parameters
Workspace slug whose business profile you want to update.
Business name for the workspace.
Business website URL.
Business industry.
Business phone number.
Business city.
Business state or region.
Two-character ISO country code.
Response fields
Whether the business profile update succeeded.
Validate businessCountry as a two-character ISO country code before sending the request. Invalid values can cause the update to fail with 400.
Update language
Updates the language for a workspace. Only workspace owners can change this setting.
Endpoint
PUT https://app.talkturo.com/api/account/language
Body parameters
Workspace slug whose language you want to update.
Response fields
Whether the language update succeeded.
Updated workspace language.
This endpoint rejects non-owner requests with 403. Check the current user's workspace role before showing language controls in your application.
Get language
Returns the current language for a workspace identified by slug.
Endpoint
GET https://app.talkturo.com/api/account/language
Query parameters
Workspace slug whose language you want to retrieve.
Response fields
Current workspace language code (en or de).
Toggle auto-update preference
Toggle the desktop auto-update preference for the authenticated desktop user.
Endpoint
POST https://app.talkturo.com/api/users/me/auto-update
Body parameters
Whether desktop auto-updates should be enabled for the current user.
Response fields
The updated auto-update preference for the current user.
Account verifications
Manage account verification status and submit verification data for compliance purposes.
Get verification status
GET https://app.talkturo.com/api/account/verifications
Returns the current verification status for the authenticated account context.
Submit verification data
POST https://app.talkturo.com/api/account/verifications
Submit verification information for the authenticated account context. The request body and response depend on the type of verification being submitted.
Error codes
| Status | Meaning |
|---|---|
400 | Missing required input or invalid request body |
401 | Authentication failed or no valid authenticated session exists |
403 | Access is denied for the current user or workspace context |
404 | The requested workspace was not found |
500 | The server failed to complete the request |