Wispr AI Enterprise API
The Enterprise API from Wispr AI — 41 operation(s) for enterprise.
The Enterprise API from Wispr AI — 41 operation(s) for enterprise.
openapi: 3.0.3
info:
title: Wispr Backend Analytics Enterprise API
description: Wispr Backend API
version: 0.5.2
tags:
- name: Enterprise
paths:
/api/v1/enterprise/audit-logs:
get:
tags:
- Enterprise
summary: Get Audit Logs
description: 'Paginated, filter-bounded audit log for an enterprise, newest first.
Authorization scoping: the ``enterprise_id`` override is honored only for Wispr
internal admins. For everyone else the route resolves to the caller''s own
enterprise (admin required); a customer supplying a different enterprise''s id
gets 404 rather than a cross-tenant read.'
operationId: get_audit_logs
security:
- ApiKeyHeaderPatched: []
parameters:
- name: start
in: query
required: false
schema:
type: string
format: date
title: Start
- name: end
in: query
required: false
schema:
type: string
format: date
title: End
- name: event_types
in: query
required: false
schema:
anyOf:
- type: array
items:
$ref: '#/components/schemas/AuditAction'
- type: 'null'
title: Event Types
- name: actor_user_id
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Actor User Id
- name: target_user_id
in: query
required: false
schema:
anyOf:
- type: string
- type: 'null'
title: Target User Id
- name: limit
in: query
required: false
schema:
type: integer
maximum: 100
minimum: 1
default: 50
title: Limit
- name: offset
in: query
required: false
schema:
type: integer
minimum: 0
default: 0
title: Offset
- name: enterprise_id
in: query
required: false
schema:
anyOf:
- type: string
format: uuid
- type: 'null'
description: Wispr-internal-admin override. Customer enterprise admins must omit this and the route resolves to their own enterprise; a foreign id from a customer returns 404.
title: Enterprise Id
description: Wispr-internal-admin override. Customer enterprise admins must omit this and the route resolves to their own enterprise; a foreign id from a customer returns 404.
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/AuditLogTableResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/enterprise/create:
post:
tags:
- Enterprise
summary: Create Enterprise New
description: Create a new enterprise.
operationId: create_enterprise_new
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/CreateEnterpriseRequestNew'
required: true
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
security:
- ApiKeyHeaderPatched: []
/api/v1/enterprise:
get:
tags:
- Enterprise
summary: Get Enterprise
description: Get the enterprise ID for the authenticated user if they belong to one.
operationId: get_enterprise
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
security:
- ApiKeyHeaderPatched: []
patch:
tags:
- Enterprise
summary: Update Enterprise
description: Update enterprise details. Only accessible by admins.
operationId: update_enterprise
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateEnterpriseRequest'
required: true
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
security:
- ApiKeyHeaderPatched: []
/api/v1/enterprise/settings:
patch:
tags:
- Enterprise
summary: Update Enterprise Settings
description: Update enterprise settings. Only accessible by admins.
operationId: update_enterprise_settings
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateEnterpriseSettingsRequest'
required: true
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
security:
- ApiKeyHeaderPatched: []
/api/v1/enterprise/members:
get:
tags:
- Enterprise
summary: Get Members
description: Get all members of the user's enterprise.
operationId: get_members
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/MembersResponse'
security:
- ApiKeyHeaderPatched: []
/api/v1/enterprise/members/table:
get:
tags:
- Enterprise
summary: Get Members Table
description: 'Paginated enterprise members table for the admin portal.
Authorization scoping: when ``enterprise_id`` is omitted, the route derives
it from ``ensure_enterprise_member`` (default behavior for the customer-
facing admin portal). When supplied, the override is restricted to Wispr
internal admins via ``ensure_internal_admin_with_role``. The ``team_id``
query parameter only narrows the resulting set further via the
active-membership join.'
operationId: get_members_table
security:
- ApiKeyHeaderPatched: []
parameters:
- name: enterprise_id
in: query
required: false
schema:
anyOf:
- type: string
format: uuid
- type: 'null'
description: Wispr-internal-admin override. Customer enterprise admins must omit this and the route resolves to their own enterprise.
title: Enterprise Id
description: Wispr-internal-admin override. Customer enterprise admins must omit this and the route resolves to their own enterprise.
- name: search
in: query
required: false
schema:
anyOf:
- type: string
maxLength: 200
- type: 'null'
title: Search
- name: status
in: query
required: false
schema:
anyOf:
- enum:
- active
- trialing
type: string
- type: 'null'
title: Status
- name: team_id
in: query
required: false
schema:
anyOf:
- type: string
format: uuid
- type: 'null'
title: Team Id
- name: sort_by
in: query
required: false
schema:
enum:
- name
- email
- status
- team
- role
- totalWords
- wpm
- lastUsedAt
type: string
default: totalWords
title: Sort By
- name: sort_dir
in: query
required: false
schema:
enum:
- asc
- desc
type: string
default: desc
title: Sort Dir
- name: limit
in: query
required: false
schema:
type: integer
maximum: 200
minimum: 1
default: 25
title: Limit
- name: offset
in: query
required: false
schema:
type: integer
minimum: 0
default: 0
title: Offset
- name: words_window
in: query
required: false
schema:
enum:
- all_time
- last_7_days
- last_30_days
- this_month
- last_month
- this_year
type: string
default: all_time
title: Words Window
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/EnterpriseMembersTableResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/enterprise/members/count:
get:
tags:
- Enterprise
summary: Get Members Count
description: 'Unfiltered enterprise member count, respecting the protected-enterprise
admin-roles visibility rule so the page header''s denominator matches what
the table can ever surface to the caller.'
operationId: get_members_count
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/EnterpriseMembersCountResponse'
security:
- ApiKeyHeaderPatched: []
/api/v1/enterprise/domain-status:
get:
tags:
- Enterprise
summary: Get Domain Status
description: Get the status of the user's domain.
operationId: get_domain_status
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
security:
- ApiKeyHeaderPatched: []
/api/v1/enterprise/domain-info:
get:
tags:
- Enterprise
summary: Get Domain Info
description: 'Gets info associated with the user''s domain, or the domain the the enterprise they are part of.
This is possible distinct from the info associated with they''re team. The returned values are
the users on that domain, the team members associated with the team that has that domain, etc.'
operationId: get_domain_info
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
security:
- ApiKeyHeaderPatched: []
/api/v1/enterprise/my-current-ip:
get:
tags:
- Enterprise
summary: Get My Current Ip
description: 'Returns the caller''s anti-spoofed egress IP.
Used by the admin-portal lockout-guard modal so a (potentially locked-out)
admin can read what IP they appear from before editing the allowlist.
Listed in IP_ALLOWLIST_EXEMPT_PATHS so it remains reachable from outside
the enterprise allowlist — that is the entire point.'
operationId: get_my_current_ip
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/MyCurrentIpResponse'
security:
- ApiKeyHeaderPatched: []
/api/v1/enterprise/domains/verifications:
get:
tags:
- Enterprise
summary: List Domain Verifications
description: 'Read-only list of the admin''s enterprise domains and their verification status.
Verification itself (issuing and checking the TXT record) is performed by a
Wispr superadmin via the internal API; team admins see status only.'
operationId: list_domain_verifications
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/ListDomainVerificationsResponse'
security:
- ApiKeyHeaderPatched: []
/api/v1/enterprise/domains/{domain_id}/initiate-verification:
post:
tags:
- Enterprise
summary: Initiate Domain Verification
description: Issue (or reuse) a DNS TXT token for domain ownership verification. Admin-only.
operationId: initiate_domain_verification
security:
- ApiKeyHeaderPatched: []
parameters:
- name: domain_id
in: path
required: true
schema:
type: string
format: uuid
title: Domain Id
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/DomainVerificationInitiateResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/enterprise/domains/{domain_id}/check-verification:
post:
tags:
- Enterprise
summary: Check Domain Verification
description: Query public DNS and flip the domain to verified on exact token match. Admin-only.
operationId: check_domain_verification
security:
- ApiKeyHeaderPatched: []
parameters:
- name: domain_id
in: path
required: true
schema:
type: string
format: uuid
title: Domain Id
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/DomainVerificationStatus'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/enterprise/domains/{domain_id}/capture-policy:
patch:
tags:
- Enterprise
summary: Update Domain Capture Policy
description: Set the per-domain capture policy. Admin-only; domain must belong to the caller's enterprise.
operationId: update_domain_capture_policy
security:
- ApiKeyHeaderPatched: []
parameters:
- name: domain_id
in: path
required: true
schema:
type: string
format: uuid
title: Domain Id
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateDomainCapturePolicyRequest'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/DomainVerificationStatus'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/enterprise/members/{user_id}:
get:
tags:
- Enterprise
summary: Get Member Detail
description: 'Single-member detail payload for the admin-portal member-detail page.
Returns the same row shape as ``/members/table`` — lifetime ``totalWords``
and ``lastUsedAt`` from ``user_stats`` plus ``role`` and ``joinedAt``.
Filter-aware chart totals come from ``/insights/words-dictated`` and
``/insights/desktop-apps`` so this endpoint stays Postgres-only and
parameter-free.
Access model mirrors the team-insights endpoints: a Wispr internal admin
bypasses the enterprise-membership check and can view any user; a regular
enterprise admin is scoped to their own tenant. For regular admins both
404 paths (user doesn''t exist / user in another enterprise) share an
identical Postgres latency profile so timing cannot distinguish them.'
operationId: get_member_detail
security:
- ApiKeyHeaderPatched: []
parameters:
- name: user_id
in: path
required: true
schema:
type: string
description: user_id of the enterprise member to fetch.
title: User Id
description: user_id of the enterprise member to fetch.
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/EnterpriseMemberDetailResponse'
'404':
description: Member not found (or in a different enterprise from the caller).
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
delete:
tags:
- Enterprise
summary: Remove Member
description: Remove a member from the enterprise. Only accessible by admins.
operationId: remove_member
security:
- ApiKeyHeaderPatched: []
parameters:
- name: user_id
in: path
required: true
schema:
type: string
format: uuid
title: User Id
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
patch:
tags:
- Enterprise
summary: Update Member Role
description: 'Update the role of a member in the enterprise. Only accessible by admins.
Disabled if the enterprise has no billing (everyone is an admin).'
operationId: update_member_role
security:
- ApiKeyHeaderPatched: []
parameters:
- name: user_id
in: path
required: true
schema:
type: string
format: uuid
title: User Id
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateMemberRoleRequest'
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/enterprise/members/{user_id}/support:
delete:
tags:
- Enterprise
summary: Remove Member Support
description: Remove a member from the enterprise. Only accessible by support team.
operationId: remove_member_support
security:
- APIKeyHeader: []
parameters:
- name: user_id
in: path
required: true
schema:
type: string
format: uuid
title: User Id
- name: enterprise_id
in: query
required: true
schema:
type: string
format: uuid
title: Enterprise Id
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
patch:
tags:
- Enterprise
summary: Update Member Role Support
description: Update the role of a member in the enterprise. Only accessible by support team.
operationId: update_member_role_support
security:
- APIKeyHeader: []
parameters:
- name: user_id
in: path
required: true
schema:
type: string
format: uuid
title: User Id
- name: enterprise_id
in: query
required: true
schema:
type: string
format: uuid
title: Enterprise Id
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/UpdateMemberRoleRequest'
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/enterprise/self-invite:
post:
tags:
- Enterprise
summary: Self Invite
description: Request the admins to invite the user to the enterprise.
operationId: self_invite
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/SelfInviteRequest'
required: true
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/SelfInviteResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
security:
- ApiKeyHeaderPatched: []
/api/v1/enterprise/contact-admin:
post:
tags:
- Enterprise
summary: Contact Admin
description: Contact the admins of the enterprise. If invite_email is provided, the contact form is an invite request.
operationId: contact_admin
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ContactAdminRequest'
required: true
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/ContactAdminResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
security:
- ApiKeyHeaderPatched: []
/api/v1/enterprise/invitations:
get:
tags:
- Enterprise
summary: Get Invitations
description: Get all invitations for the user's enterprise. Only accessible by enterprise admins.
operationId: get_invitations
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/InvitesResponse'
security:
- ApiKeyHeaderPatched: []
post:
tags:
- Enterprise
summary: Invite User
description: Invite a user to join the enterprise. Only accessible by admins.
operationId: invite_user
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/InviteRequest'
required: true
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/InviteResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
security:
- ApiKeyHeaderPatched: []
/api/v1/enterprise/invitations/bulk:
post:
tags:
- Enterprise
summary: Bulk Invite Users
description: Invite multiple users to join the enterprise. Only accessible by admins.
operationId: bulk_invite_users
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/BulkInviteRequest'
required: true
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/BulkInviteResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
security:
- ApiKeyHeaderPatched: []
/api/v1/enterprise/invitations/bulk/support:
post:
tags:
- Enterprise
summary: Bulk Invite Users Support
description: Invite multiple users to join the enterprise. Only accessible by support team.
operationId: bulk_invite_users_support
security:
- APIKeyHeader: []
parameters:
- name: enterprise_id
in: query
required: true
schema:
type: string
format: uuid
title: Enterprise Id
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/BulkInviteRequest'
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/BulkInviteResponse'
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/enterprise/invitations/{email}:
delete:
tags:
- Enterprise
summary: Revoke Invitation
description: Revoke an invitation to join the enterprise. Only accessible by admins.
operationId: revoke_invitation
security:
- ApiKeyHeaderPatched: []
parameters:
- name: email
in: path
required: true
schema:
type: string
title: Email
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/RevokeInvitationRequest'
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/enterprise/invitations/{email}/support:
delete:
tags:
- Enterprise
summary: Revoke Invitation Support
description: Revoke an invitation to join the enterprise. Only accessible by support team.
operationId: revoke_invitation_support
security:
- APIKeyHeader: []
parameters:
- name: email
in: path
required: true
schema:
type: string
title: Email
- name: enterprise_id
in: query
required: true
schema:
type: string
format: uuid
title: Enterprise Id
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/enterprise/sso:
post:
tags:
- Enterprise
summary: Setup Sso
description: Setup SSO for the enterprise.
operationId: setup_sso
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
security:
- ApiKeyHeaderPatched: []
/api/v1/enterprise/sso/connect:
get:
tags:
- Enterprise
summary: Connect Sso
description: Connect Wispr to your SSO provider.
operationId: connect_sso
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
security:
- ApiKeyHeaderPatched: []
/api/v1/enterprise/hipaa-baa:
post:
tags:
- Enterprise
summary: Sign Enterprise Hipaa Baa
description: Sign a HIPAA Business Associate Agreement for the entire enterprise.
operationId: sign_enterprise_hipaa_baa
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/SignHipaaBaaRequest'
required: true
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
security:
- ApiKeyHeaderPatched: []
delete:
tags:
- Enterprise
summary: Revoke Enterprise Hipaa Baa
description: Revoke a HIPAA Business Associate Agreement for the entire enterprise.
operationId: revoke_enterprise_hipaa_baa
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
security:
- ApiKeyHeaderPatched: []
/api/v1/enterprise/invitations/my:
get:
tags:
- Enterprise
summary: Get My Invitations
description: Get all invitations for the user.
operationId: get_my_invitations
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
security:
- ApiKeyHeaderPatched: []
/api/v1/enterprise/invitations/accept:
post:
tags:
- Enterprise
summary: Accept Enterprise Invite
description: Accept an enterprise invitation by invite ID.
operationId: accept_enterprise_invite
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AcceptEnterpriseInviteRequest'
required: true
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
security:
- ApiKeyHeaderPatched: []
/api/v1/enterprise/join-requests:
get:
tags:
- Enterprise
summary: Get Join Requests
description: Get all join requests for the user's enterprise. Only accessible by enterprise admins.
operationId: get_join_requests
responses:
'200':
description: Successful Response
content:
application/json:
schema:
items:
$ref: '#/components/schemas/JoinRequest'
type: array
title: Response Get Join Requests Api V1 Enterprise Join Requests Get
security:
- ApiKeyHeaderPatched: []
/api/v1/enterprise/join-requests/my:
get:
tags:
- Enterprise
summary: Get My Join Requests
description: Get join requests for a user
operationId: get_my_join_requests
responses:
'200':
description: Successful Response
content:
application/json:
schema:
items:
$ref: '#/components/schemas/JoinRequest'
type: array
title: Response Get My Join Requests Api V1 Enterprise Join Requests My Get
security:
- ApiKeyHeaderPatched: []
/api/v1/enterprise/join-requests/accept:
post:
# --- truncated at 32 KB (67 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/wispr-ai/refs/heads/main/openapi/wispr-ai-enterprise-api-openapi.yml