---
title: "Login"
method: POST
path: "/auth/login"
tags: ["Auth"]
---

# Login

`POST /auth/login`

Authenticate user and set HTTP-only cookie with JWT token.
Test credentials: email='testuser@example.com', password='testpass123'

If user is registered with Google OAuth, returns error prompting them to use Google login.

## Request body

- LoginRequest — Login request schema
  - `email` string, email, required — Email address
  - `password` string, required — Password

## Response `200`

Successful Response

- LoginResponse — Login response schema
  - `user` UserInfo, required — User information schema
    - `user_id` string, required
    - `first_name` string, required
    - `last_name` string, required
    - `email` string, required
    - `is_developer` boolean
    - `user_type` 'admin' | 'staff', required — Enum for user types
    - `login_type` 'password' | 'google' | 'microsoft', required — Enum for user login types
    - `customer_id` string, required
    - `feature_flags` FeatureFlagsResponse — Feature flags response model
      - `cases_enabled` boolean, required — Whether cases feature is enabled for this customer
      - `leads_enabled` boolean, required — Whether leads feature is enabled for this customer
      - `messages_enabled` boolean, required — Whether messages feature is enabled for this customer
      - `case_notes_enabled` boolean, required — Whether case notes feature is enabled for this customer
      - `known_contacts_enabled` boolean, required — Whether known contacts feature is enabled for this customer
      - `inquiries_enabled` boolean, required — Whether inquiries feature is enabled for this customer
      - `reports_enabled` boolean, required — Whether reports feature is enabled for this customer
      - `availability_blocks_enabled` boolean, required — Whether availability blocks feature is enabled for this customer
      - `outbound_enabled` boolean, required — Whether outbound leads feature is enabled for this customer
      - `staff_enabled` boolean, required — Whether staff management feature is enabled for this customer
      - `practicepanther_enabled` boolean, required — Whether PracticePanther integration is enabled for this customer
      - `lead_scoring_enabled` boolean, required — Whether lead scoring is enabled for this customer
      - `chat_widget_enabled` boolean, required — Whether chat widget feature is enabled for this customer
      - `info_request_enabled` boolean, required — Whether info request SMS feature is enabled for this customer
      - `google_calendar_enabled` boolean, required — Whether the Google Workspace integration (calendar/directory) is enabled for this customer (key kept as google_calendar_enabled for compatibility)
      - `microsoft365_enabled` boolean, required — Whether Microsoft 365 integration is enabled for this customer
      - `zoho_enabled` boolean, required — Whether Zoho integration is enabled for this customer
      - `ringcentral_enabled` boolean, required — Whether RingCentral integration is enabled for this customer
      - `smartadvocate_enabled` boolean, required — Whether SmartAdvocate integration is enabled for this customer
      - `intake_forms_enabled` boolean, required — Whether intake forms feature is enabled for this customer
      - `business_hours_enabled` boolean, required — Whether business hours feature is enabled for this customer
      - `filevine_enabled` boolean, required — Whether Filevine integration is enabled for this customer
      - `vxt_enabled` boolean, required — Whether VXT integration is enabled for this customer
      - `lead_docket_enabled` boolean, required — Whether Lead Docket integration is enabled for this customer
      - `croo_enabled` boolean, required — Whether Croo integration is enabled for this customer
      - `intakes_enabled` boolean, required — Whether the Intakes page (imported intake recordings) is enabled for this customer
      - `realtime_transcripts_enabled` boolean, required — Whether realtime transcript webhook ingestion is enabled for this customer
      - `realtime_lead_scoring_enabled` boolean, required — Whether the live (mid-call) lead scoring tool is enabled for this customer
      - `docusign_enabled` boolean, required — Whether DocuSign integration is enabled for this customer
      - `zapier_enabled` boolean, required — Whether the Zapier integration is enabled for this customer
      - `law_firm_info_prompt_enabled` boolean, required — Whether the Law Firm Info Prompt (AI Prompt) settings card is shown for this customer
      - `case_match_corrections_enabled` boolean, required — Whether end users can correct case matches (change matched case / re-run matching) on the call detail page
      - `granola_enabled` boolean, required — Whether the Granola meeting-notes integration is enabled for this customer
      - `ringcentral_outbound_calls_enabled` boolean, required — Whether staged RingCentral outbound calls graduate into canonical call records for this customer
      - `transcript_filing_enabled` boolean, required — Whether the Google Drive transcript-filing automation is enabled for this customer
      - `google_contacts_sync_enabled` boolean, required — Whether Google contacts sync is enabled for this customer (scopes only for now; no sync behavior yet)
      - `google_email_sync_enabled` boolean, required — Whether Google email (Gmail) sync is enabled for this customer (scopes only for now; no sync behavior yet)
      - `clio_enabled` boolean, required — Whether the Clio Manage integration is enabled for this customer
      - `clio_grow_enabled` boolean, required — Whether the Clio Grow integration is enabled for this customer
      - `drive_case_matching_enabled` boolean, required — Whether case matching uses the Google Drive matter mirror as the case provider for this customer
      - `rc_contact_sync_enabled` boolean, required — Whether Google contacts are proposed for sync into the customer's RingCentral address book (separate RC contacts app)
      - `custom_trigger_enabled` boolean, required — Whether custom trigger webhook endpoints are enabled for this customer
      - `ghl_enabled` boolean, required — Whether the GoHighLevel integration is enabled for this customer
      - `onedrive_enabled` boolean, required — Whether the OneDrive integration (call transcript/recording upload) is enabled for this customer
      - `vapi_transfers_enabled` boolean, required — Whether Vapi-native transferCall warm transfers (Vapi owns the Twilio bridge) are enabled for this customer — records the whole parent Twilio call so the post-transfer staff conversation is captured. Distinct from VXT blind transfers and the attended-transfer (provider-bypass) flow
      - `transfer_destinations_enabled` boolean, required — Whether the Transfer Destinations settings page (named transfer phone numbers) is enabled for this customer
      - `test_transfer_numbers_enabled` boolean, required — Whether test calls resolve dynamic transfers to each destination's test phone number instead of the real number
      - `netsapiens_enabled` boolean, required — Whether the NetSapiens PBX integration (on-call queue reconciliation) is enabled for this customer
      - `on_call_schedule_enabled` boolean, required — Whether the on-call schedule calendar is enabled for this customer
      - `bounce_back_enabled` boolean, required — Whether bounce-back handling is enabled: calls to a bounce-back number are matched to the caller's recent transferred-out call and the original conversation is injected into the bounce-back squad
      - `transfer_metrics_enabled` boolean, required — Whether the Transfer Metrics dashboard (team pickup/missed rates) is visible to this customer's admins
      - `pbx_recording_stitch_enabled` boolean, required — Whether answered transfers hold their pipeline for the staff-side PBX recording to be fetched, transcribed, and stitched (full-conversation grading/summaries)
  - `message` string, required — Success message

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.dev/openintake/apis/fastapi.md) · [All operations](https://skmtc.dev/openintake/apis/fastapi/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/openintake/fastapi/revisions/4a81645b59f6/schema)
