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

# Login

`POST /api/login`

## Request body

- LoginCreds
  - `email` string, email, required
  - `password` string, required
  - `session_duration` integer

## Response `200`

Successful Response

- LoginResponse
  - `user` User, required
    - `id` string, uuid4, required
    - `email` string, email, required
    - `verified` boolean, required
    - `username` string, required
    - `first_name` string
    - `last_name` string
    - `roles` Role[], required
    - `groups` Group[], required
      - `id` string, uuid4, required
      - `name` string, required
    - `data` UserData
      - `stripe` StripeInfo
        - `customer_id` string
        - `price_id` string
        - `subscription_status` 'null' | 'trialing' | 'incomplete' | 'active' | 'unpaid' — An enumeration.
        - `subscription_interval` 'month' | 'year' — An enumeration.
        - `subscription_active` boolean
        - `trial` boolean
        - `trial_used` boolean
        - `subscription_id` string
        - `trial_subscription_id` string
        - `current_period_end` integer
        - `payed_once` boolean
      - `calibration` CalibrationUserData
        - `calibration_id` string, uuid4, required
        - `f0` number, required
      - `bucket` string
      - `promo` PromoData
        - `code` string
        - `extended_trial` boolean
        - `no_credit` boolean
        - `stripe_promo_code` string
        - `stripe_promo_codes_used` object
        - `default_coupon_used` boolean
      - `t_level` 'gray' | 'red' | 'orange' | 'green' — An enumeration.
      - `domain_info` UserDomainInfo
        - `profession` string, required
        - `industry` string, required
      - `model_scope` object
      - `credit_limit` boolean
      - `moderate_originals` boolean
      - `run_moderation_in_parallel` boolean
      - `rate_limits` UserRateLimits
        - `fast` RateLimit, required
          - `times` integer, required
          - `seconds` integer, required
        - `slow` RateLimit, required
          - `times` integer, required
          - `seconds` integer, required
      - `permissions` UserPermissions
        - `long_conversions` boolean
        - `download` boolean
        - `can_read` boolean
        - `can_write` boolean
        - `access_level` string
      - `open_id` OpenIDInfo
        - `sub` string, required
        - `provider` 'google' | 'facebook' | 'apple' | 'linkedin', required — An enumeration.
      - `local_storage` object
      - `demo_wizard` DemoWizard
        - `show` boolean, required
        - `skipped` boolean
        - `completed` boolean
        - `converting` boolean
        - `project_id` string, uuid4
        - `folder_id` string, uuid4
        - `original_id` string, uuid4
      - `experimental` boolean
      - `marketing` MarketingInfo
        - `google_id` string
      - `advanced_settings` AdvancedSettings
        - `normalize` boolean
        - `denormalize` boolean
        - `denoise` boolean
        - `hft` boolean
        - `pipeline` 'fast' | 'slow' — An enumeration.
        - `emotional_scale` number
  - `csrf_token` string, required

## Other responses

- `402` — Payment Required
- `404` — Not Found
- `422` — Validation Error
- `500` — Internal Server Error

---

[API](https://skmtc.net/respeecher/apis/voice-markertplace-api.md) · [All operations](https://skmtc.net/respeecher/apis/voice-markertplace-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/respeecher/voice-markertplace-api/versions/dea31af89a85/schema)
