Skip to main content

API Reference

Team & Tenants

Manage your organization (tenant): team members and roles, preferences, data retention, usage, and onboarding state.

Overview

A tenant is your organization. Every user, bot, key, and conversation belongs to exactly one tenant, and all data is isolated per tenant. Roles are owner, admin, and agent:

RoleCan do
ownerEverything, plus transfer ownership and deactivate the org. One per tenant.
adminInvite/update/remove members (not the owner), manage bots, keys, billing.
agentOperational access — handle conversations; no team or billing management.
note
Team and tenant endpoints authenticate with your dashboard session (JWT), not a cm_ API key. Inviting members, changing roles, and deactivating the org are not exposed to API keys.

Invite a member

Omit password and the invitee sets their own via the reset-password OTP flow:

bash
curl https://api.callmissed.com/api/v1/users \
  -H "Authorization: Bearer <jwt_access_token>" \
  -H "Content-Type: application/json" \
  -d '{"email": "agent@acme.com", "full_name": "Sam Rivera", "role": "agent"}'
json
{
  "id": "u1234567-89ab-cdef-0123-456789abcdef",
  "tenant_id": "a0b1c2d3-4455-6677-8899-aabbccddeeff",
  "email": "agent@acme.com",
  "full_name": "Sam Rivera",
  "phone_number": null,
  "role": "agent",
  "is_active": true,
  "created_at": "2026-06-06T12:10:00Z",
  "updated_at": "2026-06-06T12:10:00Z"
}

Only the owner can invite or promote someone to owner; admins cannot. Ownership transfer goes through the owner-only PATCH /api/v1/users/:id/role.

GET/api/v1/users Auth

List team members

POST/api/v1/users Auth

Invite a user to the tenant (password optional — omit it and the invitee sets one via the reset-password OTP flow)

Request Body

emailstring
full_namestring
roleadmin | agent (default agent)
passwordstring (optional, min 8)
PUT/api/v1/users/:user_id Auth

Update a member's name, role, or active status

Request Body

full_namestring
roleadmin | agent
is_activeboolean
PATCH/api/v1/users/:user_id/role Auth

Owner-only: change role or transfer ownership

Request Body

roleowner | admin | agent
DELETE/api/v1/users/:user_id Auth

Remove a team member

GET/api/v1/tenants/me Auth

Get tenant profile (name, plan, created_at)

PUT/api/v1/tenants/me Auth

Update the organization name

Request Body

namestring
POST/api/v1/tenants/me/deactivate Auth

Owner-only: soft-delete the organization (requires slug confirmation)

Request Body

confirmstring (tenant slug)
GET/api/v1/tenants/me/preferences Auth

Get email, web-search, and locale preferences

PUT/api/v1/tenants/me/preferences Auth

Update tenant preferences

Request Body

email_notificationsboolean
web_search_defaultauto | shorter | detailed
localestring
GET/api/v1/tenants/me/retention Auth

Get the data retention policy (TTL for logs, deliveries, audit)

PUT/api/v1/tenants/me/retention Auth

Set the data retention policy in days

Request Body

api_logs_daysnumber
webhook_deliveries_daysnumber
audit_events_daysnumber
GET/api/v1/tenants/me/usage Auth

Bot, conversation, and message counts

GET/api/v1/tenants/me/analytics Auth

Conversation analytics (daily, by channel, by bot)

Query Parameters

daysnumber (1-90, default 30)
GET/api/v1/tenants/me/api-usage Auth

API call stats grouped by service and key

Query Parameters

daysnumber (1-90)
GET/api/v1/tenants/me/onboarding Auth

Get onboarding checklist state

Was this page helpful?